Description
The put_utility solver allows to select a solver by name during execution type. One can specify the model type or use '*' to set the solver for all suitable model types Contributor: Michael Bussieck, August 2018
Small Model of Type : GAMS
Category : GAMS Test library
Main file : put12.gms
$title Testing put_utility solver (PUT12,SEQ=776)
$onText
The put_utility solver allows to select a solver by name
during execution type. One can specify the model type or
use '*' to set the solver for all suitable model types
Contributor: Michael Bussieck, August 2018
$offText
Set
i 'canning plants' / seattle, san-diego /
j 'markets' / new-york, chicago, topeka /;
Parameter
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;
Variable
x(i,j) 'shipment quantities in cases'
z 'total transportation costs in thousands of dollars';
Positive Variable x;
Equation
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 /;
Scalar cplexID, soplexID;
put_utility 'solver' / 'lp' / 'cplex';
solve transport using lp minimizing z;
cplexID = transport.sysIdent;
put_utility 'solver' / 'lp' / 'soplex';
solve transport using lp minimizing z;
soplexID = transport.sysIdent;
abort$(cplexID=soplexID) 'used the same solver', cplexID, soplexID;
put_utility 'solver' / '*' / 'cplex';
solve transport using rmip minimizing z;
cplexID = transport.sysIdent;
put_utility 'solver' / '*' / 'soplex';
solve transport using rmip minimizing z;
soplexID = transport.sysIdent;
abort$(cplexID=soplexID) 'used the same solver with model type=*', cplexID, soplexID;;