@@ -3,6 +3,9 @@ struct LinMPC{S<:StateEstimator} <: PredictiveController
33 optim:: JuMP.Model
44 info:: OptimInfo
55 con:: ControllerConstraint
6+ x̂d:: Vector{Float64}
7+ x̂s:: Vector{Float64}
8+ ŷ :: Vector{Float64}
69 Hp:: Int
710 Hc:: Int
811 M_Hp:: Diagonal{Float64, Vector{Float64}}
@@ -12,7 +15,6 @@ struct LinMPC{S<:StateEstimator} <: PredictiveController
1215 R̂u:: Vector{Float64}
1316 S̃_Hp:: Matrix{Bool}
1417 T_Hp:: Matrix{Bool}
15- S̃_Hc:: Matrix{Bool}
1618 T_Hc:: Matrix{Bool}
1719 Ẽ :: Matrix{Float64}
1820 F :: Vector{Float64}
@@ -28,7 +30,8 @@ struct LinMPC{S<:StateEstimator} <: PredictiveController
2830 Dop:: Vector{Float64}
2931 function LinMPC {S} (estim:: S , Hp, Hc, Mwt, Nwt, Lwt, Cwt, ru, optim) where {S<: StateEstimator }
3032 model = estim. model
31- nu, ny = model. nu, model. ny
33+ nu, nxd, nxs, ny = model. nu, model. nx, estim. nxs, model. ny
34+ x̂d, x̂s, ŷ = zeros (nxd), zeros (nxs), zeros (ny)
3235 validate_weights (model, Hp, Hc, Mwt, Nwt, Lwt, Cwt, ru)
3336 M_Hp = Diagonal {Float64} (repeat (Mwt, Hp))
3437 N_Hc = Diagonal {Float64} (repeat (Nwt, Hc))
@@ -48,7 +51,7 @@ struct LinMPC{S<:StateEstimator} <: PredictiveController
4851 repeat_constraints (Hp, Hc, c_umin, c_umax, c_Δumin, c_Δumax, c_ŷmin, c_ŷmax)
4952 S_Hp, T_Hp, S_Hc, T_Hc = init_ΔUtoU (nu, Hp, Hc)
5053 E, F, G, J, Kd, Q = init_deterpred (model, Hp, Hc)
51- A_Umin, A_Umax, S̃_Hp, S̃_Hc = relaxU (C, c_Umin, c_Umax, S_Hp, S_Hc)
54+ A_Umin, A_Umax, S̃_Hp = relaxU (C, c_Umin, c_Umax, S_Hp, S_Hc)
5255 A_ΔŨmin, A_ΔŨmax, ΔŨmin, ΔŨmax, Ñ_Hc = relaxΔU (C,c_ΔUmin,c_ΔUmax,ΔUmin,ΔUmax,N_Hc)
5356 A_Ŷmin, A_Ŷmax, Ẽ = relaxŶ (model, C, c_Ŷmin, c_Ŷmax, E)
5457 i_Umin, i_Umax = .! isinf .(Umin), .! isinf .(Umax)
@@ -80,9 +83,10 @@ struct LinMPC{S<:StateEstimator} <: PredictiveController
8083 info = OptimInfo (ΔŨ0, ϵ, 0 , u, U, ŷ, Ŷ, ŷs, Ŷs)
8184 mpc = new (
8285 estim, optim, info, con,
86+ x̂d, x̂s, ŷ,
8387 Hp, Hc,
8488 M_Hp, Ñ_Hc, L_Hp, Cwt, R̂u,
85- S̃_Hp, T_Hp, S̃_Hc, T_Hc,
89+ S̃_Hp, T_Hp, T_Hc,
8690 Ẽ, F, G, J, Kd, Q, P̃, q̃,
8791 Ks, Ps,
8892 Yop, Dop,
@@ -225,13 +229,13 @@ end
225229
226230Write `mpc.info` with the [`LinMPC`](@ref) optimization results.
227231"""
228- function write_info! (mpc:: LinMPC , ΔŨ, J, ŷs, Ŷs, lastu, ym, d )
232+ function write_info! (mpc:: LinMPC , ΔŨ, J, ŷs, Ŷs)
229233 mpc. info. ΔŨ = ΔŨ
230234 mpc. info. ϵ = isinf (mpc. C) ? NaN : ΔŨ[end ]
231235 mpc. info. J = J
232- mpc. info. U = mpc. S̃_Hp* ΔŨ + mpc. T_Hp* lastu
236+ mpc. info. U = mpc. S̃_Hp* ΔŨ + mpc. T_Hp* mpc . estim . lastu
233237 mpc. info. u = mpc. info. U[1 : mpc. estim. model. nu]
234- mpc. info. ŷ = eval_ŷ ( mpc. estim, ym, d)
238+ mpc. info. ŷ = mpc. ŷ
235239 mpc. info. Ŷ = mpc. Ẽ* ΔŨ + mpc. F
236240 mpc. info. ŷs, mpc. info. Ŷs = ŷs, Ŷs
237241end
0 commit comments