Table of Contents
The Kestrel client/server is a way of sending your GAMS solve job to be solved via the NEOS Server from within your usual GAMS modeling environment and receiving results that can be processed as with any local solver. Starting with distribution 23.7 the Kestrel solver is part of the GAMS distribution. For older versions of GAMS a download can be found at the Kestrel page on the NEOS Server. The solve statement using the GAMS/KESTREL solver invokes a client program that sends your problem to a solver running on one of the NEOS Server's remote computers. The results from the NEOS Server are eventually returned through Kestrel to GAMS, where you can view and manipulate them locally in the usual way. The introduction below covers everything you need to know to start using GAMS/KESTREL. Further information about more advanced features and other uses of Kestrel can be found at the Kestrel page on the NEOS Server.
With GAMS 24.6 the GAMS/Kestrel client has been adjusted to work with IBM's cloud service Decision Optimization on Cloud (DOcloud). When the Kestrel option
docloudurl is set, the generated model instance will be automatically translated into an MPS format and send to DOcloud and solved by Cplex in IBM's cloud. So no GAMS/Cplex license is required on your local machine. You as a user need to register with IBM on the web page mentioned about and pay IBM for the solution time spend in IBM's cloud. IBM provides details how to get started with DOcloud.
The Kestrel solver can be used to solve a GAMS model remotely. For example, consider the trnsport model from GAMS Model Library. It can be solved locally in GAMS through the following statements,
model transport /all/; solve transport using lp minimizing z;
which specify the
trnsport model and solve it with the default linear programming solver. We can add an option statement to the code to explicitly specify the solver. For example, if we change the linear programming solver to GAMS/MINOS, the code becomes
model transport /all/; option lp=minos; solve transport using lp minimizing z;
To solve the same problem remotely through the NEOS Server, we simply change the linear programming solver to Kestrel. Without an option file Kestrel will submit the model instance to the NEOS server and use the default LP solver on NEOS.
option lp=kestrel; solve transport using lp minimizing z;
We can support a Kestrel option file and determine the solver on the NEOS server:
transport.optfile=1; option lp=kestrel; solve transport using lp minimizing z; $echo kestrel_solver minos > kestrel.opt
transport.optfile=1 specifies that an options file, called
kestrel.opt, will be used. The options file contains the remote solver name as well as any options for the remote solver. We instruct the Kestrel solver to use GAMS/MINOS as the remote solver by writing the following
If you do not know what solvers are available via GAMS/KESTREL on NEOS, submitting a job with a nonexistent solver set will return a list of enabled solvers.
A subsequent run of the code through the GAMS interpreter results in the transport model being solved through the NEOS Server with the GAMS/MINOS solver. Once the job is submitted to the NEOS Server, a job number, password, and Web address are displayed to the screen, which provide information on accessing the job and viewing the intermediate output, for example,
--- Executing KESTREL Job has been submitted to Kestrel Kestrel/NEOS Job number : 93478 Kestrel/NEOS Job password : utiwtxTK Check the following URL for progress report : http://www-neos.mcs.anl.gov/neos/neos-cgi/check-status.cgi?job=93478&pass=utiwtxTK In case of problems, e-mail: email@example.com
To look at the solver's output while it is running, point your browser at the URL given in the Kestrel output as shown above, and click on
View Intermediate Results in the web page that appears. This will take you to another page that shows all of the output produced by the solver for your problem so far. To track the solver's progress, simply update this page periodically.
If the NEOS Server or the network becomes unavailable after the submission, a particular job can be retrieved by setting both the kestrel job and kestrel password in the options file.
kestrel_solver minos kestrel_job 93478 kestrel_password utiwtxTK
Re-issuing the command
gams trnsport with this options file will retrieve the results for the specified job number.
In order to use GAMS/Kestrel to solve model instances with Cplex on IBM's DOcloud, the only thing that needs to be done is to provide a different option file. The option
docloud_url triggers the submission to IBM's DOcloud rather than NEOS. You need an account on DOcloud (and pay IBM for the Cplex solution time in their cloud). Some additional account information needs to be specified in the Kestrel option
docloud_key. The use of Cplex in DOcloud is limited to solve a model instance, special options that are available in the GAMS/Cplex system, like IIS or FeasOpt cannot be used (yet) through Kestrel/DOcloud. Moreover, for problems with discrete variables, only the primal solution is returned. If you want to specify Cplex options this needs to be done with a Cplex parameter file which is quite different from the GAMS/Cplex option file. You can use a GAMS/Cplex option file and have the additional option WriteParam to produce such a Cplex parameter file. The Cplex parameter file might have a few more options compared to the GAMS/Cplex option file because some GAMS options set Cplex parameters. Please note that you can produce the Cplex parameter file with GAMS/Cplex even if you do not have a license for GAMS/Cplex as long as you run a demo sized model (e.g. from the GAMS Model Library) to produce the Cplex parameter file. The following GAMS/Cplex optfile
lpmethod 4 advind 0 eprhs 1e-4 scaind 1 writeparam cplex.prm
produces the Cplex parameter file
cplex.prm which can be submitted to Kestrel/DOcloud via the option
CPLEX Parameter File Version 22.214.171.124 CPX_PARAM_ADVIND 0 CPX_PARAM_EPRHS 1.00000000000000e-04 CPX_PARAM_SIMDISPLAY 2 CPX_PARAM_SCAIND 1 CPX_PARAM_TILIM 1.00000000000000e+03 CPX_PARAM_LPMETHOD 4 CPX_PARAM_THREADS 1 CPX_PARAM_PARALLELMODE 1