Releases: JuliaControl/ModelPredictiveControl.jl
Releases · JuliaControl/ModelPredictiveControl.jl
v0.24.0
ModelPredictiveControl v0.24.0
- breaking change:
MovingHorizonEstimator
now default todirect=true
- added: the current/filter formulation of the
MovingHorizonEstimator
- doc: explicitly list all the keyword arguments of all the state estimator
- added: soft real time utilities
- added:
InternalModel
now produces 0 allocation withpreparestate!
andupdatestate!
calls - tests: new integration tests that compare unconstrained MHE to UKF and KF results
- tests: new integration that compare
LinModel
andNonLinModel
Merged pull requests:
- Added: soft real time utilities (#94) (@franckgaga)
- added: MovingHorizonEstimator support for
direct=true
, initialized withP̂(-1|-1)
(#96) (@franckgaga)
Closed issues:
- Real-time loop tools (#85)
v0.23.1
ModelPredictiveControl v0.23.1
Luenberger
,SteadyKalmanFilter
,KalmanFilter
andUnscentedKalmanFilter
now produce 0 allocation withpreparestate!
andupdatestate!
calls- doc: minor corrections
Merged pull requests:
- added: doc correction and reduce allocations for all Kalman filters (#93) (@franckgaga)
Closed issues:
- Support for current estimators and V1 soon? (#89)
v0.23.0
ModelPredictiveControl v0.23.0
BREAKING CHANGES
preparestate!
should be called before solving the MPC optimization withmoveinput!
- current form by default for all
StateEstimator
ym
keyword argument ofmoveinput!
removed (was only forInternalModel
, I now use the newpreparestate!
method)MovingHorizonEstimator
advanced constructor (with complete covariance matrices):covestim
andoptim
are now keyword arguments instead of positional arguments.
Changelog
- added: current form for all
StateEstimator
exceptMovingHorizonEstimator
, to improve accuracy and closed-loop robustness - reduce allocation for
SimModel
andStateEstimator
instances by using internal buffers - multiple doc correction
Merged pull requests:
- minor doc correction (#87) (@franckgaga)
- minor doc additions (#88) (@franckgaga)
- added: support for the current form for all the state estimators (#90) (@franckgaga)
- Reduce allocations by avoiding
empty
for defaultd
argument (#91) (@franckgaga) - added:
SimModelBuffer
andStateEsimatorBuffer
objects to reduce the allocations (#92) (@franckgaga)
v0.22.1
ModelPredictiveControl v0.22.1
- added: support for
Mwt
,Nwt
andLwt
keyword arguments insetmodel!
(to simplify the API) - reduce allocations in
setconstraint!
- minor doc corrections
Merged pull requests:
- non unicode alternative setmodel MPC (#79) (@franckgaga)
- minor doc correction (#80) (@franckgaga)
- idem (#81) (@franckgaga)
- doc: change nomenclature EMPC (#83) (@franckgaga)
- Minor correction doc (#84) (@franckgaga)
- Added:
Mwt
,Nwt
andLwt
kwargs insetmodel!
(#86) (@franckgaga)
Closed issues:
- How to successfully impose constraints to a Control Variable with high priority (#78)
v0.22.0
ModelPredictiveControl v0.22.0
BREAKING CHANGE
Migration the new nonlinear programming syntax of JuMP
. Some optimizers may not support it yet.
- added: online modification of objective function weights and covariance matrices with
setmodel!
- added: accept indices and ranges in
plot
keyword arguments - changed: migrate the NLP code to the new syntax
- doc: added
plot
result previews with static images - new tests for new plot recipes and weights/covariances modification
Merged pull requests:
- New jump nlp syntax, merge into main? (#31) (@franckgaga)
- Added: online modification of weights and covariances (#77) (@franckgaga)
Closed issues:
- MPC getinfo results (#76)
v0.21.3
ModelPredictiveControl v0.21.3
- added: index ranges or vectors for plot keyword arguments (to select variables to plot)
- doc: separate page for
sim!
andplot
functions - doc: document
plot
keyword arguments - doc: plot results in examples
Merged pull requests:
- Doc: minor corrections and add preview cleanup workflow (#71) (@franckgaga)
- cleanup MHE append 0 to deviation vector variables (#72) (@franckgaga)
- added: support indices keyword argument in plot recipes (#73) (@franckgaga)
- bump (#74) (@franckgaga)
v0.21.2
ModelPredictiveControl v0.21.2
- added: show
sim!
% progress and ETA in VS Code status bar - added: plot estimated state constraints
x̂min
/x̂max
for MHE - debug:
RungeKutta
diff cache chuck sizenx+2
- doc: added
plot
recipe documentation (for keyword arguments) - tests: unconstrained MHE vs KF/UKF tests
Merged pull requests:
- debug:
RungeKutta
diff cache chuck sizenx+2
(#67) (@franckgaga) - minor doc correction (#68) (@franckgaga)
- added: plot recipes doc and plot MHE state estimate constrains (#69) (@franckgaga)
- Update Project.toml (#70) (@franckgaga)
v0.21.1
ModelPredictiveControl v0.21.1
- added: non-Unicode alternative keyword arguments in public functions
- added: modify plots Y-axis labels with
setname!
- debug: plots
Ru
instead ofRy
foru
setpoint (recipe) - remove one useless allocation in
updatestate!
- various doc corrections and improvements
Merged pull requests:
- doc: correct mistake in MPC prediction matrices (#56) (@franckgaga)
- Doc correction (#57) (@franckgaga)
- doc: clarify notation
update_estimate!
and imc block diagram (#58) (@franckgaga) - IMC block diagram (#59) (@franckgaga)
- remove one allocation in
updatestate!
(#60) (@franckgaga) - debug: plot Ru instead of Ry for u setpoint in recipe (#62) (@franckgaga)
- added:
setname!
function for variable names in plot labels (#63) (@franckgaga) - Offer an alternative non-unicode API for keyword arguments (#64) (@franckgaga)
- Update Project.toml (#66) (@franckgaga)
Closed issues:
- Remove unicode char in keyword arguments (or offer an alternative) ? (#61)
v0.21.0
ModelPredictiveControl v0.21.0
BREAKING CHANGE
All the keyword arguments related to initial values e.g. σP0
, x0
and x̂0
now require an underscore e.g. σP_0
, x_0
, x̂_0
(to differentiate from operating point deviation vectors)
- Added:
setmodel!
for runtime model adaptation of controller/estimator based onLinModel
- Added:
linearize
andsetop!
now support non-equilibrium points - Added: successive linearization MPC with the new
setmodel!
andlinearize
functions - Added: successive linearization MHE with the new
setmodel!
andlinearize
functions - Added:
linearize!
method for in-place model linearization (to reduce allocations) - Added: 6 args.
LinModel
constructor now support scalars (similarly toss
function) - Added:
ExtendedKalmanFilter
now compute the Jacobians in-place (to reduce allocations) - Changed:
struct
state datax
and state estimatex̂
renamed tox0
andx̂0
- Debug:
ExplicitMPC
with non-Float64
now works - Debug: accept integers in
linearize
arguments - Debug: call
empty!
onJuMP.Model
to support re-construction of MPC instances - Doc: new
setmodel!
,setop!
andlinearize
function documentation - Doc: example of model adaptation with successive linearization on the pendulum (very efficient!)
Merged pull requests:
- Added: adaptatation of
LinMPC
model throughsetmodel!
(#52) (@franckgaga) - Added: adaptation of controller/estimator based on
LinModel
(#54) (@franckgaga) - Added:
setmodel!
forMovingHorizonEstimator
(#55) (@franckgaga)
v0.20.2
ModelPredictiveControl v0.20.2
- added: print info on controller and estimator constraint softening (slack var.
ϵ
) - reduce allocations
LinMPC
,NonLinMPC
,MovingHorizonEstimator
- cleanup namespace with
import
s instead ofusing
s
Merged pull requests:
- Changed: avoid
collect
inNonLinMPC
andMovingHorizonEstimator
objective and constraints (#46) (@franckgaga) - changed: error handling one less alloc (#47) (@franckgaga)
- added: print info on controller and estimator constraints softening (#49) (@franckgaga)
- cleaning the namespace with
import
s instead ofusing
s (#50) (@franckgaga) - Namespace,
NonLinMPC
andMovingHorizonEsitimator
cleanup (#51) (@franckgaga)