emp01.gms : Compares EMP results for a simple LP with known results
This model compares the results from different EMP runs with the results known.
The model has a bounded variable only appearing in the objective which is
reformulated in case EMP writes and MCP model
Contributor: Jan-H. Jagla, April 2007
Small Model of Type: GAMS
$title Compares EMP results for a simple LP with known results (EMP01,SEQ=386)
$ontext
This model compares the results from different EMP runs with the results known.
The model has a bounded variable only appearing in the objective which is
reformulated in case EMP writes and MCP model
Contributor: Jan-H. Jagla, April 2007
$offtext
variables obj,x,y; equation defobj,e;
defobj.. obj =e= x + y + 3;
e.. y =l= 3;
y.lo=1; x.lo = 1;x.up =5;
model m /all /;
sets enames / defobj,e /
vnames / obj,x,y /
evnames / set.enames,set.vnames /
suf / l,m /;
parameter rep comparison / (defobj.(l 3, m 1)
e. (l 1 )
obj. (l 5 )
x. (l 1, m 1)
y. (l 1, m 1)).known /;
$gdxout %gams.scrdir%repgdx.%gams.scrext%
$unload evnames suf
$gdxout
$onechoV > %gams.scrdir%repgms.%gams.scrext%
set evnames, suf;
$gdxin %oldscrdir%repgdx.%gams.scrext%
$load evnames suf
file fx /'%oldscrdir%rep.%gams.scrext%'/; fx.lw = 0; fx.silent=1; put fx;
$escape =
loop((evnames,suf),
put "rep('" evnames.tl "','" suf.tl "','%=lp%=') = " evnames.tl "." suf.tl ";" /;
);
$offecho
$call gams %gams.scrdir%repgms.%gams.scrext% lo=%gams.lo% --oldscrdir="%gams.scrdir%"
* standard LP solve
solve m us lp min obj;
$set lp LP
$include %gams.scrdir%rep.%gams.scrext%
option lp=emp,limcol=0,limrow=0;
* rewrite scalar LP - without info file
solve m us lp min obj;
$set lp NOemp
$include %gams.scrdir%rep.%gams.scrext%
* rewrite scalar LP - use empty info file
execute 'echo *empty emp info file > "%emp.info%"';
solve m us lp min obj;
$set lp empLP
$include %gams.scrdir%rep.%gams.scrext%
* rewrite scalar MCP - indicate target model type as MCP
execute 'echo strategy mcp > "%emp.info%"';
solve m us lp min obj;
$set lp empMCP
$include %gams.scrdir%rep.%gams.scrext%
* rewrite scalar MCP - indicate target model type as MCP and keep original objective
execute 'echo KeepObj > emp.opt';
m.optfile=1;
solve m us lp min obj;
$set lp empMCPkeep
$include %gams.scrdir%rep.%gams.scrext%
set type / lp, noemp, emplp, empmcp, empmcpkeep /;
rep('sum','diff',type) = sum((evnames,suf), abs(rep(evnames,suf,type) - rep(evnames,suf,'known')));
display rep;
abort$(sum(type, rep('sum','diff',type)) > 1e-4) 'we did not get the right solution';
$call rm -f repgms.lst