emppy2.gms : emp python을 사용하여 simplevi.gms 예제 공식화

설명

emp Python을 사용하여 simplevi.gms 예제를 공식화합니다.

기여자: 김영대 (2018.10.26)

소형 모델 유형 :슬롯 사이트 추천


카테고리 : 슬롯 사이트 추천 테스트 라이브러리


메인 파일 : emppy2.gms

$title 'emp Python을 사용하여 simplevi.gms 예제 공식화' (EMPPY2,SEQ=790)

$onText
emp Python을 사용하여 simplevi.gms 예제를 공식화합니다.

기여자: 김영대 (2018.10.26)
$offText

$log --- Python 라이브러리 %sysEnv.GMSPYTHONLIB% 사용

$설정되지 않은 경우 TESTTOL $set TESTTOL 1e-3
스칼라 tol / %TESTTOL% /;
파일 opt / 'jams.opt' /;

세트
 나는 / i1, i2 /
 J / j1 * j3 /
 ;

테이블 A(I,J)
       j1 j2 j3
나는1 1 1
i2 1 1 ;

매개변수 b(I) /
i1 6
i2 9
/;

양의 변수
 x(J) '원시 변수, perp에서 f(J)'
 ;

방정식
 에프(J)
 지(나)
 ;

F(J).. 2 * x(J) =n= 0 ;
g(I).. sum j, A(I,J)*x(J) =g= b(I) ;

모델 m / F, g/;

$onEcho > empfile.txt
vi F(J), x(J), g(I)
$offEcho

$libInclude empmodel empfile.txt

putclose opt '파일명 m.gms';
m.optfile = 1;

emp를 사용하여 m을 해결합니다.

중단$[m.solvestat <> %solveStat.normalCompletion%]
     '잘못된 m.solvestat', m.solvestat;
중단$[m.modelstat <> %modelStat.optimal%]
     '잘못된 m.modelstat', m.modelstat;
abort$[ abs(F.l('j1') - 2) > tol ] 'bad F.l("j1")', F.l;
abort$[ abs(F.l('j2') - 10) > tol ] 'bad F.l("j2")', F.l;
abort$[ abs(F.l('j3') - 8) > tol ] 'bad F.l("j2")', F.l;
abort$[ abs(g.l('i1') - 6) > tol ] 'bad g.l("i1")', g.l;
abort$[ abs(g.l('i2') - 9) > tol ] 'bad g.l("i2")', g.l;
abort$[ abs(x.l('j1') - 1) > tol ] 'bad x.l("j1")', x.l;
abort$[ abs(x.l('j2') - 5) > tol ] 'bad x.l("j2")', x.l;
abort$[ abs(x.l('j3') - 4) > tol ] 'bad x.l("j2")', x.l;

$onEcho > m_gms
***********************************************
* 슬롯 사이트 추천/JAMS가 2018년 10월 26일 23:38:39에 작성함
* 자세한 내용은 JAMS 옵션 "Dict"를 사용하세요.
***********************************************

변수 x1,x2,x3,u4,u5;

양수 변수 x1,x2,x3;

양수 변수 u4,u5;

방정식 e1,e2,e3,e4,e5;

e1..2*x1 - u4 =N= 0;

e2.. 2*x2 - u4 - u5 =N= 0;

e3..2*x3 - u5 =N= 0;

e4.. x1 + x2 =G= 6;

e5.. x2 + x3 =G= 9;

모델 m / e1.x1,e2.x2,e3.x3,e4.u4,e5.u5 /;

m.limrow=0; m.limcol=0;

MCP를 사용하여 m을 해결합니다.
$offEcho

슬롯 사이트 추천에 의해 작성된 'grep -v " 실행" m_gms > m.gms.want'
'grep -v " 슬롯 사이트 추천" m.gms > m.gms.got'을 실행합니다.
'=diff -I reslim -bw m.gms.want m.gms.got'을 실행합니다.
abort$errorlevel 'm.gms.want와 m.gms.got 파일이 다릅니다.';