Skip to content

Commit 8951fa5

Browse files
Merge pull request #376 from SciML/errorhandling
Be more informative about supported functionality of a backend and correctness of kwargs
2 parents de17eda + d2e58e2 commit 8951fa5

File tree

30 files changed

+150
-86
lines changed

30 files changed

+150
-86
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ LoggingExtras = "0.4, 0.5"
2828
ProgressLogging = "0.1"
2929
Reexport = "0.2, 1.0"
3030
Requires = "1.0"
31-
SciMLBase = "1.39"
31+
SciMLBase = "1.61"
3232
TerminalLoggers = "0.1"
3333
julia = "1.6"
3434

lib/OptimizationBBO/Project.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
name = "OptimizationBBO"
22
uuid = "3e6eede4-6085-4f62-9a71-46d9bc1eb92b"
33
authors = ["Vaibhav Dixit <[email protected]> and contributors"]
4-
version = "0.1.1"
4+
version = "0.1.2"
55

66
[deps]
77
BlackBoxOptim = "a134a8b2-14d6-55f6-9291-3336d3ab0209"
88
Optimization = "7f7a1694-90dd-40f0-9382-eb1efda571ba"
9+
Reexport = "189a3867-3050-52da-a836-e630ba90ab69"
910

1011
[compat]
1112
BlackBoxOptim = "0.6"
1213
Optimization = "3"
14+
Reexport = "1.2"
1315
julia = "1"
1416

1517
[extras]

lib/OptimizationBBO/src/OptimizationBBO.jl

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
module OptimizationBBO
22

3-
using BlackBoxOptim, Optimization, Optimization.SciMLBase
3+
using Reexport
4+
@reexport using Optimization
5+
using BlackBoxOptim, Optimization.SciMLBase
46

57
abstract type BBO end
68

9+
SciMLBase.requiresbounds(::BBO) = true
10+
SciMLBase.allowsbounds(::BBO) = true
11+
712
for j in string.(BlackBoxOptim.SingleObjectiveMethodNames)
813
eval(Meta.parse("Base.@kwdef struct BBO_" * j * " <: BBO method=:" * j * " end"))
914
eval(Meta.parse("export BBO_" * j))
@@ -35,8 +40,7 @@ function __map_optimizer_args(prob::SciMLBase.OptimizationProblem, opt::BBO;
3540
maxtime::Union{Number, Nothing} = nothing,
3641
abstol::Union{Number, Nothing} = nothing,
3742
reltol::Union{Number, Nothing} = nothing,
38-
verbose::Bool = false,
39-
kwargs...)
43+
verbose::Bool = false)
4044
if !isnothing(reltol)
4145
@warn "common reltol is currently not used by $(opt)"
4246
end
@@ -49,8 +53,6 @@ function __map_optimizer_args(prob::SciMLBase.OptimizationProblem, opt::BBO;
4953
CallbackInterval = 0.0)
5054
end
5155

52-
mapped_args = (; mapped_args..., kwargs...)
53-
5456
if !isnothing(maxiters)
5557
mapped_args = (; mapped_args..., MaxSteps = maxiters)
5658
end

lib/OptimizationCMAEvolutionStrategy/Project.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
name = "OptimizationCMAEvolutionStrategy"
22
uuid = "bd407f91-200f-4536-9381-e4ba712f53f8"
33
authors = ["Vaibhav Dixit <[email protected]> and contributors"]
4-
version = "0.1.0"
4+
version = "0.1.1"
55

66
[deps]
77
CMAEvolutionStrategy = "8d3b24bd-414e-49e0-94fb-163cc3a3e411"
88
Optimization = "7f7a1694-90dd-40f0-9382-eb1efda571ba"
9+
Reexport = "189a3867-3050-52da-a836-e630ba90ab69"
910

1011
[compat]
1112
julia = "1"
1213
CMAEvolutionStrategy = "0.2"
1314
Optimization = "3"
15+
Reexport = "1.2"
1416

1517
[extras]
1618
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

lib/OptimizationCMAEvolutionStrategy/src/OptimizationCMAEvolutionStrategy.jl

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,29 @@
11
module OptimizationCMAEvolutionStrategy
22

3-
using CMAEvolutionStrategy, Optimization, Optimization.SciMLBase
3+
using Reexport
4+
@reexport using Optimization
5+
using CMAEvolutionStrategy, Optimization.SciMLBase
46

57
export CMAEvolutionStrategyOpt
68

79
struct CMAEvolutionStrategyOpt end
810

11+
SciMLBase.requiresbounds(::CMAEvolutionStrategyOpt) = true
12+
SciMLBase.allowsbounds(::CMAEvolutionStrategyOpt) = true
13+
SciMLBase.allowscallback(::CMAEvolutionStrategyOpt) = false #looks like `logger` kwarg can be used to pass it, so should be implemented
14+
915
function __map_optimizer_args(prob::OptimizationProblem, opt::CMAEvolutionStrategyOpt;
1016
callback = nothing,
1117
maxiters::Union{Number, Nothing} = nothing,
1218
maxtime::Union{Number, Nothing} = nothing,
1319
abstol::Union{Number, Nothing} = nothing,
14-
reltol::Union{Number, Nothing} = nothing,
15-
kwargs...)
20+
reltol::Union{Number, Nothing} = nothing)
1621
if !isnothing(reltol)
1722
@warn "common reltol is currently not used by $(opt)"
1823
end
1924

2025
mapped_args = (; lower = prob.lb,
21-
upper = prob.ub,
22-
kwargs...)
26+
upper = prob.ub)
2327

2428
if !isnothing(maxiters)
2529
mapped_args = (; mapped_args..., maxiter = maxiters)

lib/OptimizationEvolutionary/Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "OptimizationEvolutionary"
22
uuid = "cb963754-43f6-435e-8d4b-99009ff27753"
33
authors = ["Vaibhav Dixit <[email protected]> and contributors"]
4-
version = "0.1.0"
4+
version = "0.1.1"
55

66
[deps]
77
Evolutionary = "86b6b26d-c046-49b6-aa0b-5f0f74682bd6"

lib/OptimizationEvolutionary/src/OptimizationEvolutionary.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
module OptimizationEvolutionary
22

3-
using Reexport, Optimization, Optimization.SciMLBase
4-
@reexport using Evolutionary
3+
using Reexport
4+
@reexport using Evolutionary, Optimization
5+
using Optimization.SciMLBase
6+
7+
SciMLBase.allowsbounds(opt::Evolutionary.AbstractOptimizer) = true
58

69
decompose_trace(trace::Evolutionary.OptimizationTrace) = last(trace)
710
decompose_trace(trace::Evolutionary.OptimizationTraceRecord) = trace
@@ -17,12 +20,9 @@ function __map_optimizer_args(prob::OptimizationProblem,
1720
maxiters::Union{Number, Nothing} = nothing,
1821
maxtime::Union{Number, Nothing} = nothing,
1922
abstol::Union{Number, Nothing} = nothing,
20-
reltol::Union{Number, Nothing} = nothing,
21-
kwargs...)
23+
reltol::Union{Number, Nothing} = nothing)
2224
mapped_args = (;)
2325

24-
mapped_args = (; mapped_args..., kwargs...)
25-
2626
if !isnothing(callback)
2727
mapped_args = (; mapped_args..., callback = callback)
2828
end
@@ -84,7 +84,7 @@ function SciMLBase.__solve(prob::OptimizationProblem, opt::Evolutionary.Abstract
8484
kwargs...)
8585

8686
t0 = time()
87-
if isnothing(prob.ub) | isnothing(prob.ub)
87+
if isnothing(prob.ub) || isnothing(prob.ub)
8888
opt_res = Evolutionary.optimize(_loss, prob.u0, opt, opt_args)
8989
else
9090
cons = Evolutionary.BoxConstraints(prob.lb, prob.ub)

lib/OptimizationFlux/src/OptimizationFlux.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
module OptimizationFlux
22

3-
using Optimization, Reexport, Printf, ProgressLogging, Optimization.SciMLBase
4-
@reexport using Flux
3+
using Reexport, Printf, ProgressLogging
4+
@reexport using Flux, Optimization
5+
using Optimization.SciMLBase
56

67
function SciMLBase.__solve(prob::OptimizationProblem, opt::Flux.Optimise.AbstractOptimiser,
78
data = Optimization.DEFAULT_DATA;

lib/OptimizationGCMAES/Project.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
name = "OptimizationGCMAES"
22
uuid = "6f0a0517-dbc2-4a7a-8a20-99ae7f27e911"
33
authors = ["Vaibhav Dixit <[email protected]> and contributors"]
4-
version = "0.1.0"
4+
version = "0.1.1"
55

66
[deps]
77
GCMAES = "4aa9d100-eb0f-11e8-15f1-25748831eb3b"
88
Optimization = "7f7a1694-90dd-40f0-9382-eb1efda571ba"
9+
Reexport = "189a3867-3050-52da-a836-e630ba90ab69"
910

1011
[compat]
1112
julia = "1"
1213
Optimization = "3"
1314
GCMAES = "0.1"
15+
Reexport = "1.2"
1416

1517
[extras]
1618
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"

lib/OptimizationGCMAES/src/OptimizationGCMAES.jl

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,25 @@
11
module OptimizationGCMAES
22

3-
using GCMAES, Optimization, Optimization.SciMLBase
3+
using Reexport
4+
@reexport using Optimization
5+
using GCMAES, Optimization.SciMLBase
46

57
export GCMAESOpt
68

79
struct GCMAESOpt end
810

11+
SciMLBase.requiresbounds(::GCMAESOpt) = true
12+
SciMLBase.allowsbounds(::GCMAESOpt) = true
13+
914
function __map_optimizer_args(prob::OptimizationProblem, opt::GCMAESOpt;
1015
callback = nothing,
1116
maxiters::Union{Number, Nothing} = nothing,
1217
maxtime::Union{Number, Nothing} = nothing,
1318
abstol::Union{Number, Nothing} = nothing,
14-
reltol::Union{Number, Nothing} = nothing,
15-
kwargs...)
19+
reltol::Union{Number, Nothing} = nothing)
1620

1721
# add optimiser options from kwargs
18-
mapped_args = (; kwargs...)
22+
mapped_args = (;)
1923

2024
if !(isnothing(maxiters))
2125
mapped_args = (; mapped_args..., maxiter = maxiters)

0 commit comments

Comments
 (0)