emp33.gms : JAMS: matches from model statement may be ignored

Description

If JAMS is directed to do a non-trivial transformation, this
transformation typically determines all the matching in the resultant
problem.  So any matching in the original model statement is ignored.

Contributor: Steven Dirkse, July 2021


Small Model of Type : GAMS


Category : GAMS Test library


Main file : emp33.gms

$TITLE 'JAMS: matches from model statement may be ignored' (EMP33,SEQ=873)

$ontext
If JAMS is directed to do a non-trivial transformation, this
transformation typically determines all the matching in the resultant
problem.  So any matching in the original model statement is ignored.

Contributor: Steven Dirkse, July 2021
$offtext

scalar
  delta 'slope factor consumer benefit' / 1e-1 /
  gamma 'exponent in consumer benefit'  / 0.25 /
  ;

positive variable p 'unit price';
positive variable q 'consumption';
variable bene 'consumer benefit';
variable z    'consumer objective';

equation
  beneDef
  zDef 'define consumer objective'
  pDefLin 'linear price function';
  ;
beneDef.. q * [1-delta*(1+q)**gamma] =E= bene;
zDef.. bene - p*q =E= z;
pDefLin.. p =G= 0.5 + 0.1/72 * (q-33);

model
  m  'producer/consumer equilibrium' / beneDef, zDef, pDefLin.p /
  ;

solve m using nlp max z;;
abort$[m.modelStat > 2] 'NLP model not solved!', m.modelStat;
abort$[m.solveStat <> %solvestat.NormalCompletion%] 'NLP model not solved!', m.solveStat;

scalars znlp, qnlp;
znlp = z.l;
qnlp = q.l;

file empinfo / '%emp.info%'/;

PUT empinfo "equilibrium" /;
PUT "max", z, q, bene, p /;
PUT zDef, beneDef, pDefLin /;
PUTCLOSE;
solve m using emp;
abort$[m.modelStat > 2] 'EMP model not solved!', m.modelStat;
abort$[m.solveStat <> %solvestat.NormalCompletion%] 'EMP Model not solved!', m.solveStat;
abort$[abs(z.l - znlp) >= 1e-4] 'EMP objective different than NLP'; 
abort$[abs(q.l - qnlp) >= 1e-4] 'EMP consumption different than NLP';