@@ -15,9 +15,9 @@ struct NonLinMPC{
1515 ŷ :: Vector{NT}
1616 Hp:: Int
1717 Hc:: Int
18- M_Hp:: Diagonal {NT, Vector {NT}}
19- Ñ_Hc:: Diagonal {NT, Vector {NT}}
20- L_Hp:: Diagonal {NT, Vector {NT}}
18+ M_Hp:: Hermitian {NT, Matrix {NT}}
19+ Ñ_Hc:: Hermitian {NT, Matrix {NT}}
20+ L_Hp:: Hermitian {NT, Matrix {NT}}
2121 C:: NT
2222 E:: NT
2323 JE:: JEfunc
@@ -50,7 +50,8 @@ struct NonLinMPC{
5050 nu, ny, nd = model. nu, model. ny, model. nd
5151 ŷ = copy (model. yop) # dummy vals (updated just before optimization)
5252 validate_weights (model, Hp, Hc, M_Hp, N_Hc, L_Hp, Cwt, Ewt)
53- M_Hp, N_Hc, L_Hp = Diagonal {NT} (M_Hp), Diagonal {NT} (N_Hc), Diagonal {NT} (L_Hp) # debug julia 1.6
53+ # Matrix() call is needed to convert `Diagonal` to normal `Matrix`
54+ M_Hp, N_Hc, L_Hp = Hermitian (Matrix (M_Hp)), Hermitian (Matrix (N_Hc)), Hermitian (Matrix (L_Hp))
5455 # dummy vals (updated just before optimization):
5556 R̂y, R̂u, T_lastu = zeros (NT, ny* Hp), zeros (NT, nu* Hp), zeros (NT, nu* Hp)
5657 noR̂u = iszero (L_Hp)
@@ -130,9 +131,9 @@ This method uses the default state estimator :
130131- `Mwt=fill(1.0,model.ny)` : main diagonal of ``\m athbf{M}`` weight matrix (vector).
131132- `Nwt=fill(0.1,model.nu)` : main diagonal of ``\m athbf{N}`` weight matrix (vector).
132133- `Lwt=fill(0.0,model.nu)` : main diagonal of ``\m athbf{L}`` weight matrix (vector).
133- - `M_Hp=Diagonal (repeat(Mwt) ,Hp)` : diagonal weight matrix ``\m athbf{M}_{H_p}``.
134- - `N_Hc=Diagonal (repeat(Nwt) ,Hc)` : diagonal weight matrix ``\m athbf{N}_{H_c}``.
135- - `L_Hp=Diagonal (repeat(Lwt) ,Hp)` : diagonal weight matrix ``\m athbf{L}_{H_p}``.
134+ - `M_Hp=diagm (repeat(Mwt,Hp)) ` : positive semidefinite symmetric matrix ``\m athbf{M}_{H_p}``.
135+ - `N_Hc=diagm (repeat(Nwt,Hc)) ` : positive semidefinite symmetric matrix ``\m athbf{N}_{H_c}``.
136+ - `L_Hp=diagm (repeat(Lwt,Hp)) ` : positive semidefinite symmetric matrix ``\m athbf{L}_{H_p}``.
136137- `Cwt=1e5` : slack variable weight ``C`` (scalar), use `Cwt=Inf` for hard constraints only.
137138- `Ewt=0.0` : economic costs weight ``E`` (scalar).
138139- `JE=(_,_,_)->0.0` : economic function ``J_E(\m athbf{U}_E, \m athbf{Ŷ}_E, \m athbf{D̂}_E)``.
@@ -179,9 +180,9 @@ function NonLinMPC(
179180 Mwt = fill (DEFAULT_MWT, model. ny),
180181 Nwt = fill (DEFAULT_NWT, model. nu),
181182 Lwt = fill (DEFAULT_LWT, model. nu),
182- M_Hp = Diagonal (repeat (Mwt, Hp)),
183- N_Hc = Diagonal (repeat (Nwt, Hc)),
184- L_Hp = Diagonal (repeat (Lwt, Hp)),
183+ M_Hp = diagm (repeat (Mwt, Hp)),
184+ N_Hc = diagm (repeat (Nwt, Hc)),
185+ L_Hp = diagm (repeat (Lwt, Hp)),
185186 Cwt = DEFAULT_CWT,
186187 Ewt = DEFAULT_EWT,
187188 JE:: Function = (_,_,_) -> 0.0 ,
@@ -199,9 +200,9 @@ function NonLinMPC(
199200 Mwt = fill (DEFAULT_MWT, model. ny),
200201 Nwt = fill (DEFAULT_NWT, model. nu),
201202 Lwt = fill (DEFAULT_LWT, model. nu),
202- M_Hp = Diagonal (repeat (Mwt, Hp)),
203- N_Hc = Diagonal (repeat (Nwt, Hc)),
204- L_Hp = Diagonal (repeat (Lwt, Hp)),
203+ M_Hp = diagm (repeat (Mwt, Hp)),
204+ N_Hc = diagm (repeat (Nwt, Hc)),
205+ L_Hp = diagm (repeat (Lwt, Hp)),
205206 Cwt = DEFAULT_CWT,
206207 Ewt = DEFAULT_EWT,
207208 JE:: Function = (_,_,_) -> 0.0 ,
@@ -242,9 +243,9 @@ function NonLinMPC(
242243 Mwt = fill (DEFAULT_MWT, estim. model. ny),
243244 Nwt = fill (DEFAULT_NWT, estim. model. nu),
244245 Lwt = fill (DEFAULT_LWT, estim. model. nu),
245- M_Hp = Diagonal (repeat (Mwt, Hp)),
246- N_Hc = Diagonal (repeat (Nwt, Hc)),
247- L_Hp = Diagonal (repeat (Lwt, Hp)),
246+ M_Hp = diagm (repeat (Mwt, Hp)),
247+ N_Hc = diagm (repeat (Nwt, Hc)),
248+ L_Hp = diagm (repeat (Lwt, Hp)),
248249 Cwt = DEFAULT_CWT,
249250 Ewt = DEFAULT_EWT,
250251 JE:: JEFunc = (_,_,_) -> 0.0 ,
0 commit comments