Releases: JuliaControl/ModelPredictiveControl.jl
Releases · JuliaControl/ModelPredictiveControl.jl
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 ymkeyword argument ofmoveinput!removed (was only forInternalModel, I now use the newpreparestate!method)MovingHorizonEstimatoradvanced constructor (with complete covariance matrices):covestimandoptimare now keyword arguments instead of positional arguments.
Changelog
- added: current form for all
StateEstimatorexceptMovingHorizonEstimator, to improve accuracy and closed-loop robustness - reduce allocation for
SimModelandStateEstimatorinstances 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
emptyfor defaultdargument (#91) (@franckgaga) - added:
SimModelBufferandStateEsimatorBufferobjects to reduce the allocations (#92) (@franckgaga)
v0.22.1
ModelPredictiveControl v0.22.1
- added: support for
Mwt,NwtandLwtkeyword 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,NwtandLwtkwargs 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
plotkeyword arguments - changed: migrate the NLP code to the new syntax
- doc: added
plotresult 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!andplotfunctions - doc: document
plotkeyword 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̂maxfor MHE - debug:
RungeKuttadiff cache chuck sizenx+2 - doc: added
plotrecipe documentation (for keyword arguments) - tests: unconstrained MHE vs KF/UKF tests
Merged pull requests:
- debug:
RungeKuttadiff 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
Ruinstead ofRyforusetpoint (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:
linearizeandsetop!now support non-equilibrium points - Added: successive linearization MPC with the new
setmodel!andlinearizefunctions - Added: successive linearization MHE with the new
setmodel!andlinearizefunctions - Added:
linearize!method for in-place model linearization (to reduce allocations) - Added: 6 args.
LinModelconstructor now support scalars (similarly tossfunction) - Added:
ExtendedKalmanFilternow compute the Jacobians in-place (to reduce allocations) - Changed:
structstate dataxand state estimatex̂renamed tox0andx̂0 - Debug:
ExplicitMPCwith non-Float64now works - Debug: accept integers in
linearizearguments - Debug: call
empty!onJuMP.Modelto support re-construction of MPC instances - Doc: new
setmodel!,setop!andlinearizefunction documentation - Doc: example of model adaptation with successive linearization on the pendulum (very efficient!)
Merged pull requests:
- Added: adaptatation of
LinMPCmodel 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
imports instead ofusings
Merged pull requests:
- Changed: avoid
collectinNonLinMPCandMovingHorizonEstimatorobjective 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
imports instead ofusings (#50) (@franckgaga) - Namespace,
NonLinMPCandMovingHorizonEsitimatorcleanup (#51) (@franckgaga)
v0.20.1
ModelPredictiveControl v0.20.1
- Reduce allocation for estimator based on
NonLinModel - Reduce allocations for
LinMPCandKalmanFilter - Improve performance of
LinMPCandMovingHorizonEstimatorwith newJuMPbatch update methods
Merged pull requests:
- doc: correct errors in EKF equations (#43) (@franckgaga)
- Reduce allocation for estimators based on augmented
NonLinModel(#44) (@franckgaga) - Improve performance and reduce allocations of
LinMPCandKalmanFilter(#45) (@franckgaga)
v0.20.0
ModelPredictiveControl v0.20.0
- Added: custom estimator for the approximation of the arrival covariance in the MHE
- Changed: MHE based on
NonLinModelnow defaults toUnscentedKalmanFilterfor arrival covariance estimation - Added: tests with custom covariance estimator in the MHE
Merged pull requests:
- Added: MHE supports custom estimator for the arrival covariance (#41) (@franckgaga)
- added: tests for MHE custom covariance estimator (#42) (@franckgaga)