11
11
@test mpc3. weights. Ñ_Hc[end ] ≈ 1e6
12
12
mpc4 = LinMPC (model, Mwt= [1 ,2 ], Hp= 15 )
13
13
@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}}}
14
15
mpc5 = LinMPC (model, Nwt= [3 ,4 ], Cwt= 1e3 , Hc= 5 )
15
16
@test mpc5. weights. Ñ_Hc ≈ Diagonal (diagm ([repeat (Float64[3 , 4 ], 5 ); [1e3 ]]))
17
+ @test mpc5. weights. Ñ_Hc isa Hermitian{Float64, Diagonal{Float64, Vector{Float64}}}
16
18
mpc6 = LinMPC (model, Lwt= [0 ,1 ], Hp= 15 )
17
19
@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}}}
18
21
mpc7 = @test_logs (
19
22
(:warn , " Solving time limit is not supported by the optimizer." ),
20
23
LinMPC (model, optim= JuMP. Model (DAQP. Optimizer))
26
29
mpc9 = LinMPC (model, nint_u= [1 , 1 ], nint_ym= [0 , 0 ])
27
30
@test mpc9. estim. nint_u == [1 , 1 ]
28
31
@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}}
35
41
model2 = LinModel {Float32} (0.5 * ones (1 ,1 ), ones (1 ,1 ), ones (1 ,1 ), zeros (1 ,0 ), zeros (1 ,0 ), 1.0 )
36
42
mpc13 = LinMPC (model2)
37
43
@test isa (mpc13, LinMPC{Float32})
44
+ @test isa (mpc13. estim, SteadyKalmanFilter{Float32})
38
45
@test isa (mpc13. optim, JuMP. GenericModel{Float64}) # OSQP does not support Float32
39
46
mpc14 = LinMPC (model2, transcription= MultipleShooting ())
40
47
@test mpc14. transcription == MultipleShooting ()
@@ -400,25 +407,32 @@ end
400
407
@test size (mpc1. Ẽ,1 ) == 15 * mpc1. estim. model. ny
401
408
mpc4 = ExplicitMPC (model, Mwt= [1 ,2 ], Hp= 15 )
402
409
@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}}}
403
411
mpc5 = ExplicitMPC (model, Nwt= [3 ,4 ], Hc= 5 )
404
412
@test mpc5. weights. Ñ_Hc ≈ Diagonal (diagm (repeat (Float64[3 , 4 ], 5 )))
413
+ @test mpc5. weights. Ñ_Hc isa Hermitian{Float64, Diagonal{Float64, Vector{Float64}}}
405
414
mpc6 = ExplicitMPC (model, Lwt= [0 ,1 ], Hp= 15 )
406
415
@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}}}
407
417
kf = KalmanFilter (model)
408
418
mpc8 = ExplicitMPC (kf)
409
419
@test isa (mpc8. estim, KalmanFilter)
410
420
mpc9 = ExplicitMPC (model, nint_u= [1 , 1 ], nint_ym= [0 , 0 ])
411
421
@test mpc9. estim. nint_u == [1 , 1 ]
412
422
@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}}
419
432
model2 = LinModel {Float32} (0.5 * ones (1 ,1 ), ones (1 ,1 ), ones (1 ,1 ), zeros (1 ,0 ), zeros (1 ,0 ), 1.0 )
420
433
mpc13 = ExplicitMPC (model2)
421
434
@test isa (mpc13, ExplicitMPC{Float32})
435
+ @test isa (mpc13. estim, SteadyKalmanFilter{Float32})
422
436
423
437
@test_logs (
424
438
(:warn ,
@@ -582,10 +596,13 @@ end
582
596
@test nmpc3. weights. Ñ_Hc[end ] == 1e6
583
597
nmpc4 = NonLinMPC (nonlinmodel, Hp= 15 , Mwt= [1 ,2 ])
584
598
@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}}}
585
600
nmpc5 = NonLinMPC (nonlinmodel, Hp= 15 ,Nwt= [3 ,4 ], Cwt= 1e3 , Hc= 5 )
586
601
@test nmpc5. weights. Ñ_Hc ≈ Diagonal (diagm ([repeat (Float64[3 , 4 ], 5 ); [1e3 ]]))
602
+ @test nmpc5. weights. Ñ_Hc isa Hermitian{Float64, Diagonal{Float64, Vector{Float64}}}
587
603
nmpc6 = NonLinMPC (nonlinmodel, Hp= 15 , Lwt= [0 ,1 ])
588
604
@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}}}
589
606
nmpc7 = NonLinMPC (nonlinmodel, Hp= 15 , Ewt= 1e-3 , JE= (Ue,Ŷe,D̂e,p) -> p* dot (Ue,Ŷe)+ sum (D̂e), p= 10 )
590
607
@test nmpc7. weights. E == 1e-3
591
608
@test nmpc7. JE ([1 ,2 ],[3 ,4 ],[4 ,6 ],10 ) == 10 * dot ([1 ,2 ],[3 ,4 ])+ sum ([4 ,6 ])
@@ -602,12 +619,15 @@ end
602
619
nmpc11 = NonLinMPC (nonlinmodel, Hp= 15 , nint_u= [1 , 1 ], nint_ym= [0 , 0 ])
603
620
@test nmpc11. estim. nint_u == [1 , 1 ]
604
621
@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}}
611
631
nmpc15 = NonLinMPC (nonlinmodel, Hp= 10 , gc= (Ue,Ŷe,D̂e,p,ϵ)-> [p* dot (Ue,Ŷe)+ sum (D̂e)+ ϵ], nc= 1 , p= 10 )
612
632
LHS = zeros (1 )
613
633
nmpc15. con. gc! (LHS,[1 ,2 ],[3 ,4 ],[4 ,6 ],10 ,0.1 )
632
652
nonlinmodel2 = NonLinModel {Float32} (f, h, Ts, 2 , 4 , 2 , 1 , solver= nothing )
633
653
nmpc15 = NonLinMPC (nonlinmodel2, Hp= 15 )
634
654
@test isa (nmpc15, NonLinMPC{Float32})
655
+ @test isa (nmpc15. estim, UnscentedKalmanFilter{Float32})
635
656
@test isa (nmpc15. optim, JuMP. GenericModel{Float64}) # Ipopt does not support Float32
636
657
637
658
@test_throws ArgumentError NonLinMPC (nonlinmodel, Hp= 15 , Ewt= [1 , 1 ])
0 commit comments