GalacticOptim.jl

Build Status

GalacticOptim.jl is a package with a scope that is beyond your normal global optimization package. GalacticOptim.jl seeks to bring together all of the optimization packages it can find, local and global, into one unified Julia interface. This means, you learn one package and you learn them all! GalacticOptim.jl adds a few high level features, such as integrating with automatic differentiation, to make its usage fairly simple for most cases, while allowing all of the options in a single unified interface.

Note: This package is currently in development and is not released. The README is currently a development roadmap.

Examples

using GalacticOptim
rosenbrock(x,p) =  (p[1] - x[1])^2 + p[2] * (x[2] - x[1]^2)^2
x0 = zeros(2)
p  = [1.0,100.0]

prob = OptimizationProblem(f,x0,p)
sol = solve(prob,BFGS())

prob = OptimizationProblem(f,lower_bounds=[-1.0,-1.0],upper_bounds=[1.0,1.0])
sol = solve(prob,BFGS())

using BlackBoxOptim
sol = solve(prob,BBO())

using Flux
sol = solve(prob,ADAM(0.01),maxiters = 100)

Automatic Differentiation Choices

While one can fully define all of the derivative functions associated with nonlinear constrained optimization directly, in many cases it's easiest to just rely on automatic differentiation to derive those functions. In GalacticOptim.jl, you can provide as few functions as you want, or give a differentiation library choice.

  • AutoForwardDiff()
  • AutoReverseDiff(compile=false)
  • AutoTracker()
  • AutoZygote()
  • AutoFiniteDiff()
  • AutoModelingToolkit()

Symbolic DSL Interface

Provided by ModelingToolkit.jl

API Documentation

OptimizationFunction(f;
                     grad = AutoForwardDiff(),
                     hes = AutoForwardDiff(),
                     eqconstraints = AutoForwardDiff(),
                     neqconstraints = AutoForwardDiff(),
                     eqconstraints_jac = AutoForwardDiff(),
                     neqconstraints_jac = AutoForwardDiff(),
                     colorvec,hessparsity,eqsparsity,neqsparsity)
OptimizationProblem(f,x0=nothing,p=nothing;
                    lower_bounds=nothing,
                    upper_bounds=nothing)
solve(prob,alg;kwargs...)

Keyword arguments:

  • maxiters
  • abstol
  • reltol

Output Struct: