\$title 'SELKIE test suite: obj variable setting' (SELKIE17,SEQ=773) \$ontext Test if the value of the objective variable is set correctly after solve. Contributor: Youngdae Kim (11.07.2017) \$offtext \$if not set TESTTOL \$set TESTTOL 1e-4 scalar tol / %TESTTOL% /; file opt / 'selkie.opt' /; file info / '%emp.info%' /; set i / 1*5 /; alias(i,j); variables obj(i); positive variables x(i); equations defobj(i), cap; defobj(i).. obj(i) =E= x(i)*(1 - sum(j, x(j))); cap.. sum(i, x(i)) =L= 1; model m / defobj, cap /; put info 'equilibrium'; loop(i, put / 'max', obj(i), x(i), defobj(i), cap ); putclose; x.up(i) = 1; putclose opt 'use_mcpopt yes'; m.optfile = 1; option emp = selkie; solve m using emp; abort\$[ smax{i, abs(x.l(i) - 0.1667)} > tol ] 'bad x.l', x.l; abort\$[ smax{i, abs(obj.l(i) - 0.0278)} > tol ] 'bad obj.l', obj.l; abort\$[ abs(cap.m) > tol ] 'bad cap.m', cap.m; \$onecho > agent1_gms Variables x6,x7,x8,x9,x10,u6; Positive Variables x6,x7,x8,x9,x10,u6; Equations e6,dL_dx6; e6.. 1 =G= x6 + x7 + x8 + x9 + x10; dL_dx6.. (-(1 - x6 - x7 - x8 - x9 - x10 - x6))/(1) + u6 =G= 0; * set non-default bounds x6.up = 1; * fix levels belonging to other agents x7.fx = 0; x8.fx = 0; x9.fx = 0; x10.fx = 0; Model m / e6.u6,dL_dx6.x6 /; Solve m using mcp; \$offecho execute 'cat agent1_gms > agent1.gms.want'; execute 'cat "%gams.scrdir%agent1.gms" > agent1.gms.got'; execute '=diff -bw agent1.gms.want agent1.gms.got'; abort\$errorlevel 'Files agent1.gms.want and agent1.gms.got differ'; \$onecho > agent2_gms Variables x6,x7,x8,x9,x10,u6; Positive Variables x6,x7,x8,x9,x10,u6; Equations e6,dL_dx7; e6.. 1 =G= x6 + x7 + x8 + x9 + x10; dL_dx7.. (-(1 - x6 - x7 - x8 - x9 - x10 - x7))/(1) + u6 =G= 0; * set non-default bounds x7.up = 1; * fix levels belonging to other agents x6.fx = 0; x8.fx = 0; x9.fx = 0; x10.fx = 0; Model m / e6.u6,dL_dx7.x7 /; Solve m using mcp; \$offecho execute 'cat agent2_gms > agent2.gms.want'; execute 'cat "%gams.scrdir%agent2.gms" > agent2.gms.got'; execute '=diff -bw agent2.gms.want agent2.gms.got'; abort\$errorlevel 'Files agent2.gms.want and agent2.gms.got differ'; \$onecho > agent3_gms Variables x6,x7,x8,x9,x10,u6; Positive Variables x6,x7,x8,x9,x10,u6; Equations e6,dL_dx8; e6.. 1 =G= x6 + x7 + x8 + x9 + x10; dL_dx8.. (-(1 - x6 - x7 - x8 - x9 - x10 - x8))/(1) + u6 =G= 0; * set non-default bounds x8.up = 1; * fix levels belonging to other agents x6.fx = 0; x7.fx = 0; x9.fx = 0; x10.fx = 0; Model m / e6.u6,dL_dx8.x8 /; Solve m using mcp; \$offecho execute 'cat agent3_gms > agent3.gms.want'; execute 'cat "%gams.scrdir%agent3.gms" > agent3.gms.got'; execute '=diff -bw agent3.gms.want agent3.gms.got'; abort\$errorlevel 'Files agent3.gms.want and agent3.gms.got differ'; \$onecho > agent4_gms Variables x6,x7,x8,x9,x10,u6; Positive Variables x6,x7,x8,x9,x10,u6; Equations e6,dL_dx9; e6.. 1 =G= x6 + x7 + x8 + x9 + x10; dL_dx9.. (-(1 - x6 - x7 - x8 - x9 - x10 - x9))/(1) + u6 =G= 0; * set non-default bounds x9.up = 1; * fix levels belonging to other agents x6.fx = 0; x7.fx = 0; x8.fx = 0; x10.fx = 0; Model m / e6.u6,dL_dx9.x9 /; Solve m using mcp; \$offecho execute 'cat agent4_gms > agent4.gms.want'; execute 'cat "%gams.scrdir%agent4.gms" > agent4.gms.got'; execute '=diff -bw agent4.gms.want agent4.gms.got'; abort\$errorlevel 'Files agent4.gms.want and agent4.gms.got differ'; \$onecho > agent5_gms Variables x6,x7,x8,x9,x10,u6; Positive Variables x6,x7,x8,x9,x10,u6; Equations e6,dL_dx10; e6.. 1 =G= x6 + x7 + x8 + x9 + x10; dL_dx10.. (-(1 - x6 - x7 - x8 - x9 - x10 - x10))/(1) + u6 =G= 0; * set non-default bounds x10.up = 1; * fix levels belonging to other agents x6.fx = 0; x7.fx = 0; x8.fx = 0; x9.fx = 0; Model m / e6.u6,dL_dx10.x10 /; Solve m using mcp; \$offecho execute 'cat agent5_gms > agent5.gms.want'; execute 'cat "%gams.scrdir%agent5.gms" > agent5.gms.got'; execute '=diff -bw agent5.gms.want agent5.gms.got'; abort\$errorlevel 'Files agent5.gms.want and agent5.gms.got differ'; obj.l(i) = 0; x.l(i) = 0; putclose opt 'agent_group {{1..5}}'; m.optfile = 1; option emp = selkie; solve m using emp; abort\$[ smax{i, abs(x.l(i) - 0.1667)} > tol ] 'bad x.l', x.l; abort\$[ smax{i, abs(obj.l(i) - 0.0278)} > tol ] 'bad obj.l', obj.l; abort\$[ abs(cap.m) > tol ] 'bad cap.m', cap.m; \$onecho > agent6_gms Variables x6,x7,x8,x9,x10,u6; Positive Variables x6,x7,x8,x9,x10,u6; Equations e6,dL_dx6,dL_dx7,dL_dx8,dL_dx9,dL_dx10; e6.. 1 =G= x6 + x7 + x8 + x9 + x10; dL_dx6.. (-(1 - x6 - x7 - x8 - x9 - x10 - x6))/(1) + u6 =G= 0; dL_dx7.. (-(1 - x6 - x7 - x8 - x9 - x10 - x7))/(1) + u6 =G= 0; dL_dx8.. (-(1 - x6 - x7 - x8 - x9 - x10 - x8))/(1) + u6 =G= 0; dL_dx9.. (-(1 - x6 - x7 - x8 - x9 - x10 - x9))/(1) + u6 =G= 0; dL_dx10.. (-(1 - x6 - x7 - x8 - x9 - x10 - x10))/(1) + u6 =G= 0; * set non-default bounds x6.up = 1; x7.up = 1; x8.up = 1; x9.up = 1; x10.up = 1; Model m / e6.u6,dL_dx6.x6,dL_dx7.x7,dL_dx8.x8,dL_dx9.x9,dL_dx10.x10 /; Solve m using mcp; \$offecho execute 'cat agent6_gms > agent6.gms.want'; execute 'cat "%gams.scrdir%agent6.gms" > agent6.gms.got'; execute '=diff -bw agent6.gms.want agent6.gms.got'; abort\$errorlevel 'Files agent6.gms.want and agent6.gms.got differ';