@@ -160,26 +160,26 @@ function initpred!(mpc::PredictiveController, model::LinModel, d, ym, D̂, R̂y,
160
160
ŷ, F, q̃, p = mpc. ŷ, mpc. F, mpc. q̃, mpc. p
161
161
ŷ .= evalŷ (mpc. estim, ym, d)
162
162
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 )
167
166
if model. nd ≠ 0
168
167
mpc. d0 .= d .- model. dop
169
168
mpc. D̂0 .= D̂ .- mpc. Dop
170
169
mpc. D̂E[1 : model. nd] .= mpc. d0
171
170
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 )
174
173
end
175
174
mpc. R̂y .= R̂y
176
- C_y = F_LHS
175
+ C_y = similar (F)
177
176
C_y .= mpc. F .- mpc. R̂y
178
177
q̃ .= lmul! (2 ,(mpc. M_Hp* mpc. Ẽ)' * C_y)
179
178
p .= dot (C_y, mpc. M_Hp, C_y)
180
179
if ~ mpc. noR̂u
181
180
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
183
183
mpc. q̃ .+ = lmul! (2 , (mpc. L_Hp* mpc. S̃)' * C_u)
184
184
mpc. p .+ = dot (C_u, mpc. L_Hp, C_u)
185
185
end
@@ -232,12 +232,11 @@ function predictstoch!(
232
232
ŷd .+ = estim. model. yop
233
233
ŷs = zeros (NT, estim. model. ny)
234
234
ŷ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)
238
235
for j= 1 : mpc. Hp
239
- Ŷop[(1 + ny* (j- 1 )): (ny* j)] .+ = yop
236
+ Ŷop[(1 + ny* (j- 1 )): (ny* j)] .= yop
240
237
end
238
+ mul! (Ŷop, mpc. Ks, estim. x̂s, 1 , 1 )
239
+ mul! (Ŷop, mpc. Ps, ŷs, 1 , 1 )
241
240
return nothing
242
241
end
243
242
" Separate stochastic predictions are not needed if `estim` is not [`InternalModel`](@ref)."
@@ -255,12 +254,11 @@ function linconstraint!(mpc::PredictiveController, model::LinModel)
255
254
nU, nΔŨ, nY = length (mpc. con. Umin), length (mpc. con. ΔŨmin), length (mpc. con. Ymin)
256
255
nx̂ = mpc. estim. nx̂
257
256
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 )
261
259
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 )
264
262
end
265
263
n = 0
266
264
mpc. con. b[(n+ 1 ): (n+ nU)] .= @. - mpc. con. Umin + mpc. T_lastu
0 commit comments