emp04.gms : Compare results of EMP runs using different options for nlp problem

Description

```This test compares the results EMP delivers after being started with different
options.

This test makes use of the model mhw4d from the GAMS model library which is
borrowed from:

Wright, M H, Numerical Methods for Nonlinearly Constraint Optimization.
PhD thesis, Stanford University, 1976.

Contributor: Jan-H. Jagla, February 2009
```

Small Model of Type : GAMS

Category : GAMS Test library

Main file : emp04.gms

``````\$title Compare results of EMP runs using different options for nlp problem (EMP04,SEQ=431)

\$ontext
This test compares the results EMP delivers after being started with different
options.

This test makes use of the model mhw4d from the GAMS model library which is
borrowed from:

Wright, M H, Numerical Methods for Nonlinearly Constraint Optimization.
PhD thesis, Stanford University, 1976.

Contributor: Jan-H. Jagla, February 2009
\$offtext

option limcol=0, limrow=0;

scalar solverstatus, iterusednlp, iterusedmcp;

*-------------------------------------------------------------------------------
* Original model copied from the GAMS Model Library
Variables m, x1, x2, x3, x4, x5;
Equations funct, eq1, eq2, eq3;

funct.. m =e= sqr(x1-1)      + sqr(x1-x2)     + power(x2-x3,3)
+ power(x3-x4,4) + power(x4-x5,4) ;

eq1.. x1 + sqr(x2) + power(x3,3) =e= 3*sqrt(2) + 2 ;

eq2.. x2 - sqr(x3) + x4          =e= 2*sqrt(2) - 2 ;

eq3.. x1*x5 =e= 2 ;

Model wright / all / ;

\$macro setVarLevels    m.l = 0; x1.l = -1.27; x2.l = 2.4; x3.l = 1.2; x4.l = -.15; x5.l = -1.5
\$macro setVarMarginals m.m = 0; x1.m = 0;  x2.m = 0; x3.m = 0; x4.m = 0;  x5.m = 0
\$macro setEquMarginals funct.m = 0; eq1.m = 0; eq2.m = 0; eq3.m = 0;

setVarLevels;
solve wright using nlp minimizing m;
*-------------------------------------------------------------------------------
solverstatus = wright.solvestat;
iterusednlp  = wright.iterusd;
iterusedmcp  = 3;

file empopt /"jams.opt"/;
file empinfo /"%emp.info%"/;

option nlp=pathnlp;
setVarLevels;
setVarMarginals;
setEquMarginals;
solve wright using nlp minimizing m;
solverstatus = wright.solvestat;
iterusedmcp  = wright.iterusd;

setVarLevels;
setVarMarginals;
setEquMarginals;
solve wright using emp minimizing m;
solverstatus = wright.solvestat;
abort\$(wright.iterusd <> iterusednlp) 'Iteration of EMP run differ';

putclose empinfo 'ModelType MCP';
setVarLevels;
setVarMarginals;
setEquMarginals;
solve wright using emp minimizing m;
solverstatus = wright.solvestat;
abort\$(wright.iterusd <> iterusedmcp) 'Iteration of EMCP run differ';

putclose empopt 'keepobj';
putclose empinfo 'ModelType MCP';
setVarLevels;
setVarMarginals;
setEquMarginals;
solve wright using emp minimizing m;
solverstatus = wright.solvestat;
abort\$(wright.iterusd <> iterusedmcp) 'Iteration of EMCPobj run differ';