An Object-Oriented Nonlinear Optimization Library


OPT++ is an object-oriented of nonlinear optimization algorithms written in C++. The motivation for this package is to build an environment for the rapid prototyping and development of new optimization algorithms. In particular, the focus is on robust and efficient algorithms for so called simulation-based optimization problems in which the function and constraint evaluations require the execution of an expensive computer simulation.

Currently, OPT++ (Version 2.0) includes the classic Newton methods, a nonlinear interior-point methods, parallel direct search, a trust region - parallel direct search hybrid, and a wrapper to NPSOL. Between these methods, a wide range of problems can be solved, e.g. with or without constraints, with or without analytic gradients, simulation based, etc.

More information on the OPT++ library can be found in the technical report OPT++: An Object-Oriented Class Library for Nonlinear Optimization. Detailed documentation is available with OPT++, or the pre-built HTML documentation can be viewed here. You may also download a tarball with the complete documentation opt++doc.tgz. (Note: Once you have expanded the tar file, open OPT++doc/html/index.html with your favorite browser to get started.)


OPT++ is now open source software and is available under the GNU Lesser General Public License. For the purposes of justifying our work to management all we ask it that you please fill out the registration form at the Download Page. Thanks.


The serial version of OPT++ has been built and tested on the following platforms:

IX86 Linux 2.2.12-20
Linux 2.4.3-20
Linux 2.4.8-26
gmake 3.77
gmake 3.79.1
g++/gcc 2.91.66
g++/gcc 2.96
SUN Solaris 2.7
Solaris 2.8
(native) make
gmake 3.77
gmake 3.79.1
CC/cc Workshop 5.0
SGI IRIX 6.5 (native) make
gmake 3.79.1
g++/gcc 2.95.2
OSF 5.1
(native) make cxx 6.3-008/cc 5.9-011
cxx 6.3-008/cc 6..4-009
ALPHA Linux 2.2.19 gmake 3.79.1 g++/gcc 2.91.66
cxx 6.2.9-506

The parallel version of OPT++ has only been built and tested on an Intel Linux machine with MPICH; however, we expect it will work on the above-supported platforms, with other versions of MPICH, and with other implementations of MPI.