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
- ModelPredictiveControl.jl
- Manual
- Plant Models
- State Estimators
- Predictive Controllers
- Generic Functions
- SimModel Internals
- StateEstimator Internals
- PredictiveController Internals
- Index
Features
Legend
✅ implemented feature ⬜ planned feature
Model Predictive Control Features
- ✅ linear and nonlinear plant models exploiting multiple dispatch
- ⬜ model predictive controllers based on:
- ✅ linear plant models
- ⬜ nonlinear plant models
- ⬜ supported objective function terms:
- ✅ output setpoint tracking
- ✅ move suppression
- ✅ input setpoint tracking
- ⬜ additional custom penalty (e.g. economic costs)
- ⬜ 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:
- ✅ optimal input increments over control horizon
- ✅ slack variable optimum
- ✅ objective function optimum
- ✅ output predictions at optimum
- ✅ current stochastic output predictions
- ⬜ custom penalty value at optimum
State Estimation Features
- ⬜ supported state estimators/observers:
- ✅ steady-state Kalman filter
- ✅ Kalman filter
- ⬜ Luenberger observer
- ✅ internal model structure
- ✅ 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