Skip to content

Commit 6e8846a

Browse files
committed
added: MHE quadratic optimization
added: MHE bounds on What and Vhat
1 parent 2bd9355 commit 6e8846a

File tree

4 files changed

+381
-128
lines changed

4 files changed

+381
-128
lines changed

src/controller/linmpc.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ struct LinMPC{
5454
noR̂u = iszero(L_Hp)
5555
S, T = init_ΔUtoU(model, Hp, Hc)
5656
E, F, G, J, K, V, ex̂, fx̂, gx̂, jx̂, kx̂, vx̂ = init_predmat(estim, model, Hp, Hc)
57-
con, S̃, Ñ_Hc, Ẽ = init_defaultcon_mhe(estim, Hp, Hc, Cwt, S, N_Hc, E, ex̂, fx̂, gx̂, jx̂, kx̂, vx̂)
57+
con, S̃, Ñ_Hc, Ẽ = init_defaultcon_mpc(estim, Hp, Hc, Cwt, S, N_Hc, E, ex̂, fx̂, gx̂, jx̂, kx̂, vx̂)
5858
H̃, q̃, p = init_quadprog_mpc(model, Ẽ, S̃, M_Hp, Ñ_Hc, L_Hp)
5959
Ks, Ps = init_stochpred(estim, Hp)
6060
# dummy vals (updated just before optimization):

src/controller/nonlinmpc.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ struct NonLinMPC{
5555
noR̂u = iszero(L_Hp)
5656
S, T = init_ΔUtoU(model, Hp, Hc)
5757
E, F, G, J, K, V, ex̂, fx̂, gx̂, jx̂, kx̂, vx̂ = init_predmat(estim, model, Hp, Hc)
58-
con, S̃, Ñ_Hc, Ẽ = init_defaultcon_mhe(estim, Hp, Hc, Cwt, S, N_Hc, E, ex̂, fx̂, gx̂, jx̂, kx̂, vx̂)
58+
con, S̃, Ñ_Hc, Ẽ = init_defaultcon_mpc(estim, Hp, Hc, Cwt, S, N_Hc, E, ex̂, fx̂, gx̂, jx̂, kx̂, vx̂)
5959
H̃, q̃, p = init_quadprog_mpc(model, Ẽ, S̃, M_Hp, Ñ_Hc, L_Hp)
6060
Ks, Ps = init_stochpred(estim, Hp)
6161
# dummy vals (updated just before optimization):
@@ -344,19 +344,21 @@ function init_optimization!(mpc::NonLinMPC, optim::JuMP.GenericModel{JNT}) where
344344
register(optim, :Jfunc, nvar, Jfunc, autodiff=true)
345345
@NLobjective(optim, Min, Jfunc(ΔŨvar...))
346346
if ng 0
347-
i_end_Ymin, i_end_Ymax, i_end_x̂min = 1Hp*ny, 2Hp*ny, 2Hp*ny + nx̂
348347
for i in eachindex(con.Ymin)
349348
sym = Symbol("g_Ymin_$i")
350349
register(optim, sym, nvar, gfunc[i], autodiff=true)
351350
end
351+
i_end_Ymin = 1Hp*ny
352352
for i in eachindex(con.Ymax)
353353
sym = Symbol("g_Ymax_$i")
354354
register(optim, sym, nvar, gfunc[i_end_Ymin+i], autodiff=true)
355355
end
356+
i_end_Ymax = 2Hp*ny
356357
for i in eachindex(con.x̂min)
357358
sym = Symbol("g_x̂min_$i")
358359
register(optim, sym, nvar, gfunc[i_end_Ymax+i], autodiff=true)
359360
end
361+
i_end_x̂min = 2Hp*ny + nx̂
360362
for i in eachindex(con.x̂max)
361363
sym = Symbol("g_x̂max_$i")
362364
register(optim, sym, nvar, gfunc[i_end_x̂min+i], autodiff=true)

0 commit comments

Comments
 (0)