@@ -1473,7 +1473,7 @@ end
14731473 @test U_nonlinmpc1 ≈ U_nonlinmpc2 rtol= 1e-3 atol= 1e-3
14741474end
14751475
1476- @testitem " LinMPC v.s. NonLinMPC with move blocking" setup= [SetupMPCtests] begin
1476+ @testitem " All MPCs with move blocking" setup= [SetupMPCtests] begin
14771477 using . SetupMPCtests, ControlSystemsBase, LinearAlgebra
14781478 G = tf ( 10 , [400 , 1 ])
14791479 linmodel = LinModel (G, 100.0 )
@@ -1482,30 +1482,37 @@ end
14821482 nonlinmodel = NonLinModel (f, h, 100.0 , 1 , 1 , 1 , p= linmodel, solver= nothing )
14831483 Mwt, Nwt, Hp, Hc = [1 ], [0 ], 30 , [2 , 3 , 4 , 21 ]
14841484 N = 25
1485+ mpc0 = ExplicitMPC (linmodel; Mwt, Nwt, Hp, Hc)
14851486 mpc1 = LinMPC (linmodel; Mwt, Nwt, Hp, Hc, transcription= SingleShooting ())
14861487 mpc2 = LinMPC (linmodel; Mwt, Nwt, Hp, Hc, transcription= MultipleShooting ())
14871488 mpc3 = NonLinMPC (linmodel; Mwt, Nwt, Hp, Hc, transcription= SingleShooting ())
14881489 mpc4 = NonLinMPC (linmodel; Mwt, Nwt, Hp, Hc, transcription= MultipleShooting ())
14891490 mpc5 = NonLinMPC (nonlinmodel; Mwt, Nwt, Hp, Hc, transcription= SingleShooting ())
14901491 mpc6 = NonLinMPC (nonlinmodel; Mwt, Nwt, Hp, Hc, transcription= MultipleShooting ())
1492+ U0 = zeros (1 , N)
14911493 U1, U2, U3 = zeros (1 , N), zeros (1 , N), zeros (1 , N)
14921494 U4, U5, U6 = zeros (1 , N), zeros (1 , N), zeros (1 , N)
14931495 for i= 1 : N
14941496 r = [5.0 ]
14951497 y = linmodel ()
1498+ preparestate! (mpc0, y);
14961499 preparestate! (mpc1, y); preparestate! (mpc2, y); preparestate! (mpc3, y);
14971500 preparestate! (mpc4, y); preparestate! (mpc5, y); preparestate! (mpc6, y);
1501+ u0 = moveinput! (mpc0, r);
14981502 u1 = moveinput! (mpc1, r); u2 = moveinput! (mpc2, r); u3 = moveinput! (mpc3, r);
14991503 u4 = moveinput! (mpc4, r); u5 = moveinput! (mpc5, r); u6 = moveinput! (mpc6, r);
1504+ U0[:, i] = u0;
15001505 U1[:, i] = u1; U2[:, i] = u2; U3[:, i] = u3;
15011506 U4[:, i] = u4; U5[:, i] = u5; U6[:, i] = u6;
1507+ updatestate! (mpc0, u0, y);
15021508 updatestate! (mpc1, u1, y); updatestate! (mpc2, u2, y); updatestate! (mpc3, u3, y);
15031509 updatestate! (mpc4, u4, y); updatestate! (mpc5, u5, y); updatestate! (mpc6, u6, y);
15041510 updatestate! (linmodel, u1);
15051511 end
1506- @test U1 ≈ U2 rtol= 1e-3 atol= 1e-3
1507- @test U1 ≈ U3 rtol= 1e-3 atol= 1e-3
1508- @test U1 ≈ U4 rtol= 1e-3 atol= 1e-3
1509- @test U1 ≈ U5 rtol= 1e-3 atol= 1e-3
1510- @test U1 ≈ U6 rtol= 1e-3 atol= 1e-3
1512+ @test U0 ≈ U1 rtol= 1e-3 atol= 1e-3
1513+ @test U0 ≈ U2 rtol= 1e-3 atol= 1e-3
1514+ @test U0 ≈ U3 rtol= 1e-3 atol= 1e-3
1515+ @test U0 ≈ U4 rtol= 1e-3 atol= 1e-3
1516+ @test U0 ≈ U5 rtol= 1e-3 atol= 1e-3
1517+ @test U0 ≈ U6 rtol= 1e-3 atol= 1e-3
15111518end
0 commit comments