Welcome to PySLSQP

⚠️ This documentation was written for PySLSQP_alpha which is now moved to PySLSQP. PySLSQP_alpha is now archived and read-only and this documentation is obsolete. Please visit PySLSQP docs for the latest documentation.⚠️

The SLSQP algorithm is designed to solve nonlinear programming (NLP) problems. PySLSQP is a Python package that wraps the original SLSQP algorithm implemented in Fortran by Dieter Kraft [Kra88, Kra94]. While the Fortran code in PySLSQP is sourced from scipy.optimize.minimize, [VGO+20], PySLSQP extends its functionality by offering new features for further analysis of optimization problems, thereby significantly improving the utility of the original algorithm. The prebuilt packages for various system architectures are available on PyPI for download, thus avoiding the need for the user to compile the Fortran sources.

Some of the additional features provided by PySLSQP include:

  • Data Saving: PySLSQP allows you to save optimization data during the optimization process. This can be useful for analyzing the progress of the optimization, for post-processing purposes, or for warm/hot restart of the optimization.

  • Warm/Hot Starting: PySLSQP supports warm/hot starting, enabling users to initialize the optimization algorithm with a previously saved solution. This can be particularly useful when you want to restart an optimization from a previous solution or continue an optimization that was terminated for various reasons.

  • Live Visualization: PySLSQP provides the capability to visualize the optimization progress in real-time, enabling users to monitor the convergence via the optimality and feasibility measures. This also helps the users understand how the objective function, constraints, and design variables are changing during the optimization.

  • Scaling: PySLSQP allows you to independently scale the objective function, constraints, and design variables, separate from their original definitions. Scaling can help improve the convergence behavior of the optimization algorithm and make it more robust.

  • More Internal Optimization Variables: PySLSQP provides access to additional internal optimization variables such as optimality, feasibility, Lagrange multipliers, etc. at every iteration, which can be useful for advanced analysis of the optimization problem. In scipy.optimize.minimize, the original callback function returns only the optimization variables, and only for the major iterations.

These additional features make PySLSQP a powerful tool for solving constrained optimization problems in Python. In addition, PySLSQP also supports the estimation of gradients using first-order finite differencing, as in the Scipy version.

Getting Started

To install and start using PySLSQP, please read the Getting Started page.

Citation

If you use PySLSQP in your work, please use the following reference for citation:

@Misc{pyslsqp,
author = "Anugrah Jo Joshy",
title = "PySLSQP",
howpublished = "\url{https://github.com/anugrahjo/PySLSQP}",
year = "2024",
}

Contents

References

Kra88

Dieter Kraft. A software package for sequential quadratic programming. Forschungsbericht- Deutsche Forschungs- und Versuchsanstalt fur Luft- und Raumfahrt, 1988.

Kra94

Dieter Kraft. Algorithm 733: tomp–fortran modules for optimal control calculations. ACM Transactions on Mathematical Software (TOMS), 20(3):262–281, 1994.

VGO+20

Pauli Virtanen, Ralf Gommers, Travis E Oliphant, Matt Haberland, Tyler Reddy, David Cournapeau, Evgeni Burovski, Pearu Peterson, Warren Weckesser, Jonathan Bright, and others. Scipy 1.0: fundamental algorithms for scientific computing in python. Nature methods, 17(3):261–272, 2020.