pyOptSparse: A Python framework for large-scale constrained nonlinear optimization of sparse systems

  • Wu E
  • Kenway G
  • Mader C
  • et al.
N/ACitations
Citations of this article
51Readers
Mendeley users who have this article in their library.

Abstract

pyOptSparse is an optimization framework designed for constrained nonlinear optimization of large sparse problems and provides a unified interface for various gradient-free and gradient-based optimizers. By using an object-oriented approach, the software maintains independence between the optimization problem formulation and the implementation of the specific optimiz-ers. The code is MPI-wrapped to enable execution of expensive parallel analyses and gradient evaluations, such as when using computational fluid dynamics (CFD) simulations, which can require hundreds of processors. The optimization history can be stored in a database file, which can then be used both for post-processing and restarting another optimization. A graphical user interface application is provided to visualize the optimization history interactively. pyOptSparse considers optimization problems of the form minimize f (x) with respect to x such that l ≤   x Ax g(x)   ≤ u where x is the vector of design variables and f (x) is a nonlinear objective function. A is the linear constraint Jacobian, and g(x) is the set of nonlinear constraint functions. At time of writing, the latest released version of pyOptSparse is v2.2.0. Features Support for multiple optimizers pyOptSparse provides built-in support for several popular proprietary and open-source opti-mizers. Each optimizer usually has its own way to specify the problem: It might require different constraint ordering, have different ways of specifying equality constraints, or use a sparse matrix format to represent the constraint Jacobian. pyOptSparse provides a common Python interface for the various optimizers that hides these differences from the user. By isolating the optimization problem definition from the optimizer, the user can easily switch between different optimizers applied to the same optimization problem. The optimizer can be switched by editing a single line of code. Wu et al., (2020). pyOptSparse: A Python framework for large-scale constrained nonlinear optimization of sparse systems. Journal of Open Source Software, 5(54), 2564. https://doi.

Cite

CITATION STYLE

APA

Wu, E., Kenway, G., Mader, C. A., Jasa, J., & Martins, J. R. R. A. (2020). pyOptSparse: A Python framework for large-scale constrained nonlinear optimization of sparse systems. Journal of Open Source Software, 5(54), 2564. https://doi.org/10.21105/joss.02564

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free