how to use .lp file with GAMS?

Frequently asked questions about GAMS

Moderator: aileen

Forum rules
Please ask questions in the other sub-forums
Posts: 190
Joined: 9 months ago

how to use .lp file with GAMS?

Post by abhosekar » 3 weeks ago

To generate lp file from GAMS, you can use writelp option. An example is shown here using the rotdk model from GAMS model library where the lines before the solve statement demonstrate how to use the option writelp.

Code: Select all

$title Robust Optimization (ROTDK,SEQ=185)

Robust Optimization.

Laguna, M, Applying Robust Optimization to Capacity Expansion of
One Location in Telecommunications with Demand Uncertainty.
Management Science 44, 11 (1998), 101-110.

Keywords: mixed integer linear programming, robust optimization, capacity expansion,
          time-dependent knapsack problem

   s 'scenarios'    / 1*1000    /
   t 'time periods' / t1*t12    /
   j 'components'   / C001*C010 /;

Alias (t,tt);

   di(s,t) 'increment'
   D(t,s)  'demand'
   c(j)    'capacity size'
   p(j)    'capacity cost'
   mu      'mean capacity parameter'
   sigma   'std capacity parameter';

mu    = 100;
sigma =  10;

c(j) = round(uniform(1,mu));
p(j) = round(mu + c(j) + uniform(-sigma,sigma));

di(s,t)$(ord(s) <= 0.25*card(s)) = round(normal( 50,10));
di(s,t)$(ord(s) >  0.25*card(s) and ord(s) <= 0.75*card(s)) = round(normal(100,20));
di(s,t)$(ord(s) >  0.75*card(s)) = round(normal(150,40));

d(t,s) = sum(tt$(ord(tt) <= ord(t)), di(s,tt));
* display c, p, di, d;

   dis(t) 'discount factor'
   w      'shortage penalty';

dis(t) = power(.86,ord(t) - 1);
w      = 5;

   x(j,t) 'expansion'
   z(s)   'max capacity shortage'
   cap(t) 'installed capacity'

Integer  Variable x;
Positive Variable z;

   capbal(t)   'capacity balance'
   dembal(t,s) 'demand balance'

objdef..      obj =e= sum((j,t), dis(t)*p(j)*x(j,t)) + w/card(s)*sum(s, z(s));

capbal(t)..   cap(t) =e= cap(t-1) + sum(j, c(j)*x(j,t));

dembal(t,s).. cap(t) + z(s) =g= d(t,s);

Model rotdk / all /;

$onEcho > cplex.opt
lazyconstraints 1
dembal.lazy(t,s)$(ord(t) eq 1) 1
dembal.lazy 1
dembal.lazy('t1','s1') 1

option limCol = 0, limRow = 0;

* do not reset optcr if already set to a nondefault value
if{(.1 = %gams.optCr%), option optCr = 0.05;};
$onecho > cplex.opt
writelp rotdk.lp
rotdk.optfile = 1;
solve rotdk min obj using mip;

Running this code will generate rotdk.lp file. To use this model from lp file instead of using it from GAMS, one can use option probread. This can be done by replacing the option writelp from the above code fragment with probread as follows.

Code: Select all

$onecho > cplex.opt
probread rotdk.lp
It should be noted that, since the model passed from GAMS to GAMS/CPLEX might have nothing to do with the model you supplied in rotdk.lp, no solution is returned to GAMS.