Description
Test JAMS behavior on a small equilibrium model with implicit variables. Contributors: Youngdae Kim & Steve Dirkse, Dec 2016
Small Model of Type : GAMS
Category : GAMS Test library
Main file : emp22.gms
$title 'Test JAMS/EMP on implicit variable handling' (EMP22,SEQ=704)
$onText
Test JAMS behavior on a small equilibrium model with implicit variables.
Contributors: Youngdae Kim & Steve Dirkse, Dec 2016
$offText
$if not set TESTTOL $set TESTTOL 1e-3
scalars tol / %TESTTOL% /;
file opt / 'jams.opt' /;
file info / '%emp.info%' /;
sets i agents / 1*5 /;
alias(i,j);
parameters
c(i) / 1 10, 2 8, 3 6, 4 4, 5 2 /
L(i) / 1 5, 2 5, 3 5, 4 5, 5 5 /
beta(i) / 1 1.2, 2 1.1, 3 1.0, 4 0.9, 5 0.8 /
;
* The scalar files generated depend on the variable declaration order,
* so do not change the declarations lightly
variable
obj(i) objective variable of each cost minimizing agent
zExp(i) explicit replica of variable z
z implicit variable
;
positive variables q(i);
equations
defobjExp(i) definition of the objective variable i with zExp
defobj(i) definition of the objective variable i with z
defzExp(i) definition of the explicit replica of variable z
defz definition of the implicit variable z
;
defobjExp(i)..
obj(i) =E= q(i)*5000**(1.0/1.1)*zExp(i)**(-1.0/1.1) - (c(i)*q(i) + beta(i)/(beta(i)+1)*L(i)**(-1/beta(i))*q(i)**((beta(i)+1)/beta(i)));
defzExp(i)..
zExp(i) =E= sum(j, q(j));
q.l(i) = 10;
zExp.l(i) = sum(j, q.l(j));
model me 'explicit formulation' / defobjExp, defzExp /;
put info 'equilibrium';
loop(i,
put / 'min', obj(i), q(i), zExp(i);
put / defobjExp(i), defzExp(i);
);
putclose;
putclose opt
'Dict explDict.txt' /
'FileName expl.gms' ;
me.optfile = 1;
solve me using emp;
abort$[me.solvestat <> %solveStat.normalCompletion%]
'wrong me.solvestat', me.solvestat;
abort$[me.modelstat > %modelStat.locallyOptimal%]
'wrong me.modelstat', me.modelstat;
abort$[ abs(obj.l('1')-199.934) > tol ] 'bad obj.l("1")', obj.l;
abort$[ abs(obj.l('2')-279.716) > tol ] 'bad obj.l("2")', obj.l;
abort$[ abs(obj.l('3')-346.590) > tol ] 'bad obj.l("3")', obj.l;
abort$[ abs(obj.l('4')-391.279) > tol ] 'bad obj.l("4")', obj.l;
abort$[ abs(obj.l('5')-410.357) > tol ] 'bad obj.l("5")', obj.l;
abort$[ abs(q.l('1')-36.933) > tol ] 'bad q.l("1")', q.l;
abort$[ abs(q.l('2')-41.818) > tol ] 'bad q.l("2")', q.l;
abort$[ abs(q.l('3')-43.707) > tol ] 'bad q.l("3")', q.l;
abort$[ abs(q.l('4')-42.659) > tol ] 'bad q.l("4")', q.l;
abort$[ abs(q.l('5')-39.179) > tol ] 'bad q.l("5")', q.l;
abort$[smax{i, abs(zExp.l(i)-204.295)} > tol ] 'bad zExp.l(i)', zExp.l;
obj.l(i) = 0;
q.l(i) = 10;
z.l = sum(i, q.l(i));
$onEcho > expl_gms
***********************************************
* written by GAMS/JAMS at 12/04/16 11:07:17
* for more information use JAMS option "Dict"
***********************************************
Variables x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,u6,u7,u8,u9,u10;
Positive Variables x11,x12,x13,x14,x15;
Equations e6,e7,e8,e9,e10,dL_dx6,dL_dx7,dL_dx8,dL_dx9,dL_dx10,dL_dx11,dL_dx12
,dL_dx13,dL_dx14,dL_dx15;
e6.. x6 - x11 - x12 - x13 - x14 - x15 =E= 0;
e7.. x7 - x11 - x12 - x13 - x14 - x15 =E= 0;
e8.. x8 - x11 - x12 - x13 - x14 - x15 =E= 0;
e9.. x9 - x11 - x12 - x13 - x14 - x15 =E= 0;
e10.. x10 - x11 - x12 - x13 - x14 - x15 =E= 0;
dL_dx6.. (2095.59483215011*x6**(-1.90909090909091)*x11)/(-1) - u6 =E= 0;
dL_dx7.. (2095.59483215011*x7**(-1.90909090909091)*x12)/(-1) - u7 =E= 0;
dL_dx8.. (2095.59483215011*x8**(-1.90909090909091)*x13)/(-1) - u8 =E= 0;
dL_dx9.. (2095.59483215011*x9**(-1.90909090909091)*x14)/(-1) - u9 =E= 0;
dL_dx10.. (2095.59483215011*x10**(-1.90909090909091)*x15)/(-1) - u10 =E= 0;
dL_dx11.. (-(2305.15431536512*x6**(-0.909090909090909) - (10 +
0.261532097202366*x11**0.833333333333333)))/(-1) + u6 =G= 0;
dL_dx12.. (-(2305.15431536512*x7**(-0.909090909090909) - (8 + 0.231511582354131
*x12**0.909090909090909)))/(-1) + u7 =G= 0;
dL_dx13.. (-(2305.15431536512*x8**(-0.909090909090909) - (6 + 0.2*x13**1))
)/(-1) + u8 =G= 0;
dL_dx14.. (-(2305.15431536512*x9**(-0.909090909090909) - (4 + 0.167250206190075
*x14**1.11111111111111)))/(-1) + u9 =G= 0;
dL_dx15.. (-(2305.15431536512*x10**(-0.909090909090909) - (2 +
0.133748060995284*x15**1.25)))/(-1) + u10 =G= 0;
* set non-default levels
x6.l = 50;
x7.l = 50;
x8.l = 50;
x9.l = 50;
x10.l = 50;
x11.l = 10;
x12.l = 10;
x13.l = 10;
x14.l = 10;
x15.l = 10;
Model m / e6.u6,e7.u7,e8.u8,e9.u9,e10.u10,dL_dx6.x6,dL_dx7.x7,dL_dx8.x8
,dL_dx9.x9,dL_dx10.x10,dL_dx11.x11,dL_dx12.x12,dL_dx13.x13
,dL_dx14.x14,dL_dx15.x15 /;
m.limrow=0; m.limcol=0;
Solve m using MCP;
$offEcho
execute 'grep -v " written by GAMS" expl_gms > expl.gms.want'
execute 'grep -v " written by GAMS" expl.gms > expl.gms.got'
execute '=diff -I reslim -bw expl.gms.want expl.gms.got'
abort$errorlevel 'Files expl.gms.want and expl.gms.got differ';
$onEcho > expl_dict
* written by GAMS/JAMS at 12/04/16 11:07:17
********************************************************************************
Contents
1 Content of EMP Information File
2 Processed EMP Information
3 Dictionary
3.1 Constraints
3.2 Variables
********************************************************************************
1 Content of EMP Information File
---------------------------------
1:equilibrium
2:min obj('1') q('1') zExp('1')
3:defobjExp('1') defzExp('1')
4:min obj('2') q('2') zExp('2')
5:defobjExp('2') defzExp('2')
6:min obj('3') q('3') zExp('3')
7:defobjExp('3') defzExp('3')
8:min obj('4') q('4') zExp('4')
9:defobjExp('4') defzExp('4')
10:min obj('5') q('5') zExp('5')
11:defobjExp('5') defzExp('5')
2 Processed EMP Information
---------------------------
3 Dictionary
------------
3.1 Constraints
---------------
{reformulated} defobjExp(1)
{reformulated} defobjExp(2)
{reformulated} defobjExp(3)
{reformulated} defobjExp(4)
{reformulated} defobjExp(5)
e6 defzExp(1)
e7 defzExp(2)
e8 defzExp(3)
e9 defzExp(4)
e10 defzExp(5)
dL_dx6 {new}
dL_dx7 {new}
dL_dx8 {new}
dL_dx9 {new}
dL_dx10 {new}
dL_dx11 {new}
dL_dx12 {new}
dL_dx13 {new}
dL_dx14 {new}
dL_dx15 {new}
3.2 Variables
--------------
{reformulated} obj(1)
{reformulated} obj(2)
{reformulated} obj(3)
{reformulated} obj(4)
{reformulated} obj(5)
x6 zExp(1)
x7 zExp(2)
x8 zExp(3)
x9 zExp(4)
x10 zExp(5)
x11 q(1)
x12 q(2)
x13 q(3)
x14 q(4)
x15 q(5)
u6 {new}
u7 {new}
u8 {new}
u9 {new}
u10 {new}
$offEcho
execute 'grep -v " written by GAMS" expl_dict > expldict.txt.want'
execute 'grep -v " written by GAMS" explDict.txt > expldict.txt.got'
execute '=diff -bw expldict.txt.want expldict.txt.got'
abort$errorlevel 'Files expldict.txt.want and expldict.txt.got differ';
defobj(i)..
obj(i) =E= q(i)*5000**(1.0/1.1)*z**(-1.0/1.1) - (c(i)*q(i) + beta(i)/(beta(i)+1)*L(i)**(-1/beta(i))*q(i)**((beta(i)+1)/beta(i)));
defz..
z =E= sum(i, q(i));
model mi 'implicit formulation' / defobj, defz /;
put info 'equilibrium';
put / 'implicit z defz';
loop(i,
put / 'min', obj(i), q(i), z, defobj(i);
);
putclose;
* testing with implicit
putclose opt
'Dict implDict.txt' /
'FileName impl.gms' /
'ImplVarModel substitution' ;
mi.optfile = 1;
solve mi using emp;
abort$[mi.solvestat <> %solveStat.normalCompletion%]
'wrong mi.solvestat', mi.solvestat;
abort$[mi.modelstat > %modelStat.locallyOptimal%]
'wrong mi.modelstat', mi.modelstat;
abort$[ abs(obj.l('1')-199.934) > tol ] 'bad obj.l("1")', obj.l;
abort$[ abs(obj.l('2')-279.716) > tol ] 'bad obj.l("2")', obj.l;
abort$[ abs(obj.l('3')-346.590) > tol ] 'bad obj.l("3")', obj.l;
abort$[ abs(obj.l('4')-391.279) > tol ] 'bad obj.l("4")', obj.l;
abort$[ abs(obj.l('5')-410.357) > tol ] 'bad obj.l("5")', obj.l;
abort$[ abs(q.l('1')-36.933) > tol ] 'bad q.l("1")', q.l;
abort$[ abs(q.l('2')-41.818) > tol ] 'bad q.l("2")', q.l;
abort$[ abs(q.l('3')-43.707) > tol ] 'bad q.l("3")', q.l;
abort$[ abs(q.l('4')-42.659) > tol ] 'bad q.l("4")', q.l;
abort$[ abs(q.l('5')-39.179) > tol ] 'bad q.l("5")', q.l;
abort$[ abs(z.l-204.295) > tol ] 'bad z.l', z.l;
obj.l(i) = 0;
q.l(i) = 10;
z.l = sum(i, q.l(i));
defobj.m(i) = 0;
defz.m = 0;
$onEchoV > impl_gms
***********************************************
* written by GAMS/JAMS at 12/04/16 11:11:39
* for more information use JAMS option "Dict"
***********************************************
Variables x6,x7,x8,x9,x10,x11;
Positive Variables x7,x8,x9,x10,x11;
Equations e6,dL_dx7,dL_dx8,dL_dx9,dL_dx10,dL_dx11;
e6.. x6 - x7 - x8 - x9 - x10 - x11 =E= 0;
dL_dx7.. (-(2305.15431536512*x6**(-0.909090909090909) - (10 + 0.261532097202366
*x7**0.833333333333333)))/(-1) + ((2095.59483215011*x6**(-
1.90909090909091)*x7)/(-1))*(1) =G= 0;
dL_dx8.. (-(2305.15431536512*x6**(-0.909090909090909) - (8 + 0.231511582354131*
x8**0.909090909090909)))/(-1) + ((2095.59483215011*x6**(-
1.90909090909091)*x8)/(-1))*(1) =G= 0;
dL_dx9.. (-(2305.15431536512*x6**(-0.909090909090909) - (6 + 0.2*x9**1)))/(-1)
+ ((2095.59483215011*x6**(-1.90909090909091)*x9)/(-1))*(1) =G= 0;
dL_dx10.. (-(2305.15431536512*x6**(-0.909090909090909) - (4 + 0.167250206190075
*x10**1.11111111111111)))/(-1) + ((2095.59483215011*x6**(-
1.90909090909091)*x10)/(-1))*(1) =G= 0;
dL_dx11.. (-(2305.15431536512*x6**(-0.909090909090909) - (2 + 0.133748060995284
*x11**1.25)))/(-1) + ((2095.59483215011*x6**(-1.90909090909091)*x11
)/(-1))*(1) =G= 0;
* set non-default levels
x6.l = 50;
x7.l = 10;
x8.l = 10;
x9.l = 10;
x10.l = 10;
x11.l = 10;
Model m / e6.x6,dL_dx7.x7,dL_dx8.x8,dL_dx9.x9,dL_dx10.x10,dL_dx11.x11 /;
File implvarfile / '%gams.scrdir%implvar.dat' /;
Put implvarfile;
$onPutV
x6
$offPut
m.limrow=0; m.limcol=0;
Solve m using MCP;
$offEcho
execute 'grep -v " written by GAMS" impl_gms > impl.gms.want'
execute 'grep -v " written by GAMS" impl.gms > impl.gms.got'
execute '=diff -I reslim -bw impl.gms.want impl.gms.got'
abort$errorlevel 'Files impl.gms.want and impl.gms.got differ';
$onEcho > impl_dict
* written by GAMS/JAMS at 12/04/16 11:11:39
********************************************************************************
Contents
1 Content of EMP Information File
2 Processed EMP Information
3 Dictionary
3.1 Constraints
3.2 Variables
********************************************************************************
1 Content of EMP Information File
---------------------------------
1:equilibrium
2:implicit z defz
3:min obj('1') q('1') z defobj('1')
4:min obj('2') q('2') z defobj('2')
5:min obj('3') q('3') z defobj('3')
6:min obj('4') q('4') z defobj('4')
7:min obj('5') q('5') z defobj('5')
2 Processed EMP Information
---------------------------
3 Dictionary
------------
3.1 Constraints
---------------
{reformulated} defobj(1)
{reformulated} defobj(2)
{reformulated} defobj(3)
{reformulated} defobj(4)
{reformulated} defobj(5)
e6 defz
dL_dx7 {new}
dL_dx8 {new}
dL_dx9 {new}
dL_dx10 {new}
dL_dx11 {new}
3.2 Variables
--------------
{reformulated} obj(1)
{reformulated} obj(2)
{reformulated} obj(3)
{reformulated} obj(4)
{reformulated} obj(5)
x6 z
x7 q(1)
x8 q(2)
x9 q(3)
x10 q(4)
x11 q(5)
$offEcho
execute 'grep -v " written by GAMS" impl_dict > impldict.txt.want'
execute 'grep -v " written by GAMS" implDict.txt > impldict.txt.got'
execute '=diff -bw impldict.txt.want impldict.txt.got'
abort$errorlevel 'Files impldict.txt.want and impldict.txt.got differ';
* testing with adjoint
putclose opt
'Dict implSwitchingDict.txt' /
'FileName implSwitching.gms' /
'ImplVarModel switching' ;
solve mi using emp;
abort$[mi.solvestat <> %solveStat.normalCompletion%]
'wrong mi.solvestat', mi.solvestat;
abort$[mi.modelstat > %modelStat.locallyOptimal%]
'wrong mi.modelstat', mi.modelstat;
abort$[ abs(obj.l('1')-199.934) > tol ] 'bad obj.l("1")', obj.l;
abort$[ abs(obj.l('2')-279.716) > tol ] 'bad obj.l("2")', obj.l;
abort$[ abs(obj.l('3')-346.590) > tol ] 'bad obj.l("3")', obj.l;
abort$[ abs(obj.l('4')-391.279) > tol ] 'bad obj.l("4")', obj.l;
abort$[ abs(obj.l('5')-410.357) > tol ] 'bad obj.l("5")', obj.l;
abort$[ abs(q.l('1')-36.933) > tol ] 'bad q.l("1")', q.l;
abort$[ abs(q.l('2')-41.818) > tol ] 'bad q.l("2")', q.l;
abort$[ abs(q.l('3')-43.707) > tol ] 'bad q.l("3")', q.l;
abort$[ abs(q.l('4')-42.659) > tol ] 'bad q.l("4")', q.l;
abort$[ abs(q.l('5')-39.179) > tol ] 'bad q.l("5")', q.l;
abort$[ abs(z.l-204.295) > tol ] 'bad z.l', z.l;
obj.l(i) = 0;
q.l(i) = 10;
z.l = sum(i, q.l(i));
defobj.m(i) = 0;
defz.m = 0;
$onEchoV > implSwitching_gms
***********************************************
* written by GAMS/JAMS at 11/12/17 17:33:21
* for more information use JAMS option "Dict"
***********************************************
Variables x6,x7,x8,x9,x10,x11,u6_4,u6_5,u6_6,u6_7,u6_8;
Positive Variables x7,x8,x9,x10,x11;
Equations e6,dL_dx6_4,dL_dx7,dL_dx8,dL_dx9,dL_dx10,dL_dx11,dL_dx6_5,dL_dx6_6
,dL_dx6_7,dL_dx6_8;
e6.. x6 - x7 - x8 - x9 - x10 - x11 =E= 0;
dL_dx6_4.. (2095.59483215011*x6**(-1.90909090909091)*x7)/(-1) - u6_4 =E= 0;
dL_dx7.. (-(2305.15431536512*x6**(-0.909090909090909) - (10 + 0.261532097202366
*x7**0.833333333333333)))/(-1) + u6_4 =G= 0;
dL_dx8.. (-(2305.15431536512*x6**(-0.909090909090909) - (8 + 0.231511582354131*
x8**0.909090909090909)))/(-1) + u6_5 =G= 0;
dL_dx9.. (-(2305.15431536512*x6**(-0.909090909090909) - (6 + 0.2*x9**1)))/(-1)
+ u6_6 =G= 0;
dL_dx10.. (-(2305.15431536512*x6**(-0.909090909090909) - (4 + 0.167250206190075
*x10**1.11111111111111)))/(-1) + u6_7 =G= 0;
dL_dx11.. (-(2305.15431536512*x6**(-0.909090909090909) - (2 + 0.133748060995284
*x11**1.25)))/(-1) + u6_8 =G= 0;
dL_dx6_5.. (2095.59483215011*x6**(-1.90909090909091)*x8)/(-1) - u6_5 =E= 0;
dL_dx6_6.. (2095.59483215011*x6**(-1.90909090909091)*x9)/(-1) - u6_6 =E= 0;
dL_dx6_7.. (2095.59483215011*x6**(-1.90909090909091)*x10)/(-1) - u6_7 =E= 0;
dL_dx6_8.. (2095.59483215011*x6**(-1.90909090909091)*x11)/(-1) - u6_8 =E= 0;
* set non-default levels
x6.l = 50;
x7.l = 10;
x8.l = 10;
x9.l = 10;
x10.l = 10;
x11.l = 10;
Model m / e6.x6,dL_dx6_4.u6_4,dL_dx7.x7,dL_dx8.x8,dL_dx9.x9,dL_dx10.x10
,dL_dx11.x11,dL_dx6_5.u6_5,dL_dx6_6.u6_6,dL_dx6_7.u6_7
,dL_dx6_8.u6_8 /;
File implvarfile / '%gams.scrdir%implvar.dat' /;
Put implvarfile;
$onPutV
x6
u6_4
u6_5
u6_6
u6_7
u6_8
$offPut
m.limrow=0; m.limcol=0;
Solve m using MCP;
$offEcho
execute 'grep -v " written by GAMS" implSwitching_gms > implSwitching.gms.want'
execute 'grep -v " written by GAMS" implSwitching.gms > implSwitching.gms.got'
execute '=diff -I reslim -bw implSwitching.gms.want implSwitching.gms.got'
abort$errorlevel 'Files implSwitching.gms.want and implSwitching.gms.got differ';
$onEcho > implSwitching_dict
********************************************************************************
Contents
1 Content of EMP Information File
2 Processed EMP Information
3 Dictionary
3.1 Constraints
3.2 Variables
********************************************************************************
1 Content of EMP Information File
---------------------------------
1:equilibrium
2:implicit z defz
3:min obj('1') q('1') z defobj('1')
4:min obj('2') q('2') z defobj('2')
5:min obj('3') q('3') z defobj('3')
6:min obj('4') q('4') z defobj('4')
7:min obj('5') q('5') z defobj('5')
2 Processed EMP Information
---------------------------
3 Dictionary
------------
3.1 Constraints
---------------
{reformulated} defobj(1)
{reformulated} defobj(2)
{reformulated} defobj(3)
{reformulated} defobj(4)
{reformulated} defobj(5)
e6 defz
dL_dx6_4 {new}
dL_dx7 {new}
dL_dx8 {new}
dL_dx9 {new}
dL_dx10 {new}
dL_dx11 {new}
dL_dx6_5 {new}
dL_dx6_6 {new}
dL_dx6_7 {new}
dL_dx6_8 {new}
3.2 Variables
--------------
{reformulated} obj(1)
{reformulated} obj(2)
{reformulated} obj(3)
{reformulated} obj(4)
{reformulated} obj(5)
x6 z
x7 q(1)
x8 q(2)
x9 q(3)
x10 q(4)
x11 q(5)
u6_4 {new}
u6_5 {new}
u6_6 {new}
u6_7 {new}
u6_8 {new}
$offEcho
execute 'grep -v " written by GAMS" implSwitching_dict > implSwitchingDict.txt.want'
execute 'grep -v " written by GAMS" implSwitchingDict.txt > implSwitchingDict.txt.got'
execute '=diff -bw implSwitchingDict.txt.want implSwitchingDict.txt.got'
abort$errorlevel 'Files implSwitchingDict.txt.want and implSwitchingDict.txt.got differ';
* testing with replication
putclose opt
'Dict implRepDict.txt' /
'FileName implRep.gms' /
'ImplVarModel replication' ;
solve mi using emp;
abort$[mi.solvestat <> %solveStat.normalCompletion%]
'wrong mi.solvestat', mi.solvestat;
abort$[mi.modelstat > %modelStat.locallyOptimal%]
'wrong mi.modelstat', mi.modelstat;
abort$[ abs(obj.l('1')-199.934) > tol ] 'bad obj.l("1")', obj.l;
abort$[ abs(obj.l('2')-279.716) > tol ] 'bad obj.l("2")', obj.l;
abort$[ abs(obj.l('3')-346.590) > tol ] 'bad obj.l("3")', obj.l;
abort$[ abs(obj.l('4')-391.279) > tol ] 'bad obj.l("4")', obj.l;
abort$[ abs(obj.l('5')-410.357) > tol ] 'bad obj.l("5")', obj.l;
abort$[ abs(q.l('1')-36.933) > tol ] 'bad q.l("1")', q.l;
abort$[ abs(q.l('2')-41.818) > tol ] 'bad q.l("2")', q.l;
abort$[ abs(q.l('3')-43.707) > tol ] 'bad q.l("3")', q.l;
abort$[ abs(q.l('4')-42.659) > tol ] 'bad q.l("4")', q.l;
abort$[ abs(q.l('5')-39.179) > tol ] 'bad q.l("5")', q.l;
abort$[ abs(z.l-204.295) > tol ] 'bad z.l', z.l;
obj.l(i) = 0;
q.l(i) = 10;
z.l = sum(i, q.l(i));
defobj.m(i) = 0;
defz.m = 0;
$onEchoV > implRep_gms
***********************************************
* written by GAMS/JAMS at 11/17/17 15:30:43
* for more information use JAMS option "Dict"
***********************************************
Variables x6_4,x7,x8,x9,x10,x11,x6_5,x6_6,x6_7,x6_8,u6_4,u6_5,u6_6,u6_7,u6_8;
Positive Variables x7,x8,x9,x10,x11;
Equations e6_4,e6_5,e6_6,e6_7,e6_8,dL_dx6_4,dL_dx7,dL_dx8,dL_dx9,dL_dx10
,dL_dx11,dL_dx6_5,dL_dx6_6,dL_dx6_7,dL_dx6_8;
e6_4.. x6_4 - x7 - x8 - x9 - x10 - x11 =E= 0;
e6_5.. x6_5 - x7 - x8 - x9 - x10 - x11 =E= 0;
e6_6.. x6_6 - x7 - x8 - x9 - x10 - x11 =E= 0;
e6_7.. x6_7 - x7 - x8 - x9 - x10 - x11 =E= 0;
e6_8.. x6_8 - x7 - x8 - x9 - x10 - x11 =E= 0;
dL_dx6_4.. (2095.59483215011*x6_4**(-1.90909090909091)*x7)/(-1) - u6_4 =E= 0;
dL_dx7.. (-(2305.15431536512*x6_4**(-0.909090909090909) - (10 +
0.261532097202366*x7**0.833333333333333)))/(-1) + u6_4 =G= 0;
dL_dx8.. (-(2305.15431536512*x6_5**(-0.909090909090909) - (8 +
0.231511582354131*x8**0.909090909090909)))/(-1) + u6_5 =G= 0;
dL_dx9.. (-(2305.15431536512*x6_6**(-0.909090909090909) - (6 + 0.2*x9**1))
)/(-1) + u6_6 =G= 0;
dL_dx10.. (-(2305.15431536512*x6_7**(-0.909090909090909) - (4 +
0.167250206190075*x10**1.11111111111111)))/(-1) + u6_7 =G= 0;
dL_dx11.. (-(2305.15431536512*x6_8**(-0.909090909090909) - (2 +
0.133748060995284*x11**1.25)))/(-1) + u6_8 =G= 0;
dL_dx6_5.. (2095.59483215011*x6_5**(-1.90909090909091)*x8)/(-1) - u6_5 =E= 0;
dL_dx6_6.. (2095.59483215011*x6_6**(-1.90909090909091)*x9)/(-1) - u6_6 =E= 0;
dL_dx6_7.. (2095.59483215011*x6_7**(-1.90909090909091)*x10)/(-1) - u6_7 =E= 0;
dL_dx6_8.. (2095.59483215011*x6_8**(-1.90909090909091)*x11)/(-1) - u6_8 =E= 0;
* set non-default levels
x6_4.l = 50;
x6_5.l = 50;
x6_6.l = 50;
x6_7.l = 50;
x6_8.l = 50;
x7.l = 10;
x8.l = 10;
x9.l = 10;
x10.l = 10;
x11.l = 10;
Model m / e6_4.u6_4,e6_5.u6_5,e6_6.u6_6,e6_7.u6_7,e6_8.u6_8,dL_dx6_4.x6_4
,dL_dx7.x7,dL_dx8.x8,dL_dx9.x9,dL_dx10.x10,dL_dx11.x11
,dL_dx6_5.x6_5,dL_dx6_6.x6_6,dL_dx6_7.x6_7,dL_dx6_8.x6_8 /;
File implvarfile / '%gams.scrdir%implvar.dat' /;
Put implvarfile;
$onPutV
x6_4
x6_5
x6_6
x6_7
x6_8
u6_4
u6_5
u6_6
u6_7
u6_8
$offPut
m.limrow=0; m.limcol=0;
Solve m using MCP;
$offEcho
execute 'grep -v " written by GAMS" implRep_gms > implRep.gms.want'
execute 'grep -v " written by GAMS" implRep.gms > implRep.gms.got'
execute '=diff -I reslim -bw implRep.gms.want implRep.gms.got'
abort$errorlevel 'Files implRep.gms.want and implRep.gms.got differ';
$onEcho > implRep_dict
* written by GAMS/JAMS at 11/17/17 15:31:17
********************************************************************************
Contents
1 Content of EMP Information File
2 Processed EMP Information
3 Dictionary
3.1 Constraints
3.2 Variables
********************************************************************************
1 Content of EMP Information File
---------------------------------
1:equilibrium
2:implicit z defz
3:min obj('1') q('1') z defobj('1')
4:min obj('2') q('2') z defobj('2')
5:min obj('3') q('3') z defobj('3')
6:min obj('4') q('4') z defobj('4')
7:min obj('5') q('5') z defobj('5')
2 Processed EMP Information
---------------------------
3 Dictionary
------------
3.1 Constraints
---------------
{reformulated} defobj(1)
{reformulated} defobj(2)
{reformulated} defobj(3)
{reformulated} defobj(4)
{reformulated} defobj(5)
e6_4 defz
e6_5 defz
e6_6 defz
e6_7 defz
e6_8 defz
dL_dx6_4 {new}
dL_dx7 {new}
dL_dx8 {new}
dL_dx9 {new}
dL_dx10 {new}
dL_dx11 {new}
dL_dx6_5 {new}
dL_dx6_6 {new}
dL_dx6_7 {new}
dL_dx6_8 {new}
3.2 Variables
--------------
{reformulated} obj(1)
{reformulated} obj(2)
{reformulated} obj(3)
{reformulated} obj(4)
{reformulated} obj(5)
x6_4 z
x7 q(1)
x8 q(2)
x9 q(3)
x10 q(4)
x11 q(5)
u6_4 {new}
u6_5 {new}
u6_6 {new}
u6_7 {new}
u6_8 {new}
x6_5 z
x6_6 z
x6_7 z
x6_8 z
$offEcho
execute 'grep -v " written by GAMS" implRep_dict > implRepDict.txt.want'
execute 'grep -v " written by GAMS" implRepDict.txt > implRepDict.txt.got'
execute '=diff -bw implRepDict.txt.want implRepDict.txt.got'
abort$errorlevel 'Files implRepDict.txt.want and implRepDict.txt.got differ';