Skip to content

Commit 61e8c45

Browse files
committed
function def order modification
1 parent d2b0782 commit 61e8c45

File tree

1 file changed

+49
-50
lines changed

1 file changed

+49
-50
lines changed

src/predictive_control.jl

Lines changed: 49 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -42,44 +42,6 @@ struct ControllerConstraint
4242
c_Ŷmax ::Vector{Float64}
4343
end
4444

45-
"""
46-
initdefaultcon(model, C, S_Hp, S_Hc, N_Hc, E)
47-
48-
Init `ContollerConstraint` struct with default paramaters.
49-
50-
Also return `S̃_Hp`, `Ñ_Hc` and `Ẽ` matrices for the the augmented decision vector `ΔŨ`.
51-
"""
52-
function init_defaultcon(model, Hp, Hc, C, S_Hp, S_Hc, N_Hc, E)
53-
nu, ny = model.nu, model.ny
54-
umin, umax = fill(-Inf, nu), fill(+Inf, nu)
55-
Δumin, Δumax = fill(-Inf, nu), fill(+Inf, nu)
56-
ŷmin, ŷmax = fill(-Inf, ny), fill(+Inf, ny)
57-
c_umin, c_umax = fill(0.0, nu), fill(0.0, nu)
58-
c_Δumin, c_Δumax = fill(0.0, nu), fill(0.0, nu)
59-
c_ŷmin, c_ŷmax = fill(1.0, ny), fill(1.0, ny)
60-
Umin, Umax, ΔUmin, ΔUmax, Ŷmin, Ŷmax =
61-
repeat_constraints(Hp, Hc, umin, umax, Δumin, Δumax, ŷmin, ŷmax)
62-
c_Umin, c_Umax, c_ΔUmin, c_ΔUmax, c_Ŷmin, c_Ŷmax =
63-
repeat_constraints(Hp, Hc, c_umin, c_umax, c_Δumin, c_Δumax, c_ŷmin, c_ŷmax)
64-
A_Umin, A_Umax, S̃_Hp = relaxU(C, c_Umin, c_Umax, S_Hp, S_Hc)
65-
A_ΔŨmin, A_ΔŨmax, ΔŨmin, ΔŨmax, Ñ_Hc = relaxΔU(C,c_ΔUmin,c_ΔUmax,ΔUmin,ΔUmax,N_Hc)
66-
A_Ŷmin, A_Ŷmax, Ẽ = relaxŶ(model, C, c_Ŷmin, c_Ŷmax, E)
67-
i_Umin, i_Umax = .!isinf.(Umin), .!isinf.(Umax)
68-
i_ΔŨmin, i_ΔŨmax = .!isinf.(ΔŨmin), .!isinf.(ΔŨmax)
69-
i_Ŷmin, i_Ŷmax = .!isinf.(Ŷmin), .!isinf.(Ŷmax)
70-
A, i_b, b = init_linconstraint(
71-
model,
72-
A_Umin, A_Umax, A_ΔŨmin, A_ΔŨmax, A_Ŷmin, A_Ŷmax,
73-
i_Umin, i_Umax, i_ΔŨmin, i_ΔŨmax, i_Ŷmin, i_Ŷmax
74-
)
75-
con = ControllerConstraint(
76-
Umin , Umax , ΔŨmin , ΔŨmax , Ŷmin , Ŷmax,
77-
A_Umin , A_Umax, A_ΔŨmin, A_ΔŨmax , A_Ŷmin, A_Ŷmax,
78-
A , b , i_b , i_Ŷmin, i_Ŷmax, c_Ŷmin, c_Ŷmax
79-
)
80-
return con, S̃_Hp, Ñ_Hc, Ẽ
81-
end
82-
8345
@doc raw"""
8446
setconstraint!(mpc::PredictiveController; <keyword arguments>)
8547
@@ -486,18 +448,6 @@ evalŷ!(estim::InternalModel, ym, d) = (mpc.ŷ[:] = estim(ym, d))
486448
"Evaluate current output of the other `StateEstimator`s."
487449
evalŷ!(estim::StateEstimator, _, d) = (mpc.ŷ[:] = estim(d))
488450

489-
"Repeat predictive controller constraints over prediction `Hp` and control `Hc` horizons."
490-
function repeat_constraints(Hp, Hc, umin, umax, Δumin, Δumax, ŷmin, ŷmax)
491-
Umin = repeat(umin, Hc)
492-
Umax = repeat(umax, Hc)
493-
ΔUmin = repeat(Δumin, Hc)
494-
ΔUmax = repeat(Δumax, Hc)
495-
Ŷmin = repeat(ŷmin, Hp)
496-
Ŷmax = repeat(ŷmax, Hp)
497-
return Umin, Umax, ΔUmin, ΔUmax, Ŷmin, Ŷmax
498-
end
499-
500-
501451
@doc raw"""
502452
init_ΔUtoU(nu, Hp, Hc, C, c_Umin, c_Umax)
503453
@@ -676,6 +626,55 @@ end
676626
"Return the quadratic programming objective function, see [`init_quadprog`](@ref)."
677627
obj_quadprog(ΔŨ, P̃, q̃) = 0.5*ΔŨ'**ΔŨ +'*ΔŨ
678628

629+
"""
630+
initdefaultcon(model, C, S_Hp, S_Hc, N_Hc, E)
631+
632+
Init `ContollerConstraint` struct with default paramaters.
633+
634+
Also return `S̃_Hp`, `Ñ_Hc` and `Ẽ` matrices for the the augmented decision vector `ΔŨ`.
635+
"""
636+
function init_defaultcon(model, Hp, Hc, C, S_Hp, S_Hc, N_Hc, E)
637+
nu, ny = model.nu, model.ny
638+
umin, umax = fill(-Inf, nu), fill(+Inf, nu)
639+
Δumin, Δumax = fill(-Inf, nu), fill(+Inf, nu)
640+
ŷmin, ŷmax = fill(-Inf, ny), fill(+Inf, ny)
641+
c_umin, c_umax = fill(0.0, nu), fill(0.0, nu)
642+
c_Δumin, c_Δumax = fill(0.0, nu), fill(0.0, nu)
643+
c_ŷmin, c_ŷmax = fill(1.0, ny), fill(1.0, ny)
644+
Umin, Umax, ΔUmin, ΔUmax, Ŷmin, Ŷmax =
645+
repeat_constraints(Hp, Hc, umin, umax, Δumin, Δumax, ŷmin, ŷmax)
646+
c_Umin, c_Umax, c_ΔUmin, c_ΔUmax, c_Ŷmin, c_Ŷmax =
647+
repeat_constraints(Hp, Hc, c_umin, c_umax, c_Δumin, c_Δumax, c_ŷmin, c_ŷmax)
648+
A_Umin, A_Umax, S̃_Hp = relaxU(C, c_Umin, c_Umax, S_Hp, S_Hc)
649+
A_ΔŨmin, A_ΔŨmax, ΔŨmin, ΔŨmax, Ñ_Hc = relaxΔU(C,c_ΔUmin,c_ΔUmax,ΔUmin,ΔUmax,N_Hc)
650+
A_Ŷmin, A_Ŷmax, Ẽ = relaxŶ(model, C, c_Ŷmin, c_Ŷmax, E)
651+
i_Umin, i_Umax = .!isinf.(Umin), .!isinf.(Umax)
652+
i_ΔŨmin, i_ΔŨmax = .!isinf.(ΔŨmin), .!isinf.(ΔŨmax)
653+
i_Ŷmin, i_Ŷmax = .!isinf.(Ŷmin), .!isinf.(Ŷmax)
654+
A, i_b, b = init_linconstraint(
655+
model,
656+
A_Umin, A_Umax, A_ΔŨmin, A_ΔŨmax, A_Ŷmin, A_Ŷmax,
657+
i_Umin, i_Umax, i_ΔŨmin, i_ΔŨmax, i_Ŷmin, i_Ŷmax
658+
)
659+
con = ControllerConstraint(
660+
Umin , Umax , ΔŨmin , ΔŨmax , Ŷmin , Ŷmax,
661+
A_Umin , A_Umax, A_ΔŨmin, A_ΔŨmax , A_Ŷmin, A_Ŷmax,
662+
A , b , i_b , i_Ŷmin, i_Ŷmax, c_Ŷmin, c_Ŷmax
663+
)
664+
return con, S̃_Hp, Ñ_Hc, Ẽ
665+
end
666+
667+
"Repeat predictive controller constraints over prediction `Hp` and control `Hc` horizons."
668+
function repeat_constraints(Hp, Hc, umin, umax, Δumin, Δumax, ŷmin, ŷmax)
669+
Umin = repeat(umin, Hc)
670+
Umax = repeat(umax, Hc)
671+
ΔUmin = repeat(Δumin, Hc)
672+
ΔUmax = repeat(Δumax, Hc)
673+
Ŷmin = repeat(ŷmin, Hp)
674+
Ŷmax = repeat(ŷmax, Hp)
675+
return Umin, Umax, ΔUmin, ΔUmax, Ŷmin, Ŷmax
676+
end
677+
679678
@doc raw"""
680679
relaxU(C, c_Umin, c_Umax, S_Hp, S_Hc)
681680

0 commit comments

Comments
 (0)