$title 'Test case for poly function' (QCP05,SEQ=390) $onText Compare modlib's qdemo7 with a version making use of the poly function Contributor: Jan-Hendrik Jagla, June 2008 $offText $if not set TESTTOL $set TESTTOL 1e-4 $call gamslib -q qdemo7 $call cat qdemo7.gms | grep -viw solve > qdemo7x.gms $onEcho >> qdemo7.gms Equation objnpoly objective function; objnpoly.l = objn.l; objnpoly.m = objn.m; objnpoly.lo= objn.lo; objnpoly.up= objn.up; $offEcho $call gams qdemo7 lo=%gams.lo% gdx=demo7n qcp=%SYSTEM.QCP% iterlim=%gams.iterlim% $include qdemo7x.gms Equation objn objnpoly objective function; objnpoly.. cps =e= sum(cn, poly(natcon(cn),0,alpha(cn),.5*beta(cn))) + sum(ce, exports(ce)*pe(ce)) - sum(cm, imports(cm)*pm(cm)) - tcost; Model demo7npoly QCP version/ landbal, laborbal, plow, ares, alab, acost, dem, proc, amisc, aplow, lclover, lstraw, objnpoly /; Solve demo7npoly maximizing cps using QCP; * Skip check if Solver cannot handle poly function if ((demo7npoly.solvestat = %solveStat.capabilityProblems%), abort$(demo7npoly.modelstat <> %modelStat.noSolutionReturned%) 'bad modelstat'; else objn.l = objnpoly.l; objn.m = objnpoly.m; objn.lo= objnpoly.lo; objn.up= objnpoly.up; execute_unload 'demo7npoly.gdx'; execute 'gdxdiff demo7n.gdx demo7npoly.gdx Eps=%TESTTOL% RelEps=%TESTTOL% > %system.nullfile%'; abort$(errorlevel <> 0) 'GDXDIFF no difference expected'; );