SpeedMapping.jl
SpeedMapping
accelerates the convergence of a mapping to a fixed point by the Alternating cyclic extrapolation algorithm which can also perform multivariate optimization based on the gradient function.
The SpeedMapping algorithm is called by SpeedMappingOpt()
Installation: OptimizationSpeedMapping.jl
To use this package, install the OptimizationSpeedMapping package:
import Pkg;
Pkg.add("OptimizationSpeedMapping");
Global Optimizer
Without Constraint Equations
The method in SpeedMapping
is performing optimization on problems without constraint equations. Lower and upper constraints set by lb
and ub
in the OptimizationProblem
are optional.
If no AD backend is defined via OptimizationFunction
the gradient is calculated via SpeedMapping
's ForwardDiff AD backend.
The Rosenbrock function can be optimized using the SpeedMappingOpt()
with and without bound as follows:
using Optimization, OptimizationSpeedMapping
rosenbrock(x, p) = (p[1] - x[1])^2 + p[2] * (x[2] - x[1]^2)^2
x0 = zeros(2)
p = [1.0, 100.0]
f = OptimizationFunction(rosenbrock, Optimization.AutoForwardDiff())
prob = OptimizationProblem(f, x0, p)
sol = solve(prob, SpeedMappingOpt())
prob = OptimizationProblem(f, x0, p; lb = [0.0, 0.0], ub = [1.0, 1.0])
sol = solve(prob, SpeedMappingOpt())
retcode: Success
u: 2-element Vector{Float64}:
0.9999999976241352
0.9999999952387632