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.
- Bartlett, R. A. Moocho: Multifunctional object-oriented architecture for optimization, user's guide. http://software.sandia.gov/trilines/packages/docs/dev/packages/moocho/doc/html/ind.Google Scholar
- Bartlett, R. A. 2001. An introduction to rSQP++: An object-oriented framework for reduced-space successive quadratic programming. Report, Department of Chemical Engineering, Carnegie Mellon University, Pittsburgh, PA (Oct.).Google Scholar
- Benson, S., McInnes, L. C., Moré, J. J., and Sarich, J. 2005. Tao users manual. Tech. Rep. ANL/MCS-TM-242-Revision 1.8, Argonne National Laboratory.Google Scholar
- Budd, T. 1991. An Introduction to Object-Oriented Programming. Addison-Wesley, Reading, MA. Google ScholarDigital Library
- Byrd, R. H., Schnabel, R. B., and Shultz, G. A. 1988. Parallel quasi-Newton methods for unconstrained optimization. Math. Prog. 42, 273--306. Google ScholarDigital Library
- Couture, G., Audet, C., Dennis, J., and Abramson, M. 2006. Nonlinear optimization for mixed variables and derivatives. Online at http://www.gerad.ca/~couturgiNOMAD.Google Scholar
- Davies, R. B. 2003. NEWMAT09, an experimental matrix package in C++. Online at http://www. robertnz.net/nm_intro.htm.Google Scholar
- Deng, H. L., Gouveia, W., and Scales, J. A. 1996. The CWP object-oriented optimization library. Leading Edge 15, 5, 365--369. Online at http://coool.mines.edu/index.html.old (see also http://coool.mines.edu).Google ScholarCross Ref
- Dennis, Jr., J. E. and Torczon, V. 1991. Direct search methods on parallel machines. SIAM J. Opt. 1, 4, 448--474.Google ScholarCross Ref
- El-Bakry, A., Tapia, R., Tsuchiya, T., and Zhang, Y. 1996. On the formulation and theory of the Newton interior point method for nonlinear programming. J. Optim. Theory App. 89, 507--541. Google ScholarDigital Library
- Gertz, E. M. and Wright, S. J. 2003. Object-oriented software for quadratic programming. ACM Trans. Math. Soft. 29, 1, 58--81. Google ScholarDigital Library
- Gockenbach, M. S., Petro, M. J., and Symes, W. W. 1999. C++ classes for linking optimization with complex simulations. ACM Trans. Math. Softw. 25, 2, 191--212. Google ScholarDigital Library
- Gondzio, J. and Grothey, A. 2003. Parallel interior point solver for structured quadratic programs: application to financial planning problems. Tech. Rep. MS-03-001, School of Mathematics, The University of Edinburgh.Google Scholar
- Gondzio, J. and Grothey, A. 2004. Solving nonlinear portfolio optimization problems with the primal-dual interior point method. Tech. Rep. MS-04-001, School of Mathematics, The University of Edinburgh.Google Scholar
- Gondzio, J. and Sarkissian, R. 2003. Parallel interior point solver for structured linear programs. Math. Prog. 96, 3, 561--584.Google ScholarCross Ref
- Gray, G. A. and Kolda, T. G. 2004. APPSPACK 4.0: Asynchronous parallel pattern search for derivative-free optimization. Tech. Rep. SAND2004-6391, Sandia National Laboratories.Google Scholar
- Gropp, W., Lusk, E., and Skjellum, A. 1994. Using MPI: Portable Parallel Programming with the Message-Passing Interface. The MIT Press, Cambridge, Massachusetts. Google ScholarDigital Library
- Holub, A. I. 1992. C+ C++ Programming With Objects in C and C++. McGraw-Hill, New York, NY. Google ScholarDigital Library
- Hough, P. D. and Meza, J. C. 2002. A class of trust-region methods for parallel optimization. SIAM J. Optim. 13, 1, 264--282. Google ScholarDigital Library
- Howle, V. E., Shontz, S. M., and Hough, P. D. 2000. Some parallel extensions to optimization methods in opt++. Tech. Rep. SAND2000-8877, Sandia National Laboratories.Google Scholar
- Kolda, T. G. 2004. Revisiting asynchronous parallel pattern search. Tech. Rep. SAND2004-8055, Sandia National Laboratories.Google Scholar
- Kolda, T. G., Lewis, R. M., and Torczon, V. 2003. Optimization by direct search: new perspectives on some classical and modern methods. SIAM Rev. 45, 3, 385--482.Google ScholarCross Ref
- Liu, D. C. and Nocedal, J. 1989. On the limited memory BFGS method for large scale optimization. Math. Prog. 45, 503--528. Google ScholarDigital Library
- Long, K. R. 2003. Sundance: A high-level toolkit for parallel pde simulation and optimization. Online at http://csmr.ca.sandia.gov/~klong/sundance.html.Google Scholar
- Meza, J. C. 1994. OPT++: An object oriented class library for nonlinear optimization. Tech. Rep. 94-8225, Sandia National Laboratories.Google Scholar
- Meza, J. C., Judson, R. S., Faulkner, T. R., and Treasurywala, A. M. 1996. A comparison of a direct search method and a genetic algorithm for conformational searching. J. Computat. Chem. 17, 9, 1142--1151.Google ScholarCross Ref
- Meza, J. C. and Martinez, M. L. 1993. Direct search methods for the molecular conformation problem. J. Computat. Chem. 15, 6, 627--632. Google ScholarDigital Library
- Meza, J. C. and Plantenga, T. D. 1995. Optimal control of a CVD reactor for prescribed temperature behavior. Tech. Rep. 95-8222, Sandia National Laboratories.Google Scholar
- Moen, C. D., Spence, P. A., and Meza, J. C. 1995. Optimal heat transfer design of chemical vapor deposition reactors. Tech. Rep. 95-8223, Sandia National Laboratories.Google Scholar
- Moré, J. J. and Thuente, D. J. 1992. Line search algorithms with guaranteed sufficient decrease. Tech. Rep. MCS-P330-1092, Argonne National Laboratory.Google Scholar
- Moré, J. J. and Wright, S. J. 1993. Optimization Software Guide. SIAM Press, Philadelphia, PA. Google ScholarDigital Library
- Oliva, R. A. 2003. An object-oriented library for molecular dynamics energy computations. Tech. Rep. LBNL-53778, Lawrence Berkeley National Laboratory.Google Scholar
- Padula, A. D., Scott, S. D., and Symes, W. W. 2004. The standard vector library: A software framework for coupling complex simulation and optimization. Tech. Rep. TR04-19, Rice University.Google Scholar
- Padula, A. D., Scott, S. D., and Symes, W. W. 2005. A software framework for abstract expression of coordinate-free linear algebra and optimization algorithms. Tech. Rep. TR05-12, Rice University.Google Scholar
- Stroustrup, B. 1987. The C++ Programming Language. Addison-Wesley, Reading, Massachusetts. Google ScholarDigital Library
Index Terms
- OPT++: An object-oriented toolkit for nonlinear optimization
Recommendations
Cognitive Differences Between Procedural Programming and Object Oriented Programming
Software development is moving from procedural programming towards object-oriented programming (OOP). Past studies in cognitive aspects of programming have focused primarily on procedural programming languages. Object-oriented programming is a new ...
Empirical study of novice programming with plans and objects
Empirical studies conducted at two colleges (traditional and online) indicate that students have difficulty with plan integration, understanding of the object-oriented paradigm, and incorporating OOP concepts into problem solving. When novices are ...
Another approach to teaching programming concept course with object first
CITC5 '04: Proceedings of the 5th conference on Information technology educationIn an effort to better prepare students for success as a CS/CIS major, the Computer Science department at California Lutheran University introduced a pre-programming course four years ago. The course helped to increase the level of following two java ...
Comments