SpeedMapping.jl
|
Страница в процессе перевода. |
SpeedMapping ускоряет сходимость отображения к фиксированной точке с помощью алгоритма чередующейся циклической экстраполяции, который также может выполнять многомерную оптимизацию на основе функции градиента.
Алгоритм SpeedMapping вызывается функцией SpeedMappingOpt().
Установка: Installation:-OptimizationSpeedMapping.jl
Чтобы использовать этот пакет, установите пакет OptimizationSpeedMapping:
import Pkg;
Pkg.add("OptimizationSpeedMapping");
Глобальный оптимизатор
Без уравнений ограничений
Метод в SpeedMapping выполняет оптимизацию задач без уравнений ограничений. Нижние и верхние ограничения, заданные в lb и ub в OptimizationProblem, являются необязательными.
Если бэкенд автоматического дифференцирования не задан посредством OptimizationFunction, градиент вычисляется с помощью бэкенда автоматического дифференцирования ForwardDiff из SpeedMapping.
Функцию Розенброка можно оптимизировать с помощью SpeedMappingOpt() с границами и без них следующим образом:
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