@@ -42,44 +42,6 @@ struct ControllerConstraint
4242 c_Ŷmax :: Vector{Float64}
4343end
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."
487449evalŷ! (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
676626" Return the quadratic programming objective function, see [`init_quadprog`](@ref)."
677627obj_quadprog (ΔŨ, P̃, q̃) = 0.5 * ΔŨ' * P̃* ΔŨ + q̃' * ΔŨ
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