ModelPredictiveControl.jl

A model predictive control package for Julia.

The package depends on ControlSystemsBase.jl for the linear systems and JuMP.jl for the solvers.

Contents

Features

Legend

✅ implemented feature ⬜ planned feature

Model Predictive Control Features

  • ✅ linear and nonlinear plant models exploiting multiple dispatch
  • ✅ supported objective function terms:
    • ✅ output setpoint tracking
    • ✅ move suppression
    • ✅ input setpoint tracking
    • ✅ economic costs (economic model predictive control)
    • ⬜ terminal cost to ensure nominal stability
  • ✅ soft and hard constraints on:
    • ✅ output predictions
    • ✅ manipulated inputs
    • ✅ manipulated inputs increments
  • ⬜ custom manipulated input constraints that are a function of the predictions
  • ✅ supported feedback strategy:
    • ✅ state estimator (see State Estimation features)
    • ✅ internal model structure with a custom stochastic model
  • ✅ offset-free tracking with a single or multiple integrators on measured outputs
  • ✅ support for unmeasured model outputs
  • ✅ feedforward action with measured disturbances that supports direct transmission
  • ✅ custom predictions for:
    • ✅ output setpoints
    • ✅ measured disturbances
  • ✅ easy integration with Plots.jl
  • ✅ optimization based on JuMP.jl:
    • ✅ quickly compare multiple optimizers
    • ✅ nonlinear solvers relying on automatic differentiation (exact derivative)
  • ✅ additional information about the optimum to ease troubleshooting

State Estimation Features

  • ⬜ supported state estimators/observers:
    • ✅ steady-state Kalman filter
    • ✅ Kalman filter
    • ✅ Luenberger observer
    • ✅ internal model structure
    • ⬜ extended Kalman filter
    • ✅ unscented Kalman filter
    • ⬜ moving horizon estimator
  • ✅ observers in predictor form to ease control applications
  • ⬜ moving horizon estimator that supports:
    • ⬜ inequality state constraints
    • ⬜ zero process noise equality constraint to reduce the problem size