Last change on this file since 1167 was 1167, checked in by stefan, 2 years ago

update and extend Ipopt docu

File size: 52.5 KB
Line
1%%%
2%%% tabular with the option-table header
3%%%
4\renewenvironment{option_tabular}%
5{\begin{tabular}{p{.16\textwidth}p{.65\textwidth}p{.11\textwidth}}
6\hline
7\textbf{Option}      &
8\textbf{Description} &
9\textbf{Default}     \\
10\hline}
11{\end{tabular}}
12
13%%%
14%%% list to use inside a tabular cell
15%%%
16\renewenvironment{tab_list}[1]%
17{\begin{list}{}{\vspace*{-1.5ex}\renewcommand{\makelabel}{\desclabel}\parsep-0.15cm\labelwidth#1\leftmargin#1\setlength{\labelsep}{\itemindent}\topsep0cm\parskip0cm\partopsep0cm}}%
18{\end{list}}
19
20\newcommand{\BONMIN}{\textsc{Bonmin}\xspace}
21\newcommand{\CBC}{\textsc{CBC}\xspace}
22\newcommand{\COUENNE}{\textsc{Couenne}\xspace}
23\newcommand{\IPOPT}{\textsc{Ipopt}\xspace}
24\newcommand{\OS}{\textsc{OS}\xspace}
25\newcommand{\OSI}{\textsc{OSI}\xspace}
26\newcommand{\OSICPLEX}{\textsc{OsiCplex}\xspace}
27\newcommand{\OSIGUROBI}{\textsc{OsiGurobi}\xspace}
28\newcommand{\OSIMOSEK}{\textsc{OsiMosek}\xspace}
29\newcommand{\OSISOPLEX}{\textsc{OsiSoplex}\xspace}
30\newcommand{\OSIXPRESS}{\textsc{OsiXpress}\xspace}
31\newcommand{\CPLEX}{\textsc{CPLEX}\xspace}
32\newcommand{\GUROBI}{\textsc{GUROBI}\xspace}
33\newcommand{\MOSEK}{\textsc{MOSEK}\xspace}
34\newcommand{\SOPLEX}{\textsc{SoPlex}\xspace}
35\newcommand{\XPRESS}{\textsc{XPRESS}\xspace}
36
37\chapter{COIN-OR}
38\textbf{Stefan Vigerske, Humboldt University Berlin, Germany}
39\vspace{1cm}
40
41\minitoc
42
43\section{Introduction}
44
45COIN-OR (\textbf{CO}mputational \textbf{IN}frastructure for \textbf{O}perations \textbf{R}esearch, \texttt{http://www.coin-or.org}) is an initiative to spur the development of open-source software for the operations research community~\cite{Lo03}.
46One of the projects hosted at COIN-OR is the GAMSlinks project (\texttt{https://projects.coin-or.org/GAMSlinks}).
47It is dedicated to the development of interfaces between \GAMS and open source solvers.
48Some of these links and solvers have also found their way into the regular \GAMS distribution.
49% They are currently available for Linux (32 and 64 bit), Windows (32 and 64 bit), Sun Solaris (Intel 64 bit), and Darwin (Intel 32 and 64 bit) systems.
50With the availability of source code for the GAMSlinks the user is not limited to the out of the box solvers that come with a regular \GAMS distribution, but can extend and build these interfaces by themselves.
51
52Available solvers and tools include:
53\begin{itemize}
54\item \BONMIN: Basic Open-source Nonlinear Mixed Integer programming\\
55(model types: LP, RMIP, MIP, DNLP, NLP, RMINLP, MINLP, QCP, RMIQCP, MIQCP)
56\item \CBC: COIN-OR Branch and Cut\\
57(model types: LP, RMIP, MIP)
58\item \COUENNE: Convex Over and Under Envelopes for Nonlinear Estimation\\
59(model types: LP, RMIP, MIP, DNLP, NLP, RMINLP, MINLP, QCP, RMIQCP, MIQCP)
60\item \IPOPT: Interior Point Optimizer\\
61(model types: LP, RMIP, DNLP, NLP, RMINLP, QCP, RMIQCP)
62\item \OS: Optimization Services\\
63(model types: LP, RMIP, MIP, DNLP, NLP, RMINLP, MINLP, QCP, RMIQCP, MIQCP)
64\item \OSICPLEX, \OSIGUROBI, \OSIMOSEK, \OSISOPLEX, \OSIXPRESS: Open Solver Interface\\
65(model types: LP, RMIP, MIP)
66\end{itemize}
67
70
71\section{\BONMIN}
72
73% \GAMS/\BONMIN brings the open source MINLP solver \BONMIN to the broad audience of \GAMS users.
74
75\BONMIN (\textbf{B}asic \textbf{O}pen-source \textbf{N}onlinear \textbf{M}ixed \textbf{In}teger programming) is an open-source solver for mixed-integer nonlinear programming (MINLPs).
76The code has been developed as part of a collaboration between Carnegie Mellon University and IBM Research.
77The COIN-OR project leader for \BONMIN is Pierre Bonami.
78
79\BONMIN implements six different algorithms for solving MINLPs:
80\begin{itemize}
81\setlength{\partopsep}{0pt}
82\setlength{\itemsep}{0pt}
83\item {B-BB} (\textbf{default}): a simple branch-and-bound algorithm based on solving a continuous nonlinear program at each node of the search tree and branching on integer variables~\cite{GuptaRavindran85}; this algorithm is similar to the one implemented in the solver \textsc{SBB}
84\item {B-OA}: an outer-approximation based decomposition algorithm based on iterating solving and improving of a MIP relaxation and solving NLP subproblems~\cite{DuGr86,FlLe94}; this algorithm is similar to the one implemented in the solver \textsc{DICOPT}
85\item {B-QG}: an outer-approximation based branch-and-cut algorithm based on solving a continuous linear program at each node of the search tree, improving the linear program by outer approximation, and branching on integer variables~\cite{QeGr92}.
86\item {B-Hyb}: a branch-and-bound algorithm which is a hybrid of B-BB and B-QG and is based on solving either a continuous nonlinear or a continuous linear program at each node of the search tree, improving the linear program by outer approximation, and branching on integer variables~\cite{BBCCGLLLMSW}
87\item {B-ECP}: a Kelley's outer-approximation based branch-and-cut algorithm inspired by the settings used in the solver \textsc{FilMINT}~\cite{AbLeLi07}
88\item {B-iFP}: an iterated feasibility pump algorithm~\cite{BoCoLoMa06}
89\end{itemize}
90The algorithms are exact when the problem is \textbf{convex}, otherwise they are heuristics.
91
92For convex MINLPs, experiments on a reasonably large test set of problems have shown that B-Hyb is the algorithm of choice (it solved most of the problems in 3 hours of computing time).
93Nevertheless, there are cases where B-OA (especially when used with CPLEX as MIP subproblem solver) is much faster than B-Hyb and others where B-BB is interesting.
94B-QG and B-ECP corresponds mainly to a specific parameter setting of B-Hyb but they can be faster in some cases.
95B-iFP is more tailored at finding quickly good solutions to very hard convex MINLP.
96For \textbf{nonconvex} MINLPs, it is strongly recommended to use B-BB (the outer-approximation algorithms have not been tailored to treat nonconvex problems at this point).
97Although even B-BB is only a heuristic for such problems, several options are available to try and improve the quality of the solutions it provides.
98
99For more information we refer to \cite{BoGo08,BoKiLi09,BBCCGLLLMSW,BoCoLoMa06} and the \BONMIN web site \texttt{https://projects.coin-or.org/Bonmin}.
100Most of the \BONMIN documentation in this section is taken from the \BONMIN manual~\cite{BonminManual}.
101
102% \GAMS/BonminD is an experimental in-core communication link.
103% It offers in-core communication between \GAMS and the solver, making potentially large model scratch files unnecessary.
104% This links supports all features of the traditional link except for the \GAMS branch-cut-heuristic facility (BCH).
105
106\subsection{Model requirements}
107
108\BONMIN can handle mixed-integer nonlinear programming models which functions should be twice continuously differentiable.
109The \BONMIN link in \GAMS supports continuous, binary, and integer variables, special ordered sets, branching priorities, but no semi-continuous or semi-integer variables (see chapter 17.1 of the \GAMS User's Guide).
110
111If \GAMS/\BONMIN is called for a model with only continuous variables, the interface switches over to \IPOPT.
112If \GAMS/\BONMIN is called for a model with only linear equations, the interface switches over to \CBC.
113
114\subsection{Usage}
115
116The following statement can be used inside your \GAMS program to specify using \BONMIN
117\begin{verbatim}
118  Option MINLP = BONMIN;    { or Option MIQCP = BONMIN; }
119\end{verbatim}
120This statement should appear before the \texttt{Solve} statement.
121If \BONMIN was specified as the default solver during \GAMS installation, the above statement is not necessary.
122
123\GAMS/\BONMIN currently does not support the \GAMS Branch-and-Cut-and-Heuristic (BCH) Facility.
124If you need to use \GAMS/\BONMIN with BCH, please consider to use a \GAMS system of version $\leq 23.3$, available at \url{http://www.gams.com/download/download_old.htm}.
125% \GAMS/\BONMIN supports the \GAMS Branch-and-Cut-and-Heuristic (BCH) Facility.
126% The \GAMS BCH facility automates all major steps necessary to define, execute, and control the use of user defined routines within the framework of general purpose MIP and MINLP codes.
127% Currently supported are user defined cut generators and heuristics, where cut generator cannot be used in Bonmins pure B\&B algorithm (B-BB).
128% Please see the BCH documentation at \texttt{http://www.gams.com/docs/bch.htm} for further information.
129
130\subsubsection{Specification of Options}
131
132A \BONMIN option file contains both \IPOPT and \BONMIN options, for clarity all \BONMIN options should be preceded with the prefix \texttt{bonmin.}''. %, except those corresponding to the BCH facility.
133The scheme to name option files is the same as for all other \GAMS solvers.
134Specifying \texttt{optfile=1} let \GAMS/\BONMIN read \texttt{bonmin.opt}, \texttt{optfile=2} corresponds to \texttt{bonmin.op2}, and so on.
135The format of the option file is the same as for \IPOPT (see Section \ref{sub:ipoptoptionspec}).
136
137The most important option in \BONMIN is the choice of the solution algorithm.
138This can be set by using the option named \texttt{bonmin.algorithm} which can be set to \texttt{B-BB}, \texttt{B-OA}, \texttt{B-QG}, \texttt{B-Hyb}, \texttt{B-ECP}, or \texttt{B-iFP} (its default value is \texttt{B-BB}).
139Depending on the value of this option, certain other options may be available or not, cf.\ Section~\ref{sub:bonminalloptions}.
140
141An example of a \texttt{bonmin.opt} file is the following:
142\begin{verbatim}
143   bonmin.algorithm       B-Hyb
144   bonmin.oa_log_level    4
145   print_level            6
146\end{verbatim}
147%    bonmin.milp_subsolver  Cbc_Par
148%    milp_sub.cover_cuts    0
149%    userheurcall           "bchheur.gms reslim 10"
150This sets the algorithm to be used to the hybrid algorithm, the level of outer approximation related output to $4$,
151% the MIP subsolver for outer approximation to a parameterized version of CBC, switches off cover cutting planes for the MIP subsolver,
152and sets the print level for \IPOPT to $6$.
153%  and let \BONMIN call a user defined heuristic specified in the model \texttt{bchheur.gms} with a timelimit of 10 seconds.
154
155\GAMS/\BONMIN understands currently the following \GAMS parameters: \texttt{reslim} (time limit), \texttt{iterlim} (iteration limit), \texttt{nodlim} (node limit), \texttt{cutoff}, \texttt{optca} (absolute gap tolerance), and \texttt{optcr} (relative gap tolerance).
156One can set them either on the command line, e.g. \verb+nodlim=1000+, or inside your \GAMS program, e.g. \verb+Option nodlim=1000;+.
157Further, under Linux and Windows, the option \texttt{threads} can be used to control the number of threads used in the linear algebra routines of \IPOPT.
158
159\subsubsection{Passing options to local search based heuristics and OA generators}
160Several parts of the algorithms in \BONMIN are based on solving a simplified version of the problem with another instance of \BONMIN:
161Outer Approximation Decomposition (called in {\tt B-Hyb} at the root node)
162and Feasibility Pump for MINLP (called in {\tt B-Hyb} or {\tt B-BB} at the root node), RINS, RENS, Local Branching.
163
164In all these cases, one can pass options to the sub-algorithm used through the option file.
165The basic principle is that the \texttt{bonmin.}'' prefix  is replaced with a prefix that identifies the sub-algorithm used:
166\begin{itemize}
167\vspace{-2ex}
168\setlength{\parskip}{.2ex}
169\setlength{\itemsep}{0pt}
170\setlength{\partopsep}{0pt}
171\item to pass options to Outer Approximation Decomposition: {\tt oa\_decomposition.},
172\item to pass options to Feasibility Pump for MINLP: {\tt pump\_for\_minlp.},
173\item to pass options to RINS: {\tt rins.},
174\item to pass options to RENS: {\tt rens.},
175\item to pass options to Local Branching: {\tt local\_branch}.
176\end{itemize}
177
178\vspace{-2ex}
179For example, to run a maximum of 60 seconds of feasibility pump (FP) for MINLP until 6 solutions are found at the beginning of the hybrid algorithm, one sets the following options:
180\begin{verbatim}
181bonmin.algorithm              B-Hyb
182bonmin.pump_for_minlp         yes   # tells to run FP for MINLP
183pump_for_minlp.time_limit     60    # set a time limit for the pump
184pump_for_minlp.solution_limit 6     # set a solution limit
185\end{verbatim}
186Note that the actual solution and time limit will be the minimum of the global limits set for \BONMIN.
187
188A slightly more complicated set of options may be used when using RINS.
189Say for example that one wants to run RINS inside \texttt{B-BB}.
190Each time RINS is called one wants to solve the small-size MINLP generated using B-QG (one may run any algorithm available in \BONMIN for solving an MINLP) and wants to stop as soon as \texttt{B-QG} found one solution.
191To achieve this, one sets the following options
192\begin{verbatim}
193bonmin.algorithm      B-BB
194bonmin.heuristic_rins yes
195rins.algorithm        B-QG
196rins.solution_limit   1
197\end{verbatim}
198This example shows that it is possible to set any option used in the sub-algorithm to be different than the one used for the main algorithm.
199
200In the context of outer-approximation (OA) and feasibility pump for MINLP, a standard MILP solver is used.
201Several options are available for configuring this MILP solver.
202\BONMIN allows a choice of different MILP solvers through the option
203\texttt{bonmin.milp\_sol\-ver}. Values for this option are: {\tt Cbc\_D} which uses \CBC with its
204default settings, {\tt Cbc\_Par} which uses a version of \CBC that can be parameterized by the user, and \texttt{Cplex} which uses \CPLEX with its default settings.
205The options that can be set in {\tt Cbc\_Par} are the number of strong-branching candidates,
206the number of branches before pseudo costs are to be trusted, and the frequency of the various cut generators, c.f.\ Section~\ref{sub:bonminalloptions} for details.
207To use the \texttt{Cplex} option, a valid \CPLEX licence (standalone or \GAMS/\CPLEX) is required.
208
209\subsubsection{Getting good solutions to nonconvex problems}
210To solve a problem with nonconvex constraints, one should only use the branch-and-bound algorithm {\tt B-BB}.
211
212A few options have been designed in \BONMIN specifically to treat
213problems that do not have a convex continuous relaxation.
214In such problems, the solutions obtained from \IPOPT are
215not necessarily globally optimal, but are only locally optimal.
216Also the outer-approximation constraints are not necessarily valid inequalities for the problem.
217No specific heuristic method for treating nonconvex problems is implemented
218yet within the OA framework.
219But for the pure branch-and-bound {\tt B-BB}, a few options have been implemented while having
220in mind that lower bounds provided by \IPOPT should not be trusted and with the goal of
221trying to get good solutions. Such options are at a very experimental stage.
222
223First, in the context of nonconvex problems, \IPOPT may find different local optima when started
224from different starting points. The two options {\tt num\_re\-solve\_at\_root} and {\tt num\_resolve\_at\_node}
225allow for solving the root node or each node of the tree, respectively, with a user-specified
226number of different randomly-chosen starting points, saving the best solution found.
227Note that the function to generate a random starting point is very na\"{\i}ve:
228it chooses a random point (uniformly) between the bounds provided for the variable.
229In particular if there are some functions that can not be evaluated at some points of the domain, it may pick such points,
230and so it is not robust in that respect.
231
232Secondly, since the solution given by \IPOPT does not truly give a lower bound, the fathoming rule can be changed to continue branching even if the solution value to the current node is worse than the best-known solution.
233This is achieved by setting {\tt allowable\_gap}
234and {\tt allowable\_fraction\_gap} and {\tt cutoff\_decr} to negative values.
235
236\subsubsection{\IPOPT options changed by \BONMIN}
237
238\IPOPT has a very large number of options, see Section \ref{sub:ipoptoptions} to get a complete description.
239To use \IPOPT more efficiently in the context of MINLP,
240\BONMIN changes some \IPOPT options from their default values, which may help to improve \IPOPT's warm-starting capabilities and its ability to prove quickly that a subproblem is infeasible.
241These are settings that \IPOPT does not use for ordinary NLP problems.
242Note that options set by the user in an option file will override these settings.
243\begin{itemize}
244\vspace{-2ex}
245\setlength{\partopsep}{0pt}
246\setlength{\itemsep}{0pt}
247\setlength{\parskip}{.5ex}
248\item {\tt mu\_strategy} and {\tt mu\_oracle} are set, respectively, to
249{\tt adaptive} and {\tt probing} by default. These are strategies in \IPOPT
250for updating the barrier parameter. They were found to be more efficient in the context of MINLP.
251
252\item {\tt gamma\_phi} and {\tt gamma\_theta} are set to $10^{-8}$ and $10^{-4}$ respectively.
253This has the effect of reducing the size of the filter in the line search performed by \IPOPT.
254
255\item {\tt required\_infeasibility\_reduction} is set to $0.1$.
256This increases the required infeasibility reduction when \IPOPT enters the
257restoration phase and should thus help to detect infeasible problems faster.
258
259\item {\tt expect\_infeasible\_problem} is set to {\tt yes}, which enables some heuristics
260to detect infeasible problems faster.
261
262\item {\tt warm\_start\_init\_point} is set to {\tt yes} when a full primal/dual starting
263point is available (generally for all the optimizations after the continuous relaxation has been solved).
264
265\item {\tt print\_level} is set to $0$ by default to turn off \IPOPT output (except for the root node, which print level is controlled by the \BONMIN option \texttt{nlp\_log\_at\_root}).
266
267\item \texttt{bound\_relax\_factor} is set to $10^{-10}$. All of the bounds
268of the problem are relaxed by this factor. This may cause some trouble
269when constraint functions can only be evaluated within their bounds.
270In such cases, this option should be set to $0$.
271\end{itemize}
272
273\subsection{Detailed Options Description}
274\label{sub:bonminalloptions}
275
276The following tables gives the list of options together with their types, default values, and availability in each of the main algorithms.
277% The column labeled type' indicates the type of the parameter.
278%  (F' stands for float, I' for integer, and S' for string).
279% The column labeled default' indicates the global default value.
280% Then for each of the algorithms \texttt{B-BB}, \texttt{B-OA}, \texttt{B-QG}, \texttt{B-Hyb}, \texttt{B-Ecp}, and \texttt{B-iFP} $+$' indicates that the option is available for that particular algorithm, while $-$' indicates that it is not.
281The column labeled \texttt{Cbc\_Par}' indicates the options that can be used to parametrize the MLIP subsolver in the context of OA and FP.
282
283% \newpage
284\input{optbonmin_s}
285
286In the following we give a detailed list of \BONMIN options.
287The value on the right denotes the default value.
288\input{optbonmin_a}
289
290\section{\CBC}
291\label{sec:coincbc}
292\hypertarget{sec:coincbc}{}
293
294% \GAMS/\CBC brings the open source LP/MIP solver \CBC to the broad audience of \GAMS users.
295
296\CBC (COIN-OR Branch and Cut) is an open-source mixed integer programming solver working with the COIN-OR LP solver \textsc{CLP} and the COIN-OR Cut generator library \textsc{Cgl}.
297The code has been written primarily by John J. Forrest.
298
299For more information we refer to the website of \CBC, \textsc{CGL}, and \textsc{CLP}:
300\url{https://projects.coin-or.org/Cbc}, \url{https://projects.coin-or.org/Cgl}, \url{https://projects.coin-or.org/Clp}.
301Most of the \CBC documentation in the section was copied from the help in the \CBC standalone version.
302
303\subsection{Model requirements}
304
305The \CBC link in \GAMS supports continuous, binary, integer, semicontinuous, semiinteger variables, special ordered sets of type 1 and 2, and branching priorities (see chapter 17.1 of the \GAMS User's Guide).
306% Quadratic objective functions are not supported yet.
307
308\subsection{Usage}
309
310The following statement can be used inside your \GAMS program to specify using \CBC
311\begin{verbatim}
312  Option LP = CBC;     { or MIP or RMIP }
313\end{verbatim}
314
315The above statement should appear before the Solve statement.
316If \CBC was specified as the default solver during \GAMS installation, the above statement is not necessary.
317
318There are many parameters which can affect the performance the \CBC{}s Branch and Cut Algorithm.
319First just try with default settings and look carefully at the log file.
320Did cuts help? Did they take too long? Look at the output to see which cuts were effective and then do some tuning (see the option \hyperlink{cuts}{cuts}).
321If the \hyperlink{preprocess}{preprocessing} reduced the size of the problem or strengthened many coefficients then it is probably wise to leave it on.
322Switch off \hyperlink{heuristics}{heuristics} which did not provide solutions.
323The other major area to look at is the search.
324Hopefully good solutions were obtained fairly early in the search so the important point is to select the best variable to branch on.
325See whether strong branching did a good job -- or did it just take a lot of iterations?
327
328\subsubsection{Specification of Options}
329
330The \GAMS/\CBC options file consists of one option or comment per line.
331An asterisk (*) at the beginning of a line causes the entire line to be ignored.
332Otherwise, the line will be interpreted as an option name and value separated by any amount of white space (blanks or tabs).
333Following is an example options file \texttt{cbc.opt}.
334\begin{verbatim}
335  cuts root
336  perturbation off
337\end{verbatim}
338It will cause \CBC to use cut generators only in the root node and turns off the perturbation of the LP relaxation.
339
340\GAMS/\CBC currently does not support the \GAMS Branch-and-Cut-and-Heuristic (BCH) Facility.
341If you need to use \GAMS/\CBC with BCH, please consider to use a \GAMS system of version $\leq 23.3$, available at \url{http://www.gams.com/download/download_old.htm}.
342
343% \GAMS/\CBC supports the \GAMS Branch-and-Cut-and-Heuristic (BCH) Facility.
344% The \GAMS BCH facility automates all major steps necessary to define, execute, and control the use of user defined routines within the framework of general purpose MIP codes.
345% Currently supported are user defined cut generators and heuristics.
346% Please see the BCH documentation at \texttt{http://www.gams.com/docs/bch.htm} for further information.
347
348\subsection{Options}
349
350Among all \CBC options, the following \GAMS parameters are currently supported in \CBC:
352
353In the following, we summarize all available \CBC options.
354\input{optcbc_s}  %TODO update?
355
356In the following, we give a detailed description of all available \CBC options.
357\input{optcbc_a}  %TODO update?
358
359\section{\COUENNE}
360
361% \GAMS/\COUENNE brings the open source MINLP solver \COUENNE to the broad audience of \GAMS users.
362
363\COUENNE (\textbf{C}onvex \textbf{O}ver and \textbf{U}nder \textbf{En}velopes for \textbf{N}onlinear \textbf{E}stimation) is an open-source solver for nonconvex mixed-integer nonlinear programming (MINLPs).
364The code has been developed originally in a cooperation of Carnegie Mellon University and IBM Research, and now at Clemson University.
365The COIN-OR project leader for \COUENNE is Pietro Belotti.
366
367\COUENNE solves convex and nonconvex MINLPs by an LP based spatial branch-and-bound algorithm that is similar to the algorithm used in \textsc{BARON}.
368The implementation extends \BONMIN by routines to compute valid linear outer approximations for nonconvex problems and methods for bound tightening and branching on nonlinear variables.
369
370For more information on the algorithm we refer to \cite{Be09,BeLeLiMaWa08} and the \COUENNE web site \url{https://projects.coin-or.org/Couenne}.
371Most of the \COUENNE documentation in this section is taken from the \COUENNE manual~\cite{CouenneManual}.
372
373\subsection{Model requirements}
374
375\COUENNE can handle mixed-integer nonlinear programming models which functions can be nonconvex, but should be twice continuously differentiable. Further, an algebraic description of the model need to be made available, which makes the use of some \GAMS functions and user-specified external functions impossible.
376The \COUENNE link in \GAMS supports continuous, binary, and integer variables, but no special ordered sets, semi-continuous or semi-integer variables (see chapter 17.1 of the \GAMS User's Guide).
377
378If \GAMS/\COUENNE is called for a linear model, the interface directly calls \CBC.
379
380\subsection{Usage}
381
382The following statement can be used inside your \GAMS program to specify using \COUENNE
383\begin{verbatim}
384  Option MINLP = COUENNE;     { or LP, RMIP, MIP, DNLP, NLP, RMINLP, QCP, RMIQCP, MIQCP }
385\end{verbatim}
386
387The above statement should appear before the Solve statement.
388If \COUENNE was specified as the default solver during \GAMS installation, the above statement is not necessary.
389
390\subsubsection{Specification of Options}
391
392A \COUENNE option file contains \IPOPT, \BONMIN, and \COUENNE options, for clarity all \BONMIN options should be preceded with the prefix \texttt{bonmin.}'' and all \COUENNE options should be preceded with the prefix \texttt{couenne.}''.
393All \IPOPT and many \BONMIN options are available in \COUENNE, please refer to the Sections~\ref{sub:ipoptoptions} and \ref{sub:bonminalloptions} for a detailed description.
394The scheme to name option files is the same as for all other \GAMS solvers.
395Specifying \texttt{optfile=1} let \GAMS/\COUENNE read \texttt{couenne.opt}, \texttt{optfile=2} corresponds to \texttt{couenne.op2}, and so on.
396The format of the option file is the same as for \IPOPT (see Section~\ref{sub:ipoptoptionspec}).
397
398\GAMS/\COUENNE understands currently the following \GAMS parameters: \texttt{reslim} (time limit), \texttt{nodlim} (node limit), \texttt{cutoff}, \texttt{optca} (absolute gap tolerance), and \texttt{optcr} (relative gap tolerance).
399One can set them either on the command line, e.g. \verb+nodlim=1000+, or inside your \GAMS program, e.g. \verb+Option nodlim=1000;+.
400Further, under Linux and Windows, the option \texttt{threads} can be used to control the number of threads used in the linear algebra routines of \IPOPT.
401
402\subsection{Detailed Options Description}
403\label{sub:couenneoptions}
404
405In the following we give a detailed list of options available for \COUENNE solely.
406The value on the right denotes the default value.
407Note that options specific to \IPOPT and \BONMIN are not listed her, see Sections \ref{sub:bonminalloptions} and \ref{sub:ipoptoptions} instead.
408
409\input{optcouenne_a}
410
411\section{\IPOPT}
412
413% \GAMS/\IPOPT brings the open source NLP solver \IPOPT to the broad audience of \GAMS users.
414
415\IPOPT (\textbf{I}nterior \textbf{P}oint \textbf{Opt}imizer) is an open-source solver for large-scale nonlinear programming.
416The code has been written primarily by Andreas W\"achter, who is the COIN-OR project leader for \IPOPT.
417
418\IPOPT implements an interior point line search filter method.
419For more information on the algorithm we refer to~\cite{NoWaWa08,Waechter2002,WaBi05b,WaBi05a,WaBi2006} and the \IPOPT web site \url{https://projects.coin-or.org/Ipopt}.
420Most of the \IPOPT documentation in the section was taken from the \IPOPT manual~\cite{IpoptManual}.
421
422\GAMS/\IPOPT uses \textsc{MUMPS}~\cite{AmestoyDuffKosterLExcellent2001,AmestoyGuermoucheLExcellentPralet2006} as linear solver, cf.~\url{http://graal.ens-lyon.fr/MUMPS}.
423In a commerically licensed \GAMS/\IPOPT version, also the linear solvers \textsc{MA27}, \textsc{MA57}, and \textsc{MA86} from the Harwell Subroutines Library (HSL) are available.
424In this case, the default solver is MA27.
425
426\textsc{MUMPS} and \textsc{MA57} use \textsc{METIS} for matrix ordering \cite{KaKu99}, cf.~\url{http://glaros.dtc.umn.edu/gkhome/views/metis/index.html} and \url{http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/manual.pdf}.
427\textsc{METIS} is copyrighted by the regents of the University of Minnesota.
428
429\subsection{Model requirements}
430
431\IPOPT can handle nonlinear programming models which functions can be nonconvex, but should be twice continuously differentiable.
432
433\subsection{Usage}
434
435The following statement can be used inside your \GAMS program to specify using \IPOPT
436\begin{verbatim}
437  Option NLP = IPOPT;     { or LP, RMIP, DNLP, RMINLP, QCP, RMIQCP }
438\end{verbatim}
439
440The above statement should appear before the Solve statement.
441If \IPOPT was specified as the default solver during \GAMS installation, the above statement is not necessary.
442
443\subsubsection{The linear solver in \IPOPT}
444\label{ipoptlinearsolver}
445\hypertarget{ipoptlinearsolver}{}
446
447The performance and robustness of \IPOPT on larger models heavily relies on the used solver for sparse symmetric indefinite linear systems.
448\GAMS/\IPOPT includes the sparse solver MUMPS~\cite{AmestoyDuffKosterLExcellent2001,AmestoyGuermoucheLExcellentPralet2006}.
449In a commerically licensed \GAMS/\IPOPT version, also the Harwell Subroutine Library (HSL) solvers MA27, MA57, and MA86 are available.
450Further, a user can provide the Parallel Sparse Direct Solver PARDISO or routines from HSL as shared (or dynamic) libraries.
451
452\paragraph{Using Harwell Subroutine Library routines with \GAMS/\IPOPT.}
453
454\GAMS/\IPOPT without commercial license can use the HSL routines \texttt{MA27}, \texttt{MA28}, \texttt{MA57}, and \texttt{MC19} when provided as shared library.
455By telling \IPOPT to use one of these routines (see options \texttt{linear\_solver}, \texttt{linear\_system\_scaling}, \texttt{nlp\_scaling\_method}, \texttt{dependency\_detector}), \GAMS/\IPOPT attempts to load the required routines from the library \texttt{libhsl.so} (Unix-Systems), \texttt{libhsl.dylib} (MacOS X), or \texttt{libhsl.dll} (Windows), respectively.
456
457The HSL routines are available at \url{http://www.hsl.rl.ac.uk/ipopt}.
458Note that it is your responsibility to ensure that you are entitled to download and use these routines!
459% You can build a shared library using the ThirdParty/HSL project at COIN-OR.
460
461\paragraph{Using PARDISO with \GAMS/\IPOPT.}
462Setting the option \texttt{linear\_solver} to \texttt{pardiso}, let \GAMS/\IPOPT attempt to load the linear solver PARDISO from the library \texttt{libpardiso.so} (Unix-Systems), \texttt{libpardiso.dylib} (MacOS X), or \texttt{libpardiso.dll} (Windows), respectively.
463
464PARDISO is available as compiled shared library for several platforms at \texttt{http://www.pardiso-project.org}.
465Note that it is your responsibility to ensure that you are entitled to download and use this package!
466
467\subsubsection{Specification of Options}
468\label{sub:ipoptoptionspec}
469
470\IPOPT has many options that can be adjusted for the algorithm (see Section \ref{sub:ipoptoptions}).
471Options are all identified by a string name, and their values can be of one of three types: Number (real), Integer, or String.
472Number options are used for things like tolerances, integer options are used for things like maximum number of iterations, and string options are used for setting algorithm details, like the NLP scaling method.
473Options can be set by creating a \texttt{ipopt.opt} file in the directory you are executing \IPOPT.
474
475The \texttt{ipopt.opt} file is read line by line and each line should contain the option name, followed by whitespace, and then the value.
476Comments can be included with the \# symbol. Don't forget to ensure you have a newline at the end of the file. For example,
477\begin{verbatim}
478# This is a comment
479
480# Turn off the NLP scaling
481nlp_scaling_method none
482
483# Change the initial barrier parameter
484mu_init 1e-2
485
486# Set the max number of iterations
487max_iter 500
488\end{verbatim}
489is a valid \texttt{ipopt.opt} file.
490
491% You can print the documentation for all \IPOPT options by using the option
492% \begin{verbatim}
493% print_options_documentation yes
494% \end{verbatim}
495% and running \IPOPT.
496% This will output all of the options documentation to the console.
497
498\GAMS/\IPOPT understand currently the following \GAMS parameters: \texttt{reslim} (time limit), \texttt{iterlim} (iteration limit), \texttt{domlim} (domain violation limit).
499You can set them either on the command line, e.g. \verb+iterlim=500+, or inside your \GAMS program, e.g. \verb+Option iterlim=500;+.
500Further, under Linux and Windows, the option \texttt{threads} can be used to control the number of threads used in the basic linear algebra routines.
501
502
503\subsection{Output}
504
505This section describes the standard \IPOPT console output.
506The output is designed to provide a quick summary of each iteration as \IPOPT solves the problem.
507
508Before \IPOPT starts to solve the problem, it displays the problem statistics (number of nonzero-elements in the matrices, number of variables, etc.).
509Note that if you have fixed variables (both upper and lower bounds are equal), \IPOPT may remove these variables from the problem internally and not include them in the problem statistics.
510
511Following the problem statistics, \IPOPT will begin to solve the problem and you will see output resembling the following,
512\begin{verbatim}
513iter    objective    inf_pr   inf_du lg(mu)  ||d||  lg(rg) alpha_du alpha_pr  ls
514   0  1.6109693e+01 1.12e+01 5.28e-01   0.0 0.00e+00    -  0.00e+00 0.00e+00   0
515   1  1.8029749e+01 9.90e-01 6.62e+01   0.1 2.05e+00    -  2.14e-01 1.00e+00f  1
516   2  1.8719906e+01 1.25e-02 9.04e+00  -2.2 5.94e-02   2.0 8.04e-01 1.00e+00h  1
517\end{verbatim}
518and the columns of output are defined as
519\begin{description}
520\item[iter]
521The current iteration count.
522This includes regular iterations and iterations while in restoration phase.
523If the algorithm is in the restoration phase, the letter \texttt{r} will be appended to the iteration number.
524\item[objective]
525The unscaled objective value at the current point.
526During the restoration phase, this value remains the unscaled objective value for the original problem.
527\item[inf\_pr]
528The unscaled constraint violation at the current point.
529This quantity is the infinity-norm (max) of the (unscaled) constraint violation.
530During the restoration phase, this value remains the constraint violation of the original problem at the current point.
531The option \texttt{inf\_pr\_output}'' can be used to switch to the printing of a different quantity.
532During the restoration phase, this value is the primal infeasibility of the original problem at the current point.
533\item[inf\_du]
534The scaled dual infeasibility at the current point.
535This quantity measure the infinity-norm (max) of the internal dual infeasibility \cite[Eq.~(4a)]{WaBi2006}, including inequality constraints reformulated using slack variables and problem scaling.
536During the restoration phase, this is the value of the dual infeasibility for the restoration phase problem.
537\item[lg(mu)]
538$\log_{10}$ of the value of the barrier parameter $\mu$.
539\item[$\Vert d\Vert$]
540The infinity norm (max) of the primal step (for the original variables $x$ and the internal slack variables $s$).
541During the restoration phase, this value includes the values of additional variables, $p$ and $n$ \cite[Eq.~(10)]{WaBi2006}.
542\item[lg(rg)]
543$\log_{10}$ of the value of the regularization term for the Hessian of the Lagrangian in the augmented system ($\delta_w$ in \cite[Eq.~(26)]{WaBi2006}).
544A dash (\texttt{-}'') indicates that no regularization was done.
545\item[alpha\_du]
546The stepsize for the dual variables ($\alpha^z_k$ in \cite[Eq.~(14c)]{WaBi2006})..
547\item[alpha\_pr]
548The stepsize for the primal variables ($\alpha_k$ in \cite[Eq.~(14a)]{WaBi2006}).
549The number is usually followed by a character for additional diagnostic information regarding the step acceptance criterion:
550 \begin{list}{blub}{\itemsep0pt}
551    \item[\texttt{f}] f-type iteration in the filter method w/o second order correction
552    \item[\texttt{F}] f-type iteration in the filter method w/ second order correction
553    \item[\texttt{h}] h-type iteration in the filter method w/o second order correction
554    \item[\texttt{H}] h-type iteration in the filter method w/ second order correction
555    \item[\texttt{k}] penalty value unchanged in merit function method w/o second order correction
556    \item[\texttt{K}] penalty value unchanged in merit function method w/ second order correction
557    \item[\texttt{n}] penalty value updated in merit function method w/o second order correction
558    \item[\texttt{N}] penalty value updated in merit function method w/ second order correction
559    \item[\texttt{R}] Restoration phase just started
560    \item[\texttt{w}] in watchdog procedure
561    \item[\texttt{s}] step accepted in soft restoration phase
562    \item[\texttt{t}/\texttt{T}] tiny step accepted without line search
563    \item[\texttt{r}] some previous iterate restored
564 \end{list}
565\item[ls]
566The number of backtracking line search steps (does not include second-order correction steps).
567\end{description}
568
569Note that the step acceptance mechanisms in \IPOPT consider the
570barrier objective function \cite[Eq.~(3a)]{WaBi2006} which is
571usually different from the value reported in the \texttt{objective}
572column.  Similarly, for the purposes of the step acceptance, the
573constraint violation is measured for the internal problem formulation,
574which includes slack variables for inequality constraints and
575potentially scaling of the constraint functions.  This value, too, is
576usually different from the value reported in \texttt{inf\_pr}.  As a
577consequence, a new iterate might have worse values both for the
578objective function and the constraint violation as reported in the
579iteration output, seemingly contradicting globalization procedure.
580
581
582When the algorithm terminates, \IPOPT will output a message to the screen.
583The following is a list of the possible output messages and a brief description.
584
585\begin{description}
586\item[Optimal Solution Found.] ~
587
588    This message indicates that \IPOPT found a (locally) optimal point within the desired tolerances.
589
590\item[Solved To Acceptable Level.] ~
591
592    This indicates that the algorithm did not converge to the desired'' tolerances, but that it was able to obtain a point satisfying the acceptable'' tolerance level as specified by \texttt{acceptable-*} options.
593    This may happen if the desired tolerances are too small for the current problem.
594
595\item[Feasible point for square problem found.] ~
596
597    This message is printed if the problem is square'' (i.e., it has as many equality constraints as free variables) and \IPOPT found a feasible point.
598
599\item[Converged to a point of local infeasibility. Problem may be infeasible.] ~
600
601    The restoration phase converged to a point that is a minimizer for the constraint violation (in the $\ell_1$-norm), but is not feasible for the original problem.
602    This indicates that the problem may be infeasible (or at least that the algorithm is stuck at a locally infeasible point).
603    The returned point (the minimizer of the constraint violation) might help you to find which constraint is causing the problem.
604    If you believe that the NLP is feasible, it might help to start the optimization from a different point.
605
606\item[Search Direction is becoming Too Small.] ~
607
608    This indicates that \IPOPT is calculating very small step sizes and making very little progress.
609    This could happen if the problem has been solved to the best numerical accuracy possible given the current scaling.
610
611\item[Iterates divering; problem might be unbounded.] ~
612
613    This message is printed if the max-norm of the iterates becomes larger than the value of the option \texttt{diverging\_iterates\_tol}.
614    This can happen if the problem is unbounded below and the iterates are diverging.
615
616\item[Stopping optimization at current point as requested by user.] ~
617
618    This message is printed if either the Ctrl+C was pressed or the domain violation limit is reached.
619
620\item[Maximum Number of Iterations Exceeded.] ~
621
622    This indicates that \IPOPT has exceeded the maximum number of iterations as specified by the \IPOPT option \texttt{max\_iter} or the GAMS option \texttt{iterlim}.
623
624\item[Maximum CPU time exceeded.] ~
625
626    This indicates that \IPOPT has exceeded the maximum number of seconds as specified by the \IPOPT option \texttt{max\_cpu\_time} or the GAMS option \texttt{reslim}.
627
628\item[Restoration Failed!] ~
629
630    This indicates that the restoration phase failed to find a feasible point that was acceptable to the filter line search for the original problem.
631    This could happen if the problem is highly degenerate or does not satisfy the constraint qualification, or if an external function in \GAMS provides incorrect derivative information.
632
633\item[Error in step computation (regularization becomes too large?)!] ~
634
635    This messages is printed if \IPOPT is unable to compute a search direction, despite several attempts to modify the iteration matrix.
636    Usually, the value of the regularization parameter then becomes too large.
637
638\item[Problem has too few degrees of freedom.] ~
639
640    This indicates that your problem, as specified, has too few degrees of freedom.
641    This can happen if you have too many equality constraints, or if you fix too many variables (\IPOPT removes fixed variables).
642
643\item[Not enough memory.] ~
644
645    An error occurred while trying to allocate memory.
646    The problem may be too large for your current memory and swap configuration.
647
648\item[INTERNAL ERROR: Unknown SolverReturn value - Notify \IPOPT Authors.] ~
649
650    An unknown internal error has occurred. Please notify the authors of the \GAMS/\IPOPT link or \IPOPT (refer to \url{https://projects.coin-or.org/GAMSlinks} or \url{https://projects.coin-or.org/Ipopt}).
651\end{description}
652
653
654\subsection{Diagnostic Tags for \IPOPT}
655
656To print additional diagnostic tags for each iteration of \IPOPT, set
657the options \texttt{print\_info\_string} to \texttt{yes}. With
658this, a tag will appear at the end of an iteration line with the
659following diagnostic meaning that are useful to flag difficulties for
660a particular \IPOPT run.  The following is a list of possible strings:
661\begin{list}{blub}{\itemsep0pt}
662 \item[\texttt{!}] Tighten resto tolerance if only slightly infeasible \cite[Sec.~3.3]{WaBi2006}
663 \item[\texttt{A}] Current iteration is acceptable (alternate termination)
664 \item[\texttt{a}] Perturbation for PD Singularity can't be done, assume singular \cite[Sec.~3.1]{WaBi2006}
665 \item[\texttt{C}] Second Order Correction taken \cite[Sec.~2.4]{WaBi2006}
666 \item[\texttt{Dh}] Hessian degenerate based on multiple iterations \cite[Sec.~3.1]{WaBi2006}
667 \item[\texttt{Dhj}] Hessian/Jacobian degenerate based on multiple iterations \cite[Sec.~3.1]{WaBi2006}
668 \item[\texttt{Dj}] Jacobian degenerate based on multiple iterations \cite[Sec.~3.1]{WaBi2006}
669 \item[\texttt{dx}] $\delta_x$ perturbation too large \cite[Sec.~3.1]{WaBi2006}
670 \item[\texttt{e}] Cutting back $\alpha$ due to evaluation error (in backtracking line search)
671 \item[\texttt{F-}] Filter should be reset, but maximal resets exceeded \cite[Sec.~2.3]{WaBi2006}
672 \item[\texttt{F+}] Resetting filter due to last few rejections of filter \cite[Sec.~2.3]{WaBi2006}
673 \item[\texttt{L}] Degenerate Jacobian, $\delta_c$ already perturbed \cite[Sec.~3.1]{WaBi2006}
674 \item[\texttt{l}] Degenerate Jacobian, $\delta_c$ perturbed \cite[Sec.~3.1]{WaBi2006}
675 \item[\texttt{M}] Magic step taken for slack variables (in backtracking line search)
676 \item[\texttt{Nh}] Hessian not yet degenerate \cite[Sec.~3.1]{WaBi2006}
677 \item[\texttt{Nhj}] Hessian/Jacobian not yet degenerate \cite[Sec.~3.1]{WaBi2006}
678 \item[\texttt{Nj}] Jacobian not yet degenerate \cite[Sec.~3.1]{WaBi2006}
679 \item[\texttt{NW}] Warm start initialization failed (in Warm Start Initialization)
680 \item[\texttt{q}] PD system possibly singular, attempt to improve solution quality \cite[Sec.~3.1]{WaBi2006}
681 \item[\texttt{R}] Solution of restoration phase \cite[Sec.~3.3]{WaBi2006}
682 \item[\texttt{S}] PD system possibly singular, accept current solution \cite[Sec.~3.1]{WaBi2006}
683 \item[\texttt{s}] PD system singular \cite[Sec.~3.1]{WaBi2006}
684 \item[\texttt{s}] Square Problem. Set multipliers to zero (default initialization routine)
685 \item[\texttt{Tmax}] Trial $\theta$ is larger than $\theta_{max}$ (filter parameter \cite[Eq.~(21)]{WaBi2006})
686 \item[\texttt{W}] Watchdog line search procedure successful \cite[Sec.~3.2]{WaBi2006}
687 \item[\texttt{w}] Watchdog line search procedure unsuccessful, stopped \cite[Sec.~3.2]{WaBi2006}
688 \item[\texttt{Wb}] Undoing most recent SR1 update \cite[Sec.~5.4.1]{Biegler2010}
689 \item[\texttt{We}] Skip Limited-Memory Update in restoration phase  \cite[Sec.~5.4.1]{Biegler2010}
690 \item[\texttt{Wp}] Safeguard $B^0 = \sigma I$ for  Limited-Memory Update \cite[Sec.~5.4.1]{Biegler2010}
691 \item[\texttt{Wr}] Resetting Limited-Memory Update \cite[Sec.~5.4.1]{Biegler2010}
692 \item[\texttt{Ws}] Skip Limited-Memory Update since $s^Ty$ is not positive \cite[Sec.~5.4.1]{Biegler2010}
693 \item[\texttt{WS}] Skip Limited-Memory Update since $\Delta x$ is too small \cite[Sec.~5.4.1]{Biegler2010}
694 \item[\texttt{y}] Dual infeasibility, use least square multiplier update (during \IPOPT algorithm)
695 \item[\texttt{z}] Apply correction to bound multiplier if too large (during \IPOPT algorithm)
696\end{list}
697
698\subsection{Detailed Options Description}
699\label{sub:ipoptoptions}
700
701% Note, that \GAMS/\IPOPT overwrites the \IPOPT default setting for the parameters \texttt{bound\_relax\_factor} (set to $10^{-10}$) and \texttt{mu\_strategy} (set to \texttt{adaptive}).
702% You can change these values by specifying these options in your \IPOPT options file.
703
704\input{optipopt_a}
705
706\section{Optimization Services}
707
708\OS (\textbf{O}ptimization \textbf{S}ervices) is an initiative to provide a set of standards for representing optimization instances, results, solver options, and communication between clients and solvers in a distributed environment using Web Services.
709The code has been written primarily by Horand Gassmann, Jun Ma, and Kipp Martin.
710Kipp Martin is the COIN-OR project leader for \OS.
711
712For more information we refer to the \OS manual~\cite{Ma2005}, the papers~\cite{FourerMaMartin2009,FourerMaMartin2010,OSManual}, and the web sites \url{http://www.optimizationservices.org} and \url{https://projects.coin-or.org/OS}.
713
714With the \OS link in \GAMS, you can send your instance to an Optimization Services Server for remote solving.
715
716\subsection{Model requirements}
717
718\OS supports continuous, binary, integer, semicontinuous, and semiinteger variables and linear and nonlinear equations.
719Special ordered sets and indicator constraints are currently not supported.
720Initial values are currently not supported by the \GAMS/\OS link.
721
722\subsection{Usage}
723
724The following statement can be used inside your \GAMS program to specify using \OS
725\begin{verbatim}
726  Option MINLP = OS;     { or LP, RMIP, MIP, DNLP, NLP, RMINLP, QCP, RMIQCP, MIQCP }
727\end{verbatim}
728
729The above statement should appear before the Solve statement.
730
731By default, for a given instance of a \GAMS model, nothing happens.
732To solve an instance remotely, you have to specify the URL of an Optimization Services Server via the option \texttt{service}.
733Usually, the server chooses an appropriate solver for your instance, depending on their availability on the server.
734A fully equipped server chooses
735\textsc{CLP} for continuous linear models (LP and RMIP),
736\IPOPT for continuous nonlinear models (NLP, DNLP, RMINLP, QCP, RMIQCP),
737\CBC for mixed-integer linear models (MIP), and
738\BONMIN for mixed-integer nonlinear models (MIQCP, MINLP).
739An easy way to influence the choice of the solver on the server is the \texttt{solver} option.
740
741Further options can be provided in an OSoL (Optimization Services Options Language) file, which is specified via the the \texttt{readosol} option.
742An example OSoL file looks like
743\begin{verbatim}
744<?xml version="1.0" encoding="UTF-8"?>
745<osol xmlns="os.optimizationservices.org" xmlns:xs="http://www.w3.org/2001/XMLSchema"
746      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
747      xsi:schemaLocation="os.optimizationservices.org
748                          http://www.optimizationservices.org/schemas/2.0/OSoL.xsd">
749<optimization>
750  <solverOptions numberOfSolverOptions="3">
751    <solverOption name="cuts" solver="cbc" value="off" />
752    <solverOption name="max_active_nodes" solver="symphony"  value="2" />
753    <solverOption name="max_iter" solver="ipopt" type="integer" value="2000"/>
754  </solverOptions>
755</optimization>
756</osol>
757\end{verbatim}
758It specifies that if \CBC is used, then cutting planes are disabled,
759if \textsc{SYMPHONY} is used, then at most 2 nodes should be active,
760and if \IPOPT is used, then a limit of 2000 iterations is imposed.
761
762By default, the call to the server is a \emph{synchronous} call.
763The \GAMS process will wait for the result and then display the result.
764This may not be desirable when solving large optimization models.
765In order to use the remote solver service in an \emph{asynchronous} fashion, one can make use of the \GAMS Grid Computing Facility, see Appendix I in the \GAMS manual.
766
767\subsection{Detailed Options Descriptions}
768
769\input{optosd_a}
770
771\section{\OSICPLEX, \OSIGUROBI, \OSIMOSEK, \OSISOPLEX, \OSIXPRESS}
772
773The bare bone'' solver links \GAMS/\OSICPLEX, \GAMS/\OSIGUROBI, \GAMS/\OSIMOSEK, \GAMS/\OSISOPLEX, and \GAMS/\OSIXPRESS
774allow users to solve their \GAMS models with \SOPLEX or a standalone license of \CPLEX, \GUROBI, \MOSEK, or \XPRESS.
775The links use the COIN-OR Open Solver Interface (\OSI) to communicate with these solvers.
776The \OSICPLEX link has been written primarily by Tobias Achterberg,
777the \OSIGUROBI link has been written primarily by Stefan Vigerske,
778the \OSIMOSEK link has been written primarily by Bo Jensen,
779the \OSISOPLEX link has been written primarily by Tobias Achterberg, Ambros M.\ Gleixner, and Wei Huang, and
780the \OSIXPRESS link has been written primarily by John Doe.
781Matthew Saltzman is the COIN-OR project leader for \OSI.
782
784
785\subsection{Model requirements}
786
787The \OSI links support linear equations and continuous, binary, and integer variables.
788Semicontinuous and Semiinteger variables, special ordered sets, branching priorities, and indicator constraints are not supported by \OSI.
789\OSISOPLEX solves only LPs, no MIPs.
790
791\subsection{Usage}
792
793The following statement can be used inside your \GAMS program to specify using \OSIGUROBI
794\begin{verbatim}
795  Option MIP = OSIGUROBI;     { or LP or RMIP }
796\end{verbatim}
797
798The above statement should appear before the Solve statement.
799
800The links support the general \GAMS options \texttt{reslim}, \texttt{optca}, \texttt{optcr}, \texttt{nodlim}, \texttt{iterlim}, and \texttt{threads} (except for \OSISOPLEX).
801For \OSICPLEX, \OSIGUROBI, \OSIMOSEK, and \OSIXPRESS an option file in the format required by the solver can be provided via the \GAMS \texttt{optfile} option.
802See Section~\ref{sub:osioptions} for details.
803
804If a MIP is solved via one of the \OSI links, only primal solution values are reported by default.
805To receive also the dual values for the LP that is obtained from the MIP by fixing all discrete variables, the \GAMS option \texttt{integer1} must be set to a nonzero value. Note that this may lead to solving another LP after the MIP solve has finished.
806
807Setting the \GAMS option \texttt{integer2} to a nonzero value makes variable and equation names available to the solver.
808This option may be useful for debugging purposes.
809
810Setting the \GAMS option \texttt{integer3} to a nonzero value leads to writing the model instance to a file in LP or MPS format before starting the solution process (\texttt{integer3=1} writes an MPS file, \texttt{integer3=2} writes an LP files, \texttt{integer3=4} writes a native MPS file; sum these values to write several files).
811The name of the MPS file is chosen to be the name of the \GAMS model file with the extension \texttt{.gms} replaced by \texttt{.mps}.
812This option may be useful for debugging purposes.
813
814For \OSICPLEX, \OSIGUROBI, and \OSIXPRESS, setting the \GAMS option \texttt{integer4} to a nonzero value leads to passing the variable level values (\texttt{.l} suffix) to the MIP solver as initial solution. This is analog to the \texttt{mipstart} option of the full \CPLEX and \GUROBI links and the \texttt{loadmipsol} option of the full \XPRESS link.
815
816\subsection{Option files}
817\label{sub:osioptions}
818
819\subsubsection{\OSICPLEX Options}
820In an \OSICPLEX option file, each line lists one option setting, where the option name and value are separated by space.\\
821Example:
822\begin{verbatim}
823CPX_PARAM_MIPEMPHASIS            2
824CPX_PARAM_HEURFREQ               42
825CPX_PARAM_MIPDISPLAY             4
826\end{verbatim}
827
828\subsubsection{\OSIGUROBI Options}
829In an \OSICPLEX option file, each line lists one option setting, where the option name and value are separated by space.
830
831Example:
832\begin{verbatim}
833Cuts 2
834Heuristics 0.1
835\end{verbatim}
836
837\subsubsection{\OSIMOSEK Options}
838An \OSIMOSEK option file begins with the line \texttt{BEGIN MOSEK} and terminates with \texttt{END MOSEK}.
839Comments are introduced with an '\%', empty lines are ignored.
840Each other line starts with a MOSEK parameter value, followed by space, and a value for that parameter.
841
842Example:
843\begin{verbatim}
844BEGIN MOSEK
845% disable probing and solve the root node by the interior point solver
846MSK_IPAR_MIO_PRESOLVE_PROBING MSK_OFF
847MSK_IPAR_MIO_ROOT_OPTIMIZER   MSK_OPTIMIZER_INTPNT
848END MOSEK
849\end{verbatim}
850
851\subsubsection{\OSIXPRESS Options}
852In an \OSIXPRESS option file, each line lists one option setting, where the option name and value are separated by an equal sign.
853
854Example:
855\begin{verbatim}
856MIPLOG = 3
857HEURFREQ = 2
858\end{verbatim}
859
860
861\bibliographystyle{plain}
862\bibliography{coin_scip}
863
864\chapterend
Note: See TracBrowser for help on using the repository browser.