@@ -35,8 +35,8 @@ See also [`LinMPC`](@ref), [`ExplicitMPC`](@ref), [`NonLinMPC`](@ref).
3535 in the future by default or ``\m athbf{d̂}(k+j)=\m athbf{d}(k)`` for ``j=1`` to ``H_p``.
3636- `R̂y=repeat(ry, mpc.Hp)` or *`Rhaty`* : predicted output setpoints ``\m athbf{R̂_y}``, constant
3737 in the future by default or ``\m athbf{r̂_y}(k+j)=\m athbf{r_y}(k)`` for ``j=1`` to ``H_p``.
38- - `R̂u=mpc.Uop` or *`Rhatu`* : predicted manipulated input setpoints, constant in the future
39- by default or ``\m athbf{r̂_u}(k+j)=\m athbf{u_{op}}`` for ``j=0`` to ``H_p-1``.
38+ - `R̂u=mpc.Uop` or *`Rhatu`* : predicted manipulated input setpoints `` \m athbf{R̂_u}`` , constant
39+ in the future by default or ``\m athbf{r̂_u}(k+j)=\m athbf{u_{op}}`` for ``j=0`` to ``H_p-1``.
4040
4141# Examples
4242```jldoctest
@@ -127,9 +127,9 @@ function getinfo(mpc::PredictiveController{NT}) where NT<:Real
127127 Ŷ = Ȳ
128128 Ŷ .= @views Ŷe[model. ny+ 1 : end ]
129129 oldF = copy (mpc. F)
130- predictstoch! (mpc, mpc. estim)
131- Ŷs .= mpc . F # predictstoch! init mpc.F with Ŷs value if estim is an InternalModel
132- mpc . F .= oldF # restore old F value
130+ F = predictstoch! (mpc, mpc. estim)
131+ Ŷs .= F # predictstoch! init mpc.F with Ŷs value if estim is an InternalModel
132+ F .= oldF # restore old F value
133133 info[:ΔU ] = mpc. ΔŨ[1 : mpc. Hc* model. nu]
134134 info[:ϵ ] = mpc. nϵ == 1 ? mpc. ΔŨ[end ] : zero (NT)
135135 info[:J ] = J
@@ -479,12 +479,14 @@ solution. A failed optimization prints an `@error` log in the REPL and returns t
479479warm-start value.
480480"""
481481function optim_objective! (mpc:: PredictiveController{NT} ) where {NT<: Real }
482- optim = mpc. optim
483- model = mpc. estim . model
482+ model, optim = mpc . estim . model, mpc. optim
483+ nu, Hc = model . nu, mpc. Hc
484484 ΔŨvar:: Vector{JuMP.VariableRef} = optim[:ΔŨvar ]
485485 # initial ΔŨ (warm-start): [Δu_{k-1}(k); Δu_{k-1}(k+1); ... ; 0_{nu × 1}; ϵ_{k-1}]
486- ϵ0 = (mpc. nϵ == 1 ) ? mpc. ΔŨ[end ] : empty (mpc. ΔŨ)
487- ΔŨ0 = [mpc. ΔŨ[(model. nu+ 1 ): (mpc. Hc* model. nu)]; zeros (NT, model. nu); ϵ0]
486+ ΔŨ0 = mpc. buffer. ΔŨ
487+ ΔŨ0[1 : (Hc* nu- nu)] .= @views mpc. ΔŨ[nu+ 1 : Hc* nu]
488+ ΔŨ0[(Hc* nu- nu+ 1 ): (Hc* nu)] .= 0
489+ mpc. nϵ == 1 && (ΔŨ0[end ] = mpc. ΔŨ[end ])
488490 JuMP. set_start_value .(ΔŨvar, ΔŨ0)
489491 set_objective_linear_coef! (mpc, ΔŨvar)
490492 try
0 commit comments