| 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 | automatic differentiation in Matlab | | 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 is an Emacs interface. | | GAMS & AIMMS | two other commercial modeling systems | | SolveLPx | Graphical modeling tool, AMPL GUI, for MILP, MIQP, conic, links to free and commercial solvers, free personal version (Win-binaries). | | plam | A free MILP modeling environment using lp_solve as MILP solver and SWI-Prolog | | stochplam | An extension of PLAM above to stochastic LPs | | LPL | A free logic-based modeling language (Win-binaries). | | 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) |
|