Skip to content

Commit ff678ed

Browse files
Merge pull request #544 from SebastianM-C/bfgs
map `maxiters` to `outer_iterations`
2 parents 09cc1e7 + 073f507 commit ff678ed

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

lib/OptimizationOptimJL/src/OptimizationOptimJL.jl

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ function __map_optimizer_args(cache::OptimizationCache,
2121
Optim.SAMIN, Optim.ConstrainedOptimizer};
2222
callback = nothing,
2323
maxiters::Union{Number, Nothing} = nothing,
24+
local_maxiters::Union{Number, Nothing} = nothing,
2425
maxtime::Union{Number, Nothing} = nothing,
2526
abstol::Union{Number, Nothing} = nothing,
2627
reltol::Union{Number, Nothing} = nothing,
@@ -36,7 +37,22 @@ function __map_optimizer_args(cache::OptimizationCache,
3637
end
3738

3839
if !isnothing(maxiters)
39-
mapped_args = (; mapped_args..., iterations = maxiters)
40+
if opt isa Optim.Fminbox
41+
if !isnothing(local_maxiters)
42+
mapped_args = (;
43+
mapped_args...,
44+
outer_iterations = maxiters,
45+
iterations = local_maxiters)
46+
else
47+
mapped_args = (; mapped_args..., outer_iterations = maxiters)
48+
end
49+
else
50+
mapped_args = (; mapped_args..., iterations = maxiters)
51+
end
52+
end
53+
54+
if !isnothing(local_maxiters) && opt isa Optim.Fminbox
55+
mapped_args = (; mapped_args..., iterations = local_maxiters)
4056
end
4157

4258
if !isnothing(maxtime)

lib/OptimizationOptimJL/test/runtests.jl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,15 @@ using Test
3737
sol = solve(prob, Optim.KrylovTrustRegion())
3838
@test 10 * sol.objective < l1
3939

40+
sol = solve(prob, Optim.BFGS(), maxiters = 1)
41+
@test sol.original.iterations == 1
42+
43+
sol = solve(prob, Optim.BFGS(), maxiters = 1, local_maxiters = 2)
44+
@test sol.original.iterations == 1
45+
46+
sol = solve(prob, Optim.BFGS(), local_maxiters = 2)
47+
@test sol.original.iterations > 2
48+
4049
cons = (res, x, p) -> res .= [x[1]^2 + x[2]^2]
4150
optprob = OptimizationFunction(rosenbrock, Optimization.AutoModelingToolkit();
4251
cons = cons)

0 commit comments

Comments
 (0)