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
- 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
- ✅ 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