설명
RVI(직사각형 슬롯)가 MCP와 동일함을 보여줍니다. 기고자: Steven Dirkse, 2013년 8월
소형 모델 유형 :슬롯
카테고리 : GAMS EMP 라이브러리
메인 파일 : vi_mcp.gms 포함: qpdata.inc[html]
$title MCP 및 슬롯 구문을 사용하여 지정된 동일한 모델(VI_MCP,SEQ=98)
$onText
RVI(직사각형 슬롯)가 MCP와 동일함을 입증합니다.
기고자: 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;
* ----------- STEP 1: MCP를 이용하여 QP의 KKT 조건 공식화 -----------
양의 변수 u(i);
방정식 dLdx(j);
dLdx(j) .. sumjj, Q(j,jj)*x(jj) + c(j) - sumi, u(i)*A(i,j) =N= 0;
모델 kkt / dLdx.x, g.u /;
파일 pathopt / 'path.opt' /;
putclose pathopt '전처리 번호'
/ 'crash_iteration_limit 0'
/ 'major_iteration_limit 0'
/;
kkt.optfile = 1;
u.l(i) = g.m(i);
mcp를 사용하여 kkt를 해결합니다.
abort$[kkt.solvestat <> %solveStat.normalCompletion%] 'kkt가 해결되지 않음', kkt.solvestat;
abort$[kkt.modelstat <> %modelStat.optimal%] 'kkt가 해결되지 않음', kkt.modelstat;
abort$[kkt.iterusd <> 0] '해결책에서 시작할 것으로 예상됩니다.', kkt.iterusd;
파일 콥트 / 'convert.opt' /;
putclose copt 'gams mcpScalar.gms'
/ 'dict mcpDict.txt'
/;
옵션 mcp=변환;
mcp를 사용하여 kkt를 해결합니다.
옵션 mcp=기본값;
* ----------- 2단계: 슬롯를 사용하여 1단계의 MCP 공식화 -----------
* MCP(F,B)(B는 상자 [L,U]임)는 슬롯(F,B)와 동일합니다.
모델 슬롯 / dLdx, g /;
파일 jopt / 'jams.opt' /;
putclose jopt 'fileName viScalar.gms'
/ 'dict viDict.txt'
/;
파일 empinfo / '%emp.info%' /;
putclose empinfo '슬롯 dLdx x g u' / ;
슬롯optfile = 1;
emp를 사용하여 슬롯를 해결하십시오.
abort$[슬롯solvestat <> %solveStat.normalCompletion%] '슬롯가 해결되지 않음', 슬롯solvestat;
abort$[슬롯iterusd <> 0] '해결책에서 시작할 것으로 예상됩니다.', 슬롯iterusd;
'rm -f path.opt 변환.opt mcpScalar.???를 실행합니다. mcpDict.txt'
'rm -f jams.opt viScalar.???를 실행합니다. 슬롯?calarpf.pf viDict.txt empinfo.txt'