Skip to content

Commit 4c989c1

Browse files
Merge pull request #789 from SciML/optbasev2
[WIP] Updates for OptimizationBase v2
2 parents 3271e64 + ceb503a commit 4c989c1

File tree

48 files changed

+721
-1321
lines changed

Some content is hidden

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

48 files changed

+721
-1321
lines changed

.github/workflows/CI.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ jobs:
2222
- OptimizationBBO
2323
- OptimizationCMAEvolutionStrategy
2424
- OptimizationEvolutionary
25-
- OptimizationFlux
2625
- OptimizationGCMAES
2726
- OptimizationManopt
2827
- OptimizationMetaheuristics
@@ -62,7 +61,7 @@ jobs:
6261
GROUP: ${{ matrix.group }}
6362
- uses: julia-actions/julia-processcoverage@v1
6463
with:
65-
directories: src,lib/OptimizationBBO/src,lib/OptimizationCMAEvolutionStrategy/src,lib/OptimizationEvolutionary/src,lib/OptimizationFlux/src,lib/OptimizationGCMAES/src,lib/OptimizationMOI/src,lib/OptimizationMetaheuristics/src,lib/OptimizationMultistartOptimization/src,lib/OptimizationNLopt/src,lib/OptimizationNOMAD/src,lib/OptimizationOptimJL/src,lib/OptimizationOptimisers/src,lib/OptimizationPolyalgorithms/src,lib/OptimizationQuadDIRECT/src,lib/OptimizationSpeedMapping/src
64+
directories: src,lib/OptimizationBBO/src,lib/OptimizationCMAEvolutionStrategy/src,lib/OptimizationEvolutionary/src,lib/OptimizationGCMAES/src,lib/OptimizationManopt/src,lib/OptimizationMOI/src,lib/OptimizationMetaheuristics/src,lib/OptimizationMultistartOptimization/src,lib/OptimizationNLopt/src,lib/OptimizationNOMAD/src,lib/OptimizationOptimJL/src,lib/OptimizationOptimisers/src,lib/OptimizationPolyalgorithms/src,lib/OptimizationQuadDIRECT/src,lib/OptimizationSpeedMapping/src
6665
- uses: codecov/codecov-action@v4
6766
with:
6867
file: lcov.info

Project.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ LBFGSB = "5be7bae1-8223-5378-bac3-9e7378a2f6e6"
1111
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
1212
Logging = "56ddb016-857b-54e1-b83d-db4d58db5568"
1313
LoggingExtras = "e6f89c97-d47a-5376-807f-9c37f3926c36"
14+
MLUtils = "f1d291b0-491e-4a28-83b9-f70985020b54"
1415
OptimizationBase = "bca83a33-5cc9-4baa-983d-23429ab6bcbb"
1516
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
1617
ProgressLogging = "33c8b6b6-d38a-422a-b730-caa89a2f386c"
@@ -28,7 +29,8 @@ LBFGSB = "0.4.1"
2829
LinearAlgebra = "1.10"
2930
Logging = "1.10"
3031
LoggingExtras = "0.4, 1"
31-
OptimizationBase = "1.3.3"
32+
MLUtils = "0.4.4"
33+
OptimizationBase = "2.0.3"
3234
Printf = "1.10"
3335
ProgressLogging = "0.1"
3436
Reexport = "1.2"

docs/src/index.md

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -182,48 +182,37 @@ to add the specific wrapper packages.
182182
url = {https://doi.org/10.5281/zenodo.7738525},
183183
year = 2023}
184184
```
185-
186185
## Reproducibility
187-
188186
```@raw html
189187
<details><summary>The documentation of this SciML package was built using these direct dependencies,</summary>
190188
```
191-
192189
```@example
193190
using Pkg # hide
194191
Pkg.status() # hide
195192
```
196-
197193
```@raw html
198194
</details>
199195
```
200-
201196
```@raw html
202197
<details><summary>and using this machine and Julia version.</summary>
203198
```
204-
205199
```@example
206200
using InteractiveUtils # hide
207201
versioninfo() # hide
208202
```
209-
210203
```@raw html
211204
</details>
212205
```
213-
214206
```@raw html
215207
<details><summary>A more complete overview of all dependencies and their versions is also provided.</summary>
216208
```
217-
218209
```@example
219210
using Pkg # hide
220211
Pkg.status(; mode = PKGMODE_MANIFEST) # hide
221212
```
222-
223213
```@raw html
224214
</details>
225215
```
226-
227216
```@eval
228217
using TOML
229218
using Markdown

lib/OptimizationBBO/src/OptimizationBBO.jl

Lines changed: 5 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -111,12 +111,6 @@ function SciMLBase.__solve(cache::Optimization.OptimizationCache{
111111
}
112112
local x, cur, state
113113

114-
if cache.data != Optimization.DEFAULT_DATA
115-
maxiters = length(cache.data)
116-
end
117-
118-
cur, state = iterate(cache.data)
119-
120114
function _cb(trace)
121115
if cache.callback === Optimization.DEFAULT_CALLBACK
122116
cb_call = false
@@ -138,9 +132,6 @@ function SciMLBase.__solve(cache::Optimization.OptimizationCache{
138132
BlackBoxOptim.shutdown_optimizer!(trace) #doesn't work
139133
end
140134

141-
if cache.data !== Optimization.DEFAULT_DATA
142-
cur, state = iterate(cache.data, state)
143-
end
144135
cb_call
145136
end
146137

@@ -149,37 +140,16 @@ function SciMLBase.__solve(cache::Optimization.OptimizationCache{
149140

150141
_loss = function (θ)
151142
if isa(cache.f, MultiObjectiveOptimizationFunction)
152-
if cache.callback === Optimization.DEFAULT_CALLBACK &&
153-
cache.data === Optimization.DEFAULT_DATA
154-
return cache.f(θ, cache.p)
155-
elseif cache.callback === Optimization.DEFAULT_CALLBACK
156-
return cache.f(θ, cache.p, cur...)
157-
elseif cache.data !== Optimization.DEFAULT_DATA
158-
x = cache.f(θ, cache.p)
159-
return x
160-
else
161-
x = cache.f(θ, cache.p, cur...)
162-
return first(x)
163-
end
143+
x = (cache.f(θ, cache.p),)
144+
return x[1]
164145
else
165-
if cache.callback === Optimization.DEFAULT_CALLBACK &&
166-
cache.data === Optimization.DEFAULT_DATA
167-
return first(cache.f(θ, cache.p))
168-
elseif cache.callback === Optimization.DEFAULT_CALLBACK
169-
return first(cache.f(θ, cache.p, cur...))
170-
elseif cache.data !== Optimization.DEFAULT_DATA
171-
x = cache.f(θ, cache.p)
172-
return first(x)
173-
else
174-
x = cache.f(θ, cache.p, cur...)
175-
return first(x)
176-
end
146+
x = cache.f(θ, cache.p)
147+
return first(x)
177148
end
178149
end
179150

180151
opt_args = __map_optimizer_args(cache, cache.opt;
181-
callback = cache.callback === Optimization.DEFAULT_CALLBACK &&
182-
cache.data === Optimization.DEFAULT_DATA ?
152+
callback = cache.callback === Optimization.DEFAULT_CALLBACK ?
183153
nothing : _cb,
184154
cache.solver_args...,
185155
maxiters = maxiters,

lib/OptimizationCMAEvolutionStrategy/src/OptimizationCMAEvolutionStrategy.jl

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,6 @@ function SciMLBase.__solve(cache::OptimizationCache{
7474
}
7575
local x, cur, state
7676

77-
if cache.data != Optimization.DEFAULT_DATA
78-
maxiters = length(cache.data)
79-
end
80-
81-
cur, state = iterate(cache.data)
82-
8377
function _cb(opt, y, fvals, perm)
8478
curr_u = opt.logger.xbest[end]
8579
opt_state = Optimization.OptimizationState(; iter = length(opt.logger.fmedian),
@@ -91,15 +85,14 @@ function SciMLBase.__solve(cache::OptimizationCache{
9185
if !(cb_call isa Bool)
9286
error("The callback should return a boolean `halt` for whether to stop the optimization process.")
9387
end
94-
cur, state = iterate(cache.data, state)
9588
cb_call
9689
end
9790

9891
maxiters = Optimization._check_and_convert_maxiters(cache.solver_args.maxiters)
9992
maxtime = Optimization._check_and_convert_maxtime(cache.solver_args.maxtime)
10093

10194
_loss = function (θ)
102-
x = cache.f(θ, cache.p, cur...)
95+
x = cache.f(θ, cache.p)
10396
return first(x)
10497
end
10598

lib/OptimizationEvolutionary/src/OptimizationEvolutionary.jl

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -99,12 +99,6 @@ function SciMLBase.__solve(cache::OptimizationCache{
9999
}
100100
local x, cur, state
101101

102-
if cache.data != Optimization.DEFAULT_DATA
103-
maxiters = length(cache.data)
104-
end
105-
106-
cur, state = iterate(cache.data)
107-
108102
function _cb(trace)
109103
curr_u = decompose_trace(trace).metadata["curr_u"]
110104
opt_state = Optimization.OptimizationState(;
@@ -116,7 +110,6 @@ function SciMLBase.__solve(cache::OptimizationCache{
116110
if !(cb_call isa Bool)
117111
error("The callback should return a boolean `halt` for whether to stop the optimization process.")
118112
end
119-
cur, state = iterate(cache.data, state)
120113
cb_call
121114
end
122115

@@ -127,10 +120,10 @@ function SciMLBase.__solve(cache::OptimizationCache{
127120

128121
_loss = function (θ)
129122
if isa(f, MultiObjectiveOptimizationFunction)
130-
x = f(θ, cache.p, cur...)
123+
x = f(θ, cache.p)
131124
return x
132125
else
133-
x = f(θ, cache.p, cur...)
126+
x = f(θ, cache.p)
134127
return first(x)
135128
end
136129
end

lib/OptimizationFlux/LICENSE

Lines changed: 0 additions & 21 deletions
This file was deleted.

lib/OptimizationFlux/Project.toml

Lines changed: 0 additions & 25 deletions
This file was deleted.

lib/OptimizationFlux/src/OptimizationFlux.jl

Lines changed: 0 additions & 115 deletions
This file was deleted.

0 commit comments

Comments
 (0)