secure.gms : Secure Work Files - Example 2

Description

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.

Note the use of 'license=demo'. This creates a secure demo license valid for
a few hours only and allows us to experiment without having a license that
allows the creation of secure work files.

Reference

  • GAMS Development Corporation, Modeling Tool Box.

Small Model of Type : GAMS


Category : GAMS Model library


Main file : secure.gms

$title Secure Work Files - Example 2 (SECURE,SEQ=342)

$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.

Note the use of 'license=demo'. This creates a secure demo license valid for
a few hours only and allows us to experiment without having a license that
allows the creation of secure work files.


GAMS Development Corporation, Modeling Tool Box.

$offtext

$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 license=demo plicense=license %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 /;
parameters 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