$title 'Formulate the simplevi.gms example using emp python' (EMPPY2,SEQ=790) $ontext Formulate the simplevi.gms example using emp python. Contributor: Youngdae Kim (10.26.2018) $offtext $log --- Using Python library %sysEnv.GMSPYTHONLIB% $if not set TESTTOL $set TESTTOL 1e-3 scalar tol / %TESTTOL% /; file opt / 'jams.opt' /; sets I / i1, i2 / J / j1 * j3 / ; table A(I,J) j1 j2 j3 i1 1 1 i2 1 1 ; parameter b(I) / i1 6 i2 9 /; positive variable x(J) 'primal vars, perp to f(J)' ; equations F(J) g(I) ; F(J).. 2 * x(J) =n= 0 ; g(I).. sum {j, A(I,J)*x(J)} =g= b(I) ; model m / F, g/; $onecho > empfile.txt vi F(J), x(J), g(I) $offecho $libinclude empmodel empfile.txt putclose opt 'FileName m.gms'; m.optfile = 1; solve m using emp; abort$[m.solvestat <> %solvestat.NormalCompletion%] 'wrong m.solvestat', m.solvestat; abort$[m.modelstat <> %modelstat.Optimal%] 'wrong 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 *********************************************** * written by GAMS/JAMS at 10/26/18 23:38:39 * for more information use JAMS option "Dict" *********************************************** Variables x1,x2,x3,u4,u5; Positive Variables x1,x2,x3; Positive Variables u4,u5; Equations 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; Model m / e1.x1,e2.x2,e3.x3,e4.u4,e5.u5 /; m.limrow=0; m.limcol=0; Solve m using MCP; $offecho execute 'grep -v " written by GAMS" m_gms > m.gms.want' execute 'grep -v " written by GAMS" m.gms > m.gms.got' execute '=diff -I reslim -bw m.gms.want m.gms.got' abort$errorlevel 'Files m.gms.want and m.gms.got differ';