1111 @test mpc3. weights. Ñ_Hc[end ] ≈ 1e6
1212 mpc4 = LinMPC (model, Mwt= [1 ,2 ], Hp= 15 )
1313 @test mpc4. weights. M_Hp ≈ Diagonal (diagm (repeat (Float64[1 , 2 ], 15 )))
14+ @test mpc4. weights. M_Hp isa Hermitian{Float64, Diagonal{Float64, Vector{Float64}}}
1415 mpc5 = LinMPC (model, Nwt= [3 ,4 ], Cwt= 1e3 , Hc= 5 )
1516 @test mpc5. weights. Ñ_Hc ≈ Diagonal (diagm ([repeat (Float64[3 , 4 ], 5 ); [1e3 ]]))
17+ @test mpc5. weights. Ñ_Hc isa Hermitian{Float64, Diagonal{Float64, Vector{Float64}}}
1618 mpc6 = LinMPC (model, Lwt= [0 ,1 ], Hp= 15 )
1719 @test mpc6. weights. L_Hp ≈ Diagonal (diagm (repeat (Float64[0 , 1 ], 15 )))
20+ @test mpc6. weights. L_Hp isa Hermitian{Float64, Diagonal{Float64, Vector{Float64}}}
1821 mpc7 = @test_logs (
1922 (:warn , " Solving time limit is not supported by the optimizer." ),
2023 LinMPC (model, optim= JuMP. Model (DAQP. Optimizer))
2629 mpc9 = LinMPC (model, nint_u= [1 , 1 ], nint_ym= [0 , 0 ])
2730 @test mpc9. estim. nint_u == [1 , 1 ]
2831 @test mpc9. estim. nint_ym == [0 , 0 ]
29- mpc10 = LinMPC (model, M_Hp= Diagonal (collect (1.01 : 0.01 : 1.2 )))
30- @test mpc10. weights. M_Hp ≈ Diagonal (collect (1.01 : 0.01 : 1.2 ))
31- mpc11 = LinMPC (model, N_Hc= Diagonal ([0.1 ,0.11 ,0.12 ,0.13 ]), Cwt= Inf )
32- @test mpc11. weights. Ñ_Hc ≈ Diagonal ([0.1 ,0.11 ,0.12 ,0.13 ])
33- mcp12 = LinMPC (model, L_Hp= Diagonal (collect (0.001 : 0.001 : 0.02 )))
34- @test mcp12. weights. L_Hp ≈ Diagonal (collect (0.001 : 0.001 : 0.02 ))
32+ mpc10 = LinMPC (model, M_Hp= diagm (collect (1.01 : 0.01 : 1.2 )))
33+ @test mpc10. weights. M_Hp ≈ diagm (collect (1.01 : 0.01 : 1.2 ))
34+ @test mpc10. weights. M_Hp isa Hermitian{Float64, Matrix{Float64}}
35+ mpc11 = LinMPC (model, N_Hc= diagm ([0.1 ,0.11 ,0.12 ,0.13 ]), Cwt= Inf )
36+ @test mpc11. weights. Ñ_Hc ≈ diagm ([0.1 ,0.11 ,0.12 ,0.13 ])
37+ @test mpc11. weights. Ñ_Hc isa Hermitian{Float64, Matrix{Float64}}
38+ mcp12 = LinMPC (model, L_Hp= diagm (collect (0.001 : 0.001 : 0.02 )))
39+ @test mcp12. weights. L_Hp ≈ diagm (collect (0.001 : 0.001 : 0.02 ))
40+ @test mcp12. weights. L_Hp isa Hermitian{Float64, Matrix{Float64}}
3541 model2 = LinModel {Float32} (0.5 * ones (1 ,1 ), ones (1 ,1 ), ones (1 ,1 ), zeros (1 ,0 ), zeros (1 ,0 ), 1.0 )
3642 mpc13 = LinMPC (model2)
3743 @test isa (mpc13, LinMPC{Float32})
44+ @test isa (mpc13. estim, SteadyKalmanFilter{Float32})
3845 @test isa (mpc13. optim, JuMP. GenericModel{Float64}) # OSQP does not support Float32
3946 mpc14 = LinMPC (model2, transcription= MultipleShooting ())
4047 @test mpc14. transcription == MultipleShooting ()
@@ -400,25 +407,32 @@ end
400407 @test size (mpc1. Ẽ,1 ) == 15 * mpc1. estim. model. ny
401408 mpc4 = ExplicitMPC (model, Mwt= [1 ,2 ], Hp= 15 )
402409 @test mpc4. weights. M_Hp ≈ Diagonal (diagm (repeat (Float64[1 , 2 ], 15 )))
410+ @test mpc4. weights. M_Hp isa Hermitian{Float64, Diagonal{Float64, Vector{Float64}}}
403411 mpc5 = ExplicitMPC (model, Nwt= [3 ,4 ], Hc= 5 )
404412 @test mpc5. weights. Ñ_Hc ≈ Diagonal (diagm (repeat (Float64[3 , 4 ], 5 )))
413+ @test mpc5. weights. Ñ_Hc isa Hermitian{Float64, Diagonal{Float64, Vector{Float64}}}
405414 mpc6 = ExplicitMPC (model, Lwt= [0 ,1 ], Hp= 15 )
406415 @test mpc6. weights. L_Hp ≈ Diagonal (diagm (repeat (Float64[0 , 1 ], 15 )))
416+ @test mpc6. weights. L_Hp isa Hermitian{Float64, Diagonal{Float64, Vector{Float64}}}
407417 kf = KalmanFilter (model)
408418 mpc8 = ExplicitMPC (kf)
409419 @test isa (mpc8. estim, KalmanFilter)
410420 mpc9 = ExplicitMPC (model, nint_u= [1 , 1 ], nint_ym= [0 , 0 ])
411421 @test mpc9. estim. nint_u == [1 , 1 ]
412422 @test mpc9. estim. nint_ym == [0 , 0 ]
413- mpc10 = ExplicitMPC (model, M_Hp= Diagonal (collect (1.01 : 0.01 : 1.2 )))
414- @test mpc10. weights. M_Hp ≈ Diagonal (collect (1.01 : 0.01 : 1.2 ))
415- mpc11 = ExplicitMPC (model, N_Hc= Diagonal ([0.1 ,0.11 ,0.12 ,0.13 ]))
416- @test mpc11. weights. Ñ_Hc ≈ Diagonal ([0.1 ,0.11 ,0.12 ,0.13 ])
417- mcp12 = ExplicitMPC (model, L_Hp= Diagonal (collect (0.001 : 0.001 : 0.02 )))
418- @test mcp12. weights. L_Hp ≈ Diagonal (collect (0.001 : 0.001 : 0.02 ))
423+ mpc10 = ExplicitMPC (model, M_Hp= diagm (collect (1.01 : 0.01 : 1.2 )))
424+ @test mpc10. weights. M_Hp ≈ diagm (collect (1.01 : 0.01 : 1.2 ))
425+ @test mpc10. weights. M_Hp isa Hermitian{Float64, Matrix{Float64}}
426+ mpc11 = ExplicitMPC (model, N_Hc= diagm ([0.1 ,0.11 ,0.12 ,0.13 ]))
427+ @test mpc11. weights. Ñ_Hc ≈ diagm ([0.1 ,0.11 ,0.12 ,0.13 ])
428+ @test mpc11. weights. Ñ_Hc isa Hermitian{Float64, Matrix{Float64}}
429+ mcp12 = ExplicitMPC (model, L_Hp= diagm (collect (0.001 : 0.001 : 0.02 )))
430+ @test mcp12. weights. L_Hp ≈ diagm (collect (0.001 : 0.001 : 0.02 ))
431+ @test mcp12. weights. L_Hp isa Hermitian{Float64, Matrix{Float64}}
419432 model2 = LinModel {Float32} (0.5 * ones (1 ,1 ), ones (1 ,1 ), ones (1 ,1 ), zeros (1 ,0 ), zeros (1 ,0 ), 1.0 )
420433 mpc13 = ExplicitMPC (model2)
421434 @test isa (mpc13, ExplicitMPC{Float32})
435+ @test isa (mpc13. estim, SteadyKalmanFilter{Float32})
422436
423437 @test_logs (
424438 (:warn ,
@@ -582,10 +596,13 @@ end
582596 @test nmpc3. weights. Ñ_Hc[end ] == 1e6
583597 nmpc4 = NonLinMPC (nonlinmodel, Hp= 15 , Mwt= [1 ,2 ])
584598 @test nmpc4. weights. M_Hp ≈ Diagonal (diagm (repeat (Float64[1 , 2 ], 15 )))
599+ @test nmpc4. weights. M_Hp isa Hermitian{Float64, Diagonal{Float64, Vector{Float64}}}
585600 nmpc5 = NonLinMPC (nonlinmodel, Hp= 15 ,Nwt= [3 ,4 ], Cwt= 1e3 , Hc= 5 )
586601 @test nmpc5. weights. Ñ_Hc ≈ Diagonal (diagm ([repeat (Float64[3 , 4 ], 5 ); [1e3 ]]))
602+ @test nmpc5. weights. Ñ_Hc isa Hermitian{Float64, Diagonal{Float64, Vector{Float64}}}
587603 nmpc6 = NonLinMPC (nonlinmodel, Hp= 15 , Lwt= [0 ,1 ])
588604 @test nmpc6. weights. L_Hp ≈ Diagonal (diagm (repeat (Float64[0 , 1 ], 15 )))
605+ @test nmpc6. weights. L_Hp isa Hermitian{Float64, Diagonal{Float64, Vector{Float64}}}
589606 nmpc7 = NonLinMPC (nonlinmodel, Hp= 15 , Ewt= 1e-3 , JE= (Ue,Ŷe,D̂e,p) -> p* dot (Ue,Ŷe)+ sum (D̂e), p= 10 )
590607 @test nmpc7. weights. E == 1e-3
591608 @test nmpc7. JE ([1 ,2 ],[3 ,4 ],[4 ,6 ],10 ) == 10 * dot ([1 ,2 ],[3 ,4 ])+ sum ([4 ,6 ])
@@ -602,12 +619,15 @@ end
602619 nmpc11 = NonLinMPC (nonlinmodel, Hp= 15 , nint_u= [1 , 1 ], nint_ym= [0 , 0 ])
603620 @test nmpc11. estim. nint_u == [1 , 1 ]
604621 @test nmpc11. estim. nint_ym == [0 , 0 ]
605- nmpc12 = NonLinMPC (nonlinmodel, Hp= 10 , M_Hp= Diagonal (collect (1.01 : 0.01 : 1.2 )))
606- @test nmpc12. weights. M_Hp ≈ Diagonal (collect (1.01 : 0.01 : 1.2 ))
607- nmpc13 = NonLinMPC (nonlinmodel, Hp= 10 , N_Hc= Diagonal ([0.1 ,0.11 ,0.12 ,0.13 ]), Cwt= Inf )
608- @test nmpc13. weights. Ñ_Hc ≈ Diagonal ([0.1 ,0.11 ,0.12 ,0.13 ])
609- nmcp14 = NonLinMPC (nonlinmodel, Hp= 10 , L_Hp= Diagonal (collect (0.001 : 0.001 : 0.02 )))
610- @test nmcp14. weights. L_Hp ≈ Diagonal (collect (0.001 : 0.001 : 0.02 ))
622+ nmpc12 = NonLinMPC (nonlinmodel, Hp= 10 , M_Hp= diagm (collect (1.01 : 0.01 : 1.2 )))
623+ @test nmpc12. weights. M_Hp ≈ diagm (collect (1.01 : 0.01 : 1.2 ))
624+ @test nmpc12. weights. M_Hp isa Hermitian{Float64, Matrix{Float64}}
625+ nmpc13 = NonLinMPC (nonlinmodel, Hp= 10 , N_Hc= diagm ([0.1 ,0.11 ,0.12 ,0.13 ]), Cwt= Inf )
626+ @test nmpc13. weights. Ñ_Hc ≈ diagm ([0.1 ,0.11 ,0.12 ,0.13 ])
627+ @test nmpc13. weights. Ñ_Hc isa Hermitian{Float64, Matrix{Float64}}
628+ nmcp14 = NonLinMPC (nonlinmodel, Hp= 10 , L_Hp= diagm (collect (0.001 : 0.001 : 0.02 )))
629+ @test nmcp14. weights. L_Hp ≈ diagm (collect (0.001 : 0.001 : 0.02 ))
630+ @test nmcp14. weights. L_Hp isa Hermitian{Float64, Matrix{Float64}}
611631 nmpc15 = NonLinMPC (nonlinmodel, Hp= 10 , gc= (Ue,Ŷe,D̂e,p,ϵ)-> [p* dot (Ue,Ŷe)+ sum (D̂e)+ ϵ], nc= 1 , p= 10 )
612632 LHS = zeros (1 )
613633 nmpc15. con. gc! (LHS,[1 ,2 ],[3 ,4 ],[4 ,6 ],10 ,0.1 )
632652 nonlinmodel2 = NonLinModel {Float32} (f, h, Ts, 2 , 4 , 2 , 1 , solver= nothing )
633653 nmpc15 = NonLinMPC (nonlinmodel2, Hp= 15 )
634654 @test isa (nmpc15, NonLinMPC{Float32})
655+ @test isa (nmpc15. estim, UnscentedKalmanFilter{Float32})
635656 @test isa (nmpc15. optim, JuMP. GenericModel{Float64}) # Ipopt does not support Float32
636657
637658 @test_throws ArgumentError NonLinMPC (nonlinmodel, Hp= 15 , Ewt= [1 , 1 ])
0 commit comments