@@ -57,23 +57,51 @@ function test_model()
5757 # set some constraints
5858 f_path (r, t, x, u, v) = r .= x .+ u .+ v .+ t
5959 f_boundary (r, x0, xf, v) = r .= x0 .+ v .* (xf .- x0)
60- f_variable (r, t, v) = r . = v .+ t
60+
6161 CTModels. constraint! (pre_ocp, :path ; f= f_path, lb= [0 , 1 ], ub= [1 , 2 ], label= :path )
62- CTModels. constraint! (
63- pre_ocp, :boundary ; f= f_boundary, lb= [0 , 1 ], ub= [1 , 2 ], label= :boundary
64- )
65- CTModels. constraint! (pre_ocp, :state ; rg= 1 : 2 , lb= [0 , 1 ], ub= [1 , 2 ], label= :state_rg )
66- CTModels. constraint! (pre_ocp, :control ; rg= 1 : 2 , lb= [0 , 1 ], ub= [1 , 2 ], label= :control_rg )
67- CTModels. constraint! (
68- pre_ocp, :variable ; rg= 1 : 2 , lb= [0 , 1 ], ub= [1 , 2 ], label= :variable_rg
69- )
62+ CTModels. constraint! (pre_ocp, :boundary ; f= f_boundary, lb= [0 , 1 ], ub= [1 , 2 ], label= :boundary )
63+ CTModels. constraint! (pre_ocp, :state ; rg= 1 : 2 , lb= [0 , 1 ], ub= [1 , 2 ], label= :state )
64+ CTModels. constraint! (pre_ocp, :control ; rg= 1 : 2 , lb= [0 , 1 ], ub= [1 , 2 ], label= :control )
65+ CTModels. constraint! (pre_ocp, :variable ; rg= 1 : 2 , lb= [0 , 1 ], ub= [1 , 2 ], label= :variable )
66+
67+ f_path_scalar (r, t, x, u, v) = r .= x[1 ] + u[1 ] + v[1 ] + t
68+ f_boundary_scalar (r, x0, xf, v) = r .= x0[1 ] + v[1 ] * (xf[1 ] - x0[1 ])
69+ CTModels. constraint! (pre_ocp, :path ; f= f_path_scalar, lb= 0 , ub= 1 , label= :path_scalar )
70+ CTModels. constraint! (pre_ocp, :boundary ; f= f_boundary_scalar, lb= 0 , ub= 1 , label= :boundary_scalar )
71+ CTModels. constraint! (pre_ocp, :state ; rg= 1 , lb= 0 , ub= 1 , label= :state_scalar )
72+ CTModels. constraint! (pre_ocp, :control ; rg= 1 , lb= 0 , ub= 1 , label= :control_scalar )
73+ CTModels. constraint! (pre_ocp, :variable ; rg= 1 , lb= 0 , ub= 1 , label= :variable_scalar )
74+ CTModels. constraint! (pre_ocp, :state ; rg= 2 , lb= 0 , ub= 1 , label= :state_scalar_2 )
75+ CTModels. constraint! (pre_ocp, :control ; rg= 2 , lb= 0 , ub= 1 , label= :control_scalar_2 )
76+ CTModels. constraint! (pre_ocp, :variable ; rg= 2 , lb= 0 , ub= 1 , label= :variable_scalar_2 )
7077
7178 # build the model
7279 model = CTModels. build_model (pre_ocp)
7380
7481 # check the type of the model
7582 @test model isa CTModels. Model
7683
84+ # check retrieved constraints
85+ t = 1
86+ x = [2 , 3 ]
87+ u = [4 , 5 ]
88+ v = [6 , 7 ]
89+ x0 = [1 , 2 ]
90+ xf = [3 , 4 ]
91+ @test CTModels. constraint (model, :path )(t, x, u, v) == x .+ u .+ v .+ t
92+ @test CTModels. constraint (model, :boundary )(x0, xf, v) == x0 .+ v .* (xf .- x0)
93+ @test CTModels. constraint (model, :state )(t, x, u, v) == x
94+ @test CTModels. constraint (model, :control )(t, x, u, v) == u
95+ @test CTModels. constraint (model, :variable )(t, x, u, v) == v
96+ @test CTModels. constraint (model, :path_scalar )(t, x, u, v) == x[1 ] + u[1 ] + v[1 ] + t
97+ @test CTModels. constraint (model, :boundary_scalar )(x0, xf, v) == x0[1 ] + v[1 ] * (xf[1 ] - x0[1 ])
98+ @test CTModels. constraint (model, :state_scalar )(t, x, u, v) == x[1 ]
99+ @test CTModels. constraint (model, :control_scalar )(t, x, u, v) == u[1 ]
100+ @test CTModels. constraint (model, :variable_scalar )(t, x, u, v) == v[1 ]
101+ @test CTModels. constraint (model, :state_scalar_2 )(t, x, u, v) == x[2 ]
102+ @test CTModels. constraint (model, :control_scalar_2 )(t, x, u, v) == u[2 ]
103+ @test CTModels. constraint (model, :variable_scalar_2 )(t, x, u, v) == v[2 ]
104+
77105 # print the premodel
78106 display (pre_ocp)
79107
@@ -100,4 +128,5 @@ function test_model()
100128 CTModels. objective! (pre_ocp, :min ; mayer= mayer, lagrange= lagrange)
101129 CTModels. definition! (pre_ocp, quote end )
102130 display (pre_ocp)
131+
103132end
0 commit comments