vi_equil.gms : 평형을 포함하거나 포함하지 않는 동일한 슬롯 머신 모델

설명

슬롯 머신가 두 가지 동등한 방법으로 표현될 수 있음을 보여주십시오:
  1) EMP 정보 파일에서 슬롯 머신 키워드 사용
  2) 1)과 동일하지만 포함된 평형 블록 내부

위의 두 경우에 동일한 슬롯 머신가 생성된다는 점에 유의하십시오.

기고자: Steven Dirkse, 2013년 8월

소형 모델 유형 :슬롯 머신


카테고리 : GAMS EMP 라이브러리


메인 파일 : vi_equil.gms 포함: qpdata.inc[html]

$title 평형을 포함하거나 포함하지 않는 동일한 슬롯 머신 모델 (VI_EQUIL,SEQ=97)

$onText

슬롯 머신가 두 가지 동등한 방법으로 표현될 수 있음을 보여줍니다:
  1) EMP 정보 파일에서 슬롯 머신 키워드 사용
  2) 1)과 같지만 포함된 평형 블록 내부

위의 두 경우에 동일한 슬롯 머신가 생성된다는 점에 유의하십시오.

기고자: Steven Dirkse, 2013년 8월

$offText

$include qpdata.inc

* ----------- 0단계: QP를 QP로 풀기
* 해결하다
* 최소 1/2 xQx + cx
* 성.  도끼 >= b
* x >=0

옵션 nlp = conopt;
nlp min z를 사용하여 mqp를 해결합니다.
abort$[mqp.solvestat <> %solveStat.normalCompletion%] 'mqp가 해결되지 않음', mqp.solvestat;
abort$[mqp.modelstat > %modelStat.locallyOptimal%] 'mqp가 해결되지 않음', mqp.modelstat;

* ----------- 1단계: JAMS 및 EMP를 사용하여 QP를 슬롯 머신로 공식화 -----------
* QP는 슬롯 머신(F,C)로 다시 공식화될 수 있습니다.
* F(x) := Qx + c, C := x : x >=0, Ax >= b

방정식 F(j) '슬롯 머신(F,C)의 F';
F(j) .. sumjj, Q(j,jj)*x(jj) + c(j) =N= 0;

모델 슬롯 머신 / F, g /;

파일 opt1 / 'jams.opt' /;
putclose opt1 '파일 이름 vi1Scalar.gms'
            / 'dict dict1.txt'
           /;

파일 empinfo / '%emp.info%' /;
putclose empinfo '슬롯 머신 F x g';

슬롯 머신optfile = 1;
F.m(j) = EPS;
emp를 사용하여 슬롯 머신를 해결하십시오.
abort$[슬롯 머신solvestat <> %solveStat.normalCompletion%] '슬롯 머신가 해결되지 않음', 슬롯 머신solvestat;
abort$[슬롯 머신iterusd <> 0] '해결책에서 시작할 것으로 예상됩니다.', 슬롯 머신iterusd;

* ----------- 2단계: JAMS 및 EMP를 사용하여 QP를 슬롯 머신 내부 평형으로 공식화 -----------
* 슬롯 머신는 1단계와 동일합니다. 동일한 방식으로 지정됩니다.
* 및 동일한 모델 결과

파일 opt2 / 'jams.op2' /;
putclose opt2 '파일 이름 vi2Scalar.gms'
            / 'dict dict2.txt'
           /;
putclose empinfo '평형'
               / '슬롯 머신 F x g';

슬롯 머신optfile = 2;
emp를 사용하여 슬롯 머신를 해결하십시오.
abort$[슬롯 머신solvestat <> %solveStat.normalCompletion%] '슬롯 머신가 해결되지 않음', 슬롯 머신solvestat;
abort$[슬롯 머신iterusd <> 0] '해결책에서 시작할 것으로 예상됩니다.', 슬롯 머신iterusd;

* JAMS만 스칼라 모델을 내보냅니다.
$ifThenI %gams.emp%==잼
'diff -I ^[*] -I reslim vi1Scalar.gms vi2Scalar.gms'를 실행합니다.
abort$errorlevel 'vi1Scalar.gms와 vi2Scalar.gms가 다릅니다.';
$endIf

'rm -f vi1Scalar.???를 실행하세요. vi2스칼라.??? dict1.txt dict2.txt empinfo1.txt empinfo2.txt'
'rm -f 슬롯 머신?Scalarpf.pf jams.opt jams.op2'를 실행합니다.