@@ -32,7 +32,24 @@ function __map_optimizer_args(prob::OptimizationProblem, opt::Union{Optim.Abstra
32
32
return Optim. Options (;mapped_args... )
33
33
end
34
34
35
- function __solve (prob:: OptimizationProblem , opt:: Optim.AbstractOptimizer ,
35
+ function __solve (prob:: OptimizationProblem , opt:: Optim.AbstractOptimizer , data = DEFAULT_DATA;
36
+ kwargs... )
37
+ if ! isnothing (prob. lb) | ! isnothing (prob. ub)
38
+ if ! (opt isa Union{Optim. Fminbox, Optim. SAMIN, Optim. AbstractConstrainedOptimizer})
39
+ if opt isa Optim. ParticleSwarm
40
+ opt = Optim. ParticleSwarm (;lower= prob. lb, upper= prob. ub, n_particles= opt. n_particles)
41
+ elseif opt isa Optim. SimulatedAnnealing
42
+ @warn " $(opt) can currently not be wrapped in Fminbox(). The lower and upper bounds thus will be ignored. Consider using a different optimizer or open an issue with Optim.jl"
43
+ else
44
+ opt = Optim. Fminbox (opt)
45
+ end
46
+ end
47
+ end
48
+
49
+ return ___solve (prob, opt, data; kwargs... )
50
+ end
51
+
52
+ function ___solve (prob:: OptimizationProblem , opt:: Optim.AbstractOptimizer ,
36
53
data = DEFAULT_DATA;
37
54
cb = (args... ) -> (false ),
38
55
maxiters:: Union{Number, Nothing} = nothing ,
@@ -116,7 +133,7 @@ function __solve(prob::OptimizationProblem, opt::Optim.AbstractOptimizer,
116
133
SciMLBase. build_solution (prob, opt, opt_res. minimizer, prob. sense === MaxSense ? - opt_res. minimum : opt_res. minimum; original= opt_res, retcode= opt_ret)
117
134
end
118
135
119
- function __solve (prob:: OptimizationProblem , opt:: Union{Optim.Fminbox,Optim.SAMIN} ,
136
+ function ___solve (prob:: OptimizationProblem , opt:: Union{Optim.Fminbox,Optim.SAMIN} ,
120
137
data = DEFAULT_DATA;
121
138
cb = (args... ) -> (false ),
122
139
maxiters:: Union{Number, Nothing} = nothing ,
@@ -184,7 +201,7 @@ function __solve(prob::OptimizationProblem, opt::Union{Optim.Fminbox,Optim.SAMIN
184
201
end
185
202
186
203
187
- function __solve (prob:: OptimizationProblem , opt:: Optim.ConstrainedOptimizer ,
204
+ function ___solve (prob:: OptimizationProblem , opt:: Optim.ConstrainedOptimizer ,
188
205
data = DEFAULT_DATA;
189
206
cb = (args... ) -> (false ),
190
207
maxiters:: Union{Number, Nothing} = nothing ,
0 commit comments