Nonlinear Programming
Frequently Asked Questions
Optimization Technology
Center of
Northwestern University and Argonne National Laboratory

Posted monthly to Usenet newsgroup
sci.op-research
Hypertext (Web) version:
http://www.mcs.anl.gov/otc/Guide/faq/nonlinear-programming-faq.html
Archived version:
ftp://rtfm.mit.edu/pub/usenet/sci.answers/nonlinear-programming-faq
Date of this version: January 1, 1999
See also the following pages
pertaining to mathematical programming and optimization modeling:
A: A Nonlinear Program (NLP) is a problem that can be put into the
form
minimize F(x)
subject to gi(x) = 0 for i = 1, ..., m1 where m1 >= 0
hj(x) >= 0 for j = m1+1, ..., m where m >= m1
That is, there is one scalar-valued function F, of several variables (x
here is a vector), that we seek to minimize subject (perhaps) to one or
more other such functions that serve to limit or define the values of
these variables. F is called the "objective function", while the
various other functions are called the "constraints". (If maximization
is sought, it is trivial to do so, by multiplying F by -1.)
Because NLP is a difficult field, researchers have identified special
cases for study. A particularly well studied case is the one where
all the constraints g and h are linear. The name for such a problem,
unsurprisingly, is "linearly constrained optimization". If, as well,
the objective function is quadratic at most, this problem is called
Quadratic Programming (QP). A further special case of great importance
is where the objective function is entirely linear; this is called
Linear Programming (LP) and is discussed in a separate FAQ list. Another important
special case, called unconstrained optimization, is where there are no
constraints at all.
One of the greatest challenges in NLP is that some problems exhibit
"local optima"; that is, spurious solutions that merely satisfy the
requirements on the derivatives of the functions. Think of a
near-sighted mountain climber in a terrain with multiple peaks,
and you'll see the difficulty posed for an
algorithm that tries to move from point to point only by climbing
uphill. Algorithms that propose to overcome this difficulty are termed
"Global Optimization".
The word "Programming" is used here in the sense of "planning"; the
necessary relationship to computer programming was incidental to the
choice of name. Hence the phrase "NLP program" to refer to a piece of
software is not a redundancy, although I tend to use the term "code"
instead of "program" to avoid the possible ambiguity.
A: It's unrealistic to expect to find one general NLP code that's going
to work for every kind of nonlinear model. Instead, you should try to
select a code that fits the problem you are solving. If your problem
doesn't fit in any category except "general", or if you insist on a
globally optimal solution (except when there is no chance of encountering
multiple local optima), you should be prepared to have to use a method
that boils down to exhaustive search.
If you simply want to try solving a particular model, consider the Optimization Technology
Center. The centerpiece of this ambitious project is NEOS, the
Network-Enhanced Optimization System, consisting of a library of
optimization software, an optimization
server for using this library over the network, and a guide to more
information about the software packages. Linear and nonlinear models
are covered. Capabilities and access modes are still being enhanced -
this is an ongoing process.
Several of the commercial linear
programming codes referenced in the LP FAQ have specialized
routines, particularly for quadratic programming (QP). You don't
generally get source code when you license one of these products, but
many of them can be licensed as a callable library of solver routines.
Many general nonlinear problems can be solved (or at least confronted)
by application of a sequence of LP or QP approximations.
There are routines from ACM
Transactions on Mathematical Software for QP, #559 by J.T. Betts (volume 6, page 432) and #587 by R.J. Hanson and K.H.
Haskell (volume 8, page
323).
The opt directory of
Netlib contains a number of freely available optimization routines,
including:
-
conmax (general nonlinearly constrained function minimization)
-
donlp2 (differentiable nonlinear optimization, dense linear algebra)
-
dqed (nonlinear least squares with linear constraints)
-
hooke (derivative-free unconstrained optimization, via Hooke and Jeeves method)
-
lbfgs (nonlinear bound-constraint optimization, limited
memory BFGS method)
-
lsnno (nonlinear optimization subject to linear network constraints)
-
praxis (unconstrained optimization, without requiring derivatives)
-
simann (unconstrained optimization using Simulated Annealing)
-
subplex (unconstrained optimization, general multivariate functions)
-
tn (Newton method for unconstrained or simple-bound optimization)
-
varpro (separable nonlinear least squares)
-
ve08 (optimization of unconstrained separable function).
A newer version of
donlp2, mentioned above, is available. This is P.
Spellucci's implementation of a SQP method for general nonlinear
optimization problems including nonlinear equality and inequality
constraints (generally referred to as the NLP problem). It is freely
available for non-commercial and research use, and includes a number of
nontrivial examples. There are Fortran 77, Fortran 90 and
f2c-converted C versions, with a variety of options for the gradient
computations.
A package for large optimization problems (with only simple bounds for
constraints), L-BFGS-B,
implements a limited memory BFGS algorithm. The user must supply the
gradient g of f, but knowledge about the Hessian matrix is not
required. This program is an extension of algorithm L-BFGS (Harwell
routine VA15) which can handle only unconstrained problems. An older
version for unconstrained problems is available from the same source.
A package called conmin
(unrelated to the one by Vanderplaats and Associates) is made available
by Murray Dow (m.dow@anusf.anu.edu.au). The author states that
it is reliable but not state of the art; surpassed, for instance, by
FSQP.
Will Naylor (naylor@synopsys.com) has a collection of software he calls
WNLIB.
Routines of interest include
- unconstrained non-linear optimization routines: implementation of
conjugate-gradient and conjugate-directions algorithms.
- constrained non-linear optimization routines: based on conjugate-gradient
algorithm with penalties.
- simplex method for linear programming: contains anti-cycling and
numerical stability hacks. No optimization for sparse matrix.
- transportation problem/assignment problem routine: optimization for
sparse matrix.
- general simulated annealing routine
The NSWC
Library of Mathematical Subroutines has a routine to minimize a
function of n variables (OPTF) and a routine to solve a system of
nonlinear equations (HBRD). These are also available in the NMS
library [Kahaner].
SolvOpt,
by Alexei Kuntsevich (alex@bedvgm.kfunigraz.ac.at) and Franz
Kappel (franz.kappel@kfunigraz.ac.at), is designed for local
optimization of nonsmooth nonlinear problems. Free source code is
available in C and Fortran, and also as M-functions for use with
MATLAB. Further information is provided by a manual that is also
available for downloading.
The popular PC and Mac spreadsheet packages -- specifically, Excel, Quattro
Pro and Lotus
1-2-3 -- all have options or add-ins that can do some nonlinear
optimization. They can be really convenient if you already have your
data in a spreadsheet and if your problem is not too large or
difficult. More powerful spreadsheet solver software is also available
from Frontline Systems and LINDO Systems. The nonlinear
least squares program Magestic also uses a
spreadsheet for its interface.
If you have access to MATLAB, you can
take advantage of a number of useful nonlinear optimization packages:
- The MATLAB Optimization
Toolbox includes routines for a variety of constrained and
unconstrained nonlinear optimization problems.
- The TOMLAB
Optimization Environment offers a broad variety of nonlinear
optimization tools based on MATLAB toolboxes. The developers state:
"TOMLAB is very easy for the occasional user and student to use,
directly giving access to large set of solvers and algorithms. For the
optimization algorithm developer and the applied researcher in need of
optimization tools it is very easy to compare different solvers or do
test runs on thousands of problems."
- LOQO has a MATLAB
interface for quadratic programming.
- Several recently developed semidefinite
programming solvers are based on MATLAB.
The MAPLE and Mathematica packages for
mathematical computation also provide some nonlinear optimization
routines; you can get more information by searching at their web
sites.
Semidefinite Programming is a generalization of linear
programming to the space of block diagonal, symmetric, positive
semidefinite matrices. Interest in this topic, which has numerous
engineering applications, has been greatly stimulated by the extension
of interior-point methods from linear programming to the semidefinite
case. Software packages currently under development for semidefinite
programming include:
-
CSDP, a
subroutine library available in C or Fortran source.
-
SDPHA, a MATLAB
package using the so-called homogeneous formulation.
-
SDPpack,
a MATLAB package for semidefinite programs and their extension to
mixed semidefinite-quadratic-linear programs, currently in version
0.9 beta.
-
SDPSOL,
a parser/solver for semidefinite programming and related determinant
maximization problems with matrix structure.
-
SDPT3,
another MATLAB package, most recently updated to include infeasible
path-following and homogeneous self-dual algorithms for
standard semidefinite programming (possibly with complex data).
-
SeDuMi,
a MATLAB 5 toolbox for solving optimization problems over self-dual
homogeneous cones, which allows for linear, quasiconvex
quadratic and positive semi-definiteness constraints, both with real
and complex entries.
-
LMITOOL, a
graphical interface for linear matrix inequalities (equality and
positive-definiteness constraints, linear objective) expressed in
the form of MATLAB .m files, which provides a choice of several
semidefinite programming solvers.
See the semidefinite programming home pages maintained by Farid
Alizadeh and Christoph Helmberg for
links and further information.
An extensive index of information on Global
Optimization is maintained by Arnold Neumaier (neum@cma.univie.ac.at) of the Computational
Mathematics group at the University of Vienna. The following are a few
of the codes available in this area:
- BARON consists of a
"core" module for global nonlinear optimization in continuous and/or
discrete variables, and a variety of specialized modules for such
problems as bilinear programming, fixed-charge programming, indefinite
quadratic programming, linear multiplicative programming, and
univariate polynomial programming. Information is available from Nick
Sahinidis, nikos@uiuc.edu.
- A software package for solving structured global optimization
problems, cGOP, is
available by ftp from the
Computer-Aided Systems
Laboratory at Princeton
University. It implements a primal-dual decomposition
algorithm applicable to general constrained biconvex problems, using a
set of C subroutines to solve these problems via decomposition and
branch-and-bound techniques; version 1.1 has been updated to use CPLEX
4.0 and MINOS 5.4 as the solvers for various linear and convex
subproblems. For assistance, write to cgop@titan.princeton.edu.
- Fortran source code for global minimization using a stochastic
integration algorithm is available as ACM
Transactions on Mathematical Software algorithm #667 by F. Aluffi-Pentini et al. (volume 14, page 345).
- LGO integrates
several global and local optimization solvers, which can be activated
by the user in interactive or automatic execution modes. The PC version
is embedded under a menu-driven interface.
- A package called Global Optimization
provides a global solver in the environment of Mathematica.
When some of the variables are required to take integer values, the
problem becomes one of mixed-integer nonlinear programming (sometimes
abbreviated, a bit confusingly, as MINLP). Software for this
particularly difficult kind of global optimization has followed two
approaches (see also the survey article by
Hansen, Jaumard and Mathon):
- Outer Approximation/Generalized Bender's Decomposition. These algorithms
alternate between solving a mixed integer linear programming master
problem and nonlinear programming subproblems. Examples include DICOPT++ and
MINOPT.
- Branch and Bound. B&B methods for mixed-integer linear programming
can be extended in a straight forward way to the nonlinear case.
There are a number of other tricks that can be used to improve the
performance of branch and bound codes for MINLP. One example of
this approach is incorporated into the BARON package.
For difficult problems like Global Optimization, heuristic search
methods have been extensively studied; the best known types are
Simulated Annealing, Tabu Search, and Genetic Algorithms. As a
practical matter these methods cannot be expected to find a provably
optimal solution, or even a provably good solution. They sometimes
find the best known solutions, however, which may be more than adequate
for the task at hand. They tend to do best when they can be tailored
to odd characteristics of your problem that defy treatment by more
general or conventional apporaches. If you're interested, here are
some places to start looking:
-
You can download a 37-page Genetic
Algorithm Tutorial by Darrell Whitley (Technical Report CS-93-103,
Colorado State University), in compressed Postscript form.
-
The GA Playground
offers a general-purpose toolkit for experimenting with genetic
algorithms and solving optimization problems. The toolkit is written
in Java, so for introductory purposes it may be run as an applet
through certain Web browsers, though it is primarily designed to be
used as an application in conjunction with a Java compiler.
-
The Usenet newsgroup on genetic algorithms, comp.ai.genetic, has a FAQ on
the topic, otherwise known as "The
Hitch-Hiker's Guide to Evolutionary Computation".
-
New Light Industries distributes GENERATOR, a genetic
algorithm Solver for the Microsoft Excel spreadsheet package. Special
versions are available for problems in finance and in chemistry.
-
There's a web page for memetic
algorithms, which are described as combining local search
heuristics with crossover operators.
-
In the area of simulated annealing, software for Adaptive Simulated Annealing
is available from Lester Ingber (ingber@alumni.caltech.edu),
and for Ensemble Based
Simulated Annealing from Richard Frost (frost@sdsc.edu).
And there is the simann code available on Netlib,
mentioned above.
For other ideas on Global Optimization, you may want to consult one of
the books given in the section on references , such as
[Nemhauser] or
one of the ones with "Global" in its title. There are also the
Journal
of Global Optimization and the Journal
of Heuristics.
Another technique that should be considered is Constraint Programming
(sometimes embedded in Prolog-like languages to form Constraint Logic
Programming).
-
There is a Usenet newsgroup, comp.constraints, devoted to
this topic.
- There are a web site and ftp archives for
Constraint Logic Programming, as well as a FAQ.
-
ILOG's Numerica
is a particularly interesting commercial implementation, designed for
nonlinear equation solving and optimization. You can try it out by
submitting sample problems over the web.
See also the journal Constraints.
This sort of approach has been particularly successful for problems
that do not have especially natural or concise formulations in terms of
numerical-valued decision variables.
The following products are said to do some nonlinear optimization, but
don't fall into any of the usual categories:
- UniCalc, for
"arbitrary algebraic systems of equations and inequalities," is said to combine interval constraint propagation, interval mathematics, computer algebra, original search strategies, and a friendly user interface. It has been
developed at the Russian Research
Institute of Artificial Intelligence.
- Fortran
Calculus is a programming front end to a variety of nonlinear
problem solvers, available from Optimal Designs,
OptimalDesigns@awaiter.com.
In the following table is a condensed version of a survey of NLP software
published in the April 1995 issue of "
OR/MS Today", a
publication of
INFORMS.
For further information I would suggest you read the full article.
Several of the software vendors listed in the survey offer multiple
products, in keeping with the conventional wisdom that no one algorithm
will be best for all NLP models. Hence I have grouped the solver products
by vendor, rather than listing them alphabetically by product name.
Since the information won't fit on one line, I've broken the SOLVERS
part of the table into two pieces.
Key to Methods:
SQP = Successive (Sequential) Quadratic Programming
SLP = Successive (Sequential) Linear Programming
GRG = Generalized Reduced Gradient
Communicating with a nonlinear programming code can be particularly
tedious and error-prone, especially if you have to write programs in
a language like Fortran or C to compute function (and maybe gradient)
values for your objective and constraints. If your functions can be
stated mathematically, then chances are good that you can use an
algebraic modeling language to communicate them in the same
mathematical form to a variety of solvers.
Several packages are oriented toward nonlinear optimization in
engineering design, though they have other applications as well:
-
ASCEND IV, a large-scale,
equation-based environment featuring a strongly-typed, object-oriented
model description language, has been developed at Carnegie Mellon
University. It has particularly useful features for problems in
engineering and mathematical sciences. Versions for Unix, Linux and
several varieties of Windows are available free for
downloading.
-
OptdesX incorporates
several methods for continuous and discrete optimization are supported,
mainly on Unix workstations. There is no modeling language in the
usual sense; models are described through a combination of a graphical
interface and external user-specified routines.
-
Pointer combines a variety of
methods to bring optimization to engineering design activities,
especially in aerospace and mechanical engineering.
MProbe
is a software tool for analyzing nonlinear functions to discern their
shapes in a region of interest -- for example, whether they are linear
or almost linear, convex or almost convex -- together with related
information about objectives and constraints. Such information is
often crucial to developing and solving nonlinear optimization models.
MProbe uses the AMPL language for
describing functions to be analyzed.
Among the commercial algebraic modeling languages, AIMMS, AMPL, GAMS, LINGO, and MINOPT are
noteworthy for being available with various nonlinear solvers. AMPL seems to have the largest number of different nonlinear solver interfaces.
Here is a summary of other NLP codes mentioned in newsgroups in the
past few years (or, further information on the ones in the above
table), sorted alphabetically. In the fullness of time, these references
may be reorganized in a more structured format.
-
ACCPM
- implements an analytic center cutting plane method for convex
optimization problems.
-
Amoeba - Numerical Recipes
-
Brent's Method - Numerical Recipes
-
CO/CML - Applications written
in GAUSS language, for general constrained optimization and
constrained maximum likelihood estimation using SQP. CML includes
statistical inference (also Bayesian, bootstrap) for constrained
parameters.
-
CONMAX - Fortran program for solving nonlinearly constrained
problems of the form:
- Choose x1,...,xn to minimize w subject to
- abs(fi - gi(x1,...,xn)) .LE. w, 1 .LE. i .LE. m1
- gi(x1,...,xn) .LE. w, m1 + 1 .LE. i .LE. m2
- gi(x1,...,xn) .LE. 0, m2 + 1 .LE. i .LE. m3
where the fi are given real numbers, and the gi are given smooth
functions. Constraints of the form gi(x1,...,xn) = 0 can also be
handled. Each iteration of our algorithm involves approximately
solving a certain nonlinear system of first order ordinary differential
equations to get a search direction. The program and its extensive
user's guide can be obtained from the opt folder of netlib.
-
CONMIN - Vanderplaats, Miura & Associates, Colorado Springs, Colorado,
719-527-2691.
-
CONOPT - Large-scale GRG code, by Arne Drud. Available with GAMS,
AIMMS, AMPL, LINGO (modeling languages) and
What's Best (a spreadsheet add-in) and as a
standalone subroutine library. See contact information for ARKI
above.
-
DFPMIN - Numerical Recipes (Davidon-Fletcher-Powell)
-
FFSQP/CFSQP
(Fortran/C) - Contact Andre Tits, andre@src.umd.edu. Free of charge
to academic users. Solves general nonlinear constrained problems,
including constrained minimax problems. CFSQP (C code) includes a
scheme to efficently handle problems with many constraints (such as
discretized semi-infinite problems). A separate Interface
to AMPL is available. See also the Methods of
Feasible Directions page at Clemson University.
-
GENOCOP III
- Solves nonlinearly constrained optimization problems via a genetic
algorithm.
-
Harwell Library routines
-
VF01: based on R. Fletcher algorithm
-
VF02: based on M. Powell alogorithm
-
VF03: using "watchdog techniques" for line search.
An improved version of VF02.
-
VF04: Automatically calculate 1st order derivatives,
VF03 ia required to provide the derivatives.
-
Hooke and Jeeves
algorithm - see reference below. May be useful
because it handles nondifferentiable and/or discontinuous functions.
-
LANCELOT
- large-scale NLP. See the book by Conn et al. in the references
section. Freely available for academic use not related to weapons or
weapon systems.
-
LSSOL - Stanford Business Software Inc. (See MINOS)
This code does convex (positive semi-definite) QP. Is the QP solver
used in current versions of NPSOL.
-
MINPACK solves dense
nonlinear least-squares problems. Contact Jorge More'
(more@mcs.anl.gov).
-
O-Matrix for Windows - incorporates
several nonlinear optimization tools.
-
Omuses/HQP
comprises a solver for nonlinearly constrained large-scale
optimization problems (especially with regular sparsity structure)
and a front end based on C++ and ADOL-C. It uses a Newton-type SQP
method, with an interior-point procedure for the treatment of
constraints.
-
Simple code for the Nelder-Mead method (the "other simplex method")
can be found in Numerical Recipes and Barabino.
-
A variety of packages for nonlinear optimization, equation solving
and related problems are collected at the home page of Prof. Klaus
Schittkowski of the University of Bayreuth.
-
SLATEC - Quadratic
solvers dbocls, dlsei, and other routines of the National Energy
Software Center.
An extremely useful book is the Optimization Software
Guide, by Jorge More' and Stephen Wright, from SIAM Books. It
contains references to 75 available software packages, and goes into
more detail than is possible in this FAQ. A Web
version is available.
I would be interested in hearing of people's experiences with
the codes they learn about from reading this FAQ -- particularly if they
can provide more-or-less independent evidence of the codes' practicality
or impracticality.
A: There are various test sets for NLP. Among those I've seen
mentioned are:
-
A. Corana et al, "Minimizing Multimodal Functions of Continuous
Variables with the Simulated Annealing Algorithm," ACM Transactions
on Mathematical Software, Vol. 13, No. 3, Sept 1987, pp. 262-280.
(Difficult unconstrained nonlinear models)
-
C.A. Floudas and P.M. Pardalos, A Collection of Test Problems for
Constrained Global Optimization Algorithms, Springer-Verlag,
Lecture Notes in Computer Science 455 (1990).
-
W.W. Hager, P.M. Pardalos, I.M. Roussos, and H.D. Sahinoglou,
Active Constraints, Indefinite Quadratic Programming, and Test
Problems, Journal of Optimization Theory and Applications Vol. 68,
No. 3 (1991), pp. 499-511.
-
J. Hasselberg, P.M. Pardalos and G. Vairaktarakis, Test case
generators and computational results for the maximum clique
problem, Journal of Global Optimization 3 (1993), pp. 463-482.
-
B. Khoury, P.M. Pardalos and D.-Z. Du, A test problem generator for
the steiner problem in graphs, ACM Transactions on Mathematical
Software, Vol. 19, No. 4 (1993), pp. 509-522.
-
Y. Li and P.M. Pardalos, Generating quadratic assignment test
problems with known optimal permutations, Computational
Optimization and Applications Vol. 1, No. 2 (1992), pp. 163-184.
-
P. Pardalos, "Generation of Large-Scale Quadratic Programs", ACM
Transactions on Mathematical Software, Vol. 13, No. 2, p. 133.
-
P.M. Pardalos, Construction of test problems in quadratic bivalent
programming, ACM Transactions on Mathematical Software, Vol. 17,
No. 1 (1991), pp. 74-87.
-
P.M. Pardalos, Generation of large-scale quadratic programs for use
as global optimization test problems, ACM Transactions on
Mathematical Software, Vol. 13, No. 2 (1987), pp. 133-137.
-
F. Schoen, "A Wide Class of Test Functions for Global
Optimization", J. of Global Optimization, 3, 133-137, 1993, with
C source code.
-
publications (referenced in another section of this list) by
Schittkowski; Hock & Schittkowski; Torn & Zilinskas.
Some of the other publications listed in the references section also
may contain problems that you could use to test a code.
A package called CUTE
(Constrained and Unconstrained Testing Environment) is a suite of
Fortran subroutines, scripts and test problems for linear and nonlinear
optimization. It is designed to provide a way to explore an extensive
collection of problems (over 800 to date), to compare existing
packages, and to use a large test problem collection with new
packages.
A collection of Global Optimization problems resides at
ftp://fourier.ee.ucla.edu/pub.
In this directory, reverse.zip (reverse.tar.Z) and concave.zip
(concave.tar.Z) contain a collection of test problems for
linear reverse convex programs, known as LRCP and concave minimization
problems. For further details, see the README file in the directory,
or contact
Khosrow Moshirvaziri
at moshir@ee.ucla.edu.
Fortran source code of global optimization
test problems (1-10 dimensional) are at the end
of TOMS 667 fortran code, obtainable at
http://www.netlib.org/toms/667.
The paper "An evaluation of the Sniffer Global Optimization Algorithm
Using Standard Test Functions", Roger A.R. Butler and Edward E.
Slaminka, J. Comp. Physics, 99, 28-32, (1992) mentions the following
reference containing 7 functions that were intended to thwart global
minimization algorithms: "Towards Global Optimization 2", L.C.W. Dixon
and G.P. Szego, North-Holland, 1978.
[from Dean Schulze - schulze@asgard.lpl.arizona.edu]
The modeling language GAMS
comes with about 150 test models, which you
might be able to test your code with. The models are in the public
domain according to the vendor, although you need access to a GAMS
system if you want to run them without modifying the files. The
modeling system AIMMS also comes with a number of test models.
In the journal Mathematical Programming, Volume 61 (1993) Number 2,
there is an article by Calamai et al. that discusses how to generate QP
test models. It gives what seems a very full bibliography of earlier
articles on this topic. The author offers at the end of the article to
send a Fortran code that generates QP models, if you send email to
phcalamai@dial.waterloo.edu, or use anonymous ftp at
ftp://dial.uwaterloo.ca/pub/phcalamai/math_prog in file genqp.code.tar.Z.
Hans D. Mittelmann and P. Spellucci have prepared a test
environment of over 400 unconstrained and constrained nonlinear
optimization problems, plus code to facilitate interfacing solvers to
them. This material is available as a tar file from
ftp://plato.la.asu.edu/pub/donlp2/testenviron.tar.gz.
SDPLIB is a collection of
semidefinite programming test problems from a variety of applications
including control systems engineering, truss topology design, graph
partitioning, and relaxations of quadratic assignment problems. The
problems are stored in the SDPA sparse format.
A: What follows here is an idiosyncratic list, a few books that I like,
or have been recommended on the net, or are recent.
I have not reviewed them all.
General reference
Other publications (can someone help classify these more usefully?)
-
Barabino, et al, "A Study on the Performances of
Simplex Methods for Function Minimization," 1980 Proceedings
of the IEEE International Conference on Circuits and Computers,
(ICCC 1980), pp. 1150-1153.
-
Bazaraa, Shetty, & Sherali, Nonlinear Programming, Theory & Applications,
Wiley, 1994.
-
Bertsekas, Dimitri P., Dynamic Programming and Optimal Control.
Belmont, MA: Athena Scientific, 1995.
-
Bertsekas, Dimitri P., Nonlinear Programming. Belmont, MA: Athena
Scientific, 1995.
-
Borchers & Mitchell, "An Improved Branch and Bound Algorithm for Mixed
Integer Nonlinear Programs", Computers and Operations Research, Vol 21,
No. 4, p 359-367, 1994.
-
Coleman & Li, Large Scale Numerical Optimization, SIAM Books.
-
Conn, A.R., et al., "LANCELOT:
a Fortran Package for Large-Scale Nonlinear Optimization", Springer
Series in Computational Mathematics, vol. 17, 1992.
-
Dennis & Schnabel, Numerical Methods for Unconstrained Optimization
and Nonlinear Equations, Prentice Hall, 1983.
-
Du and Pardalos (eds.), Minimax and applications, Kluwer, 1995.
-
Du and Sun (eds.), Advances in Optimization and Approximation,
Kluwer, 1994.
-
Fiacco & McCormick, Sequential Unconstrained Minimization
Techniques, SIAM Books. (An old standby, given new life by the
interior point LP methods.)
-
Fletcher, R., Practical Methods of Optimization, Wiley, 1987. (Good
reference for Quadratic Programming, among other things.)
-
Floudas & Pardalos, Recent Advances in Global Optimization,
Princeton University Press, 1992.
-
Gill, Murray & Wright, Practical Optimization, Academic Press, 1981.
(An instant NLP classic when it was published.)
-
Hansen, Jaumard, and Mathon, "Constrained Nonlinear 0-1
Programming", ORSA Journal on Computing, 5, 2 (1993).
-
Himmelblau, Applied Nonlinear Programming, McGraw-Hill, 1972.
(Contains some famous test problems.)
-
Hock & Schittkowski, Test Examples for Nonlinear Programming Codes,
Springer-Verlag, 1981.
-
Hooke & Jeeves, "Direct Search Solution of Numerical and Statistical
Problems", Journal of the ACM, Vol.8 pp. 212-229, April 1961.
-
Horst and Pardalos (eds.), Handbook of Global Optimization, Kluwer, 1995.
-
Horst, Pardalos, and Thoai, Introduction to global optimization,
Kluwer, 1995.
-
Horst and Tuy, Global Optimization, Springer-Verlag, 1993.
-
Kahaner, Moler & Nash, Numerical Methods and Software, Prentice-
Hall.
-
Lau, H.T.,
A
Numerical Library in C for Scientists and
Engineers , 1994, CRC Press.
(Contains a section on optimization.)
-
Luenberger, Introduction to Linear and Nonlinear Programming,
Addison Wesley, 1984. (Updated version of an old standby.)
-
More', "Numerical Solution of Bound Constrained Problems", in
Computational Techniques & Applications, CTAC-87, Noye & Fletcher,
eds, North-Holland, 29-37, 1988.
-
More' & Toraldo, Algorithms for Bound Constrained Quadratic
Programming Problems, Numerische Mathematik 55, 377-400, 1989.
-
More' & Wright, "Optimization Software Guide", SIAM, 1993.
-
Nash, S., and Sofer, A.,
Linear
and Nonlinear Programming, McGraw-Hill, 1996.
-
Nocedal, J., summary of algorithms for unconstrained optimization
in "Acta Numerica 1992".
-
Pardalos & Wolkowicz, eds., Quadratic Assignment and Related Problems,
American Mathematical Society, DIMACS series in discrete mathematics,
1994.
-
Powell, M.J.D., "A Fast Algorithm for Nonlinearly Constrained
Optimization Calculations", Springer-Verlag Lecture Notes in
Mathematics, vol. 630, pp. 144-157. (Implemented in the Harwell
Library)
-
Press, Flannery, Teukolsky & Vetterling, Numerical
Recipes, Cambridge, 1986.
-
Schittkowski, Nonlinear Programming Codes, Springer-Verlag, 1980.
-
Schittkowski, More Test Examples for Nonlinear Programming Codes,
Lecture Notes in Economics and Math. Systems 282, Springer 1987.
-
Torn & Zilinskas, Global Optimization, Springer-Verlag, 1989.
-
Wismer & Chattergy, Introduction to Nonlinear Optimization,
North-Holland, 1978. (Undergrad text)
-
Wright, M., "Interior methods for constrained optimization", Acta
Mathematica, Cambridge University Press, 1992. (Survey article.)
-
Wright, M.,
"Direct Search Methods: Once Scorned, Now Respectable"
Heuristic Search Methods
-
De Jong, "Genetic algorithms are NOT function optimizers" in
Foundations of Genetic Algorithms II, D. Whitley (ed.),
Morgan Kaufman (1993).
-
Glover and Laguna, Tabu Search, Kluwer, 1997.
-
Goldberg, D.E., Genetic Algorithms in Search, Optimization &
Machine Learning, Addison-Wesley (1989).
-
Ingber "Very Fast Simulated Re-annealing," Mathematical and Computer
Modeling 12 (1989) 967-973.
-
Kirkpatrick, Gelatt & Vecchi, "Optimization by Simulated Annealing,"
Science 220 (1983) 671-680.
-
Michalewicz, Z. et al., "A Nonstandard Genetic Algorithm for
the Nonlinear Transportation Problem," ORSA Journal on
Computing 3 (1991) 307-316.
-
Michalewicz, Z., Genetic Algorithms + Data Structures = Evolution
Programs, 3rd ed., Springer Verlag (1996).
-
Reeves, C.R., ed., Modern Heuristic Techniques for Combinatorial
Problems, Wiley (1993). Contains chapters on tabu search,
simulated annealing, genetic algorithms, neural nets, and Lagrangean
relaxation.

Q5. "What's available online in this field?"
A: Though traditional publications may remain the best places
to learn about optimization theory and algorithms, the Web is the place
to go for optimization software. In addition to numerous sources of
optimization codes and optimization-related home pages, the Web is
increasingly a source of optimization services that let you try
out solvers without having to install them on your own equipment.
The following web sites offer, in some sense, to run your nonlinear
programming problem and return a result. Check their home pages for
details, which vary considerably. (See also the analogous listing in
the LP FAQ.)
-
AMPL. A convenient
interface supports experimentation with the AMPL modeling language on
test problems up to 300 variables and 300 constraints + objectives.
Users can request any example from the AMPL book, or provide their own
model and data files. There is a choice among 8 solvers for nonlinear optimization and complementarity problems (as well as linear and integer programs).
-
Internet Enabled HQP
Optimization Service. Problems in the nonlinear SIF format may be
submitted by e-mail.
-
Network-Enabled
Optimization System (NEOS) Server. Offers access to about a dozen
solvers for linear and nonlinear programming, network and stochastic
linear programming, unconstrained and bound-constrained optimization of
nonlinear functions, and nonlinear complementarity.
- Nonlinear problems in the form of a C or Fortran program may be
submitted by sending e-mail, by submitting URLs through a Web page, or
via a high-speed socket-based Unix interface.
- Nonlinear programs in the AMPL modeling language can also be
sent to some of the solvers using AMPL Remote Access via e-mail,
URL, or a NEOS "client" program invoked from a local AMPL session.
-
NIMBUS. A nondifferentiable
multiobjective optimization system that accepts algebraic problem
specifications through a series of Web forms.
- Numerica.
Global nonlinear optimization problems may be submitted in Numerica's
algebraic modeling language. The web form interface makes it easy to do a series of runs, changing the model or data incrementally.
- UniCalc.
A variety of nonlinear optimization problems may be submitted in UniCalc's
algebraic modeling language, through a web form interface.
The Netlib Repository contains a
huge collection of mathematical software, papers, and databases,
maintained at the University of Tennessee, Knoxville and Oak Ridge
National Laboratory. There are also mirror sites in the United
States, Norway, the
United
Kingdom, and other
locations. Once you know what you want from Netlib, you may may
prefer to make requests by anonymous ftp or e-mail; alternative access
methods and many other relevant matters are explained in the Netlib FAQ.
Many optimization packages are distributed from their own Web sites.
Numerous links to these sites are provided elsewhere in this FAQ,
especially under the Where is there good software?
question.
Michael Trick's Operations Research
Page.
The Optimization
Technology Center of Argonne National Laboratory and Northwestern
University.
WORMS (World-Wide-Web
for Operations Research and Management Science) at the Department of
Mathematics and Statistics, University of Melbourne, Australia.
List of
interesting optimization codes in public domain compiled by Jiefeng
Xu at the University of Colorado, Boulder. Includes many of the codes
listed here, plus others of interest for specific problem classes.
The Mathematical
Optimization page at Oak Ridge National Laboratory.
The Computational
Mathematics Archive at the London and South-East Centre for High
Performance Computing.
The Decision Tree for
Optimization Software by Hans Mittelmann and P. Spellucci. (There
is also a plain-text
version available by FTP to plato.la.asu.edu, file
/pub/guide.txt.
The Global
(and Local) Optimization web site maintained by Arnold Neumaier.
The Global Optimization Page of
Simon Streltsov.
Nonlinear Science Today,
an electronic adjunct of the Journal of Nonlinear Science.
INFORMS Online, the web site of
the Institute for Operations Research and the Management Sciences.
The Intelligent
Mathematical Programming System Consortium of Harvey Greenberg at
the University of Colorado, Denver.
A: This list was established by John W. Gregory,
and is currently being maintained by Robert Fourer (4er@iems.nwu.edu) and the
Optimization Technology
Center.
This article is Copyright 1998 by Robert Fourer.
It may be freely redistributed in its entirety provided that this
copyright notice is not removed. It may not be sold for profit or
incorporated in commercial documents without the written permission of
the copyright holder. Permission is expressly granted for this
document to be made available for file transfer from installations
offering unrestricted anonymous file transfer on the Internet.
The material in this document does not reflect any official position
taken by any organization.
While all information in this article is
believed to be correct at the time of writing, it is provided "as is"
with no warranty implied.
If you wish to cite this FAQ formally -- this may seem strange, but it
does come up -- you may use:
Robert Fourer (4er@iems.nwu.edu), "Nonlinear Programming Frequently
Asked Questions," Optimization Technology Center of Northwestern
University and Argonne National Laboratory,
http://www.mcs.anl.gov/otc/Guide/faq/
nonlinear-programming-faq.html (1998).
Suggestions, corrections, topics you'd like to see covered, and
additional material are all solicited. Send them to 4er@iems.nwu.edu.

END nonlinear-programming-faq