@@ -5,7 +5,7 @@ struct LinMPC{
55 NT<: Real ,
66 SE<: StateEstimator ,
77 CW<: ControllerWeights ,
8- TM<: TranscriptionMethod ,
8+ TM<: ShootingMethod ,
99 JM<: JuMP.GenericModel
1010} <: PredictiveController{NT}
1111 estim:: SE
@@ -54,7 +54,7 @@ struct LinMPC{
5454 NT<: Real ,
5555 SE<: StateEstimator ,
5656 CW<: ControllerWeights ,
57- TM<: TranscriptionMethod ,
57+ TM<: ShootingMethod ,
5858 JM<: JuMP.GenericModel
5959 }
6060 model = estim. model
@@ -63,6 +63,7 @@ struct LinMPC{
6363 # dummy vals (updated just before optimization):
6464 R̂y, R̂u, Tu_lastu0 = zeros (NT, ny* Hp), zeros (NT, nu* Hp), zeros (NT, nu* Hp)
6565 lastu0 = zeros (NT, nu)
66+ validate_transcription (model, transcription)
6667 PΔu = init_ZtoΔU (estim, transcription, Hp, Hc)
6768 Pu, Tu = init_ZtoU (estim, transcription, Hp, Hc, nb)
6869 E, G, J, K, V, B, ex̂, gx̂, jx̂, kx̂, vx̂, bx̂ = init_predmat (
@@ -71,7 +72,7 @@ struct LinMPC{
7172 Eŝ, Gŝ, Jŝ, Kŝ, Vŝ, Bŝ = init_defectmat (model, estim, transcription, Hp, Hc)
7273 # dummy vals (updated just before optimization):
7374 F, fx̂, Fŝ = zeros (NT, ny* Hp), zeros (NT, nx̂), zeros (NT, nx̂* Hp)
74- con, nϵ, P̃Δu, P̃u, Ẽ, Ẽŝ = init_defaultcon_mpc (
75+ con, nϵ, P̃Δu, P̃u, Ẽ = init_defaultcon_mpc (
7576 estim, weights, transcription,
7677 Hp, Hc,
7778 PΔu, Pu, E,
@@ -156,7 +157,7 @@ arguments. This controller allocates memory at each time step for the optimizati
156157- `N_Hc=Diagonal(repeat(Nwt,Hc))` : positive semidefinite symmetric matrix ``\m athbf{N}_{H_c}``.
157158- `L_Hp=Diagonal(repeat(Lwt,Hp))` : positive semidefinite symmetric matrix ``\m athbf{L}_{H_p}``.
158159- `Cwt=1e5` : slack variable weight ``C`` (scalar), use `Cwt=Inf` for hard constraints only.
159- - `transcription=SingleShooting()` : a [`TranscriptionMethod `](@ref) for the optimization .
160+ - `transcription=SingleShooting()` : [`SingleShooting `](@ref) or [`MultipleShooting`](@ref) .
160161- `optim=JuMP.Model(OSQP.MathOptInterfaceOSQP.Optimizer)` : quadratic optimizer used in
161162 the predictive controller, provided as a [`JuMP.Model`](@extref) object (default to
162163 [`OSQP`](https://osqp.org/docs/parsers/jump.html) optimizer).
@@ -215,7 +216,7 @@ function LinMPC(
215216 N_Hc = Diagonal (repeat (Nwt, get_Hc (move_blocking (Hp, Hc)))),
216217 L_Hp = Diagonal (repeat (Lwt, Hp)),
217218 Cwt = DEFAULT_CWT,
218- transcription:: TranscriptionMethod = DEFAULT_LINMPC_TRANSCRIPTION,
219+ transcription:: ShootingMethod = DEFAULT_LINMPC_TRANSCRIPTION,
219220 optim:: JuMP.GenericModel = JuMP. Model (DEFAULT_LINMPC_OPTIMIZER, add_bridges= false ),
220221 kwargs...
221222)
@@ -259,7 +260,7 @@ function LinMPC(
259260 N_Hc = Diagonal (repeat (Nwt, get_Hc (move_blocking (Hp, Hc)))),
260261 L_Hp = Diagonal (repeat (Lwt, Hp)),
261262 Cwt = DEFAULT_CWT,
262- transcription:: TranscriptionMethod = DEFAULT_LINMPC_TRANSCRIPTION,
263+ transcription:: ShootingMethod = DEFAULT_LINMPC_TRANSCRIPTION,
263264 optim:: JM = JuMP. Model (DEFAULT_LINMPC_OPTIMIZER, add_bridges= false ),
264265) where {NT<: Real , SE<: StateEstimator{NT} , JM<: JuMP.GenericModel }
265266 isa (estim. model, LinModel) || error (MSG_LINMODEL_ERR)
0 commit comments