Recent Releases of ModelPredictiveControl

ModelPredictiveControl - v1.9.0

ModelPredictiveControl v1.9.0

Diff since v1.8.2

  • added: TrapezoidalCollocation method for continuous nonlinear systems
  • added: dependabot.yml file to help with the CI dependencies
  • changed: new fields with the continuous state-space function model.f! and model.h! in NonLinModels (instead of model.solver_f! and model.solver_h!)
  • test: new test with TrapezoidalCollocation and Ipopt
  • bench: new case studies with TrapezoidalCollocation on the pendulum

Merged pull requests: - bench: increasing samples to reduce SD when needed (#228) (@franckgaga) - added: dependabot.yml file to help with CI dependencies (#230) (@franckgaga) - build(deps): bump julia-actions/setup-julia from 1 to 2 (#231) (@dependabot[bot]) - build(deps): bump actions/checkout from 2 to 5 (#232) (@dependabot[bot]) - changed: keep f! and h! functions available (#233) (@franckgaga) - added: simple TrapezoidalCollocation() transcription method (#234) (@franckgaga) - doc: clarifying model augmentation for NonLinMPC in f̂! docstring (#235) (@franckgaga) - added: show TranscriptionMethod when printing PredictiveController (#236) (@franckgaga) - added: unit tests and benchmarks for TrapezoidalCollocation (#237) (@franckgaga)

Closed issues: - Trapezoidal collocation transcription (#164)

- Julia
Published by github-actions[bot] 6 months ago

ModelPredictiveControl - v1.8.2

ModelPredictiveControl v1.8.2

Diff since v1.8.1

Merged pull requests: - test: increase Ts of NonLinMPC test to avoid out-of-time status (#217) (@franckgaga) - added: benchmarking workflow with github actions (#218) (@franckgaga) - bench: added allocation benchmarks on CI (#219) (@franckgaga) - doc: minor correction (#220) (@franckgaga) - bench: trying AirspeedVelocity.jl (#221) (@franckgaga) - bench: adding some PredictiveController benchmarks (#222) (@franckgaga) - CompatHelper: bump compat for SparseConnectivityTracer to 1, (keep existing compat) (#223) (@github-actions[bot]) - bench: add OSQP and Random as dependencies (#224) (@franckgaga) - bench: minor modification (#225) (@franckgaga) - debug: MovingHorizonEstimator no longer crash with error termination flag (#226) (@franckgaga) - bump (#227) (@franckgaga)

- Julia
Published by github-actions[bot] 8 months ago

ModelPredictiveControl - v1.8.1

ModelPredictiveControl v1.8.1

Diff since v1.8.0

  • added: new KalmanCovariance parametric struct to handle covariance sparsity efficiently
  • added: dispatch on repeatdiag to preserve Diagonnals
  • added: in-place and allocation-free inv! for MHE covariance matrices
  • changed: store P̃Δu, P̃u and Tu conversion matrices as SparseMatrixCSC
  • debug: support Hermitian weights in PredictiveController
  • debug: use dummy b vector in MHE setmodel! to avoid ±Inf values
  • test: verify setmodel! with He>1 for MHE
  • test: new integration with ManualEstimator and MPCs
  • doc: various improvements

Merged pull requests: - new ManualEstimator tests and minor doc corrections (#210) (@franckgaga) - doc : minor clarifications (#211) (@franckgaga) - Changed: store conversion matrices as SparseMatrixCSC (#212) (@franckgaga) - added: inv! for MovingHorizonEstimator covariance matrices (#214) (@franckgaga) - debug: support Hermitian weights in PredictiveController (#215) (@franckgaga) - added: new KalmanCovariance struct to handle covariance sparsity efficiently (#216) (@franckgaga)

- Julia
Published by github-actions[bot] 9 months ago

ModelPredictiveControl - v1.8.0

ModelPredictiveControl v1.8.0

Diff since v1.7.0

Merged pull requests: - added: move blocking feature in LinMPC, ExplicitMPC and NonLinMPC (#201) (@franckgaga)

Closed issues: - Implement manipulated input blocking (#177)

- Julia
Published by github-actions[bot] 9 months ago

ModelPredictiveControl - v1.7.0

ModelPredictiveControl v1.7.0

Diff since v1.6.2

  • added: ManualEstimator to turn off built-in state estimation and provide your own estimate

Merged pull requests: - added: ManualEstimator to turn off built-in state estimation (#206) (@franckgaga) - changed: moved lastu0 inside PredictiveController objects (#208) (@franckgaga) - Added tests and improve doc for ManualEstimator (#209) (@franckgaga)

Closed issues: - Create a CustomEstimator to ease interfacing with Low-level particle filter package (#142) - Support nonlinear estimator with linear model predictive control (#205)

- Julia
Published by github-actions[bot] 9 months ago

ModelPredictiveControl - v1.6.2

ModelPredictiveControl v1.6.2

Diff since v1.6.1

Merged pull requests: - CompatHelper: bump compat for DifferentiationInterface to 0.7, (keep existing compat) (#203) (@github-actions[bot]) - changed: compat of DAQP to 0.6, 0.7.1 (#204) (@franckgaga) - debug: force update of gradient/jacobian in MovingHorzionEstimator when window not filled (#207) (@franckgaga)

- Julia
Published by github-actions[bot] 9 months ago

ModelPredictiveControl - v1.6.1

ModelPredictiveControl v1.6.1

Diff since v1.6.0

  • added: improve NonLinMPC performances with specialized conversion and weight matrices
  • changed: M_Hp, N_Hc and L_Hp keyword arguments now default to Diagonal instead of diagm matrices for all PredictiveController constructors

Merged pull requests: - Cherry pick doc and general improvements commits from hessian_objective (#200) (@franckgaga) - added: be more efficient with weights and conversion matrices for NonLinMPC (#202) (@franckgaga)

Closed issues: - Support exact Hessian of objective function J in NonLinMPC and MovingHorizonEstimator (#193) - Use one function in linearization (#199)

- Julia
Published by github-actions[bot] 10 months ago

ModelPredictiveControl - v1.6.0

ModelPredictiveControl v1.6.0

Diff since v1.5.3

  • added: general performance boost of NonLinMPC and MovingHorizonEstimator using value_and_gradient!/jacobian! of DifferentiationInterface.jl instead of individual calls (similar to DiffResults.jl goal) 🚀🚀🚀
  • added: setstate! now allows manual modifications of the estimation error covariance $\mathbf{\hat{P}}$ (if computed by the estimator)

Merged pull requests: - added: setstate! now allows estimation covariance modification (if applicable) (#192) (@franckgaga) - doc: minor corrections (#196) (@franckgaga) - Added: NonLinMPC and MovingHorizonEstimator now use value_and_gradient!/jacobian! of DI.jl (#197) (@franckgaga)

Closed issues: - Precompilation is failing (#195)

- Julia
Published by github-actions[bot] 10 months ago

ModelPredictiveControl - v1.5.3

ModelPredictiveControl v1.5.3

Diff since v1.5.2

Merged pull requests: - Test: added allocations tests for types that are known to be allocation-free (SKIP THEM FOR NOW) (#187) (@franckgaga) - test: fix CI badge (#188) (@franckgaga) - debug: remove .data in KalmanFilter matrix products (#189) (@franckgaga) - test: adapt tests for the new automatically balancing minreal function (#191) (@franckgaga)

- Julia
Published by github-actions[bot] 10 months ago

ModelPredictiveControl - v1.5.2

ModelPredictiveControl v1.5.2

Diff since v1.5.1

Merged pull requests: - debug: do not call jacobian! if nd==0 in linearize (#186) (@franckgaga)

Closed issues: - Linearize is failing when using AutoFiniteDiff() (#185)

- Julia
Published by github-actions[bot] 11 months ago

ModelPredictiveControl - v1.5.1

ModelPredictiveControl v1.5.1

Diff since v1.5.0

  • removed: DiffCaches in RungeKutta solver
  • debug: no more noisy @warn about DiffCache chunk size
  • changed: compat for ForwardDiff to 0.10, 1
  • test: added compat entries for the test-only dependencies in [extras] section

Merged pull requests: - CompatHelper: bump compat for ForwardDiff to 1, (keep existing compat) (#182) (@github-actions[bot]) - Changed: RungeKutta no longer uses DiffCache (#183) (@franckgaga)

- Julia
Published by github-actions[bot] 11 months ago

ModelPredictiveControl - v1.5.0

ModelPredictiveControl v1.5.0

Diff since v1.4.4

  • added: migration to DifferentiationInterface.jl
  • added: new gradient and jacobian keyword arguments for NonLinMPC
  • added: new gradient and jacobian keyword arguments for MovingHorizonEstimator
  • added: new jacobian keyword argument for NonLinModel (for linearization)
  • added: new jacobian keyword argument for ExtendedKalmanFilter
  • added: ExtendedKalmanFilter is now allocation-free at runtime
  • test: many new test with AutoFiniteDiff backend

Merged pull requests: - added: NonLinMPC and MovingHorizonEstimator integration with DI.jl (#174) (@franckgaga) - added: linearize! now uses DifferentiationInterface.jl (#179) (@franckgaga) - Added: ExtendedKalmanFilter now uses DifferentiationInterface.jl + now allocation-free (#180) (@franckgaga)

Closed issues: - Use DifferentiationInterface.jl (#162)

- Julia
Published by github-actions[bot] 11 months ago

ModelPredictiveControl - v1.4.4

ModelPredictiveControl v1.4.4

Diff since v1.4.3

Merged pull requests: - Debug: ineq. constraint for NonLinModel and MultipleShooting (#178) (@franckgaga)

- Julia
Published by github-actions[bot] 12 months ago

ModelPredictiveControl - v1.4.3

ModelPredictiveControl v1.4.3

Diff since v1.4.2

Merged pull requests: - Debug x_noise argument in sim! and deprecate preparestate!(::SimModel, _ , _ ) (#173) (@franckgaga) - debug: terminal constraint now works with MultipleShooting + NonLinModel (#176) (@franckgaga)

- Julia
Published by github-actions[bot] 12 months ago

ModelPredictiveControl - v1.4.2

ModelPredictiveControl v1.4.2

Diff since v1.4.1

  • added: major performance boost of NonLinMPC and MovingHorizonEstimator with NL constraints (5-10x) 🥳🥳🥳
  • changed: big refactor of NLP functions for the integration of DifferentiationInterface.jl

Merged pull requests: - Changed: major NLP refactoring for flexibility and significantly improve performance (#171) (@franckgaga)

- Julia
Published by github-actions[bot] 12 months ago

ModelPredictiveControl - v1.4.1

ModelPredictiveControl v1.4.1

Diff since v1.4.0

  • debug: correct @error message for MPC when not solved (it was the MHE message)
  • debug: allow LinModel linearization (useless, only for consistency among SimModel types)
  • test: new tests with MultipleShooting for coverage
  • doc: minor improvements

Merged pull requests: - test for MultipleShooting and doc improvements (#166) (@franckgaga) - add new feature to readme (#167) (@franckgaga) - Minor doc corrections + allow LinModel linearization (#168) (@franckgaga) - debug: correct @error msg for MPC not solved (#169) (@franckgaga) - changed: moved equality constraint function to transcription.jl and bump (#170) (@franckgaga)

- Julia
Published by github-actions[bot] 12 months ago

ModelPredictiveControl - v1.4.0

ModelPredictiveControl v1.4.0

Diff since v1.3.5

Merged pull requests: - added: multiple shooting transcription for LinMPC and NonLinMPC (#155) (@franckgaga)

Closed issues: - Multiple shooting transcription (#140)

- Julia
Published by github-actions[bot] 12 months ago

ModelPredictiveControl - v1.3.5

ModelPredictiveControl v1.3.5

Diff since v1.3.4

  • added: linearize! is allocation-free once again
  • changed: re-worked AD buffers to prepare the ground for DifferentiationInterface.jl

Merged pull requests: - added: linearize! is allocation-free once again (#165) (@franckgaga)

Closed issues: - Add support for a simple stiff solver similar to SimpleColloc in SeeToDee.jl (#129)

- Julia
Published by github-actions[bot] about 1 year ago

ModelPredictiveControl - v1.3.4

ModelPredictiveControl v1.3.4

Diff since v1.3.3

  • debug: all fields of NonLinModel are now concrete types

Merged pull requests: - debug: NonLinModel fields are now all concrete types (#161) (@franckgaga)

- Julia
Published by github-actions[bot] about 1 year ago

ModelPredictiveControl - v1.3.3

ModelPredictiveControl v1.3.3

Diff since v1.3.2

  • debug: revert allocation-free linearize! to avoid NonLinModel type-instabilities

Merged pull requests: - debug: revert allocation-free linearize! to avoid NonLinModel type-instability (#160) (@franckgaga)

- Julia
Published by github-actions[bot] about 1 year ago

ModelPredictiveControl - v1.3.2

ModelPredictiveControl v1.3.2

Diff since v1.3.1

  • added: update test for new VS code test framework
  • debug: fallback if nonfinite arr. cov. after correction/update
  • debug: add busywait arg to periodsleep for StateEstimator and PredictiveController
  • changed: @error instead of @warn in MHE fallback for arrival covariance
  • changed: update CI and test on pre instead of nightly
  • changed: simpler code for stochastic predictions of InternalModel

Merged pull requests: - changed: @error instead of @warn in MHE arrival covariance fallback + update CI (#154) (@franckgaga) - debug: fallback if nonfinite arr. cov. after correction/update (#156) (@franckgaga) - changed: simpler code for stochastic predictions of InternalModel (#157) (@franckgaga) - update test for new VS code test framework (#158) (@franckgaga) - bump (#159) (@franckgaga)

- Julia
Published by github-actions[bot] about 1 year ago

ModelPredictiveControl - v1.3.1

ModelPredictiveControl v1.3.1

Diff since v1.3.0

  • added: show @debug messages in github CI if debug logging is activated
  • changed: @debug messages with the getinfo dictionary are never truncated (show_limited=false is no longer necessary)

Merged pull requests: - added: show @debug message in CI if debug logging is activated (#153) (@franckgaga)

- Julia
Published by github-actions[bot] about 1 year ago

ModelPredictiveControl - v1.3.0

ModelPredictiveControl v1.3.0

Diff since v1.2.0

  • added: show getinfo dictionary in the debug log if activated (instead of only the solution summary of JuMP)
  • added: show tips about debug log in the optimization warning and error messages
  • debug: fallback if MovingHorizonEstimator arrival covariance update fails (keep the old one)
  • changed: covariance matrix inversion with cholesky instead of inv in MovingHorizonEstimator (inv internally uses lu)

Merged pull requests: - doc: torques constraints AND power constraint in the example (manual) (#150) (@franckgaga) - debug: fallback if MovingHorizonEstimator arrival covariance update fails (#151) (@franckgaga) - added: call getinfo when debug logging is activated and not solved (#152) (@franckgaga)

Closed issues: - Error on execution of doc example (#146)

- Julia
Published by github-actions[bot] about 1 year ago

ModelPredictiveControl - v1.2.0

ModelPredictiveControl v1.2.0

Diff since v1.1.4

  • added: ForwardEuler ODE solver
  • added: remove 1 useless .=op in RungeKutta(4)
  • added: forcing specialization in the NLP functions by using Vararg{T, N} instead of splatting (see this tip)
  • added: skipping computations in extended_predictions when possible
  • added: print the solver order for NonLinModel
  • changed: bump julia compat to 1.10 (new LTS)
  • changed: improve code reuse in NLP functions to improve code maintainability
  • test: new tests for ForwardEuler
  • doc: info about types that allocate or not

Merged pull requests: - removing commented out code (#144) (@franckgaga) - added: new ForwardEuler solver with 0 allocation (#145) (@franckgaga) - bump julia compat to 1.10 (LTS) (#147) (@franckgaga) - Added: slightly speed up NonLinMPC and MovingHorizonEstimator (#149) (@franckgaga)

- Julia
Published by github-actions[bot] about 1 year ago

ModelPredictiveControl - v1.1.4

ModelPredictiveControl v1.1.4

Diff since v1.1.3

  • added: linearize! is now allocation free
  • added: do not call gc! if nc==0
  • added: new mpc.buffer.ΔŨ buffer to reduce the allocations
  • changed: preparestate! default d argument as empty vector
  • various doc improvements

Merged pull requests: - changed: preparestate! default d argument as empty vector (#137) (@franckgaga) - added: do not call gc! if nc==0 (#138) (@franckgaga) - added: reduce allocations for PredictiveController (#139) (@franckgaga) - added: linearize! is now allocation free (#141) (@franckgaga) - Update Project.toml (#143) (@franckgaga)

- Julia
Published by github-actions[bot] about 1 year ago

ModelPredictiveControl - v1.1.3

ModelPredictiveControl v1.1.3

Diff since v1.1.2

  • added: :gc field in getinfo for custom constraints of NonLinMPC
  • debug: allow setmodel! on SteadyKalmanFilter/Luenberger when there is no model modification (for changing the weights of a PredictiveController)
  • test: validating the :gc fields of getinfo! in the constraint violation tests
  • doc: remove Hp parameter in the gc example of the manual (useless)

Merged pull requests: - added: gc in getinfo (#136) (@franckgaga)

- Julia
Published by github-actions[bot] about 1 year ago

ModelPredictiveControl - v1.1.2

ModelPredictiveControl v1.1.2

Diff since v1.1.1

  • added: save some computations in NonLinMPC with T_lastu field instead of T_lastu0
  • changed: moved all controller weights in mpc.weights struct to improve code re-use
  • test: improve constraint violation tests (verify the whole horizons, use distinct lower and upper bounds)
  • test: new custom constraint violation tests that use Ue argument
  • doc: added a custom nonlinear constraint example on the motor power in the manual
  • doc: various improvements

Merged pull requests: - added: save some NonLinMPC computations with T_lastu instead of T_lastu0 for input conversion (#133) (@franckgaga) - doc: minor correction (#134) (@franckgaga) - Doc: nonlinear custom constraint example on the motor in the manual (#135) (@franckgaga)

- Julia
Published by github-actions[bot] about 1 year ago

ModelPredictiveControl - v1.1.1

ModelPredictiveControl v1.1.1

Diff since v1.1.0

  • fixed: remove a type-instability in LinMPC and NonLinMPC introduced in v1.1.0
  • added: reduce allocations with PredictiveControllers using new fields in mpc.buffer object
  • added: improve performance with 4 iszero_X fields for each PredictiveController weight, to skip computations when possible
  • changed: moved all controller weights in mpc.weights struct to improve code re-use
  • test: new custom constraint violation tests that use Ue argument

Merged pull requests: - Fix type instability in LinMPC and NonLinMPC (introduced in 1.1.0) (#130) (@franckgaga) - Changed: moved all controller weights in mpc.weights struct (#131) (@franckgaga) - Added: iszero_W field in for the 4 weights in ControllerWeights struct (#132) (@franckgaga)

- Julia
Published by github-actions[bot] about 1 year ago

ModelPredictiveControl - v1.1.0

ModelPredictiveControl v1.1.0

Diff since v1.0.2

  • added: support for custom nonlinear inequality constraints gc in NonLinMPC
  • added: call JE and gc once in NonLinMPC constructor and show stacktrace if it fails (to guide the user)
  • doc: additional details on vector dimensions
  • doc: documents the dummy function plot_recipe instead of plot to avoid confusion
  • tests: new test for custom nonlinear constraint violation

Merged pull requests: - Added: support for custom nonlinear constraints gc in NonLinMPC (#118) (@franckgaga) - Avoid introducing MPC.plot (#120) (@baggepinnen) - Custom constraints : add tests (#128) (@franckgaga)

Closed issues: - plot not working (#119)

- Julia
Published by github-actions[bot] over 1 year ago

ModelPredictiveControl - v1.0.2

ModelPredictiveControl v1.0.2

Diff since v1.0.1

  • changed: removed code related to Julia 1.6 compatibility (1.10 is the new LTS)
  • doc: add compat info to ModelingToolkit.jl example
  • doc: various minor modifications

Merged pull requests: - Added: details in observability error message, modify CI for new release and MTK exemple debug (#117) (@franckgaga) - Add compat details on MTK.jl bugfixes (#122) (@franckgaga) - Doc correction and simple CI fix (#123) (@franckgaga) - doc: change slmpc speed gain for the real benchmark (#125) (@franckgaga) - bump (#126) (@franckgaga)

Closed issues: - Support for dynamic differential programming in a model predictive context (#109) - MTK example no longer work (#116) - linearize is throwing an error when using an empty disturbance (#121)

- Julia
Published by github-actions[bot] over 1 year ago

ModelPredictiveControl - v1.0.1

ModelPredictiveControl v1.0.1

Diff since v1.0.0

  • changed: more precise error for LinModel with non-zero D matrix
  • doc: MTK example error message for non-strictly proper systems
  • doc: MTK example now uses the p argument of NonLinModel
  • doc: remove old stuff that no longer applies
  • doc: various improvements

Merged pull requests: - doc: MTK example throw error for non-strictly proper systems (#110) (@franckgaga) - doc: add the parameter p in f and h function signature (#111) (@franckgaga) - doc: remove stuff that no longer applies (#113) (@franckgaga) - bump version (#114) (@franckgaga)

Closed issues: - Better integration with ModellingToolkit (#106) - Avoid Matrix Inversion in the MovingHorizonEstimator (#112)

- Julia
Published by github-actions[bot] over 1 year ago

ModelPredictiveControl - v1.0.0

ModelPredictiveControl v1.0.0

Diff since v0.24.1

  • breaking change: NonLinModel new p argument in f/f! and h/h! function signature
  • breaking change: NonLinMPC new p argument in JE function signature
  • added: support for plant model parameters $\mathbf{p}$ in NonLinModel
  • added: support for economic function parameters $\mathbf{p}$ in NonLinMPC
  • doc: ModelingToolkit integration example on the pendulum model
  • test: improve coverage
  • debug: ExplicitMPC correct error message with the unsupported setconstraint! method
  • added: validate economic function $J_E$ argument signature

Merged pull requests: - Fix #103 (#104) (@baggepinnen) - Preparation for v1.0.0 release (#105) (@franckgaga) - Fixing documentation deployement (#107) (@franckgaga)

Closed issues: - Code coverage token secret (#103) - Better integration with ModellingToolkit (#106)

- Julia
Published by github-actions[bot] over 1 year ago

ModelPredictiveControl - v0.24.1

ModelPredictiveControl v0.24.1

Diff since v0.24.0

  • added: print warning if preparestate! is called after moveinput! or evaloutput with current estimators
  • added: reduce allocations with linearize!
  • added: reduce allocations with moveinput! calls with new buffer objects
  • debug: evaloutput on InternalModel now include current stochastic estimate $\mathbf{\hat{y}_s}$
  • test: add test to verify evaloutput correctness on InternalModel
  • test and precompile: add preparestate! where needed to avoid the warnings
  • doc: various improvements

Merged pull requests: - minor doc correction (#97) (@franckgaga) - doc: minor doc correction (#99) (@franckgaga) - debug: make it work on Julia nightly (#100) (@franckgaga) - Reduce allocations in linearize! (#101) (@franckgaga) - Warning preparestate!, debug InternalModel, reduce alloc PredictiveController (#102) (@franckgaga)

- Julia
Published by github-actions[bot] over 1 year ago

ModelPredictiveControl - v0.24.0

ModelPredictiveControl v0.24.0

Diff since v0.23.1

  • breaking change: MovingHorizonEstimator now default to direct=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 with preparestate! and updatestate! calls
  • tests: new integration tests that compare unconstrained MHE to UKF and KF results
  • tests: new integration that compare LinModel and NonLinModel

Merged pull requests: - Added: soft real time utilities (#94) (@franckgaga) - added: MovingHorizonEstimator support for direct=true, initialized with P̂(-1|-1) (#96) (@franckgaga)

Closed issues: - Real-time loop tools (#85)

- Julia
Published by github-actions[bot] over 1 year ago

ModelPredictiveControl - v0.23.1

ModelPredictiveControl v0.23.1

Diff since v0.23.0

  • Luenberger, SteadyKalmanFilter, KalmanFilter and UnscentedKalmanFilter now produce 0 allocation with preparestate! and updatestate! 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)

- Julia
Published by github-actions[bot] over 1 year ago

ModelPredictiveControl - v0.23.0

ModelPredictiveControl v0.23.0

Diff since v0.22.1

BREAKING CHANGES

  • preparestate! should be called before solving the MPC optimization with moveinput!
  • current form by default for all StateEstimator
  • ym keyword argument of moveinput! removed (was only for InternalModel, I now use the new preparestate! method)
  • MovingHorizonEstimator advanced constructor (with complete covariance matrices): covestim and optim are now keyword arguments instead of positional arguments.

Changelog

  • added: current form for all StateEstimator except MovingHorizonEstimator, to improve accuracy and closed-loop robustness
  • reduce allocation for SimModeland StateEstimator 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 default d argument (#91) (@franckgaga) - added: SimModelBuffer and StateEsimatorBuffer objects to reduce the allocations (#92) (@franckgaga)

- Julia
Published by github-actions[bot] over 1 year ago

ModelPredictiveControl - v0.22.1

ModelPredictiveControl v0.22.1

Diff since v0.22.0

  • added: support for Mwt, Nwt and Lwt keyword arguments in setmodel! (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 and Lwt kwargs in setmodel! (#86) (@franckgaga)

Closed issues: - How to successfully impose constraints to a Control Variable with high priority (#78)

- Julia
Published by github-actions[bot] over 1 year ago

ModelPredictiveControl - v0.22.0

ModelPredictiveControl v0.22.0

Diff since v0.21.3

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)

- Julia
Published by github-actions[bot] over 1 year ago

ModelPredictiveControl - v0.21.3

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)

- Julia
Published by github-actions[bot] almost 2 years ago

ModelPredictiveControl - v0.21.2

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)

- Julia
Published by github-actions[bot] almost 2 years ago

ModelPredictiveControl - v0.21.1

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)

- Julia
Published by github-actions[bot] almost 2 years ago

ModelPredictiveControl - v0.21.0

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)

- Julia
Published by github-actions[bot] almost 2 years ago

ModelPredictiveControl - v0.20.2

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)

- Julia
Published by github-actions[bot] almost 2 years ago

ModelPredictiveControl - v0.20.1

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)

- Julia
Published by github-actions[bot] almost 2 years ago

ModelPredictiveControl - v0.20.0

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)

- Julia
Published by github-actions[bot] almost 2 years ago

ModelPredictiveControl - v0.19.2

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)

- Julia
Published by github-actions[bot] almost 2 years ago

ModelPredictiveControl - v0.19.1

ModelPredictiveControl v0.19.1

Diff since v0.19.0

Merged pull requests: - Minor doc correction and code cleanup (#39) (@franckgaga)

- Julia
Published by github-actions[bot] almost 2 years ago

ModelPredictiveControl - v0.19.0

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)

- Julia
Published by github-actions[bot] almost 2 years ago

ModelPredictiveControl - v0.18.1

ModelPredictiveControl v0.18.1

Diff since v0.18.0

  • remove useless allocations for mutating NonLinModels

Merged pull requests: - minor doc correction (#36) (@franckgaga) - Remove useless allocations for in-place NonLinModel (#37) (@franckgaga)

- Julia
Published by github-actions[bot] almost 2 years ago

ModelPredictiveControl - v0.18.0

ModelPredictiveControl v0.18.0

Diff since v0.17.0

  • added: support for mutating f! and h! functions in NonLinModel to reduce allocations
  • doc: added simple example of the MovingHorizonEstimator for the CSTR in the manual

Merged pull requests: - Update README.md (#27) (@franckgaga) - Added a MHE example on the CSTR in the manual (#28) (@franckgaga) - fix wrong function signature ared (#29) (@baggepinnen) - dummy commit to trigger doc deploy (#30) (@franckgaga) - doc: minor correction MHE manual (#32) (@franckgaga) - Added: mutating NonLinModel (#33) (@franckgaga) - Re-enable precompilation (#34) (@franckgaga) - bump version (#35) (@franckgaga)

Closed issues: - Docs questions (#22) - Documentation no longer deployed (#26)

- Julia
Published by github-actions[bot] almost 2 years ago

ModelPredictiveControl - v0.17.0

ModelPredictiveControl v0.17.0

Diff since v0.16.1

  • added: support for non-diagonal symmetric M_Hp, N_Hc and L_Hp weights, allowing terminal costs and LQR tuning
  • doc: added comment on a terminal weight
  • reduce allocations for PredictiveControllers and MovingHorizonEstimator (with in-place operations)

Merged pull requests: - Update README links (#21) (@baggepinnen) - todo: add terminal costs (#23) (@franckgaga) - Update README.md (#24) (@franckgaga) - Added: terminal cost support (#25) (@franckgaga)

- Julia
Published by github-actions[bot] about 2 years ago

ModelPredictiveControl - v0.16.1

ModelPredictiveControl v0.16.1

Diff since v0.16.0

  • added: reduce allocation NonLinMPC
  • doc: added internal function optim_objective
  • doc: various doc improvements

- Julia
Published by github-actions[bot] about 2 years ago

ModelPredictiveControl - v0.16.0

ModelPredictiveControl v0.16.0

Diff since v0.15.0

  • added: MHE soft constraints with a single slack variable ϵ (a.k.a. equal concern for relaxation, disabled by default thus only hard constraints).
  • changed: more concise MPC logging in REPL.
  • removed: deprecated arguments for setconstraint! and NonLinMPC.
  • doc: hide extended help with details admonition.
  • doc: more concise setconstraint! and ExplicitMPC documentation.

- Julia
Published by github-actions[bot] about 2 years ago

ModelPredictiveControl - v0.15.0

ModelPredictiveControl v0.15.0

Diff since v0.14.1

  • added: MHE hard constraints on estimated process and sensor noises
  • added: MHEs based on LinModel are now treated as a quadratic optimization instead of nonlinear
  • added: Plots recipe avoid repeat xlabels for MIMOs
  • added: getinfo method for MovingHorzionEstimator for troubleshooting
  • debug: update MHE arrival covariance with I/Os at arrival
  • improved coverage

Merged pull requests: - Added: MHE with quadratic optim + process and sensor noises bounds (#20) (@franckgaga)

- Julia
Published by github-actions[bot] about 2 years ago

ModelPredictiveControl - v0.14.1

ModelPredictiveControl v0.14.1

Diff since v0.14.0

  • changed: default P0 value not function of Q argument

- Julia
Published by github-actions[bot] about 2 years ago

ModelPredictiveControl - v0.14.0

ModelPredictiveControl v0.14.0

Diff since v0.13.0

  • added: MovingHorizonEstimator that can handle constraints on estimation
  • added: tests for MovingHorizonEstimator

Merged pull requests: - Added: MovingHorizonEstimator with state constraints (#19) (@franckgaga)

- Julia
Published by github-actions[bot] about 2 years ago

ModelPredictiveControl - v0.13.0

ModelPredictiveControl v0.13.0

Diff since v0.12.0

  • added: generic number types in all SimModel, StateEstimator and PredictiveController objects (see note below)
  • changed: faster ΔU -> U conversion using matrices of floats (instead of booleans)
  • new tests with Float32.

Note that most solvers in JuMP only support Float64 numbers. Thus, PredictiveController objects still default to Float64-based optimizers, even if the plant model or state estimator uses other number types.

Merged pull requests: - Support non-Float64 numbers in all objects (#17) (@franckgaga)

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.12.0

ModelPredictiveControl v0.12.0

Diff since v0.11.2

  • added: linearization of NonLinModel based on ForwardDiff.jl
  • doc: example of linearize on the pendulum
  • doc: example of solving MPC with unstable plant model using DAQP
  • tests for linearize function

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.11.2

ModelPredictiveControl v0.11.2

Diff since v0.11.0

  • added : time-varying weights over horizons
  • tests for time-varying weights

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.11.1

ModelPredictiveControl v0.11.1

Diff since v0.11.0

  • Remove bridges in default JuMP optimizers
  • added: Solving time limit at Ts by default
  • reduce allocation for KalmanFilter
  • reduce allocation for NonLinMPC
  • debug : update current output estimation in ŶE argument of economic function JE

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.11.0

ModelPredictiveControl v0.11.0

Diff since v0.10.3

  • Doc : add an economic MPC example on the inverted pendulum
  • Doc : update figures for the CSTR and the pendulum
  • Added : error log when the termination status means "no solution available"
  • Added : more precise log in REPL (warning: we keep the solution anyway, error: we take the last solution)
  • Added : do not compute input setpoints R̂u if mpc.noR̂u
  • Changed : time-varying ECR parameters with a capital C

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.10.3

ModelPredictiveControl v0.10.3

Diff since v0.10.2

  • Debug: terminal constraints on NonLinMPC now work
  • Added: unit tests for terminal constraints on NonLinMPC
  • Added: reduce allocation for NonLinMPC based on NonLinModel

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.10.2

ModelPredictiveControl v0.10.2

Diff since v0.10.1

  • Added: plant instrumentation figures in manual
  • default_nint returns 0 with nint_u for NonLinModel

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.10.1

ModelPredictiveControl v0.10.1

Diff since v0.10.0

  • Doc cleaning for terminal constraints
  • Added standard libraries [compat] entries
  • Removed hats in ymin/max plot legends

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.10.0

ModelPredictiveControl v0.10.0

Diff since v0.9.1

Merged pull requests: - Added : terminal constraints (#16) (@franckgaga)

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.9.1

ModelPredictiveControl v0.9.1

Diff since v0.9.0

  • Reduce allocations for NonLinMPC
  • Update documentation with Documenter.jl last version

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.9.0

ModelPredictiveControl v0.9.0

Diff since v0.8.6

  • Added: support for modifying constraints at runtime
  • Added: support for time-varying constraints over prediction/control horizon
  • new tests for constraint handling

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.8.6

ModelPredictiveControl v0.8.6

Diff since v0.8.5

  • Added: bumpless transfer for all StateEstimator based on LinModel (incl. InternalModel)
  • reduce allocation for NonLinMPC with in-place functions
  • doc clarity improvements and minor debug

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.8.5

ModelPredictiveControl v0.8.5

Diff since v0.8.4

  • Added: nonconstant manipulated input setpoints
  • Added: additionnal keyword arguments of controller constructors are passed to estimator constructor
  • Doc correction et additional tests

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.8.4

ModelPredictiveControl v0.8.4

Diff since v0.8.3

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.8.3

ModelPredictiveControl v0.8.3

Diff since v0.8.2

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.8.2

ModelPredictiveControl v0.8.2

Diff since v0.8.1

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.8.1

ModelPredictiveControl v0.8.1

Diff since v0.8.0

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.8.0

ModelPredictiveControl v0.8.0

Diff since v0.7.0

Merged pull requests: - Added support for unmeasured disturbances at model manipulated inputs. (#15) (@franckgaga)

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.7.0

ModelPredictiveControl v0.7.0

Diff since v0.6.6

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.6.6

ModelPredictiveControl v0.6.6

Diff since v0.6.5

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.6.5

ModelPredictiveControl v0.6.5

Diff since v0.6.4

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.6.4

ModelPredictiveControl v0.6.4

Diff since v0.6.3

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.6.3

ModelPredictiveControl v0.6.3

Diff since v0.6.2

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.6.2

ModelPredictiveControl v0.6.2

Diff since v0.6.1

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.6.1

ModelPredictiveControl v0.6.1

Diff since v0.6.0

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.6.0

ModelPredictiveControl v0.6.0

Diff since v0.5.10

Merged pull requests: - CompatHelper: add new compat entry for ForwardDiff at version 0.10, (keep existing compat) (#14) (@github-actions[bot])

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.5.10

ModelPredictiveControl v0.5.10

Diff since v0.5.9

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.5.9

ModelPredictiveControl v0.5.9

Diff since v0.5.8

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.5.8

ModelPredictiveControl v0.5.8

Diff since v0.5.7

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.5.7

ModelPredictiveControl v0.5.7

Diff since v0.5.6

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.5.6

ModelPredictiveControl v0.5.6

Diff since v0.5.5

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.5.5

ModelPredictiveControl v0.5.5

Diff since v0.5.4

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.5.4

ModelPredictiveControl v0.5.4

Diff since v0.5.3

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.5.3

ModelPredictiveControl v0.5.3

Diff since v0.5.2

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.5.2

ModelPredictiveControl v0.5.2

Diff since v0.5.1

- Julia
Published by github-actions[bot] over 2 years ago

ModelPredictiveControl - v0.5.1

ModelPredictiveControl v0.5.1

Diff since v0.5.0

Merged pull requests: - CompatHelper: add new compat entry for PreallocationTools at version 0.4, (keep existing compat) (#12) (@github-actions[bot]) - CompatHelper: add new compat entry for RecipesBase at version 1, (keep existing compat) (#13) (@github-actions[bot])

- Julia
Published by github-actions[bot] almost 3 years ago

ModelPredictiveControl - v0.5.0

ModelPredictiveControl v0.5.0

Diff since v0.4.1

- Julia
Published by github-actions[bot] almost 3 years ago

ModelPredictiveControl - v0.4.1

ModelPredictiveControl v0.4.1

Diff since v0.4.0

- Julia
Published by github-actions[bot] almost 3 years ago

ModelPredictiveControl - v0.4.0

ModelPredictiveControl v0.4.0

Diff since v0.3.6

Merged pull requests: - CompatHelper: add new compat entry for PrecompileTools at version 1, … (#11) (@franckgaga)

- Julia
Published by github-actions[bot] almost 3 years ago

ModelPredictiveControl - v0.3.6

ModelPredictiveControl v0.3.6

Diff since v0.3.5

- Julia
Published by github-actions[bot] almost 3 years ago

ModelPredictiveControl - v0.3.5

ModelPredictiveControl v0.3.5

Diff since v0.3.4

- Julia
Published by github-actions[bot] almost 3 years ago

ModelPredictiveControl - v0.3.4

ModelPredictiveControl v0.3.4

Diff since v0.3.3

- Julia
Published by github-actions[bot] almost 3 years ago

ModelPredictiveControl - v0.3.3

ModelPredictiveControl v0.3.3

Diff since v0.3.2

- Julia
Published by github-actions[bot] almost 3 years ago

ModelPredictiveControl - v0.3.2

ModelPredictiveControl v0.3.2

Diff since v0.3.1

- Julia
Published by github-actions[bot] almost 3 years ago