@@ -160,26 +160,26 @@ function initpred!(mpc::PredictiveController, model::LinModel, d, ym, D̂, R̂y,
160160 ŷ, F, q̃, p = mpc. ŷ, mpc. F, mpc. q̃, mpc. p
161161 ŷ .= evalŷ (mpc. estim, ym, d)
162162 predictstoch! (mpc, mpc. estim, d, ym) # init mpc.Ŷop for InternalModel
163- F_LHS = similar (F)
164- F .= mul! (F_LHS, mpc. K, mpc. estim. x̂)
165- F .+ = mul! (F_LHS, mpc. V, mpc. estim. lastu0)
166- F .+ = mpc. Ŷop
163+ F .= mpc. Ŷop
164+ mul! (F, mpc. K, mpc. estim. x̂, 1 , 1 )
165+ mul! (F, mpc. V, mpc. estim. lastu0, 1 , 1 )
167166 if model. nd ≠ 0
168167 mpc. d0 .= d .- model. dop
169168 mpc. D̂0 .= D̂ .- mpc. Dop
170169 mpc. D̂E[1 : model. nd] .= mpc. d0
171170 mpc. D̂E[model. nd+ 1 : end ] .= mpc. D̂0
172- F .+ = mul! (F_LHS , mpc. G, mpc. d0)
173- F .+ = mul! (F_LHS , mpc. J, mpc. D̂0)
171+ mul! (F , mpc. G, mpc. d0, 1 , 1 )
172+ mul! (F , mpc. J, mpc. D̂0, 1 , 1 )
174173 end
175174 mpc. R̂y .= R̂y
176- C_y = F_LHS
175+ C_y = similar (F)
177176 C_y .= mpc. F .- mpc. R̂y
178177 q̃ .= lmul! (2 ,(mpc. M_Hp* mpc. Ẽ)' * C_y)
179178 p .= dot (C_y, mpc. M_Hp, C_y)
180179 if ~ mpc. noR̂u
181180 mpc. R̂u .= R̂u
182- C_u = mpc. T_lastu .- mpc. R̂u
181+ C_u = similar (mpc. T_lastu)
182+ C_u .= mpc. T_lastu .- mpc. R̂u
183183 mpc. q̃ .+ = lmul! (2 , (mpc. L_Hp* mpc. S̃)' * C_u)
184184 mpc. p .+ = dot (C_u, mpc. L_Hp, C_u)
185185 end
@@ -232,12 +232,11 @@ function predictstoch!(
232232 ŷd .+ = estim. model. yop
233233 ŷs = zeros (NT, estim. model. ny)
234234 ŷs[estim. i_ym] .= @views ym .- ŷd[estim. i_ym] # ŷs=0 for unmeasured outputs
235- Ŷop_LHS = similar (Ŷop)
236- Ŷop .= mul! (Ŷop_LHS, mpc. Ks, estim. x̂s)
237- Ŷop .+ = mul! (Ŷop_LHS, mpc. Ps, ŷs)
238235 for j= 1 : mpc. Hp
239- Ŷop[(1 + ny* (j- 1 )): (ny* j)] .+ = yop
236+ Ŷop[(1 + ny* (j- 1 )): (ny* j)] .= yop
240237 end
238+ mul! (Ŷop, mpc. Ks, estim. x̂s, 1 , 1 )
239+ mul! (Ŷop, mpc. Ps, ŷs, 1 , 1 )
241240 return nothing
242241end
243242" Separate stochastic predictions are not needed if `estim` is not [`InternalModel`](@ref)."
@@ -255,12 +254,11 @@ function linconstraint!(mpc::PredictiveController, model::LinModel)
255254 nU, nΔŨ, nY = length (mpc. con. Umin), length (mpc. con. ΔŨmin), length (mpc. con. Ymin)
256255 nx̂ = mpc. estim. nx̂
257256 fx̂ = mpc. con. fx̂
258- fx̂_LHS = similar (fx̂)
259- fx̂ .= mul! (fx̂_LHS, mpc. con. kx̂, mpc. estim. x̂)
260- fx̂ .+ = mul! (fx̂_LHS, mpc. con. vx̂, mpc. estim. lastu0)
257+ mul! (fx̂, mpc. con. kx̂, mpc. estim. x̂)
258+ mul! (fx̂, mpc. con. vx̂, mpc. estim. lastu0, 1 , 1 )
261259 if model. nd ≠ 0
262- fx̂ .+ = mul! (fx̂_LHS , mpc. con. gx̂, mpc. d0)
263- fx̂ .+ = mul! (fx̂_LHS , mpc. con. jx̂, mpc. D̂0)
260+ mul! (fx̂ , mpc. con. gx̂, mpc. d0, 1 , 1 )
261+ mul! (fx̂ , mpc. con. jx̂, mpc. D̂0, 1 , 1 )
264262 end
265263 n = 0
266264 mpc. con. b[(n+ 1 ): (n+ nU)] .= @. - mpc. con. Umin + mpc. T_lastu
0 commit comments