Skip to content

Commit 7a4a955

Browse files
Merge pull request #1090 from SebastianM-C/allowscallback
Add explicit allowscallback everywhere
2 parents a6b8e9d + 434fc8f commit 7a4a955

File tree

20 files changed

+54
-21
lines changed

20 files changed

+54
-21
lines changed

lib/OptimizationAuglag/src/OptimizationAuglag.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ using LinearAlgebra: norm
1717
end
1818

1919
SciMLBase.has_init(::AugLag) = true
20+
SciMLBase.allowscallback(::AugLag) = true
2021
SciMLBase.allowsbounds(::AugLag) = true
2122
SciMLBase.requiresgradient(::AugLag) = true
2223
SciMLBase.allowsconstraints(::AugLag) = true

lib/OptimizationBBO/src/OptimizationBBO.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ abstract type BBO end
99

1010
SciMLBase.requiresbounds(::BBO) = true
1111
SciMLBase.allowsbounds(::BBO) = true
12-
12+
SciMLBase.allowscallback(opt::BBO) = true
1313
SciMLBase.has_init(opt::BBO) = true
1414

1515
for j in string.(BlackBoxOptim.SingleObjectiveMethodNames)

lib/OptimizationBase/src/solve.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ function _check_opt_alg(prob::SciMLBase.OptimizationProblem, alg; kwargs...)
123123
(isnothing(prob.lcons) || isnothing(prob.ucons)) &&
124124
throw(ArgumentError("Constrained optimization problem requires both `lcons` and `ucons` to be provided to OptimizationProblem. " *
125125
"Example: OptimizationProblem(optf, u0, p; lcons=[-Inf], ucons=[0.0])"))
126-
!allowscallback(alg) && haskey(kwargs, :callback) &&
126+
!allowscallback(alg) && !(get(kwargs, :callback, DEFAULT_CALLBACK) isa NullCallback) &&
127127
throw(IncompatibleOptimizerError("The algorithm $(typeof(alg)) does not support callbacks, remove the `callback` keyword argument from the `solve` call."))
128128
requiresgradient(alg) &&
129129
!(prob.f isa SciMLBase.AbstractOptimizationFunction) &&

lib/OptimizationCMAEvolutionStrategy/src/OptimizationCMAEvolutionStrategy.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export CMAEvolutionStrategyOpt
99

1010
struct CMAEvolutionStrategyOpt end
1111

12+
SciMLBase.allowscallback(opt::CMAEvolutionStrategyOpt) = true
1213
SciMLBase.allowsbounds(::CMAEvolutionStrategyOpt) = true
1314
SciMLBase.has_init(opt::CMAEvolutionStrategyOpt) = true
1415
SciMLBase.requiresgradient(::CMAEvolutionStrategyOpt) = false

lib/OptimizationEvolutionary/src/OptimizationEvolutionary.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ using Reexport
44
@reexport using Evolutionary, OptimizationBase
55
using SciMLBase
66

7+
SciMLBase.allowscallback(opt::Evolutionary.AbstractOptimizer) = true
78
SciMLBase.allowsbounds(opt::Evolutionary.AbstractOptimizer) = true
89
SciMLBase.allowsconstraints(opt::Evolutionary.AbstractOptimizer) = true
910
SciMLBase.has_init(opt::Evolutionary.AbstractOptimizer) = true

lib/OptimizationGCMAES/src/OptimizationGCMAES.jl

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,8 @@ function __map_optimizer_args(cache::OptimizationBase.OptimizationCache, opt::GC
4848
end
4949

5050
function SciMLBase.__init(prob::SciMLBase.OptimizationProblem,
51-
opt::GCMAESOpt; σ0 = 0.2,
52-
callback = (args...) -> (false),
53-
progress = false, kwargs...)
54-
return OptimizationCache(prob, opt; σ0 = σ0, callback = callback,
55-
progress = progress,
56-
kwargs...)
51+
opt::GCMAESOpt; σ0 = 0.2, kwargs...)
52+
return OptimizationCache(prob, opt; σ0 = σ0, kwargs...)
5753
end
5854

5955
function SciMLBase.__solve(cache::OptimizationCache{O}) where {O <: GCMAESOpt}

lib/OptimizationIpopt/src/OptimizationIpopt.jl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,8 @@ function SciMLBase.has_init(alg::IpoptOptimizer)
170170
true
171171
end
172172

173+
SciMLBase.allowscallback(alg::IpoptOptimizer) = true
174+
173175
# Compatibility with OptimizationBase@v3
174176
function SciMLBase.supports_opt_cache_interface(alg::IpoptOptimizer)
175177
true
@@ -254,7 +256,8 @@ function __map_optimizer_args(cache,
254256
)
255257

256258
# Set up progress callback
257-
progress_callback = IpoptProgressLogger(progress, callback, prob, cache.n, cache.num_cons, maxiters, cache.iterations)
259+
progress_callback = IpoptProgressLogger(
260+
progress, callback, prob, cache.n, cache.num_cons, maxiters, cache.iterations)
258261
intermediate = (args...) -> progress_callback(args...)
259262
Ipopt.SetIntermediateCallback(prob, intermediate)
260263

lib/OptimizationLBFGSB/src/OptimizationLBFGSB.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ References
3131
ϵ = 1e-8
3232
end
3333

34+
SciMLBase.allowscallback(::LBFGSB) = true
3435
SciMLBase.has_init(::LBFGSB) = true
3536
SciMLBase.allowsbounds(::LBFGSB) = true
3637
SciMLBase.requiresgradient(::LBFGSB) = true

lib/OptimizationMOI/src/OptimizationMOI.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,11 @@ function SciMLBase.has_init(alg::Union{MOI.AbstractOptimizer,
288288
true
289289
end
290290

291+
function SciMLBase.allowscallback(alg::Union{MOI.AbstractOptimizer,
292+
MOI.OptimizerWithAttributes})
293+
true
294+
end
295+
291296
# Compatibility with OptimizationBase@v3
292297
function SciMLBase.supports_opt_cache_interface(alg::Union{MOI.AbstractOptimizer,
293298
MOI.OptimizerWithAttributes})

lib/OptimizationMadNLP/Project.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ julia = "1.10"
3030
OptimizationBase = {path = "../OptimizationBase"}
3131

3232
[extras]
33+
ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b"
3334
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
3435
DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63"
3536
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
@@ -41,4 +42,4 @@ Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
4142
Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f"
4243

4344
[targets]
44-
test = ["Aqua", "DifferentiationInterface", "ForwardDiff", "ModelingToolkit", "Random", "ReverseDiff", "Test", "Symbolics", "Zygote"]
45+
test = ["ADTypes", "Aqua", "DifferentiationInterface", "ForwardDiff", "ModelingToolkit", "Random", "ReverseDiff", "Test", "Symbolics", "Zygote"]

0 commit comments

Comments
 (0)