Object-oriented programming is a relatively new tool in the development of optimization software. The code extensibility and the rapid algorithm prototyping capability enabled by this programming paradigm promise to enhance the reliability, utility, and ease of use of optimization software. While the use of object-oriented programming is growing, there are still few examples of general purpose codes written in this manner, and a common approach is far from obvious. This paper describes OPT++, a C++ class library for nonlinear optimization. The design is predicated on the concept of distinguishing between an algorithm-independent class hierarchy for nonlinear optimization problems and a class hierarchy for nonlinear optimization methods that is based on common algorithmic traits. The interface is designed for ease of use while being general enough so that new optimization algorithms can be added easily to the existing framework. A number of nonlinear optimization algorithms have been implemented in OPT++ and are accessible through this interface. Furthermore, example applications demonstrate the simplicity of the interface as well as the advantages of a common interface in comparing multiple algorithms.
%0 Journal Article
%1 meza2007objectoriented
%A Meza, J. C.
%A Oliva, R. A.
%A Hough, P. D.
%A Williams, P. J.
%C New York, NY, USA
%D 2007
%I ACM
%J ACM Transactions on Mathematical Software
%K pcg_optimization pcg_optimization_software
%N 2
%R 10.1145/1236463.1236467
%T OPT++: An Object-oriented Toolkit for Nonlinear Optimization
%U http://doi.acm.org/10.1145/1236463.1236467
%V 33
%X Object-oriented programming is a relatively new tool in the development of optimization software. The code extensibility and the rapid algorithm prototyping capability enabled by this programming paradigm promise to enhance the reliability, utility, and ease of use of optimization software. While the use of object-oriented programming is growing, there are still few examples of general purpose codes written in this manner, and a common approach is far from obvious. This paper describes OPT++, a C++ class library for nonlinear optimization. The design is predicated on the concept of distinguishing between an algorithm-independent class hierarchy for nonlinear optimization problems and a class hierarchy for nonlinear optimization methods that is based on common algorithmic traits. The interface is designed for ease of use while being general enough so that new optimization algorithms can be added easily to the existing framework. A number of nonlinear optimization algorithms have been implemented in OPT++ and are accessible through this interface. Furthermore, example applications demonstrate the simplicity of the interface as well as the advantages of a common interface in comparing multiple algorithms.
@article{meza2007objectoriented,
abstract = {Object-oriented programming is a relatively new tool in the development of optimization software. The code extensibility and the rapid algorithm prototyping capability enabled by this programming paradigm promise to enhance the reliability, utility, and ease of use of optimization software. While the use of object-oriented programming is growing, there are still few examples of general purpose codes written in this manner, and a common approach is far from obvious. This paper describes OPT++, a C++ class library for nonlinear optimization. The design is predicated on the concept of distinguishing between an algorithm-independent class hierarchy for nonlinear optimization problems and a class hierarchy for nonlinear optimization methods that is based on common algorithmic traits. The interface is designed for ease of use while being general enough so that new optimization algorithms can be added easily to the existing framework. A number of nonlinear optimization algorithms have been implemented in OPT++ and are accessible through this interface. Furthermore, example applications demonstrate the simplicity of the interface as well as the advantages of a common interface in comparing multiple algorithms.},
acmid = {1236467},
added-at = {2016-05-27T10:05:12.000+0200},
address = {New York, NY, USA},
articleno = {12},
author = {Meza, J. C. and Oliva, R. A. and Hough, P. D. and Williams, P. J.},
biburl = {https://www.bibsonomy.org/bibtex/2c66c498ba3a0e56ce368e62266b63e40/einar90},
doi = {10.1145/1236463.1236467},
interhash = {6ffcf93ce2531e476fa584a172925749},
intrahash = {c66c498ba3a0e56ce368e62266b63e40},
issn = {0098-3500},
issue_date = {June 2007},
journal = {ACM Transactions on Mathematical Software},
keywords = {pcg_optimization pcg_optimization_software},
month = jun,
number = 2,
publisher = {ACM},
timestamp = {2016-05-27T10:05:12.000+0200},
title = {OPT++: An Object-oriented Toolkit for Nonlinear Optimization},
url = {http://doi.acm.org/10.1145/1236463.1236467},
volume = 33,
year = 2007
}