Xpress offers proven optimization technology for large-scale applications, with out-of-the-box high performance on a wide range of model types. Its ultra-efficient sparse matrix handling and on-the-fly data compression address the largest problems, with reliable performance even on numerically difficult or unstable problems. The framework used by the drivers supports automatic reformulation for many expression types; the modeling guide can be found here.

[Read More] [Modeling guide] [Options] [Changes] [Download Xpress]

This package contains an all-new Xpress driver, that provides significantly extended modeling support for logical and nonlinear operators through linearizations performed by the MP library. For compatibility, there are two binaries in this package: xpress [options] is the new version, xpressasl [options] is the legacy version. If you are upgrading an existing installation and encounter any issues with the new version please report them to

How to use it

ampl: option solver xpress; # change the solver
ampl: option xpress_options 'option1=value1 option2=value2'; # specify options
ampl: solve; # solve the problem

At a glance



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 xpress_options. A list of all supported options is available here or can be obtained by executing the solver driver with the -= command line parameter:

xpress -=

or from AMPL:

shell "xpress -=";

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:time:

lim:time (timelim, timelimit)
      Limit on solve time (in seconds; 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:

xpress -=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 xpress as solver and pass the two options: return_mipgap=3 and outlev=1.

option solver xpress;
option xpress_options "retmipgap=3 outlev=1";

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;

Xpress solve result codes can be obtained by running xpress -! or ampl: shell "xpress -!";:

          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
        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.

Handling infeasibility


When a model is unfeasible, one usedful information is finding the irreducible inconsistent sets, which are subsets of constraints that are incompatible. This is supported by the framework, see the description here.