Article ID: | iaor2012341 |
Volume: | 45 |
Issue: | 1 |
Start Page Number: | 101 |
End Page Number: | 118 |
Publication Date: | Jan 2012 |
Journal: | Structural and Multidisciplinary Optimization |
Authors: | Perez Ruben, Jansen Peter, Martins Joaquim |
Keywords: | programming: nonlinear |
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.