Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ TerminalLoggers = "5d786b92-1e48-4d6f-9151-6b4477ca9bed"

[sources]
OptimizationBase = {path = "lib/OptimizationBase"}
OptimizationLBFGSB = {path = "lib/OptimizationLBFGSB"}
OptimizationMOI = {path = "lib/OptimizationMOI"}
OptimizationOptimJL = {path = "lib/OptimizationOptimJL"}
OptimizationOptimisers = {path = "lib/OptimizationOptimisers"}

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

[targets]
test = ["Aqua", "BenchmarkTools", "Boltz", "ComponentArrays", "DiffEqFlux", "Enzyme", "FiniteDiff", "Flux", "ForwardDiff",
"Ipopt", "IterTools", "Lux", "MLUtils", "ModelingToolkit", "Optim", "OptimizationMOI", "OptimizationOptimJL", "OptimizationOptimisers",
"Ipopt", "IterTools", "Lux", "MLUtils", "ModelingToolkit", "Optim", "OptimizationLBFGSB", "OptimizationMOI", "OptimizationOptimJL", "OptimizationOptimisers",
"OrdinaryDiffEqTsit5", "Pkg", "Random", "ReverseDiff", "SafeTestsets", "SciMLSensitivity", "SparseArrays",
"Symbolics", "Test", "Tracker", "Zygote", "Mooncake"]
11 changes: 7 additions & 4 deletions lib/OptimizationAuglag/Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,26 @@ uuid = "2ea93f80-9333-43a1-a68d-1f53b957a421"
authors = ["paramthakkar123 <[email protected]>"]
version = "1.0.0"

[sources]
OptimizationBase = {path = "../OptimizationBase"}

[deps]
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
MLUtils = "f1d291b0-491e-4a28-83b9-f70985020b54"
Optimization = "7f7a1694-90dd-40f0-9382-eb1efda571ba"
OptimizationBase = "bca83a33-5cc9-4baa-983d-23429ab6bcbb"
MLUtils = "f1d291b0-491e-4a28-83b9-f70985020b54"
OptimizationOptimisers = "42dfb2eb-d2b4-4451-abcd-913932933ac1"
SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462"

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

[compat]
ForwardDiff = "1.0.1"
OptimizationBase = "2.13"
MLUtils = "0.4.8"
Optimization = "4.4.0"
OptimizationBase = "2.10.0"
OptimizationOptimisers = "0.3.8"
Test = "1.10.0"
SciMLBase = "2.58"
julia = "1.10"

[targets]
Expand Down
7 changes: 3 additions & 4 deletions lib/OptimizationAuglag/src/OptimizationAuglag.jl
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
module OptimizationAuglag

using Optimization
using OptimizationBase.SciMLBase: OptimizationProblem, OptimizationFunction, OptimizationStats
using SciMLBase: OptimizationProblem, OptimizationFunction, OptimizationStats
using OptimizationBase.LinearAlgebra: norm

@kwdef struct AugLag
Expand Down Expand Up @@ -84,7 +83,7 @@ function SciMLBase.__solve(cache::OptimizationCache{
P,
C
}
maxiters = Optimization._check_and_convert_maxiters(cache.solver_args.maxiters)
maxiters = OptimizationBase._check_and_convert_maxiters(cache.solver_args.maxiters)

local x

Expand Down Expand Up @@ -116,7 +115,7 @@ function SciMLBase.__solve(cache::OptimizationCache{
cache.f.cons(cons_tmp, θ)
cons_tmp[eq_inds] .= cons_tmp[eq_inds] - cache.lcons[eq_inds]
cons_tmp[ineq_inds] .= cons_tmp[ineq_inds] .- cache.ucons[ineq_inds]
opt_state = Optimization.OptimizationState(u = θ, objective = x[1])
opt_state = OptimizationBase.OptimizationState(u = θ, objective = x[1])
if cache.callback(opt_state, x...)
error("Optimization halted by callback.")
end
Expand Down
2 changes: 1 addition & 1 deletion lib/OptimizationAuglag/test/runtests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ using OptimizationOptimisers
using OptimizationAuglag
using ForwardDiff
using OptimizationBase: OptimizationCache
using OptimizationBase.SciMLBase: OptimizationFunction
using SciMLBase: OptimizationFunction
using Test

@testset "OptimizationAuglag.jl" begin
Expand Down
17 changes: 11 additions & 6 deletions lib/OptimizationBBO/Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,24 @@ uuid = "3e6eede4-6085-4f62-9a71-46d9bc1eb92b"
authors = ["Vaibhav Dixit <[email protected]> and contributors"]
version = "0.4.2"

[sources]
OptimizationBase = {path = "../OptimizationBase"}

[deps]
BlackBoxOptim = "a134a8b2-14d6-55f6-9291-3336d3ab0209"
Optimization = "7f7a1694-90dd-40f0-9382-eb1efda571ba"
OptimizationBase = "bca83a33-5cc9-4baa-983d-23429ab6bcbb"
SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462"
Reexport = "189a3867-3050-52da-a836-e630ba90ab69"

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

[compat]
julia = "1.10"
BlackBoxOptim = "0.6"
Optimization = "4.4"
OptimizationBase = "2.13"
SciMLBase = "2.58"
Reexport = "1.2"
julia = "1.10"

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

[targets]
test = ["Test"]
26 changes: 13 additions & 13 deletions lib/OptimizationBBO/src/OptimizationBBO.jl
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
module OptimizationBBO

using Reexport
import Optimization
import Optimization: OptimizationBase
import BlackBoxOptim, Optimization.SciMLBase
import Optimization.SciMLBase: MultiObjectiveOptimizationFunction
import OptimizationBase
import OptimizationBase: SciMLBase
import BlackBoxOptim
import SciMLBase: MultiObjectiveOptimizationFunction

abstract type BBO end

Expand Down Expand Up @@ -48,7 +48,7 @@ function decompose_trace(opt::BlackBoxOptim.OptRunController, progress)
return BlackBoxOptim.best_candidate(opt)
end

function __map_optimizer_args(prob::Optimization.OptimizationCache, opt::BBO;
function __map_optimizer_args(prob::OptimizationBase.OptimizationCache, opt::BBO;
callback = nothing,
maxiters::Union{Number, Nothing} = nothing,
maxtime::Union{Number, Nothing} = nothing,
Expand Down Expand Up @@ -96,7 +96,7 @@ function map_objective(obj::BlackBoxOptim.IndexedTupleFitness)
obj.orig
end

function SciMLBase.__solve(cache::Optimization.OptimizationCache{
function SciMLBase.__solve(cache::OptimizationBase.OptimizationCache{
F,
RC,
LB,
Expand All @@ -123,13 +123,13 @@ function SciMLBase.__solve(cache::Optimization.OptimizationCache{
C
}
function _cb(trace)
if cache.callback === Optimization.DEFAULT_CALLBACK
if cache.callback === OptimizationBase.DEFAULT_CALLBACK
cb_call = false
else
n_steps = BlackBoxOptim.num_steps(trace)
curr_u = decompose_trace(trace, cache.progress)
objective = map_objective(BlackBoxOptim.best_fitness(trace))
opt_state = Optimization.OptimizationState(;
opt_state = OptimizationBase.OptimizationState(;
iter = n_steps,
u = curr_u,
p = cache.p,
Expand All @@ -148,15 +148,15 @@ function SciMLBase.__solve(cache::Optimization.OptimizationCache{
cb_call
end

maxiters = Optimization._check_and_convert_maxiters(cache.solver_args.maxiters)
maxtime = Optimization._check_and_convert_maxtime(cache.solver_args.maxtime)
maxiters = OptimizationBase._check_and_convert_maxiters(cache.solver_args.maxiters)
maxtime = OptimizationBase._check_and_convert_maxtime(cache.solver_args.maxtime)

_loss = function (θ)
cache.f(θ, cache.p)
end

opt_args = __map_optimizer_args(cache, cache.opt;
callback = cache.callback === Optimization.DEFAULT_CALLBACK ?
callback = cache.callback === OptimizationBase.DEFAULT_CALLBACK ?
nothing : _cb,
cache.solver_args...,
maxiters = maxiters,
Expand All @@ -176,8 +176,8 @@ function SciMLBase.__solve(cache::Optimization.OptimizationCache{
end

# Use the improved convert function
opt_ret = Optimization.deduce_retcode(opt_res.stop_reason)
stats = Optimization.OptimizationStats(;
opt_ret = OptimizationBase.deduce_retcode(opt_res.stop_reason)
stats = OptimizationBase.OptimizationStats(;
iterations = opt_res.iterations,
time = opt_res.elapsed_time,
fevals = opt_res.f_calls)
Expand Down
14 changes: 7 additions & 7 deletions lib/OptimizationBBO/test/runtests.jl
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using OptimizationBBO, Optimization, BlackBoxOptim
using Optimization.SciMLBase: MultiObjectiveOptimizationFunction
using SciMLBase: MultiObjectiveOptimizationFunction
using Test

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

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

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

prob = Optimization.OptimizationProblem(optprob, nothing, _p, lb = [-1.0, -1.0],
prob = OptimizationBase.OptimizationProblem(optprob, nothing, _p, lb = [-1.0, -1.0],
ub = [0.8, 0.8])
sol = solve(prob, BBO_adaptive_de_rand_1_bin_radiuslimited())
@test 10 * sol.objective < l1
Expand Down Expand Up @@ -74,7 +74,7 @@ using Test
end

mof_1 = MultiObjectiveOptimizationFunction(multi_obj_func_1)
prob_1 = Optimization.OptimizationProblem(mof_1, u0; lb = lb, ub = ub)
prob_1 = OptimizationBase.OptimizationProblem(mof_1, u0; lb = lb, ub = ub)
sol_1 = solve(prob_1, opt, NumDimensions = 2,
FitnessScheme = ParetoFitnessScheme{2}(is_minimizing = true))

Expand All @@ -101,7 +101,7 @@ using Test
end

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

mof_2 = MultiObjectiveOptimizationFunction(multi_obj_func_2)
prob_2 = Optimization.OptimizationProblem(mof_2, u0; lb = lb, ub = ub)
prob_2 = OptimizationBase.OptimizationProblem(mof_2, u0; lb = lb, ub = ub)
sol_2 = solve(prob_2, opt, NumDimensions = 2,
FitnessScheme = ParetoFitnessScheme{2}(is_minimizing = true))

Expand All @@ -147,7 +147,7 @@ using Test
end

mof_3 = MultiObjectiveOptimizationFunction(multi_obj_func_3)
prob_3 = Optimization.OptimizationProblem(mof_3, u0; lb = lb, ub = ub)
prob_3 = OptimizationBase.OptimizationProblem(mof_3, u0; lb = lb, ub = ub)
sol_3 = solve(prob_3, opt, NumDimensions = 2,
FitnessScheme = ParetoFitnessScheme{2}(is_minimizing = true))

Expand Down
2 changes: 1 addition & 1 deletion lib/OptimizationBase/Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name = "OptimizationBase"
uuid = "bca83a33-5cc9-4baa-983d-23429ab6bcbb"
authors = ["Vaibhav Dixit <[email protected]> and contributors"]
version = "2.12.0"
version = "2.13.0"

[deps]
ADTypes = "47edcb42-4c32-4615-8424-f2b9edc5f35b"
Expand Down
4 changes: 2 additions & 2 deletions lib/OptimizationBase/ext/OptimizationEnzymeExt.jl
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
module OptimizationEnzymeExt

import OptimizationBase, OptimizationBase.ArrayInterface
import OptimizationBase.SciMLBase: OptimizationFunction
import OptimizationBase.SciMLBase
import SciMLBase: OptimizationFunction
import SciMLBase
import OptimizationBase.LinearAlgebra: I, dot
import OptimizationBase.ADTypes: AutoEnzyme
using Enzyme
Expand Down
4 changes: 2 additions & 2 deletions lib/OptimizationBase/ext/OptimizationMTKExt.jl
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
module OptimizationMTKExt

import OptimizationBase, OptimizationBase.ArrayInterface
import OptimizationBase.SciMLBase
import OptimizationBase.SciMLBase: OptimizationFunction
import SciMLBase
import SciMLBase: OptimizationFunction
import OptimizationBase.ADTypes: AutoModelingToolkit, AutoSymbolics, AutoSparse
using ModelingToolkit

Expand Down
2 changes: 1 addition & 1 deletion lib/OptimizationBase/ext/OptimizationZygoteExt.jl
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module OptimizationZygoteExt
using OptimizationBase, SparseArrays
using OptimizationBase.FastClosures
import OptimizationBase.ArrayInterface
import OptimizationBase.SciMLBase: OptimizationFunction
import SciMLBase: OptimizationFunction
import OptimizationBase.LinearAlgebra: I, dot
import DifferentiationInterface
import DifferentiationInterface: prepare_gradient, prepare_hessian, prepare_hvp,
Expand Down
2 changes: 2 additions & 0 deletions lib/OptimizationBase/src/OptimizationBase.jl
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ include("OptimizationDIExt.jl")
include("OptimizationDISparseExt.jl")
include("function.jl")
include("solve.jl")
include("utils.jl")
include("state.jl")

export solve, OptimizationCache, DEFAULT_CALLBACK, DEFAULT_DATA,
IncompatibleOptimizerError, OptimizerMissingError, _check_opt_alg,
Expand Down
2 changes: 1 addition & 1 deletion lib/OptimizationBase/src/OptimizationDIExt.jl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using OptimizationBase
import OptimizationBase.ArrayInterface
import OptimizationBase.SciMLBase: OptimizationFunction
import SciMLBase: OptimizationFunction
import OptimizationBase.LinearAlgebra: I
import DifferentiationInterface
import DifferentiationInterface: prepare_gradient, prepare_hessian, prepare_hvp,
Expand Down
2 changes: 1 addition & 1 deletion lib/OptimizationBase/src/OptimizationDISparseExt.jl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using OptimizationBase
import OptimizationBase.ArrayInterface
import OptimizationBase.SciMLBase: OptimizationFunction
import SciMLBase: OptimizationFunction
import OptimizationBase.LinearAlgebra: I
import DifferentiationInterface
import DifferentiationInterface: prepare_gradient, prepare_hessian, prepare_hvp,
Expand Down
2 changes: 1 addition & 1 deletion lib/OptimizationBase/src/augmented_lagrangian.jl
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ function generate_auglag(θ)
cache.f.cons(cons_tmp, θ)
cons_tmp[eq_inds] .= cons_tmp[eq_inds] - cache.lcons[eq_inds]
cons_tmp[ineq_inds] .= cons_tmp[ineq_inds] .- cache.ucons[ineq_inds]
opt_state = Optimization.OptimizationState(u = θ, objective = x[1])
opt_state = OptimizationBase.OptimizationState(u = θ, objective = x[1])
if cache.callback(opt_state, x...)
error("Optimization halted by callback.")
end
Expand Down
4 changes: 2 additions & 2 deletions lib/OptimizationBase/src/function.jl
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ function rep_pars_vals!(e, p) end
"""
instantiate_function(f, x, ::AbstractADType, p, num_cons = 0)::OptimizationFunction

This function is used internally by Optimization.jl to construct
This function is used internally by OptimizationBase.jl to construct
the necessary extra functions (gradients, Hessians, etc.) before
optimization. Each of the ADType dispatches use the supplied automatic
OptimizationBase. Each of the ADType dispatches use the supplied automatic
differentiation type in order to specify how the construction process
occurs.

Expand Down
4 changes: 2 additions & 2 deletions lib/OptimizationBase/src/solve.jl
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ end
const OPTIMIZER_MISSING_ERROR_MESSAGE = """
Optimization algorithm not found. Either the chosen algorithm is not a valid solver
choice for the `OptimizationProblem`, or the Optimization solver library is not loaded.
Make sure that you have loaded an appropriate Optimization.jl solver library, for example,
Make sure that you have loaded an appropriate OptimizationBase.jl solver library, for example,
`solve(prob,Optim.BFGS())` requires `using OptimizationOptimJL` and
`solve(prob,Adam())` requires `using OptimizationOptimisers`.

For more information, see the Optimization.jl documentation: <https://docs.sciml.ai/Optimization/stable/>.
For more information, see the OptimizationBase.jl documentation: <https://docs.sciml.ai/Optimization/stable/>.
"""

struct OptimizerMissingError <: Exception
Expand Down
File renamed without changes.
Loading
Loading