Skip to content

Commit 6a5b79f

Browse files
Merge pull request #1037 from SciML/solver_deps
Fix dependency structure of solvers to OptimizationBase
2 parents 0f406a0 + fc3d2f1 commit 6a5b79f

File tree

92 files changed

+826
-784
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

92 files changed

+826
-784
lines changed

Project.toml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ TerminalLoggers = "5d786b92-1e48-4d6f-9151-6b4477ca9bed"
2020

2121
[sources]
2222
OptimizationBase = {path = "lib/OptimizationBase"}
23+
OptimizationLBFGSB = {path = "lib/OptimizationLBFGSB"}
24+
OptimizationMOI = {path = "lib/OptimizationMOI"}
25+
OptimizationOptimJL = {path = "lib/OptimizationOptimJL"}
26+
OptimizationOptimisers = {path = "lib/OptimizationOptimisers"}
2327

2428
[compat]
2529
ADTypes = "1.2"
@@ -47,6 +51,7 @@ Mooncake = "0.4.138"
4751
Optim = ">= 1.4.1"
4852
Optimisers = ">= 0.2.5"
4953
OptimizationBase = "2"
54+
OptimizationLBFGSB = "1"
5055
OptimizationMOI = "0.5"
5156
OptimizationOptimJL = "0.4"
5257
OptimizationOptimisers = "0.3"
@@ -84,6 +89,7 @@ Lux = "b2108857-7c20-44ae-9111-449ecde12c47"
8489
MLUtils = "f1d291b0-491e-4a28-83b9-f70985020b54"
8590
ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78"
8691
Optim = "429524aa-4258-5aef-a3af-852621145aeb"
92+
OptimizationLBFGSB = "22f7324a-a79d-40f2-bebe-3af60c77bd15"
8793
Optimisers = "3bd65402-5787-11e9-1adc-39752487f4e2"
8894
OptimizationMOI = "fd9f6733-72f4-499f-8506-86b2bdd0dea1"
8995
OptimizationOptimJL = "36348300-93cb-4f02-beb5-3c3902f8871e"
@@ -103,6 +109,6 @@ Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6"
103109

104110
[targets]
105111
test = ["Aqua", "BenchmarkTools", "Boltz", "ComponentArrays", "DiffEqFlux", "Enzyme", "FiniteDiff", "Flux", "ForwardDiff",
106-
"Ipopt", "IterTools", "Lux", "MLUtils", "ModelingToolkit", "Optim", "OptimizationMOI", "OptimizationOptimJL", "OptimizationOptimisers",
112+
"Ipopt", "IterTools", "Lux", "MLUtils", "ModelingToolkit", "Optim", "OptimizationLBFGSB", "OptimizationMOI", "OptimizationOptimJL", "OptimizationOptimisers",
107113
"OrdinaryDiffEqTsit5", "Pkg", "Random", "ReverseDiff", "SafeTestsets", "SciMLSensitivity", "SparseArrays",
108114
"Symbolics", "Test", "Tracker", "Zygote", "Mooncake"]

lib/OptimizationAuglag/Project.toml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,26 @@ uuid = "2ea93f80-9333-43a1-a68d-1f53b957a421"
33
authors = ["paramthakkar123 <[email protected]>"]
44
version = "1.0.0"
55

6+
[sources]
7+
OptimizationBase = {path = "../OptimizationBase"}
8+
69
[deps]
710
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
8-
MLUtils = "f1d291b0-491e-4a28-83b9-f70985020b54"
9-
Optimization = "7f7a1694-90dd-40f0-9382-eb1efda571ba"
1011
OptimizationBase = "bca83a33-5cc9-4baa-983d-23429ab6bcbb"
12+
MLUtils = "f1d291b0-491e-4a28-83b9-f70985020b54"
1113
OptimizationOptimisers = "42dfb2eb-d2b4-4451-abcd-913932933ac1"
14+
SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462"
1215

1316
[extras]
1417
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
1518

1619
[compat]
1720
ForwardDiff = "1.0.1"
21+
OptimizationBase = "2.13"
1822
MLUtils = "0.4.8"
19-
Optimization = "4.4.0"
20-
OptimizationBase = "2.10.0"
2123
OptimizationOptimisers = "0.3.8"
2224
Test = "1.10.0"
25+
SciMLBase = "2.58"
2326
julia = "1.10"
2427

2528
[targets]

lib/OptimizationAuglag/src/OptimizationAuglag.jl

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
module OptimizationAuglag
22

3-
using Optimization
4-
using OptimizationBase.SciMLBase: OptimizationProblem, OptimizationFunction, OptimizationStats
3+
using SciMLBase: OptimizationProblem, OptimizationFunction, OptimizationStats
54
using OptimizationBase.LinearAlgebra: norm
65

76
@kwdef struct AugLag
@@ -84,7 +83,7 @@ function SciMLBase.__solve(cache::OptimizationCache{
8483
P,
8584
C
8685
}
87-
maxiters = Optimization._check_and_convert_maxiters(cache.solver_args.maxiters)
86+
maxiters = OptimizationBase._check_and_convert_maxiters(cache.solver_args.maxiters)
8887

8988
local x
9089

@@ -116,7 +115,7 @@ function SciMLBase.__solve(cache::OptimizationCache{
116115
cache.f.cons(cons_tmp, θ)
117116
cons_tmp[eq_inds] .= cons_tmp[eq_inds] - cache.lcons[eq_inds]
118117
cons_tmp[ineq_inds] .= cons_tmp[ineq_inds] .- cache.ucons[ineq_inds]
119-
opt_state = Optimization.OptimizationState(u = θ, objective = x[1])
118+
opt_state = OptimizationBase.OptimizationState(u = θ, objective = x[1])
120119
if cache.callback(opt_state, x...)
121120
error("Optimization halted by callback.")
122121
end

lib/OptimizationAuglag/test/runtests.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ using OptimizationOptimisers
44
using OptimizationAuglag
55
using ForwardDiff
66
using OptimizationBase: OptimizationCache
7-
using OptimizationBase.SciMLBase: OptimizationFunction
7+
using SciMLBase: OptimizationFunction
88
using Test
99

1010
@testset "OptimizationAuglag.jl" begin

lib/OptimizationBBO/Project.toml

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,24 @@ uuid = "3e6eede4-6085-4f62-9a71-46d9bc1eb92b"
33
authors = ["Vaibhav Dixit <[email protected]> and contributors"]
44
version = "0.4.2"
55

6+
[sources]
7+
OptimizationBase = {path = "../OptimizationBase"}
8+
69
[deps]
710
BlackBoxOptim = "a134a8b2-14d6-55f6-9291-3336d3ab0209"
8-
Optimization = "7f7a1694-90dd-40f0-9382-eb1efda571ba"
11+
OptimizationBase = "bca83a33-5cc9-4baa-983d-23429ab6bcbb"
12+
SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462"
913
Reexport = "189a3867-3050-52da-a836-e630ba90ab69"
1014

15+
[extras]
16+
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
17+
1118
[compat]
19+
julia = "1.10"
1220
BlackBoxOptim = "0.6"
13-
Optimization = "4.4"
21+
OptimizationBase = "2.13"
22+
SciMLBase = "2.58"
1423
Reexport = "1.2"
15-
julia = "1.10"
16-
17-
[extras]
18-
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
1924

2025
[targets]
2126
test = ["Test"]

lib/OptimizationBBO/src/OptimizationBBO.jl

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

33
using Reexport
4-
import Optimization
5-
import Optimization: OptimizationBase
6-
import BlackBoxOptim, Optimization.SciMLBase
7-
import Optimization.SciMLBase: MultiObjectiveOptimizationFunction
4+
import OptimizationBase
5+
import OptimizationBase: SciMLBase
6+
import BlackBoxOptim
7+
import SciMLBase: MultiObjectiveOptimizationFunction
88

99
abstract type BBO end
1010

@@ -48,7 +48,7 @@ function decompose_trace(opt::BlackBoxOptim.OptRunController, progress)
4848
return BlackBoxOptim.best_candidate(opt)
4949
end
5050

51-
function __map_optimizer_args(prob::Optimization.OptimizationCache, opt::BBO;
51+
function __map_optimizer_args(prob::OptimizationBase.OptimizationCache, opt::BBO;
5252
callback = nothing,
5353
maxiters::Union{Number, Nothing} = nothing,
5454
maxtime::Union{Number, Nothing} = nothing,
@@ -96,7 +96,7 @@ function map_objective(obj::BlackBoxOptim.IndexedTupleFitness)
9696
obj.orig
9797
end
9898

99-
function SciMLBase.__solve(cache::Optimization.OptimizationCache{
99+
function SciMLBase.__solve(cache::OptimizationBase.OptimizationCache{
100100
F,
101101
RC,
102102
LB,
@@ -123,13 +123,13 @@ function SciMLBase.__solve(cache::Optimization.OptimizationCache{
123123
C
124124
}
125125
function _cb(trace)
126-
if cache.callback === Optimization.DEFAULT_CALLBACK
126+
if cache.callback === OptimizationBase.DEFAULT_CALLBACK
127127
cb_call = false
128128
else
129129
n_steps = BlackBoxOptim.num_steps(trace)
130130
curr_u = decompose_trace(trace, cache.progress)
131131
objective = map_objective(BlackBoxOptim.best_fitness(trace))
132-
opt_state = Optimization.OptimizationState(;
132+
opt_state = OptimizationBase.OptimizationState(;
133133
iter = n_steps,
134134
u = curr_u,
135135
p = cache.p,
@@ -148,15 +148,15 @@ function SciMLBase.__solve(cache::Optimization.OptimizationCache{
148148
cb_call
149149
end
150150

151-
maxiters = Optimization._check_and_convert_maxiters(cache.solver_args.maxiters)
152-
maxtime = Optimization._check_and_convert_maxtime(cache.solver_args.maxtime)
151+
maxiters = OptimizationBase._check_and_convert_maxiters(cache.solver_args.maxiters)
152+
maxtime = OptimizationBase._check_and_convert_maxtime(cache.solver_args.maxtime)
153153

154154
_loss = function (θ)
155155
cache.f(θ, cache.p)
156156
end
157157

158158
opt_args = __map_optimizer_args(cache, cache.opt;
159-
callback = cache.callback === Optimization.DEFAULT_CALLBACK ?
159+
callback = cache.callback === OptimizationBase.DEFAULT_CALLBACK ?
160160
nothing : _cb,
161161
cache.solver_args...,
162162
maxiters = maxiters,
@@ -176,8 +176,8 @@ function SciMLBase.__solve(cache::Optimization.OptimizationCache{
176176
end
177177

178178
# Use the improved convert function
179-
opt_ret = Optimization.deduce_retcode(opt_res.stop_reason)
180-
stats = Optimization.OptimizationStats(;
179+
opt_ret = OptimizationBase.deduce_retcode(opt_res.stop_reason)
180+
stats = OptimizationBase.OptimizationStats(;
181181
iterations = opt_res.iterations,
182182
time = opt_res.elapsed_time,
183183
fevals = opt_res.f_calls)

lib/OptimizationBBO/test/runtests.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using OptimizationBBO, Optimization, BlackBoxOptim
2-
using Optimization.SciMLBase: MultiObjectiveOptimizationFunction
2+
using SciMLBase: MultiObjectiveOptimizationFunction
33
using Test
44

55
@testset "OptimizationBBO.jl" begin
@@ -9,14 +9,14 @@ using Test
99
l1 = rosenbrock(x0, _p)
1010

1111
optprob = OptimizationFunction(rosenbrock)
12-
prob = Optimization.OptimizationProblem(optprob, x0, _p, lb = [-1.0, -1.0],
12+
prob = OptimizationBase.OptimizationProblem(optprob, x0, _p, lb = [-1.0, -1.0],
1313
ub = [0.8, 0.8])
1414
sol = solve(prob, BBO_adaptive_de_rand_1_bin_radiuslimited())
1515
@test 10 * sol.objective < l1
1616

1717
@test (@allocated solve(prob, BBO_adaptive_de_rand_1_bin_radiuslimited())) < 1e7
1818

19-
prob = Optimization.OptimizationProblem(optprob, nothing, _p, lb = [-1.0, -1.0],
19+
prob = OptimizationBase.OptimizationProblem(optprob, nothing, _p, lb = [-1.0, -1.0],
2020
ub = [0.8, 0.8])
2121
sol = solve(prob, BBO_adaptive_de_rand_1_bin_radiuslimited())
2222
@test 10 * sol.objective < l1
@@ -74,7 +74,7 @@ using Test
7474
end
7575

7676
mof_1 = MultiObjectiveOptimizationFunction(multi_obj_func_1)
77-
prob_1 = Optimization.OptimizationProblem(mof_1, u0; lb = lb, ub = ub)
77+
prob_1 = OptimizationBase.OptimizationProblem(mof_1, u0; lb = lb, ub = ub)
7878
sol_1 = solve(prob_1, opt, NumDimensions = 2,
7979
FitnessScheme = ParetoFitnessScheme{2}(is_minimizing = true))
8080

@@ -101,7 +101,7 @@ using Test
101101
end
102102

103103
mof_1 = MultiObjectiveOptimizationFunction(multi_obj_func_1)
104-
prob_1 = Optimization.OptimizationProblem(mof_1, u0; lb = lb, ub = ub)
104+
prob_1 = OptimizationBase.OptimizationProblem(mof_1, u0; lb = lb, ub = ub)
105105
sol_1 = solve(prob_1, opt, NumDimensions = 2,
106106
FitnessScheme = ParetoFitnessScheme{2}(is_minimizing = true),
107107
callback = cb)
@@ -127,7 +127,7 @@ using Test
127127
end
128128

129129
mof_2 = MultiObjectiveOptimizationFunction(multi_obj_func_2)
130-
prob_2 = Optimization.OptimizationProblem(mof_2, u0; lb = lb, ub = ub)
130+
prob_2 = OptimizationBase.OptimizationProblem(mof_2, u0; lb = lb, ub = ub)
131131
sol_2 = solve(prob_2, opt, NumDimensions = 2,
132132
FitnessScheme = ParetoFitnessScheme{2}(is_minimizing = true))
133133

@@ -147,7 +147,7 @@ using Test
147147
end
148148

149149
mof_3 = MultiObjectiveOptimizationFunction(multi_obj_func_3)
150-
prob_3 = Optimization.OptimizationProblem(mof_3, u0; lb = lb, ub = ub)
150+
prob_3 = OptimizationBase.OptimizationProblem(mof_3, u0; lb = lb, ub = ub)
151151
sol_3 = solve(prob_3, opt, NumDimensions = 2,
152152
FitnessScheme = ParetoFitnessScheme{2}(is_minimizing = true))
153153

lib/OptimizationBase/Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "OptimizationBase"
22
uuid = "bca83a33-5cc9-4baa-983d-23429ab6bcbb"
33
authors = ["Vaibhav Dixit <[email protected]> and contributors"]
4-
version = "2.12.0"
4+
version = "2.13.0"
55

66
[deps]
77
ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b"

lib/OptimizationBase/ext/OptimizationEnzymeExt.jl

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

33
import OptimizationBase, OptimizationBase.ArrayInterface
4-
import OptimizationBase.SciMLBase: OptimizationFunction
5-
import OptimizationBase.SciMLBase
4+
import SciMLBase: OptimizationFunction
5+
import SciMLBase
66
import OptimizationBase.LinearAlgebra: I, dot
77
import OptimizationBase.ADTypes: AutoEnzyme
88
using Enzyme

lib/OptimizationBase/ext/OptimizationMTKExt.jl

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

33
import OptimizationBase, OptimizationBase.ArrayInterface
4-
import OptimizationBase.SciMLBase
5-
import OptimizationBase.SciMLBase: OptimizationFunction
4+
import SciMLBase
5+
import SciMLBase: OptimizationFunction
66
import OptimizationBase.ADTypes: AutoModelingToolkit, AutoSymbolics, AutoSparse
77
using ModelingToolkit
88

0 commit comments

Comments
 (0)