$title Secure Work Files - Example 2 (SECURE,SEQ=343) $onText This is example 2 of the Secure Work file document. Secure work files allow us to hide selected data and formulation section of a GAMS application. The following program runs the models described in Annex G of the GAMS User's Guide. GAMS Development Corporation, Modeling Tool Box. Keywords: constrained nonlinear system, nonlinear programming, GAMS language features, secure work files $offText $if not set MYPLICENSE $set MYPLICENSE "%gams.sysdir%plicense.txt" $if not exist "%MYPLICENSE%" $abort Target license file "%MYPLICENSE%" does not exist. Specify via --MYPLICENSE=... $set env ide=%gams.ide% lo=%gams.lo% execute 'gams p1 s=p1 %env%'; execute 'gams u1 r=p1 %env%'; execute 'gams s1 r=p1 s=s1 plicense="%MYPLICENSE%" %env%'; execute 'gams u1 s=s1 %env%'; $onEcho > p1.gms $call gamslib -q trnsport $include trnsport.gms * calculate input data -- model getc Variable newc(i,j) 'new transport cost'; Equation defnewc(i,j) 'definition of new transport cost'; Model getc 'compute new transport data' / defnewc /; defnewc(i,j).. newc(i,j) =e= f*d(i,j)/1000; solve getc using cns; * change objective function and save base value of x -- model newtrans Scalar beta 'scale coeffisinet' / 1.1 /; Equation newcost 'definition of new objective function'; Model newtrans / newcost, supply, demand /; newcost.. z =e= sum((i,j), newc.l(i,j)*x(i,j)**beta); solve newtrans using nlp minimizing z; Parameter basex(i,j) 'base value of x'; basex(i,j) = x.l(i,j); * transform results to percentage change -- model rep Variable delta(i,j) 'percentage chnage from base value'; Equation defdelta(i,j) 'define delta'; Model rep / defdelta /; defdelta(i,j)$basex(i,j).. delta(i,j) =e= 100*(x.l(i,j) - basex(i,j))/basex(i,j); solve rep using cns; $offEcho $onEcho > u1.gms Set s / one, two, three /; Parameter sbeta(s) / one 1.25, two 1.5, three 2.0 / sf(s) / one 85, two 75, three 50 /; Parameter report 'summary report'; loop(s, beta = sbeta(s); f = sf(s); solve getc using cns; solve newtrans using nlp minmizing z; solve rep using cns; report(i,j,s) = delta.l(i,j); report('','beta',s) = beta; report('','f',s) = f; report('obj','z',s) = z.l; ); display report; $offEcho $onEcho > s1.gms $hide all $expose getc newtrans rep $expose i j z delta $expose f beta a b $offEcho