@@ -6,70 +6,76 @@ function remove_if_exists(filename::String)
66end
77
88function test_export_import ()
9- try
10- #
11- ocp, sol = solution_example ()
129
13- # JSON
14- CTModels. export_ocp_solution (sol; filename= " solution_test" , format= :JSON )
15- sol_reloaded = CTModels. import_ocp_solution (
16- ocp; filename= " solution_test" , format= :JSON
17- )
18- @test sol. objective ≈ sol_reloaded. objective atol= 1e-8
10+ #
11+ ocp, sol = solution_example ()
1912
20- # JLD
21- CTModels. export_ocp_solution (sol; filename= " solution_test" ) # default is :JLD)
22- sol_reloaded = CTModels. import_ocp_solution (
23- ocp; filename= " solution_test" , format= :JLD
24- )
25- @test sol. objective ≈ sol_reloaded. objective atol= 1e-8
13+ # JSON
14+ CTModels. export_ocp_solution (sol; filename= " solution_test" , format= :JSON )
15+ sol_reloaded = CTModels. import_ocp_solution (
16+ ocp; filename= " solution_test" , format= :JSON
17+ )
18+ @test sol. objective ≈ sol_reloaded. objective atol= 1e-8
19+ @test CTModels. objective (sol) ≈ CTModels. objective (sol_reloaded) atol= 1e-8
2620
27- #
28- ocp, sol = solution_example (; fun= true )
21+ # JLD
22+ CTModels. export_ocp_solution (sol; filename= " solution_test" ) # default is :JLD)
23+ sol_reloaded = CTModels. import_ocp_solution (
24+ ocp; filename= " solution_test" , format= :JLD
25+ )
26+ @test sol. objective ≈ sol_reloaded. objective atol= 1e-8
27+ @test CTModels. objective (sol) ≈ CTModels. objective (sol_reloaded) atol= 1e-8
2928
30- # JSON
31- CTModels. export_ocp_solution (sol; filename= " solution_test" , format= :JSON )
32- sol_reloaded = CTModels. import_ocp_solution (
33- ocp; filename= " solution_test" , format= :JSON
34- )
35- @test sol. objective ≈ sol_reloaded. objective atol= 1e-8
29+ #
30+ ocp, sol = solution_example (; fun= true )
3631
37- # JLD
38- CTModels. export_ocp_solution (sol; filename= " solution_test" , format= :JLD )
39- sol_reloaded = CTModels. import_ocp_solution (
40- ocp; filename= " solution_test" , format= :JLD
41- )
42- @test sol. objective ≈ sol_reloaded. objective atol= 1e-8
32+ # JSON
33+ CTModels. export_ocp_solution (sol; filename= " solution_test" , format= :JSON )
34+ sol_reloaded = CTModels. import_ocp_solution (
35+ ocp; filename= " solution_test" , format= :JSON
36+ )
37+ @test sol. objective ≈ sol_reloaded. objective atol= 1e-8
38+ @test CTModels. objective (sol) ≈ CTModels. objective (sol_reloaded) atol= 1e-8
4339
44- # --------------------------------------------------------------------------------------
45- # Other problem
46- ocp = @def begin
47- t ∈ [0 , 1 ], time
48- x ∈ R², state
49- u ∈ R, control
50- x₂ (t) ≤ 1.2
51- x (0 ) == [- 1 , 0 ]
52- x (1 ) == [0 , 0 ]
53- ẋ (t) == [x₂ (t), u (t)]
54- ∫ (0.5 u (t)^ 2 ) → min
55- end ;
40+ # JLD
41+ CTModels. export_ocp_solution (sol; filename= " solution_test" , format= :JLD )
42+ sol_reloaded = CTModels. import_ocp_solution (
43+ ocp; filename= " solution_test" , format= :JLD
44+ )
45+ @test sol. objective ≈ sol_reloaded. objective atol= 1e-8
46+ @test CTModels. objective (sol) ≈ CTModels. objective (sol_reloaded) atol= 1e-8
5647
57- sol = CTDirect. solve (ocp)
48+ # --------------------------------------------------------------------------------------
49+ # Other problem
50+ ocp = @def begin
51+ t ∈ [0 , 1 ], time
52+ x ∈ R², state
53+ u ∈ R, control
54+ x₂ (t) ≤ 1.2
55+ x (0 ) == [- 1 , 0 ]
56+ x (1 ) == [0 , 0 ]
57+ ẋ (t) == [x₂ (t), u (t)]
58+ ∫ (0.5 u (t)^ 2 ) → min
59+ end ;
5860
59- # JLD
60- CTModels. export_ocp_solution (sol; filename= " solution_test" )
61- sol_reloaded = CTModels. import_ocp_solution (ocp; filename= " solution_test" )
62- @test sol. objective ≈ sol_reloaded. objective atol= 1e-8
61+ sol = CTDirect. solve (ocp)
6362
64- # JSON
65- CTModels. export_ocp_solution (sol; filename= " solution_test" , format= :JSON )
66- sol_reloaded = CTModels. import_ocp_solution (
67- ocp; filename= " solution_test" , format= :JSON
68- )
69- @test sol. objective ≈ sol_reloaded. objective atol= 1e-8
63+ # JLD
64+ CTModels. export_ocp_solution (sol; filename= " solution_test" )
65+ sol_reloaded = CTModels. import_ocp_solution (ocp; filename= " solution_test" )
66+ @test sol. objective ≈ sol_reloaded. objective atol= 1e-8
67+ @test CTModels. objective (sol) ≈ CTModels. objective (sol_reloaded) atol= 1e-8
68+
69+ # JSON
70+ CTModels. export_ocp_solution (sol; filename= " solution_test" , format= :JSON )
71+ sol_reloaded = CTModels. import_ocp_solution (
72+ ocp; filename= " solution_test" , format= :JSON
73+ )
74+ @test sol. objective ≈ sol_reloaded. objective atol= 1e-8
75+ @test CTModels. objective (sol) ≈ CTModels. objective (sol_reloaded) atol= 1e-8
76+
77+ # Cleanup
78+ remove_if_exists (" solution_test.jld2" )
79+ remove_if_exists (" solution_test.json" )
7080
71- finally
72- remove_if_exists (" solution_test.jld2" )
73- remove_if_exists (" solution_test.json" )
74- end
7581end
0 commit comments