@@ -15,9 +15,9 @@ struct NonLinMPC{
15
15
ŷ :: Vector{NT}
16
16
Hp:: Int
17
17
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}}
21
21
C:: NT
22
22
E:: NT
23
23
JE:: JEfunc
@@ -50,7 +50,8 @@ struct NonLinMPC{
50
50
nu, ny, nd = model. nu, model. ny, model. nd
51
51
ŷ = copy (model. yop) # dummy vals (updated just before optimization)
52
52
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))
54
55
# dummy vals (updated just before optimization):
55
56
R̂y, R̂u, T_lastu = zeros (NT, ny* Hp), zeros (NT, nu* Hp), zeros (NT, nu* Hp)
56
57
noR̂u = iszero (L_Hp)
@@ -130,9 +131,9 @@ This method uses the default state estimator :
130
131
- `Mwt=fill(1.0,model.ny)` : main diagonal of ``\m athbf{M}`` weight matrix (vector).
131
132
- `Nwt=fill(0.1,model.nu)` : main diagonal of ``\m athbf{N}`` weight matrix (vector).
132
133
- `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}``.
136
137
- `Cwt=1e5` : slack variable weight ``C`` (scalar), use `Cwt=Inf` for hard constraints only.
137
138
- `Ewt=0.0` : economic costs weight ``E`` (scalar).
138
139
- `JE=(_,_,_)->0.0` : economic function ``J_E(\m athbf{U}_E, \m athbf{Ŷ}_E, \m athbf{D̂}_E)``.
@@ -179,9 +180,9 @@ function NonLinMPC(
179
180
Mwt = fill (DEFAULT_MWT, model. ny),
180
181
Nwt = fill (DEFAULT_NWT, model. nu),
181
182
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)),
185
186
Cwt = DEFAULT_CWT,
186
187
Ewt = DEFAULT_EWT,
187
188
JE:: Function = (_,_,_) -> 0.0 ,
@@ -199,9 +200,9 @@ function NonLinMPC(
199
200
Mwt = fill (DEFAULT_MWT, model. ny),
200
201
Nwt = fill (DEFAULT_NWT, model. nu),
201
202
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)),
205
206
Cwt = DEFAULT_CWT,
206
207
Ewt = DEFAULT_EWT,
207
208
JE:: Function = (_,_,_) -> 0.0 ,
@@ -242,9 +243,9 @@ function NonLinMPC(
242
243
Mwt = fill (DEFAULT_MWT, estim. model. ny),
243
244
Nwt = fill (DEFAULT_NWT, estim. model. nu),
244
245
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)),
248
249
Cwt = DEFAULT_CWT,
249
250
Ewt = DEFAULT_EWT,
250
251
JE:: JEFunc = (_,_,_) -> 0.0 ,
0 commit comments