Mosek#
Mosek is a versatile linear, quadratic, quadratically constrained and conic optimizer that supports continuous and discrete variables. The framework used by the driver supports automatic reformulation for many expression types; the modeling guide can be found here.
Product Page | Modeling guide | Features guide | Options | Changes
Download MOSEK | Start a MOSEK Trial Now!
How to use it#
How to install using amplpy:
# Install Python API for AMPL:
$ python -m pip install amplpy --upgrade
# Install AMPL & solver modules:
$ python -m amplpy.modules install mosek # install MOSEK
# Activate your license (e.g., free ampl.com/ce or ampl.com/courses licenses):
$ python -m amplpy.modules activate <your-license-uuid>
How to use:
from amplpy import AMPL
ampl = AMPL()
...
ampl.solve(solver="mosek", mosek_options="option1=value1 option2=value2")
Learn more about what we have to offer to implement and deploy Optimization in Python.
AMPL APIs are interfaces that allow developers to access the features of the AMPL interpreter from within a programming language. We have APIs available for:
ampl: option solver mosek; # change the solver
ampl: option mosek_options 'option1=value1 option2=value2'; # specify options
ampl: solve; # solve the problem
At a glance#
Resources#
Features#
Problem types:
LP, QP, QCP, conic programs (SOCP, exponential cones)
MIP, MIQP, MIQCP, mixed-integer conic programs
Features for all models:
Problem input
Model investigation
Dealing with infeasibility/unboundedness
Features for MIP models:
Model investigation
Solver options#
Full list of solver options:
Many solver parameters can be changed directly from AMPL, by specifying them as a space separated string in the option mosek_options
.
A list of all supported options is available here or can be obtained by executing the solver driver with the -=
command line parameter:
mosek -=
or from AMPL:
shell "mosek -=";
Solver options can have multiple aliases, to accomodate for different user types.
The main numenclature is given first in the -= output, then followed by aliases in brackets,
see for example the listing for lim:iter
:
lim:iter (iterlim, iterlimit)
Iteration limit (default: no limit).
The main numenclature contains a prefix (lim:
in this case) to help categorize and find the
options relevant to a context. To list only the options with a specific prefix (lim:
for this example),
run:
mosek -=lim:
More details on solver options: Features guide.
Specifying solver options and solving a model#
After formulating the model in AMPL, execute the following to select Mosek as solver and pass the two options:
return_mipgap=3
and outlev=1
.
option solver mosek;
option mosek_options "retmipgap=3 outlev=1";
solve;
Retrieving solutions#
The outcome of the last optimization is stored in the AMPL parameter solve_result_num
and the relative message in
solve_result
.
display solve_result_num, solve_result;
Mosek solve result codes can be obtained by running mosek -!
or ampl: shell "mosek -!";
:
Solve result table for MOSEK 10.2.0
0- 99 solved: optimal for an optimization problem,
feasible for a satisfaction problem
100-199 solved? solution candidate returned but error likely
150 solved? MP solution check failed (option sol:chk:fail)
200-299 infeasible
300-349 unbounded, feasible solution returned
350-399 unbounded, no feasible solution returned
400-449 limit, feasible: stopped, e.g., on iterations or Ctrl-C
450-469 limit, problem is either infeasible or unbounded.
Disable dual reductions or run IIS finder for definitive answer.
470-499 limit, no solution returned
500-999 failure, no solution returned
550 failure: numeric issue, no feasible solution
For general information, see MP result codes guide.