|Title||pyOpt: a Python-Based Object-Oriented Framework for Nonlinear Constrained Optimization|
|Publication Type||Journal Articles|
|Authors||Perez, RE, Jansen, PW, Martins, JRRA|
|Journal||Structural and Multidisciplinary Optimization|
|aeroelastic tailoring, aerostructural optimization, constrainted optimization, Optimization algorithms, Python|
We present pyOpt, an object-oriented framework for formulating and solving nonlinear constrained timization 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 that is 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.