11using OptimizationBBO, Optimization, BlackBoxOptim
2+ using Optimization. SciMLBase
23using Optimization. SciMLBase: MultiObjectiveOptimizationFunction
34using Test
45
@@ -35,17 +36,20 @@ using Test
3536 return false
3637 end
3738
39+ # Define the initial guess and bounds ONCE for all tests
40+ u0 = [0.25 , 0.25 ]
41+ lb = [0.0 , 0.0 ]
42+ ub = [2.0 , 2.0 ]
43+ opt = OptimizationBBO. BBO_borg_moea ()
44+
3845 @testset " In-place Multi-Objective Optimization" begin
3946 function inplace_multi_obj! (cost, x, p)
4047 cost[1 ] = sum (x .^ 2 )
4148 cost[2 ] = sum (x .^ 2 .- 10 .* cos .(2 π .* x) .+ 10 )
4249 return nothing
4350 end
44- u0 = [0.25 , 0.25 ]
45- lb = [0.0 , 0.0 ]
46- ub = [2.0 , 2.0 ]
4751 cost_prototype = zeros (2 )
48- mof_inplace = MultiObjectiveOptimizationFunction (inplace_multi_obj!; cost_prototype= cost_prototype)
52+ mof_inplace = MultiObjectiveOptimizationFunction {true} (inplace_multi_obj!, SciMLBase . NoAD () ; cost_prototype= cost_prototype)
4953 prob_inplace = Optimization. OptimizationProblem (mof_inplace, u0; lb= lb, ub= ub)
5054 sol_inplace = solve (prob_inplace, opt, NumDimensions= 2 , FitnessScheme= ParetoFitnessScheme {2} (is_minimizing= true ))
5155 @test sol_inplace ≠ nothing
@@ -60,24 +64,14 @@ using Test
6064 f2 = sum (x .^ 2 .- 10 .* cos .(2 π .* x) .+ 10 )
6165 return (f1, f2)
6266 end
63- coalesce_sum (cost, x, p) = sum (cost)
64- mof_coalesce = MultiObjectiveOptimizationFunction (multi_obj_tuple; coalesce= coalesce_sum)
67+ mof_coalesce = MultiObjectiveOptimizationFunction {false} (multi_obj_tuple, SciMLBase. NoAD (); cost_prototype= zeros (2 ))
6568 prob_coalesce = Optimization. OptimizationProblem (mof_coalesce, u0; lb= lb, ub= ub)
6669 sol_coalesce = solve (prob_coalesce, opt, NumDimensions= 2 , FitnessScheme= ParetoFitnessScheme {2} (is_minimizing= true ))
6770 @test sol_coalesce ≠ nothing
6871 @test sol_coalesce. objective[1 ] ≈ 6.9905986e-18 atol= 1e-3
6972 @test sol_coalesce. objective[2 ] ≈ 1.7763568e-15 atol= 1e-3
70- @test mof_coalesce. coalesce ([1.0 , 2.0 ], [0.0 , 0.0 ], nothing ) == 3.0
7173 end
7274
73- @testset " Error if in-place MultiObjectiveOptimizationFunction without cost_prototype" begin
74- function inplace_multi_obj_err! (cost, x, p)
75- cost[1 ] = sum (x .^ 2 )
76- cost[2 ] = sum (x .^ 2 .- 10 .* cos .(2 π .* x) .+ 10 )
77- return nothing
78- end
79- @test_throws ArgumentError MultiObjectiveOptimizationFunction (inplace_multi_obj_err!)
80- end
8175 sol = solve (prob, BBO_adaptive_de_rand_1_bin_radiuslimited (), callback = cb)
8276 # println(fitness_progress_history)
8377 @test ! isempty (fitness_progress_history)
@@ -99,13 +93,7 @@ using Test
9993 maxtime = 5 )
10094 end
10195
102- # Define the initial guess and bounds
103- u0 = [0.25 , 0.25 ]
104- lb = [0.0 , 0.0 ]
105- ub = [2.0 , 2.0 ]
106-
107- # Define the optimizer
108- opt = OptimizationBBO. BBO_borg_moea ()
96+ # ...existing code...
10997
11098 @testset " Multi-Objective Optimization Tests" begin
11199
@@ -117,7 +105,7 @@ using Test
117105 return (f1, f2)
118106 end
119107
120- mof_1 = MultiObjectiveOptimizationFunction (multi_obj_func_1)
108+ mof_1 = MultiObjectiveOptimizationFunction {false} (multi_obj_func_1, SciMLBase . NoAD (); cost_prototype = zeros ( 2 ) )
121109 prob_1 = Optimization. OptimizationProblem (mof_1, u0; lb = lb, ub = ub)
122110 sol_1 = solve (prob_1, opt, NumDimensions = 2 ,
123111 FitnessScheme = ParetoFitnessScheme {2} (is_minimizing = true ))
@@ -144,7 +132,7 @@ using Test
144132 return false
145133 end
146134
147- mof_1 = MultiObjectiveOptimizationFunction (multi_obj_func_1)
135+ mof_1 = MultiObjectiveOptimizationFunction {false} (multi_obj_func_1, SciMLBase . NoAD (); cost_prototype = zeros ( 2 ) )
148136 prob_1 = Optimization. OptimizationProblem (mof_1, u0; lb = lb, ub = ub)
149137 sol_1 = solve (prob_1, opt, NumDimensions = 2 ,
150138 FitnessScheme = ParetoFitnessScheme {2} (is_minimizing = true ),
@@ -170,7 +158,7 @@ using Test
170158 return (f1, f2)
171159 end
172160
173- mof_2 = MultiObjectiveOptimizationFunction (multi_obj_func_2)
161+ mof_2 = MultiObjectiveOptimizationFunction {false} (multi_obj_func_2, SciMLBase . NoAD (); cost_prototype = zeros ( 2 ) )
174162 prob_2 = Optimization. OptimizationProblem (mof_2, u0; lb = lb, ub = ub)
175163 sol_2 = solve (prob_2, opt, NumDimensions = 2 ,
176164 FitnessScheme = ParetoFitnessScheme {2} (is_minimizing = true ))
@@ -190,7 +178,7 @@ using Test
190178 return (f1, f2)
191179 end
192180
193- mof_3 = MultiObjectiveOptimizationFunction (multi_obj_func_3)
181+ mof_3 = SciMLBase . MultiObjectiveOptimizationFunction {false} (multi_obj_func_3, SciMLBase . NoAD (); cost_prototype = zeros ( 2 ) )
194182 prob_3 = Optimization. OptimizationProblem (mof_3, u0; lb = lb, ub = ub)
195183 sol_3 = solve (prob_3, opt, NumDimensions = 2 ,
196184 FitnessScheme = ParetoFitnessScheme {2} (is_minimizing = true ))
0 commit comments