Decision Tree for Optimization Software
 

Navigation Menu

Tools : Automatic Differentiation, Modeling Systems, and Analysis Tools

We list here the above mentioned tools only. Others may be useful and/or even necessary, like preprocessors for systems of linear inequalities and equations, e.g. for eliminating fixed variables, redundant equalities and inequalities and similar tasks. There is no separate public domain software tool for these tasks. Some of the modeling systems mentioned below, however, include such options.

General note on Automatic Differentiation

While it is frequently necessary or desirable to replace gradients by numerical differentiation, a tool that became available more recently is that of automatic differentiation. NLP programs which have both options include DONLP2 and FSQP (see under programs for general nonlinear programming). A comparison of the various differentiation techniques is given in Griewank's paper.

The following are links to some general automatic differentiation software: These codes take a subprogram for computing a function as input and automatically generate a subprogram for computing the gradient and/or the Hessian as output.

Tapenade

Source-to-source f77 (and most of f95); websubmission or local installation as JAR archive

TAMC

Tangent and linear Adjoint Model Compiler; websubmission, f77 and most f90 extensions, forward and reverse modes

netlib/toms/746

method of K. Schittkowski et al, f77

ADIFOR

by C. Bischof et al; f77

ADIC

by C. Bischof et al; C

ADOL-C

A. Griewank's packages for programs in C/C++, forward and reverse mode

MXYZPTLK

C++ library, initiated at Fermilab

ADMAT/ADMIT

automatic differentiation in Matlab, forward and reverse mode

ADiMAT

automatic differentiation in Matlab, forward mode

INTLAB

automatic differentiation in Matlab, forward mode

Revolve

checkpointing for reverse mode

more AD tools

Modeling Languages

Modeling languages allow you to formulate a linear or nonlinear programming problem in mathematical terms in a way near your original problem and automatically generate an evaluation code appropriate for a corresponding solver. Different solvers need different interfaces, hence not all codes come with interfaces for such modeling languages. The following example shows a typical problem in mathematical terms, coded in C , coded in the modeling language AMPL, and finally coded in SIF ALKYLATION . SIF means standard input format and has been developed by Conn, Gould and Toint in connection with their LANCELOT project. It is an extension of the old linear programming MPS format. If one has coded a problem in SIF, then the SIF evaluation tools allow computation of exact first and second order derivatives. SIF is fully documented in the book A.R. Conn, N.I.M. Gould, Ph. L. Toint: "LANCELOT A Fortran Package for Large-Scale Nonlinear Optimization", Springer publisher, 1992, ISBN 3-540-55470-X. Here comes a list of some modeling languages/systems:

AMPL

For many codes links are given to an AMPL interface. The AMPL modeling language is a commercial product, but student binaries are available here and here are Emacs and Vim interfaces.

GAMS & AIMMS

two other commercial modeling systems

OptimJ

extension of Java with support for optimization models, interfaces to CPLEX, MOSEK, lp_solve, LP&MPS input

LPFML

A W3C XML Schema for Linear Programming; C++ source, binaries, OSI, LINDO, AMPL interfaces

plam

A free MILP modeling environment using lp_solve as MILP solver and SWI-Prolog

stochplam

An extension of PLAM above to stochastic LPs

PuLP

Python-based LP modeler, calls GLPK, Coin-CLP/Sbb, CPLEX, XPRESS

FLOPC++

C++ class library for algebraic modelling of linear optimization problems (LP/MIP); uses COIN OSI interface.

ZIMPL

GPL-licensed LP/MILP modelling language, produces lp/MPS formats (C)

ASCEND

An extensive GPL-licensed modeling system (source, binaries, docs).

OCOMA

Maple based code generator for nonlinear model predictive control, graphical interface.

IPAT-S

Extensive LGPL-licensed scenario scripting language, GUI, Win executables, source; includes lp_solve.

others

Other modeling systems, several of which come with free demo versions.

Analysis Tools

Dr. Ampl

Problem analyzer for AMPL models; can be hooked to NEOS

MProbe

Analysis tool for Nonlinear Programs (AMPL, GAMS, MPS, Win student version)

MINOS(IIS)

Software Tool for Analyzing Infeasible Linear Programs (Win student version)