Skip to content

Commit 7bee838

Browse files
Merge pull request #140 from SciML/prune_imports
Prune imports
2 parents f393ae7 + 90f68f5 commit 7bee838

26 files changed

+1216
-882
lines changed

Project.toml

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,42 +6,26 @@ version = "1.3.0"
66
[deps]
77
ArrayInterface = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9"
88
ConsoleProgressMonitor = "88cd18e8-d9cc-4ea6-8889-5259c0d15c8b"
9-
DiffEqBase = "2b5f629d-d688-5b77-993f-72d75c75574e"
109
DiffResults = "163ba53b-c6d8-5494-b064-1a9d43ac40c5"
1110
DocStringExtensions = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
12-
FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41"
13-
Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c"
14-
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
1511
Logging = "56ddb016-857b-54e1-b83d-db4d58db5568"
1612
LoggingExtras = "e6f89c97-d47a-5376-807f-9c37f3926c36"
17-
ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78"
18-
Optim = "429524aa-4258-5aef-a3af-852621145aeb"
1913
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
2014
ProgressLogging = "33c8b6b6-d38a-422a-b730-caa89a2f386c"
2115
Reexport = "189a3867-3050-52da-a836-e630ba90ab69"
2216
Requires = "ae029012-a4dd-5104-9daa-d747884805df"
23-
ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267"
2417
SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462"
2518
TerminalLoggers = "5d786b92-1e48-4d6f-9151-6b4477ca9bed"
26-
Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c"
27-
Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f"
2819

2920
[compat]
3021
ArrayInterface = "2.13, 3.0"
3122
ConsoleProgressMonitor = "0.1"
32-
DiffEqBase = "6.48.1"
3323
DiffResults = "1.0"
3424
DocStringExtensions = "0.8"
35-
FiniteDiff = "2.5"
36-
Flux = "0.11, 0.12"
37-
ForwardDiff = "0.10"
3825
LoggingExtras = "0.4"
39-
ModelingToolkit = "5.2"
40-
Optim = "1"
4126
ProgressLogging = "0.1"
4227
Reexport = "0.2, 1.0"
4328
Requires = "1.0"
44-
ReverseDiff = "1.4"
4529
SciMLBase = "1.8.1"
4630
TerminalLoggers = "0.1"
4731
Tracker = "0.2"
@@ -53,13 +37,22 @@ BlackBoxOptim = "a134a8b2-14d6-55f6-9291-3336d3ab0209"
5337
CMAEvolutionStrategy = "8d3b24bd-414e-49e0-94fb-163cc3a3e411"
5438
DiffEqFlux = "aae7a2af-3d4f-5e19-a356-7da93b79d9d0"
5539
Evolutionary = "86b6b26d-c046-49b6-aa0b-5f0f74682bd6"
40+
FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41"
41+
Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c"
42+
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
5643
IterTools = "c8e1da08-722c-5040-9ed9-7db0dc04731e"
44+
ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78"
45+
MultistartOptimization = "3933049c-43be-478e-a8bb-6e0f7fd53575"
5746
NLopt = "76087f3c-5699-56af-9a33-bf431cd00edd"
47+
Optim = "429524aa-4258-5aef-a3af-852621145aeb"
5848
OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed"
5949
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
6050
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
51+
ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267"
6152
SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"
6253
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
54+
Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c"
55+
Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f"
6356

6457
[targets]
65-
test = ["BlackBoxOptim", "Evolutionary", "DiffEqFlux", "IterTools", "OrdinaryDiffEq", "NLopt", "CMAEvolutionStrategy", "Pkg", "Random", "SafeTestsets", "Test"]
58+
test = ["Flux", "ModelingToolkit", "Optim", "BlackBoxOptim", "Evolutionary", "DiffEqFlux", "IterTools", "OrdinaryDiffEq", "NLopt", "CMAEvolutionStrategy", "Pkg", "Random", "SafeTestsets", "Test", "FiniteDiff", "ForwardDiff", "Tracker", "ReverseDiff", "Zygote"]

src/GalacticOptim.jl

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,36 @@ module GalacticOptim
55

66
using DocStringExtensions
77
using Reexport
8-
@reexport using DiffEqBase
98
@reexport using SciMLBase
109
using Requires
11-
using DiffResults, ForwardDiff, Zygote, ReverseDiff, FiniteDiff
12-
import Tracker
13-
@reexport using Optim, Flux
10+
using DiffResults
1411
using Logging, ProgressLogging, Printf, ConsoleProgressMonitor, TerminalLoggers, LoggingExtras
1512
using ArrayInterface, Base.Iterators
1613

17-
using ForwardDiff: DEFAULT_CHUNK_THRESHOLD
1814
import SciMLBase: OptimizationProblem, OptimizationFunction, AbstractADType, __solve
1915

20-
import ModelingToolkit
21-
import ModelingToolkit: AutoModelingToolkit
22-
export AutoModelingToolkit
16+
include("solve/solve.jl")
17+
include("function/function.jl")
2318

24-
include("solve.jl")
25-
include("function.jl")
19+
function __init__()
20+
# Optimization backends
21+
@require BlackBoxOptim="a134a8b2-14d6-55f6-9291-3336d3ab0209" include("solve/blackboxoptim.jl")
22+
@require CMAEvolutionStrategy="8d3b24bd-414e-49e0-94fb-163cc3a3e411" include("solve/cmaevolutionstrategy.jl")
23+
@require Evolutionary="86b6b26d-c046-49b6-aa0b-5f0f74682bd6" include("solve/evolutionary.jl")
24+
@require Flux="587475ba-b771-5e3f-ad9e-33799f191a9c" include("solve/flux.jl")
25+
@require MultistartOptimization="3933049c-43be-478e-a8bb-6e0f7fd53575" include("solve/multistartoptimization.jl")
26+
@require NLopt="76087f3c-5699-56af-9a33-bf431cd00edd" include("solve/nlopt.jl")
27+
@require Optim="429524aa-4258-5aef-a3af-852621145aeb" include("solve/optim.jl")
28+
@require QuadDIRECT="dae52e8d-d666-5120-a592-9e15c33b8d7a" include("solve/quaddirect.jl")
2629

27-
export solve
30+
# AD backends
31+
@require FiniteDiff="6a86dc24-6348-571c-b903-95158fe2bd41" include("function/finitediff.jl")
32+
@require ForwardDiff="f6369f11-7733-5829-9624-2563aa707210" include("function/forwarddiff.jl")
33+
@require ReverseDiff="37e2e3b7-166d-5795-8a7a-e32c996b4267" include("function/reversediff.jl")
34+
@require Tracker="9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" include("function/tracker.jl")
35+
@require Zygote="e88e6eb3-aa80-5325-afca-941959d7151f" include("function/zygote.jl")
36+
end
2837

29-
export BBO, CMAEvolutionStrategyOpt
38+
export solve
3039

3140
end # module

src/function.jl

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

src/function/finitediff.jl

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
struct AutoFiniteDiff{T1,T2} <: AbstractADType
2+
fdtype::T1
3+
fdhtype::T2
4+
end
5+
6+
AutoFiniteDiff(;fdtype = Val(:forward), fdhtype = Val(:hcentral)) =
7+
AutoFiniteDiff(fdtype,fdhtype)
8+
9+
function instantiate_function(f, x, adtype::AutoFiniteDiff, p, num_cons = 0)
10+
num_cons != 0 && error("AutoFiniteDiff does not currently support constraints")
11+
_f = (θ, args...) -> first(f.f(θ, p, args...))
12+
13+
if f.grad === nothing
14+
grad = (res, θ, args...) -> FiniteDiff.finite_difference_gradient!(res, x ->_f(x, args...), θ, FiniteDiff.GradientCache(res, x, adtype.fdtype))
15+
else
16+
grad = f.grad
17+
end
18+
19+
if f.hess === nothing
20+
hess = (res, θ, args...) -> FiniteDiff.finite_difference_hessian!(res, x ->_f(x, args...), θ, FiniteDiff.HessianCache(x, adtype.fdhtype))
21+
else
22+
hess = f.hess
23+
end
24+
25+
if f.hv === nothing
26+
hv = function (H, θ, v, args...)
27+
res = ArrayInterface.zeromatrix(θ)
28+
hess(res, θ, args...)
29+
H .= res*v
30+
end
31+
else
32+
hv = f.hv
33+
end
34+
35+
return OptimizationFunction{false,AutoFiniteDiff,typeof(f),typeof(grad),typeof(hess),typeof(hv),Nothing,Nothing,Nothing}(f,adtype,grad,hess,hv,nothing,nothing,nothing)
36+
end

0 commit comments

Comments
 (0)