Skip to content

A curated collection of tools and software packages for optimization and control

Notifications You must be signed in to change notification settings

edxmorgan/optimal-control-software-repository

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 

Repository files navigation

Optimal Control Software Repository

Welcome to the Optimal Control Software Repository, a curated collection of tools and software packages for optimization and control. These tools cover a variety of needs, from solving optimal control problems for embedded systems to handling nonsmooth dynamical systems, model predictive control, and more.

This repository is structured to help users quickly locate the most suitable tools for their projects and includes installation instructions, links to documentation, and source code for each software package.


Current Software

Keywords: Fast and embedded solvers, nonlinear optimal control, model predictive control.

acados provides efficient solutions for optimal control and estimation problems. Key features include:

  • Modules for ODE and DAE integration.
  • Interfaces to advanced QP solvers like HPIPM, qpOASES, DAQP, qpDUNES, and OSQP.
  • Nonlinear programming solvers using the real-time iteration framework.
  • Python, MATLAB, and Octave interfaces.

Learn more on the official documentation page.


Keywords: Nonsmooth dynamics, state jumps, optimal control.

nosnoc specializes in solving optimal control problems for systems with nonsmooth dynamics, such as switches and state jumps. Highlights:

  • Automatic discretization with the FESD method for high accuracy.
  • Support for Filippov systems and time-freezing formulations.
  • Solves Mathematical Programs with Complementarity Constraints (MPCCs).

Find tutorials and examples on the official website.


Keywords: High-performance QP solvers, interior-point methods.

HPIPM is a high-performance solver for convex quadratic programs tailored to embedded optimization. It leverages the BLASFEO library for efficient computation. Key applications include model predictive control and tree-structured QPs.

Visit the HPIPM GitHub repository for installation and examples.


Keywords: Economic tuning, nonlinear MPC.

TuneMPC is a Python package that enables economic tuning of nonlinear model predictive control problems, optimizing tracking schemes for equivalence with economic NMPC.

Explore the tool on its GitHub repository.


Keywords: Airborne wind energy, optimal control.

AWEbox is an open-source Python toolbox for modeling and optimizing airborne wind energy systems. It supports:

  • Single- and multi-drone systems.
  • User-defined 3D wind profiles.
  • Homotopy strategies for robustness.

Get started on the AWEbox GitHub repository.


Keywords: Symbolic differentiation, dynamic optimization.

CasADi is a powerful framework for algorithmic differentiation and numeric optimization, particularly suited for dynamic optimization. Features include:

  • Collocation and shooting-based approaches for ODE/DAE integration.
  • Efficient computation of derivatives for NLP solvers.

Access tutorials and documentation on the CasADi webpage.


Keywords: Linear algebra, high-performance computing.

BLASFEO provides optimized linear algebra routines for matrices of moderate size, outperforming other BLAS implementations in embedded optimization contexts.

Visit the BLASFEO GitHub repository for installation and benchmarks.


Keywords: Quadratic programs, complementarity constraints.

LCQPow is an open-source solver for quadratic programs with linear complementarity constraints, utilizing a penalty homotopy approach. The methodology is detailed in this paper.

Explore examples and installation instructions on the LCQPow GitHub repository.


Past Software Developments (possibly not maintained anymore)

Keywords: Quadratic programming

qpOASES is an open-source C++ implementation of the recently proposed online active set strategy, which was inspired by important observations from the field of parametric quadratic programming (QP). It has several theoretical features that make it particularly suited for model predictive control (MPC) applications.

For further information and installation intstructions visit the qpOASES webpage.


Keywords: Optimal Control, SQP

tmpc is a C++ library for Model Predictive Control

The source code is publicly available on https://gitlab.syscop.de/mikhail.katliar/tmpc/-/tree/master


Keywords: Parameter Estimation, Experimental Design

casiopeia holds a user-friendly environment for optimum experimental design and parameter estimation and identification applications. It does so by providing Python classes that can be initialized with the problem specifications, while the computations can then easily be performed using the available class functions.

Please note: casiopeia makes use of the optimization framework CasADi. For casiopeia to work, you need CasADi version = 3.1.0 to be installed on your system, otherwise the installation of casiopeia will abort.

casiopeia is still in it's testing state, and does not yet contain all the features it will provide in future versions. Therefore, you should check for updates on a regular basis.

For an installation guide, a tutorial on how to use casiopeia and a detailed documentation, please visit the manual pages.


Keywords: Nonlinear Optimal Control, Model Predictive Control, Code Generation

NOTE: ACADO Toolkit is not maintained anymore. We recommend using acados instead, which offers similar functionalites.

ACADO Toolkit is a software environment and algorithm collection for automatic control and dynamic optimization. It provides a general framework for using a great variety of algorithms for direct optimal control, including model predictive control, state and parameter estimation and robust optimization. ACADO Toolkit is implemented as self-contained C++ code and comes along with user-friendly MATLAB interface. The object-oriented design allows for convenient coupling of existing optimization packages and for extending it with user-written optimization routines.

For an installation guide, tutorial examples and a detailed documentation, please visit the ACADO Toolkit webpage.In addition, user questions can be posted on our sourceforge forum while the codebase itself is hosted on our github page.


Keywords: Modeling, Optimal Control, Trajectory Optimization

OpenOCL is a software-toolbox written in Matlab for modeling optimal control and trajectory optimization problems. It interfaces Ipopt to solve the optimal control problems numerically, and calculates the necessary derivatives by automatic differentiation using CasADi. It implements direct methods to optimal control (collocation/pseudo-spectral methods).

Visit the project website to get more information and download the software: https://openocl.org


Keywords: Latex Package

A small li­brary that pro­vides a stan­dard set of en­vi­ron­ments for writ­ing op­ti­miza­tion prob­lems in Latex. You can find the official repository in ctan and the last updated version in github.

Usage If you update your TeX packages (instructions here), you can simply use it by adding to the preamble of your document:

\usepackage{optidef}

If you do not want to update your packages, just download the package from ctan and add it to your project path.

Documentation optidef.pdf


Contributions

If you have suggestions or would like to contribute a new tool, feel free to open a pull request or an issue. This repository aims to grow with the optimization and control community!


License

Each software package is maintained by its respective authors and teams. Please refer to the individual repositories for licensing details.

About

A curated collection of tools and software packages for optimization and control

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published