pyOpt: a Python-based object-oriented framework for nonlinear constrained optimization

We present pyOpt, an object-oriented framework for formulating and solving nonlinear constrained optimization problems in an efficient, reusable and portable manner. The framework uses object-oriented concepts, such as class inheritance and operator overloading, to maintain a distinct separation between the problem formulation and the optimization approach used to solve the problem. This creates a common interface in a flexible environment where both practitioners and developers alike can solve their optimization problems or develop and benchmark their own optimization algorithms. The framework is developed in the Python programming language, which allows for easy integration of optimization software programmed in Fortran, C, C+ +, and other languages. A variety of optimization algorithms are integrated in pyOpt and are accessible through the common interface. We solve a number of problems of increasing complexity to demonstrate how a given problem is formulated using this framework, and how the framework can be used to benchmark the various optimization algorithms.

[1]  Pearu Peterson,et al.  F2PY: a tool for connecting Fortran and Python programs , 2009, Int. J. Comput. Sci. Eng..

[2]  K. Dejong,et al.  An analysis of the behavior of a class of genetic adaptive systems , 1975 .

[3]  J. Sobieszczanski-Sobieski,et al.  Multidisciplinary optimization of a transport aircraft wing using particle swarm optimization , 2004 .

[4]  A. Tits,et al.  Nonlinear Equality Constraints in Feasible Sequential Quadratic Programming , 1996 .

[5]  Joaquim R. R. A. Martins,et al.  Benchmarking multidisciplinary design optimization algorithms , 2010 .

[6]  Kenneth T. Moore,et al.  OpenMDAO: An Open Source Framework for Multidisciplinary Analysis and Optimization , 2010 .

[7]  Ian R. Chittick,et al.  Aero-structural optimization using adjoint coupled post-optimality sensitivities , 2008 .

[8]  Kalyanmoy Deb,et al.  A fast and elitist multiobjective genetic algorithm: NSGA-II , 2002, IEEE Trans. Evol. Comput..

[9]  David M. Beazley,et al.  Python Essential Reference , 1999 .

[10]  M. Powell A Direct Search Optimization Method That Models the Objective and Constraint Functions by Linear Interpolation , 1994 .

[11]  Susana Gomez,et al.  Advances in Optimization and Numerical Analysis , 1994 .

[12]  Anthony V. Fiacco,et al.  Nonlinear programming;: Sequential unconstrained minimization techniques , 1968 .

[13]  G. Kreisselmeier,et al.  SYSTEMATIC CONTROL DESIGN BY OPTIMIZING A VECTOR PERFORMANCE INDEX , 1979 .

[14]  Matthias Gerdts,et al.  The oracle penalty method , 2010, J. Glob. Optim..

[15]  Garret N. Vanderplaats,et al.  CONMIN: A FORTRAN program for constrained function minimization: User's manual , 1973 .

[16]  Eric Jones,et al.  SciPy: Open Source Scientific Tools for Python , 2001 .

[17]  Travis E. Oliphant,et al.  Python for Scientific Computing , 2007, Computing in Science & Engineering.

[18]  Julio R. Banga,et al.  Extended ant colony optimization for non-convex mixed integer nonlinear programming , 2009, Comput. Oper. Res..

[19]  Zong Woo Geem,et al.  A New Heuristic Optimization Algorithm: Harmony Search , 2001, Simul..

[20]  Luca Maria Gambardella,et al.  Results of the first international contest on evolutionary optimisation (1st ICEO) , 1996, Proceedings of IEEE International Conference on Evolutionary Computation.

[21]  H. H. Rosenbrock,et al.  An Automatic Method for Finding the Greatest or Least Value of a Function , 1960, Comput. J..

[22]  K. Kiwiel Methods of Descent for Nondifferentiable Optimization , 1985 .

[23]  Michael S. Eldred,et al.  DAKOTA : a multilevel parallel object-oriented framework for design optimization, parameter estimation, uncertainty quantification, and sensitivity analysis. Version 5.0, user's reference manual. , 2010 .

[24]  Klaus Schittkowski,et al.  Test examples for nonlinear programming codes , 1980 .

[25]  Joaquim R. R. A. Martins,et al.  An adaptive approach to constraint aggregation using adjoint sensitivity analysis , 2007 .

[26]  David L. Woodruff,et al.  PySP: modeling and solving stochastic programs in Python , 2012, Mathematical Programming Computation.

[27]  K. Schittkowski NLPQL: A fortran subroutine solving constrained nonlinear programming problems , 1986 .

[28]  K. Svanberg The method of moving asymptotes—a new method for structural optimization , 1987 .

[29]  P. J. Williams,et al.  OPT++: An object-oriented toolkit for nonlinear optimization , 2007, TOMS.

[30]  Daniel Blezek,et al.  Rapid prototyping with SWIG , 1998 .

[31]  Charles L. Lawson,et al.  Solving least squares problems , 1976, Classics in applied mathematics.

[32]  Gyung-Jin Park,et al.  A comparative study of software systems from the optimization viewpoint , 2004 .

[33]  Joaquim R. R. A. Martins,et al.  pyMDO: An Object-Oriented Framework for Multidisciplinary Design Optimization , 2009, TOMS.

[34]  Klaus Schittkowski,et al.  More test examples for nonlinear programming codes , 1981 .

[35]  William E. Hart,et al.  An Introduction to the COLIN Optimization Interface , 2003 .

[36]  G. Kreisselmeier,et al.  SYSTEMATIC CONTROL DESIGN BY OPTIMIZING A VECTOR PERFORMANCE INDEX , 1979 .

[37]  Sophia Lefantzi,et al.  DAKOTA : a multilevel parallel object-oriented framework for design optimization, parameter estimation, uncertainty quantification, and sensitivity analysis. , 2011 .

[38]  Jaroslaw Sobieszczanski-Sobieski,et al.  Multidisciplinary optimization of a transport aircraft wing using particle swarm optimization , 2002 .

[39]  Kenneth Alan De Jong,et al.  An analysis of the behavior of a class of genetic adaptive systems. , 1975 .

[40]  Manoj Kumar Tiwari,et al.  Swarm Intelligence, Focus on Ant and Particle Swarm Optimization , 2007 .

[41]  Joaquim R. R. A. Martins,et al.  Aerostructural Optimization of Nonplanar Lifting Surfaces , 2010 .

[42]  Richard E. Rosenthal,et al.  GAMS -- A User's Guide , 2004 .

[43]  André L. Tits,et al.  An SQP Algorithm for Finely Discretized Continuous Minimax Problems and Other Minimax Problems with Many Objective Functions , 1996, SIAM J. Optim..

[44]  Pearu Peterson,et al.  Fortran to Python Interface Generator with an Application to Aerospace Engineering , 2001 .

[45]  Stephen J. Wright,et al.  Optimization Software Guide , 1987 .

[46]  Juan C. Meza,et al.  OPT++: An object-oriented class library for nonlinear optimization , 1994 .

[47]  Michael A. Saunders,et al.  SNOPT: An SQP Algorithm for Large-Scale Constrained Optimization , 2002, SIAM J. Optim..

[48]  Klaus Schittkowski,et al.  NLPQL: A fortran subroutine solving constrained nonlinear programming problems , 1986 .

[49]  Johan Löfberg,et al.  YALMIP : a toolbox for modeling and optimization in MATLAB , 2004 .

[50]  Brian W. Kernighan,et al.  AMPL: A Modeling Language for Mathematical Programming , 1993 .

[51]  Ruben E. Perez,et al.  Constrained structural design optimization via a parallel augmented Lagrangian particle swarm optimization approach , 2011 .

[52]  Michael S. Eldred,et al.  DAKOTA , A Multilevel Parallel Object-Oriented Framework for Design Optimization , Parameter Estimation , Uncertainty Quantification , and Sensitivity Analysis Version 4 . 0 User ’ s Manual , 2006 .

[53]  K. Lee,et al.  A new meta-heuristic algorithm for continuous engineering optimization: harmony search theory and practice , 2005 .

[54]  K. Lee,et al.  A new metaheuristic algorithm for continuous engineering optimization : harmony search theory and practice , 2005 .

[55]  Jim Arlow,et al.  Uml and the Unified Process: Practical Object-Oriented Analysis and Design , 2005 .

[56]  John W. Chinneck,et al.  Operations Research and Cyber-Infrastructure , 2009 .

[57]  Hans Petter Langtangen,et al.  Python scripting for computational science , 2004 .

[58]  Joaquim R. R. A. Martins,et al.  The complex-step derivative approximation , 2003, TOMS.

[59]  F. van Keulen,et al.  Framework for sequential approximate optimization , 2004 .

[60]  Gregory A. Wrenn,et al.  An indirect method for numerical optimization using the Kreisselmeir-Steinhauser function , 1989 .

[61]  Naum Zuselevich Shor,et al.  Minimization Methods for Non-Differentiable Functions , 1985, Springer Series in Computational Mathematics.

[62]  Marcel Roelofs,et al.  AIMMS - User's Guide , 2006 .