rs01.gms : Solving a Transportation Problem using Cplex and Gurobi remote server

Description

We solve the trnsport model using the Cplex and Gurobi remote server.
The information about the server addresses, ports and password come
through the environment variable GRBRS, GRBRSPW, and CPXRS


Small Model of Type : GAMS


Category : GAMS Test library


Main file : rs01.gms

$Title  Solving a Transportation Problem using Cplex and Gurobi remote server (RS01,SEQ=611)
$Ontext

We solve the trnsport model using the Cplex and Gurobi remote server.
The information about the server addresses, ports and password come
through the environment variable GRBRS, GRBRSPW, and CPXRS

$Offtext
$echo computeserver %sysenv.CPXRS% > cplexd.opt
$onecho > gurobi.opt
computeserver %sysenv.GRBRS%
cspassword %sysenv.GRBRSPW%
$offecho


Sets
     i   canning plants   / seattle, san-diego /
     j   markets          / new-york, chicago, topeka / ;

Parameters

     a(i)  capacity of plant i in cases
       /    seattle     350
            san-diego   600  /

     b(j)  demand at market j in cases
       /    new-york    325
            chicago     300
            topeka      275  / ;

Table d(i,j)  distance in thousands of miles
                  new-york       chicago      topeka
    seattle          2.5           1.7          1.8
    san-diego        2.5           1.8          1.4  ;

Scalar f  freight in dollars per case per thousand miles  /90/ ;

Parameter c(i,j)  transport cost in thousands of dollars per case ;

          c(i,j) = f * d(i,j) / 1000 ;

Variables
     x(i,j)  shipment quantities in cases
     z       total transportation costs in thousands of dollars ;

Positive Variable x ;

Equations
     cost        define objective function
     supply(i)   observe supply limit at plant i
     demand(j)   satisfy demand at market j ;

cost ..        z  =e=  sum((i,j), c(i,j)*x(i,j)) ;

supply(i) ..   sum(j, x(i,j))  =l=  a(i) ;

demand(j) ..   sum(i, x(i,j))  =g=  b(j) ;

Model transport /all/ ;

transport.optfile=1;

$ifthen %system.buildcode% == SOX 
* On Sparc Solaris the system can't find some shared objects required for the Cplex remote object. 
* Hence, we need to set things explictely and make sure the LD_LIBRARY_PATH environment is not
* forgotten when we call the solver.
$setenv LD_LIBRARY_PATH %gams.sysdir%:%sysenv.LD_LIBRARY_PATH%
transport.solvelink = %solvelink.CallScript%;
$endif

option lp=cplexd;
Solve transport using lp minimizing z ;
abort$(transport.modelstat<>1 or transport.solvestat<>1) 'Bad model/solvestatus', transport.modelstat, transport.solvestat;
abort$(abs(z.l-153.675)>1e-4) 'Bad z.l', z.l;

$label gurobi

* There is no Gurobi on the Solaris platforms
$if %system.buildcode% == SIG $exit
$if %system.buildcode% == SOX $exit

option lp=gurobi;
Solve transport using lp minimizing z ;
abort$(transport.modelstat<>1 or transport.solvestat<>1) 'Bad model/solvestatus', transport.modelstat, transport.solvestat;
abort$(abs(z.l-153.675)>1e-4) 'Bad z.l', z.l;