FAQ | BOOK | SOLVERS | PLATFORMS | VENDORS | CALENDAR | MORE! | WHAT'S NEW
EXTENSIONS | CHANGE LOG | REPORTS | NETLIB | EXAMPLES | CONTENTS | HOME

# Solvers that Work with AMPL

### Problem Analysis Tools

The following table summarizes availability of solvers for which interfaces to AMPL have been constructed, and provides links to additional information in the AMPL vendor listing and at the Web sites of individual companies.

Algorithm types listed in the table are distinguished by the problems they solve and the methods they use, as follows:

• Linear (simplex): Linear objective and constraints, by some version of the simplex method.

• Linear (interior): Linear objective and constraints, by some version of an interior (or barrier) method.

• Network: Linear objective and network flow constraints, by some version of the network simplex method.

• Quadratic: Convex or concave quadratic objective and linear constraints, by either a simplex-type or interior-type method.

• Nonlinear: Continuous but not all-linear objective and constraints, by any of several methods including reduced gradient, quasi-newton, augmented lagrangian and interior-point. Unless other indication is given (see below), possibly optimal over only some local neighborhood.
• Nonlinear convex: Nonlinear with an objective that is convex (if minimized) or concave (if maximized) and constraints that define a convex region. Guaranteed to be optimal over the entire feasible region.
• Nonlinear global: Nonlinear but requiring a solution that is optimal over all points in the feasible region.

• Complementarity: Linear or nonlinear as above, with additional complementarity conditions.

• Integer linear: Linear objective and constraints and some or all integer-valued variables, by a branch-and-bound approach that applies a linear solver to successive subproblems.

• Integer nonlinear: Continuous but not all-linear objective and constraints and some or all integer-valued variables, by a branch-and-bound approach that applies a nonlinear solver to successive subproblems.

Note that some solvers are packages that incorporate a range of optimization algorithms. These algorithms may be available individually; contact the vendor for details.

If your favorite solver does not appear here, we encourage you to explore the possibility of adding it to the list. See our discussion of hooking your solver to AMPL following the solver listing.

## Solver listing

All of the solvers listed below can be used with AMPL. Send additions or corrections to info@ampl.com.

Algorithm Types. See above for definitions.

Vendor or Download Site. Sources of further information for obtaining the solver. This entry may be a link to a developer's or vendor's web site, or (where indicated) to a site from which the solver can be downloaded.

Driver Code. A link to a directory in netlib/ampl/solvers from which you can download C source code to make an AMPL driver for the solver. The driver provides an interface from AMPL's general description of an optimization problem to a solver's particular algorithms and options. Hence a different driver is needed for each solver. Some solvers are available bundled with the appropriate AMPL driver, while others require that you download and compile the driver yourself; details are available from the vendor or from the README file in the driver's netlib directory.

Documentation. The README files are text copied from the netlib/ampl/solvers directory mentioned above. The Using . . . booklets can be downloaded in PDF or postscript format.

Solver Algorithm Types Vendor or
Driver Code Documentation
ACRS Nonlinear global Contact G. Liuzzi
ALGENCAN Nonlinear See the TANGO site
BLMVM Nonlinear
bounded-variable
Bonmin Integer nonlinear See the Bonmin homepage and
Getting Started with Bonmin
Bonmin Users' Manual

directives table
CBC Linear (simplex)
Integer linear
See the CBC homepage   CBC User Guide

directives guide
CONDOR Nonlinear
nondifferentiable
See the Kranf Site
CONOPT Nonlinear Buy directly from us.
Write to
info@ampl.com for prices.

Using CONOPT with AMPL
CPLEX Linear (simplex)
Linear (interior)
Network
Integer linear
Write to
info@ampl.com for prices.

IBM ILOG AMPL CPLEX 12.2 User's Guide
DONLP2 Nonlinear DONLP2 information page   README.donlp2

DONLP2 Users Guide and
directives table
FilMINT Integer nonlinear Contact authors of FilMINT slides and paper   Slides and Paper

FilMINT
directives tables
FILTER /
MINLP
Nonlinear
Integer nonlinear
Dundee solvers for MINLP/NLP/QP   FILTER and MINLP
directives tables
FortMP Linear (simplex)
Linear (interior)
Integer linear
OptiRisk Systems   directives table
FSQP Nonlinear AEM Design fsqp.c README.fsqp
Gecode Combinatorial
using CP extensions
Gurobi Linear (simplex)
Linear (interior)
Integer linear
Write to
info@ampl.com for prices.

AMPL-Gurobi 5.1 Guide
ILOG CP Combinatorial
using CP extensions
Part of the CPLEX for AMPL package   directives table
IPOPT Nonlinear See the IPOPT homepage
KNITRO Nonlinear Buy directly from us.
Write to
info@ampl.com for prices.
directives table

directives table
L-BFGS-B Nonlinear
bounded-variable
See the L-BFGS-B page   directives table
LGO Nonlinear global Contact Pintér Consulting Services   AMPL-LGO-readme.txt
LOQO Linear (interior)
Nonlinear
LP_SOLVE Linear (simplex)
Integer linear
See the  lpsolve homepage lpsolve files @SourceForge Using lp_solve
MINLP Integer nonlinear see entry for FILTER/MINLP
MINOS Linear (simplex)
Nonlinear
Write to
info@ampl.com for prices.

Source code from Stanford Business Software

Using AMPL/MINOS
MINTO Linear (simplex)
Integer linear
MINTO at COR@L   directives table
MOSEK Linear (simplex)
Linear (interior)
See the MOSEK homepage   directives table
NSIPS Nonlinear semi-infinite See the NSIPS homepage   directives table
OOQP Linear
See the OOQP homepage
PATH Complementarity CPNET, Computer Sciences Dept, Univ of Wisconsin path.c README.path

directives table
PCx Linear (interior) NEOS Tools, Argonne National Laboratory
PENNON Nonlinear See the PENNON homepage   User's Guide (version 1.3)
SNOPT Nonlinear Buy binaries directly from us.
Write to
info@ampl.com for prices.

Source code from Stanford Business Software

directives table
SOPT Linear (simplex)
Nonlinear convex
Integer linear
SAITECH, Inc.
TRON Nonlinear
bounded-variable
See the TRON homepage   directives table
XA Linear (simplex)
Integer linear
Sunset Software Technology
XLSOL
LS-XLSOL
Linear (simplex)
Integer linear
Frontline Systems, Inc.
Xpress Linear (simplex)
Linear (interior)
Integer linear
Write to
info@ampl.com for prices.

directives table

## Problem analysis tools

### MProbe

MProbe is a tool for analyzing nonlinear functions to discern their shapes in a region of interest. MProbe is linked to AMPL, so that it may be used to analyze any nonlinear objective or constraint function written in the AMPL language.

Shape means whether the function is linear or almost linear, convex or almost convex, concave or almost concave, or concave and convex. Knowledge of function shape is crucial when developing nonlinear optimization models, or when selecting the nonlinear solver for a nonlinear optimization problem. Determining function shape is difficult for nonlinear functions having more than two variables. MProbe is specifically designed to operate on nonlinear functions having many variables.

MProbe 5.0 offers numerous new plotting options, sampling inside any convex enclosure (for improved accuracy of conclusions), and identification of redundant constraints and bounds.

MProbe has been developed by Prof. John Chinneck of Carleton University. A student/demo version bundled with the AMPL Student Edition is available for downloading through the web.

## Hooking your own solver to AMPL

New solver hookups are encouraged though AMPL's use of freely available interface routines to support flexible and fully documented file formats for problems and results.

Detailed instructions and examples are available to help you (or your solver's developer) to write an AMPL driver. AMPL can then switch to your solver, set up its algorithmic options, send it a problem to be solved and retrieve the results, all in the same way that you work with currently supported solvers. See our instructions on hooking your solver to AMPL for further details.