설명
이 테스트는 EMP가 다른 장치로 시작된 후 제공하는 결과를 비교합니다. 옵션. 이 테스트에서는 메가 슬롯 모델 라이브러리의 mhw4d 모델을 사용합니다. 빌린 곳: Wright, MH, 비선형 제약 조건 최적화를 위한 수치적 방법. 1976년 스탠포드대학교 박사학위 논문. 기여자: Jan-H. Jagla, 2009년 2월
소형 모델 유형 :메가 슬롯
카테고리 : 메가 슬롯 테스트 라이브러리
메인 파일 : emp04.gms
$title nlp 문제에 대해 다양한 옵션을 사용하여 EMP 실행 결과 비교(EMP04,SEQ=431)
$onText
이 테스트는 EMP가 다른 시작 후 제공되는 결과를 비교합니다.
옵션.
이 테스트에서는 메가 슬롯 모델 라이브러리의 mhw4d 모델을 사용합니다.
빌린 곳:
Wright, MH, 비선형 제약 조건 최적화를 위한 수치적 방법.
1976년 스탠포드대학교 박사학위 논문.
기여자: Jan-H. 자글라, 2009년 2월
$offText
옵션 limcol=0, limrow=0;
스칼라 솔버상태, iterusednlp, iterusedmcp;
*------------------------------------------------------------------
* 메가 슬롯 모델 라이브러리에서 복사된 원본 모델
변수 m, x1, x2, x3, x4, x5;
방정식 함수, eq1, eq2, eq3;
함수.. m =e= sqr(x1-1) + sqr(x1-x2) + 전력(x2-x3,3)
+ 전력(x3-x4,4) + 전력(x4-x5,4) ;
eq1.. x1 + sqr(x2) + 거듭제곱(x3,3) =e= 3*sqrt(2) + 2 ;
eq2.. x2 - sqr(x3) + x4 =e= 2*sqrt(2) - 2 ;
eq3.. x1*x5 =e= 2 ;
모델 라이트 / 모두 / ;
$macro setVarLevels m.l = 0; x1.l = -1.27; x2.1 = 2.4; x3.1 = 1.2; x4.l = -.15; x5.l = -1.5
$macro setVarMarginals m.m = 0; x1.m = 0; x2.m = 0; x3.m = 0; x4.m = 0; x5.m = 0
$macro setEquMarginals funct.m = 0; eq1.m = 0; eq2.m = 0; eq3.m = 0;
setVarLevels;
m을 최소화하는 nlp를 사용하여 wright를 해결합니다.
*------------------------------------------------------------------
솔버상태 = wright.solvestat;
iterusednlp = wright.iterusd;
iterusedmcp = 3;
Execute_unload '기본값';
파일 empopt /"jams.opt"/;
파일 empinfo /"%emp.info%"/;
옵션 nlp=pathnlp;
setVarLevels;
setVarMarginals;
setEquMarginals;
m을 최소화하는 nlp를 사용하여 wright를 해결합니다.
솔버상태 = wright.solvestat;
iterusedmcp = wright.iterusd;
실행_언로드 'PATHNLP';
setVarLevels;
setVarMarginals;
setEquMarginals;
m을 최소화하는 emp를 사용하여 wright를 해결합니다.
솔버상태 = wright.solvestat;
abort$(wright.iterusd <> iterusednlp) 'EMP 실행 반복이 다릅니다';
Execute_unload 'EMP';
putclose empinfo '모델 유형 MCP';
setVarLevels;
setVarMarginals;
setEquMarginals;
m을 최소화하는 emp를 사용하여 wright를 해결합니다.
솔버상태 = wright.solvestat;
abort$(wright.iterusd <> iterusedmcp) 'EMCP 실행 반복이 다릅니다';
실행_언로드 'EMCP';
putclose empopt 'keepobj';
putclose empinfo '모델 유형 MCP';
setVarLevels;
setVarMarginals;
setEquMarginals;
m을 최소화하는 emp를 사용하여 wright를 해결합니다.
솔버상태 = wright.solvestat;
abort$(wright.iterusd <> iterusedmcp) 'EMCPobj 실행 반복이 다릅니다';
Execute_unload 'EMCPobj';
'gdxdiff default.gdx PATHNLP.gdx difffile0.gdx Eps=1e-8 > %system.nullfile%'를 실행합니다.
abort$errorlevel '기본 실행 솔루션과 PATHNLP가 다릅니다';
'gdxdiff default.gdx EMP.gdx diffile1.gdx Eps=1e-9 > %system.nullfile%'을 실행합니다.
abort$errorlevel '기본 실행과 EMP의 솔루션이 다릅니다';
'gdxdiff default.gdx EMCP.gdx difffile2.gdx Eps=1e-8 > %system.nullfile%'을 실행합니다.
abort$errorlevel '기본 실행 솔루션과 EMCP 솔루션이 다름';
'gdxdiff default.gdx EMCPobj.gdx difffile3.gdx Eps=1e-8 > %system.nullfile%'를 실행합니다.
abort$errorlevel '기본 실행 솔루션과 EMCPobj가 다릅니다';