CONOPT
From ASCEND
| NLA |
|---|
| QRSlv |
| CMSlv |
| IPSlv |
| Opt |
| NLP |
| CONOPT |
| IPOPT |
| TRON |
| MINOS |
| NGSlv |
| OptSQP |
| DAE/ODE |
| IDA |
| LSODE |
| DOPRI5 |
| LA |
| linsolqr |
| linsol |
| LP |
| MakeMPS |
| Logic |
| LRSlv |
CONOPT is an efficient large-scale Nonlinear Programming (NLP) (aka nonlinear optimisation) solver developed by ARKI Consulting and Development in Denmark. For information on obtaining a copy of CONOPT, see Obtaining CONOPT for ASCEND. The CONOPT solver can be used under ASCEND to solve optimisation problems (eg models/conopttest.a4c). It is also used as a sub-solver by CMSlv to perform boundary-crossing calculations.
The general form of problems that CONOPT can solve[1] is
subject to
where
- x is a vector of continuous real-valued variables of size ncols
- g is vector of constraint functions with nrows elements
- c is vector of constraint values for g.
- a is a fixed vector of lower bounds for x.
- b is a fixed vector of upper bounds for x.
-
is a vector of relational operators, each of which may be
,
, < or >.
- the optimisation is to maximise or minimise either a function f(x) or a specific variable xk.
Contents |
A simple example using CONOPT
CONOPT solves optimisation problems, which means that models sovled with CONOPT should have a MAXIMIZE or MINIMIZE statement to tell CONOPT what you are optimising.
For a complete example of CONOPT with ASCEND, see the following file in the ASCEND model library: models/conopttest.a4c (rev 1735)
Implementation
ASCEND 'wraps' CONOPT as a standard solver using the file solvers/conopt/asc_conopt.c.
This file in turn calls ascend/solver/conopt_dl.c which does either dlopens the CONOPT shared library, or is dynamically linked to it, depending on how you built ASCEND. This approach leaves the possibility of the user upgrading CONOPT without any need to recompile ASCEND, and permits us to distribute a CONOPT-capable version of ASCEND which builds and runs fine even in the absence of CONOPT.
The CMSlv conditional solver also makes use of conopt_dl.c, but doesn't use solvers/asc_conopt.c.
Building ASCEND with CONOPT
Normally ASCEND will be built with CONOPT support via dlopen which means that it does not need to be on your machine at the time when you build ASCEND. If you know that you will have a copy of CONOPT, you can dynamically link to CONOPT, and no need for dlopen. To do this, use the CONOPT_LINKED build option. If you have CONOPT in a strange location, there are some other build options to specify that. The CONOPT shared library is assumed to be called libconsub3.so on Linux, or conopt3.dll and conopt3.lib on Windows).
For CONOPT support to be provided, you will need to have CONOPT in your WITH_SOLVERS build option list.
At runtime, if you have not selected CONOPT_LINKED, then the environment variable CONOPT_PATH is used to locate the CONOPT shared library.

