Libinclude 파일rank.gms1차원 숫자 데이터 무료 슬롯 사이트 지정용.
개발자토마스 F. 러더퍼드, 콜로라도 대학교 경제학과
사용법:
$libInclude 무료 슬롯 사이트 대 s r [p]
어디:
유형 인수 설명 입력: v(들) 무료 슬롯 사이트를 매길 값의 배열. s 1차원 집합, 배열의 영역v. 출력: r(s) 요소의 무료 슬롯 사이트 순서v(들), 1과 카드 사이의 정수로, 가장 작은 것부터 큰 것까지 무료 슬롯 사이트를 매깁니다. 선택사항: (입력 및 출력) p(*) 입력 시 이 벡터는 계산할 백분위수 수준을 지정합니다. 출력 시 선형 보간된 백분위수를 반환합니다.
참고:
무료 슬롯 사이트숫자 데이터에만 작동합니다. 세트를 무료 슬롯 사이트할 수 없습니다.- 첫 번째 호출은 루프 또는 if 블록 외부에 있어야 합니다. 이 루틴은 a 내에서 사용될 수 있습니다.
루프또는if빈 호출로 처음 초기화된 경우에만 차단합니다("$libInclude 무료 슬롯 사이트"세트 및 매개변수 선언이 허용되는 컨텍스트에서(예 3 참조). - 다음 이름은 이 루틴 내에서 사용되며 호출 프로그램에서는 사용할 수 없습니다:
무료 슬롯 사이트_tmp 무료 슬롯 사이트_u 무료 슬롯 사이트_p
- 이 루틴은 무료 슬롯 사이트 값을 반환하지만 반환하지 않습니다.
무료 슬롯 사이트된 벡터, 그러나 순위 값은 무료 슬롯 사이트된 배열을 생성하는 데 쉽게 사용됩니다. 이는 아래 예시 1과 3에 설명된 것처럼 GAMS의 순서 집합 구문에서 계산된 '리드' 및 '지연'을 사용하여 수행할 수 있습니다.
예
예 1: 벡터 순위 지정 및 무료 슬롯 사이트된 순서로 데이터 표시
설정
i '무작위 데이터가 정의되는 설정' / a, b, d, c, e, f /
k '무료 슬롯 사이트된 데이터를 표시하기 위한 무료 슬롯 사이트된 집합' / 1*6 /;
매개변수
x(i) '무료 슬롯 사이트할 무작위 데이터'
r(i) '순위 값'
s(k,i) '무료 슬롯 사이트된 데이터';
x(i) = 균일(0,1);
$libInclude 순위 x i r
디스플레이 x;
* 순서 집합 k를 사용하여 무료 슬롯 사이트된 목록을 생성합니다.
* 이 할당문은 순위 순서를 보여줍니다.
*는 적절한 순서로 표시할 출력을 무료 슬롯 사이트하는 데 사용할 수 있습니다. 이
* 문은 계산된 '리드' 및 '지연'에 대해 GAMS 지원을 사용합니다.
* 주문한 세트 k에 대해. 루프는 실행을 개선하는 데 사용됩니다.
* 더 큰 차원 세트의 속도:
loop(k$sameas(k,"1"),
s(k+(r(i)-1),i) = x(i);
);
옵션 s:3:0:1;
디스플레이 s;
이 예는 GAMS 데이터 유틸리티 라이브러리의 일부이기도 합니다. 모델 참조[무료 슬롯 사이트01]참고용. ex1.lst에 다음 줄을 씁니다.
-- 11 PARAMETER x 무료 슬롯 사이트할 무작위 데이터 a 0.172, b 0.843, d 0.550, c 0.301, e 0.292, f 0.224 ---- 75 PARAMETER s 무료 슬롯 사이트된 데이터 1.a 0.172 2.f 0.224 3.e 0.292 4.c 0.301 5.d 0.550 6.b 0.843
그무료 슬롯 사이트libinclude를 사용하면 다음 예와 같이 변수 수준을 무료 슬롯 사이트할 수도 있습니다.
설정
i '무작위 데이터가 정의되는 설정' / a, b, d, c, e, f /
k '무료 슬롯 사이트된 데이터를 표시하기 위한 무료 슬롯 사이트된 집합' / 1*6 /;
변수
x(i) '무료 슬롯 사이트할 무작위 데이터'
매개변수
r(i) '순위 값'
s(k,i) '무료 슬롯 사이트된 데이터';
x.l(i) = 균일(0,1);
$onDotL
$libInclude 순위 x i r
디스플레이 x.l;
loop(k$sameas(k,"1"),
s(k+(r(i)-1),i) = x(i);
);
옵션 s:3:0:1;
디스플레이 s;
이전에"$lib포함 무료 슬롯 사이트"달러 제어 옵션$onDotL활성화되어야 합니다.
예 2: 무작위 벡터에 대한 백분위수 생성
설정
i '무작위 데이터가 정의되는 설정' / a, b, d, c, e /
p '백분위수(모두)' / 0*100 /;
Parameter x(i) '무료 슬롯 사이트할 무작위 데이터';
* 세트 i에서 무작위 데이터를 생성합니다.
x(i) = 균일(0,1);
디스플레이 x;
매개변수
r(i) '순위 값'
pct(*) '계산할 백분위수' / 20 20.0, 중앙값 50.0, 75 75.0 /;
* 순위를 생성하고 지정된 백분위수를 계산합니다(참고:
* 값을 사용하지 않더라도 순위 배열 r은 필수입니다.)
$libInclude 순위 x i r pct
* 3개의 백분위수 표시:
디스플레이 비율;
이 예는 GAMS 데이터 유틸리티 라이브러리의 일부이기도 합니다. 모델 참조[무료 슬롯 사이트02]참고용. 무작위 데이터는 목록 파일에 다음과 같이 표시됩니다.
-- 11 PARAMETER x 무료 슬롯 사이트할 무작위 데이터 a 0.172, b 0.843, d 0.550, c 0.301, e 0.292
보간된 백분위수는 다음과 같이 계산됩니다:
-- 103 매개변수 백분율 백분율 20 0.268, 75 0.550, 중앙값 0.301
다음 코드는 1에서 100까지 전체 백분위수 세트를 평가합니다. EPS의 GAMS 특수 값은 백분위수 계산에서 0을 나타내는 데 사용됩니다. (백분위수가 어떻게 조정되는지에 대한 오해를 피하기 위해 0과 1 사이의 백분위수는 허용되지 않습니다.) 코드는 Tom Rutherford의 플롯 libInclude를 사용합니다.https://www.mpsge.org/gnuplot/index.html
pct(p) = (ord(p) - 1) + eps;
pct("중앙값") = 0;
디스플레이 퍼센트;
$libInclude 무료 슬롯 사이트 x i r pct
디스플레이 퍼센트;
* GNUPLOT을 사용하여 결과를 플롯합니다.
pl(p) / 20, 40, 60, 80, 100 / 설정;
$set글로벌 도메인 p
$setGlobal 라벨 pl
$libInclude 플롯 백분율
이것은 생성된 플롯입니다:
예 3: RANK를 사용하여 다중 부문 Monte Carlo 결과 보고
GAMS를 사용한 경제 모델링에서 가장 당혹스러운 과제 중 하나는 쉽게 해석할 수 있는 형식으로 여러 부문의 결과를 제시하는 것입니다. 한 가지 간단한 아이디어는 가장 심각하게 영향을 받은 부문을 더 쉽게 식별할 수 있도록 부문별 결과를 무료 슬롯 사이트된 순서로 제시하는 것입니다. 무작위 시나리오 세트에 대해 모델 결과가 생성되면 다부문 모델에서 결과를 제시하는 것이 훨씬 더 어려워집니다. Monte Carlo 결과 요약에는 평균 결과와 해당 민감도를 모두 보고하는 작업이 포함됩니다. 모델 결과의 민감도를 특성화하는 한 가지 방법은 상위 및 하위 사분위수와 같은 표본 분포의 함수를 보고하는 것입니다.
이 예는 방법을 보여줍니다.무료 슬롯 사이트다부문 모델의 몬테카를로 분석 결과를 보고하는 데 도움이 될 수 있습니다.
여기서 예시로 사용된 전체 모델은 GAMS 데이터 유틸리티 라이브러리의 일부입니다. 모델 참조[무료 슬롯 사이트03]참고용. 해당 모델의 다음 추출은 우리가 보고 싶은 결과를 생성합니다.
* 평균 영향을 기준으로 부문 순위를 결정합니다.
평균(i) = qvalue(i,"평균");
$libInclude 순위는 순위를 의미합니다.
* 다음 명령문은 주문된 것과 일치하는 튜플을 생성합니다.
* 세트, ki, 섹터 세트, i. 이 튜플에서 다음의 순서는
* 할당은 평균 영향 증가에 해당합니다.
imap(ki+(meanrank(i)-ord(ki)),i) = 예;
* 각 부문에 대한 부문별 영향의 사분위수를 평가합니다.
루프(나,
x(s) = v(s,i);
* 백분위수를 사용하여 사분위수를 로드합니다.
* 평가(25위, 50위, 75위):
사분위수(qtl) = qv(qtl);
$ libInclude 순위 x s r 사분위수
* 사분위수 값을 저장합니다.
q값(i,qtl) = 사분위수(qtl);
);
q값 표시;
매개변수 결과(ki,i,*) '영향 요약(무료 슬롯 사이트)';
results(ki,i,"평균")$imap(ki,i) = 평균(i);
결과(ki,i,qtl)$imap(ki,i) = qvalue(i,qtl);
결과 표시;
프로그램은 다음과 같은 디스플레이 출력을 생성합니다:
q25 q50 q75 평균 1 .FOO -13.767 -12.110 -10.671 -12.259 2 .MWO -13.496 -11.982 -10.512 -12.035 3 .SCS -12.244 -10.418 -8.738 -10.588 4 .CLO -8.763 -7.407 -6.158 -7.480 5 .ADM -7.865 -5.601 -3.470 -5.812 6.CNM -6.437 -5.320 -4.404 -5.461 7.OTH -5.732 -4.781 -4.012 -4.892 8 .PIP -3.142 -1.930 -0.836 -2.145 9 .OIN -2.124 -1.339 -0.563 -1.358 10.TPP -2.527 -0.988 0.521 -1.041 11.지오 -1.542 -0.826 -0.196 -0.883 12.AGF -1.178 -0.624 -0.072 -0.625 13.ECM 0.137 0.466 0.796 0.441 14.SSM 0.303 0.711 1.079 0.684 15.콘 0.604 1.071 1.479 1.041 16.PST 0.814 1.924 2.966 1.858 17.RLW 1.885 2.787 3.632 2.738 18.OFU 2.789 3.300 3.829 3.330 19.올레 3.155 3.553 3.964 3.554 20.ELE 3.480 3.896 4.318 3.892 21.PSM 3.733 4.134 4.591 4.168 22.CAT 3.216 4.417 5.461 4.369 23.TRO 3.953 5.123 6.549 5.282 24.OLP 4.614 5.262 5.909 5.295 25.TRD 5.694 6.454 7.250 6.476 26.공기 5.227 7.182 9.276 7.320 27.핀 4.919 7.301 10.175 7.640 28.코아 6.581 7.818 9.125 7.878 29.TMS 5.668 8.530 11.086 8.591 30.CHM 8.071 9.299 10.534 9.319 31.TRK 7.031 9.367 11.851 9.577 3월 32일 9.485 13.072 16.424 13.049 33.가스 4.437 13.183 22.311 13.462 34.FME 14.794 16.617 18.382 16.642 35.NFM 23.299 26.398 29.281 26.263
표 형식의 보고서는 도움이 되지만 결과를 그림처럼 즉시 전달하지는 않습니다. GNUPLOT의 오류 막대 플롯 형식은 이 정보를 표시하는 데 편리한 그래픽 형식입니다. GNUPLOT에 대한 libinclude 인터페이스는 이러한 유형의 플롯을 지원하지 않으므로 프로그램을 계속 진행하면 GNUPLOT 프로그램을 호출하기 전에 GNUPLOT 명령과 데이터 파일이 생성됩니다.
* GNUPLOT 파일을 작성하여 결과 차트를 생성합니다:
파일 kplt / ex3.gnu /;
kplt를 넣어;
kplt.lw = 0;
"재설정"을 입력하세요/;
'제목 설정 "사분위수에 따른 부문별 영향"'/;
"선 스타일 설정 1 lt 8 lw 1 pt 8 ps 0.5"/;
"격자 설정"을 입력하세요/;
'set ylabel "% 변경"'을 입력하세요/;
"xzeroaxis 설정"을 입력하세요/;
"bmargin 4 설정"을 입력하세요/;
"xlabel '섹터' 설정"을 입력하세요/;
put 'set xrange [1:',card(i),']'/;
put 'xtics 회전 설정(';
loop(ki, loop(i$imap(ki,i), put '\'/' "',i.tl,'" ', ord(ki):0,',';));
넣어 @(file.cc-1) ')'/;
"오류 막대가 있는 'ex3.dat' 플롯 ls 1"/;
넣어닫다;
파일 kpltdata / ex3.dat /;
kpltdata를 넣어;
kpltdata.nr = 2;
kpltdata.nw = 14;
kpltdata.nd = 6;
loop(ki, loop(i$imap(ki,i), put ord(ki):0,qvalue(i,"평균"), qvalue(i,"q25"), qvalue(i,"q75")/;));
넣어닫다;
'wgnupl32 ex3.gnu -';를 실행합니다.
이것은 생성된 플롯입니다:
예 4: 루프 내에서 백분위수 반복 계산
다음 코드 추출은 데이터가 변경되는 동안 루프 내에서 백분위수를 반복적으로 계산하는 방법을 보여줍니다. 이것은 모델의 추출입니다.[무료 슬롯 사이트04]GAMS 데이터 유틸리티 라이브러리에서.
* 여러 번 반복하여 각 단계에서 백분위수를 계산합니다.
루프(반복,
* NLP 솔버에 대한 호출을 무작위 호출로 대체합니다.
* 숫자 생성기. 많은 응용 프로그램에서 이 대체
* 훨씬 더 합리적인 결과를 만들어냅니다.
*
* nlp 최대화 max를 사용하여 유역을 해결합니다.
z(주) = 균일(0,1);
* 백분위수 값을 검색하려면 다시 할당해야 합니다.
* 이 시점에서 검색하려는 백분위수
* 프로그램. 이 시점에서 pct()가 재할당되지 않은 경우 INPUT
* 값은 이전 호출의 OUTPUT에 해당합니다.
pct(pctl) = pct0(pctl);
$ libInclude 무료 슬롯 사이트 z 주 rnk pct
pctval(iter,pctl) = pct(pctl);
);
pctval을 표시합니다;
출력:
-- 58 무료 슬롯 사이트 호출 전 PCT0 및 PCT의 INPUT 값은 다음과 같습니다.
---- 58 PARAMETER pct0 계산할 백분위수
50 50.000, 75 75.000, 80 80.000, 95 95.000
---- 58 PARAMETER pct 계산할 백분위수(입력) 및 해당 값(출력)
50 50.000, 75 75.000, 80 80.000, 95 95.000
---- 153 무료 슬롯 사이트 호출 후 PCT0 및 PCT 값은 다음과 같습니다.
---- 153 PARAMETER pct0 계산할 백분위수
50 50.000, 75 75.000, 80 80.000, 95 95.000
---- 153 무료 슬롯 사이트에 따라 pct의 OUTPUT 값이 변경되었습니다.
---- 153 PARAMETER pct 계산할 백분위수(입력) 및 해당 값(출력)
50 0.424, 75 0.662, 80 0.712, 95 0.864
---- 273 PARAMETER pctval 연속 반복의 백분위수 값
50 75 80 95
반복1 0.345 0.594 0.638 0.922
iter2 0.385 0.633 0.672 0.941
iter3 0.474 0.705 0.766 0.962
iter4 0.627 0.796 0.823 0.978
iter5 0.428 0.682 0.793 0.904
iter6 0.422 0.690 0.729 0.958
iter7 0.558 0.716 0.756 0.902
iter8 0.451 0.638 0.726 0.942
iter9 0.464 0.704 0.755 0.916
iter10 0.564 0.805 0.831 0.974예 5: 이질적인 가구에 대한 백분위수 생성.
$title 다양한 가구 규모에 따른 가계 지출 데이터의 백분위 무료 슬롯 사이트
h / 0*100 / 설정;
매개변수
y(h) '가구 유형 h와 관련된 총 지출'
n(h) '가구 유형 h와 연관된 사람 수'
ypc(h) '가구형 h의 1인당 지출'
무료 슬롯 사이트(h) '1인당 지출 가구 무료 슬롯 사이트';
* 임의의 값을 할당합니다.
y(h) = 균일(0.2,1.2);
n(h) = 균일(1,6);
ypc(h) = y(h)/n(h);
* 1인당 지출을 기준으로 가구 무료 슬롯 사이트를 지정합니다.
$libInclude 무료 슬롯 사이트 ypc h 무료 슬롯 사이트
* 이제 다음을 고려하여 가구의 백분위 무료 슬롯 사이트를 결정합니다.
* 구성원 수 및 가구 대표의 차이:
Set r '무료 슬롯 사이트에 사용되는 임시 집합' / r0*r100 /;
매개변수
pcttmp(r) '백분위수 계산을 위한 임시 배열'
pct(h) '가구 백분위수 무료 슬롯 사이트';
r0(r) / r0 / 설정;
* 먼저 가구가 할당된 배열을 만듭니다.
loop((r0(r),h), pcttmp(r+(무료 슬롯 사이트(h)-1)) = n(h););
루프(r, pcttmp(r) = pcttmp(r) + pcttmp(r-1););
pcttmp(r) = pcttmp(r)/sum(h, n(h));
loop((r0(r),h), pct(h) = pcttmp(r+(무료 슬롯 사이트(h)-1)););
매개변수 무료 슬롯 사이트 '가구 및 지출 무료 슬롯 사이트';
루프((r0(r),h),
무료 슬롯 사이트(r+(무료 슬롯 사이트(h)-1),h,"n") = n(h);
무료 슬롯 사이트(r+(무료 슬롯 사이트(h)-1),h,"ypc") = ypc(h);
무료 슬롯 사이트(r+(무료 슬롯 사이트(h)-1),h,"pct") = pct(h);
);
디스플레이 무료 슬롯 사이트;
이 예는 GAMS 데이터 유틸리티 라이브러리의 일부이기도 합니다. 모델 참조[무료 슬롯 사이트05]참고용. 다음과 같은 출력이 생성됩니다.
n ypc 퍼센트
r0 .43 5.662 0.044 0.018
r1 .8 5.682 0.047 0.036
r2 .58 4.477 0.052 0.050
r3 .14 5.742 0.058 0.068
r4 .55 4.815 0.063 0.083
r5 .65 3.702 0.063 0.094
r6 .61 5.880 0.064 0.113
r7 .54 4.463 0.064 0.127
....
r98 .62 1.134 0.640 0.991
r99 .10 1.673 0.716 0.997
r100.73 1.053 1.076 1.000