ModelPredictiveControl.jl Versions Save

An open source model predictive control package for Julia.

v0.21.3

2 weeks ago

ModelPredictiveControl v0.21.3

Diff since v0.21.2

  • added: index ranges or vectors for plot keyword arguments (to select variables to plot)
  • doc: separate page for sim! and plot 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

3 weeks ago

ModelPredictiveControl v0.21.2

Diff since v0.21.1

  • 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 size nx+2
  • doc: added plot recipe documentation (for keyword arguments)
  • tests: unconstrained MHE vs KF/UKF tests

Merged pull requests:

  • debug: RungeKutta diff cache chuck size nx+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

4 weeks ago

ModelPredictiveControl v0.21.1

Diff since v0.21.0

  • added: non-Unicode alternative keyword arguments in public functions
  • added: modify plots Y-axis labels with setname!
  • debug: plots Ru instead of Ry for u 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

1 month ago

ModelPredictiveControl v0.21.0

Diff since v0.20.2

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 on LinModel
  • Added: linearize and setop! now support non-equilibrium points
  • Added: successive linearization MPC with the new setmodel! and linearize functions
  • Added: successive linearization MHE with the new setmodel! and linearize functions
  • Added: linearize! method for in-place model linearization (to reduce allocations)
  • Added: 6 args. LinModel constructor now support scalars (similarly to ss function)
  • Added: ExtendedKalmanFilter now compute the Jacobians in-place (to reduce allocations)
  • Changed: struct state data x and state estimate renamed to x0 and x̂0
  • Debug: ExplicitMPC with non-Float64 now works
  • Debug: accept integers in linearize arguments
  • Debug: call empty! on JuMP.Model to support re-construction of MPC instances
  • Doc: new setmodel!, setop! and linearize function documentation
  • Doc: example of model adaptation with successive linearization on the pendulum (very efficient!)

Merged pull requests:

  • Added: adaptatation of LinMPC model through setmodel! (#52) (@franckgaga)
  • Added: adaptation of controller/estimator based on LinModel (#54) (@franckgaga)
  • Added: setmodel! for MovingHorizonEstimator (#55) (@franckgaga)

v0.20.2

1 month ago

ModelPredictiveControl v0.20.2

Diff since v0.20.1

  • added: print info on controller and estimator constraint softening (slack var. ϵ)
  • reduce allocations LinMPC, NonLinMPC, MovingHorizonEstimator
  • cleanup namespace with imports instead of usings

Merged pull requests:

  • Changed: avoid collect in NonLinMPC and MovingHorizonEstimator 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 imports instead of usings (#50) (@franckgaga)
  • Namespace, NonLinMPC and MovingHorizonEsitimator cleanup (#51) (@franckgaga)

v0.20.1

1 month ago

ModelPredictiveControl v0.20.1

Diff since v0.20.0

  • Reduce allocation for estimator based on NonLinModel
  • Reduce allocations for LinMPC and KalmanFilter
  • Improve performance of LinMPC and MovingHorizonEstimator with new JuMP batch 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 LinMPC and KalmanFilter (#45) (@franckgaga)

v0.20.0

2 months ago

ModelPredictiveControl v0.20.0

Diff since v0.19.2

  • Added: custom estimator for the approximation of the arrival covariance in the MHE
  • Changed: MHE based on NonLinModel now defaults to UnscentedKalmanFilter for 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)

v0.19.2

2 months ago

ModelPredictiveControl v0.19.2

Diff since v0.19.1

Merged pull requests:

  • Debug: MHE with NonLinModel update covariance with the correct state estimate (#40) (@franckgaga)

v0.19.1

2 months ago

ModelPredictiveControl v0.19.1

Diff since v0.19.0

Merged pull requests:

  • Minor doc correction and code cleanup (#39) (@franckgaga)

v0.19.0

2 months ago

ModelPredictiveControl v0.19.0

Diff since v0.18.1

BREAKING CHANGE NonLinModel constructor now supposes continuous dynamics by default. Use solver=nothing for discrete-time models.

changelog:

  • added: support for NonLinModel with continuous dynamics
  • added: 4th order Runge-Kutta solver with 0 allocation
  • doc: the pendulum example now use the built-in Runge-Kutta solve
  • added some tests with continuous NonLinModel

Merged pull requests:

  • starting support of continuous NonLinModel (RK4 only for now) (#38) (@baggepinnen)