Table of Contents
Fetching ...

modOpt: A modular development environment and library for optimization algorithms

Anugrah Jo Joshy, John T. Hwang

TL;DR

The underlying software architecture of modOpt is presented, its various features are reviewed, several educational and performance-oriented algorithms within modOpt are discussed, and numerical studies illustrating its unique benefits are presented.

Abstract

Recent advances in computing hardware and modeling software have given rise to new applications for numerical optimization. These new applications occasionally uncover bottlenecks in existing optimization algorithms and necessitate further specialization of the algorithms. However, such specialization requires expert knowledge of the underlying mathematical theory and the software implementation of existing algorithms. To address this challenge, we present modOpt, an open-source software framework that facilitates the construction of optimization algorithms from modules. The modular environment provided by modOpt enables developers to tailor an existing algorithm for a new application by only altering the relevant modules. modOpt is designed as a platform to support students and beginner developers in quickly learning and developing their own algorithms. With that aim, the entirety of the framework is written in Python, and it is well-documented, well-tested, and hosted open-source on GitHub. Several additional features are embedded into the framework to assist both beginner and advanced developers. In addition to providing stock modules, the framework also includes fully transparent implementations of pedagogical optimization algorithms in Python. To facilitate testing and benchmarking of new algorithms, the framework features built-in visualization and recording capabilities, interfaces to modeling frameworks such as OpenMDAO and CSDL, interfaces to general-purpose optimization algorithms such as SNOPT and SLSQP, an interface to the CUTEst test problem set, etc. In this paper, we present the underlying software architecture of modOpt, review its various features, discuss several educational and performance-oriented algorithms within modOpt, and present numerical studies illustrating its unique benefits.

modOpt: A modular development environment and library for optimization algorithms

TL;DR

The underlying software architecture of modOpt is presented, its various features are reviewed, several educational and performance-oriented algorithms within modOpt are discussed, and numerical studies illustrating its unique benefits are presented.

Abstract

Recent advances in computing hardware and modeling software have given rise to new applications for numerical optimization. These new applications occasionally uncover bottlenecks in existing optimization algorithms and necessitate further specialization of the algorithms. However, such specialization requires expert knowledge of the underlying mathematical theory and the software implementation of existing algorithms. To address this challenge, we present modOpt, an open-source software framework that facilitates the construction of optimization algorithms from modules. The modular environment provided by modOpt enables developers to tailor an existing algorithm for a new application by only altering the relevant modules. modOpt is designed as a platform to support students and beginner developers in quickly learning and developing their own algorithms. With that aim, the entirety of the framework is written in Python, and it is well-documented, well-tested, and hosted open-source on GitHub. Several additional features are embedded into the framework to assist both beginner and advanced developers. In addition to providing stock modules, the framework also includes fully transparent implementations of pedagogical optimization algorithms in Python. To facilitate testing and benchmarking of new algorithms, the framework features built-in visualization and recording capabilities, interfaces to modeling frameworks such as OpenMDAO and CSDL, interfaces to general-purpose optimization algorithms such as SNOPT and SLSQP, an interface to the CUTEst test problem set, etc. In this paper, we present the underlying software architecture of modOpt, review its various features, discuss several educational and performance-oriented algorithms within modOpt, and present numerical studies illustrating its unique benefits.

Paper Structure

This paper contains 53 sections, 18 equations, 13 figures.

Figures (13)

  • Figure 1: Optimization workflow
  • Figure 2: UML class diagram for modOpt
  • Figure 3: Convergence comparison of different algorithms using the quartic function. Every algorithm starts from the initial guess $(1, 1)$. The total number of objective function evaluations required for convergence is indicated in parentheses next to the name of each algorithm in the legend.
  • Figure 4: Convergence comparison of different algorithms using the Rosenbrock function. Every algorithm starts from the initial guess $(-1.2, 1)$.
  • Figure 5: Convergence comparison of different algorithms using the bean function. Every algorithm starts from the initial guess $(0, 0)$.
  • ...and 8 more figures