$title 'Test JAMS/EMP on QVI model with zero function' (EMP32,SEQ=749) $onText Test behavior on a QVI model having a zero function. - Zero function needs to be explicitly specified using 0. Contributor: Youngdae Kim, February 2018 $offText file opt / 'jams.opt' /; file info / '%emp.info%' /; positive variables y,x,w,v; equations Fy, gw, gy; Fy.. y - w - 1 =N= 0; gw.. w + v =G= 2; gy.. y + x =G= 4; model m / Fy, gw, gy /; * case 1) putclose info 'qvi 0 w v Fy y x gw gy'; putclose opt 'Dict qvi1Dict.txt' / 'FileName qvi1.gms'; m.optfile = 1; solve m using emp; abort$[m.modelstat <> %modelStat.optimal%] 'QVI should solve OK'; abort$[m.solvestat <> %solveStat.normalCompletion%] 'QVI should solve OK'; abort$[abs(y.l - 2)] 'bad y.l', y.l; abort$[abs(x.l - 2)] 'bad x.l', x.l; abort$[abs(w.l - 1)] 'bad w.l', w.l; abort$[abs(v.l - 1)] 'bad v.l', v.l; $onEcho > qvi1_gms *********************************************** * written by GAMS/JAMS at 02/12/18 14:29:16 * for more information use JAMS option "Dict" *********************************************** Variables x1,x3,u2,u3; Positive Variables x1,x3; Positive Variables u2,u3; Equations e1,e2,e3,zero_x3; e1.. x1 - x3 - u3 =N= 1; e2.. x3 + x3 =G= 2; e3.. x1 + x1 =G= 4; zero_x3.. - u2 =G= 0; Model m / e1.x1,e2.u2,e3.u3,zero_x3.x3 /; m.limrow=0; m.limcol=0; Solve m using MCP; $offEcho execute 'grep -v " written by GAMS" qvi1_gms > qvi1.gms.want' execute 'grep -v " written by GAMS" qvi1.gms > qvi1.gms.got' execute '=diff -I reslim -bw qvi1.gms.want qvi1.gms.got' abort$errorlevel 'Files qvi1.gms.want and qvi1.gms.got differ'; $onEcho > qvi1_dict * written by GAMS/JAMS at 02/12/18 14:49:16 ******************************************************************************** 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:qvi 0 w v Fy y x gw gy 2 Processed EMP Information --------------------------- Number of VI functions specified = 1 * e1 is VI Func and perpendicular to x1 3 Dictionary ------------ 3.1 Constraints --------------- e1 Fy e2 gw e3 gy zero_x3 {new} 3.2 Variables -------------- x1 y x1 x x3 w x3 v u2 {new} u3 {new} $offEcho execute 'grep -v " written by GAMS" qvi1_dict > qvi1dict.txt.want' execute 'grep -v " written by GAMS" qvi1Dict.txt > qvi1dict.txt.got' execute '=diff -bw qvi1dict.txt.want qvi1dict.txt.got' abort$errorlevel 'Files qvi1dict.txt.want and qvi1dict.txt.got differ'; y.l = 0; y.m = 0; x.l = 0; x.m = 0; w.l = 0; w.m = 0; v.l = 0; v.m = 0; Fy.m = 0; gw.m = 0; gy.m = 0; * case 2) putclose info 'qvi Fy y x 0 w v gw gy'; putclose opt 'Dict qvi2Dict.txt' / 'FileName qvi2.gms'; m.optfile = 1; solve m using emp; abort$[m.modelstat <> %modelStat.optimal%] 'QVI should solve OK'; abort$[m.solvestat <> %solveStat.normalCompletion%] 'QVI should solve OK'; abort$[abs(y.l - 2)] 'bad y.l', y.l; abort$[abs(x.l - 2)] 'bad x.l', x.l; abort$[abs(w.l - 1)] 'bad w.l', w.l; abort$[abs(v.l - 1)] 'bad v.l', v.l; $onEcho > qvi2_gms *********************************************** * written by GAMS/JAMS at 02/12/18 14:29:16 * for more information use JAMS option "Dict" *********************************************** Variables x1,x3,u2,u3; Positive Variables x1,x3; Positive Variables u2,u3; Equations e1,e2,e3,zero_x3; e1.. x1 - x3 - u3 =N= 1; e2.. x3 + x3 =G= 2; e3.. x1 + x1 =G= 4; zero_x3.. - u2 =G= 0; Model m / e1.x1,e2.u2,e3.u3,zero_x3.x3 /; m.limrow=0; m.limcol=0; Solve m using MCP; $offEcho execute 'grep -v " written by GAMS" qvi2_gms > qvi2.gms.want' execute 'grep -v " written by GAMS" qvi2.gms > qvi2.gms.got' execute '=diff -I reslim -bw qvi2.gms.want qvi2.gms.got' abort$errorlevel 'Files qvi2.gms.want and qvi2.gms.got differ'; $onEcho > qvi2_dict * written by GAMS/JAMS at 02/12/18 14:51:27 ******************************************************************************** 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:qvi Fy y x 0 w v gw gy 2 Processed EMP Information --------------------------- Number of VI functions specified = 1 * e1 is VI Func and perpendicular to x1 3 Dictionary ------------ 3.1 Constraints --------------- e1 Fy e2 gw e3 gy zero_x3 {new} 3.2 Variables -------------- x1 y x1 x x3 w x3 v u2 {new} u3 {new} $offEcho execute 'grep -v " written by GAMS" qvi2_dict > qvi2dict.txt.want' execute 'grep -v " written by GAMS" qvi2Dict.txt > qvi2dict.txt.got' execute '=diff -bw qvi2dict.txt.want qvi2dict.txt.got' abort$errorlevel 'Files qvi2dict.txt.want and qvi2dict.txt.got differ';