QuadDIRECT.jl
|
Страница в процессе перевода. |
QuadDIRECT — это пакет Julia, в котором реализован алгоритм QuadDIRECT (вдохновленный DIRECT и MCS).
Алгоритм QuadDIRECT вызывается посредством QuadDirect().
Установка: OptimizationQuadDIRECT.jl
Чтобы использовать этот пакет, установите пакет OptimizationQuadDIRECT:
import Pkg;
Pkg.add(url = "https://github.com/SciML/Optimization.jl",
subdir = "lib/OptimizationQuadDIRECT");
Также обратите внимание, что для установки QuadDIRECT (на данный момент) следует сделать следующее.
] add https://github.com/timholy/QuadDIRECT.jl.git
Поскольку пакет QuadDIRECT не зарегистрирован в общем реестре, пакет OptimizationQuadDIRECT также не зарегистрирован и, следовательно, его нельзя установить с помощью стандартной команды.
Глобальный оптимизатор
Без уравнений ограничений
Алгоритм в QuadDIRECT выполняет глобальную оптимизацию задач без уравнений ограничений. Однако требуются нижние и верхние ограничения, заданные в lb и ub в OptimizationProblem.
Кроме того, с QuadDirect требуется splits, список трехэлементных векторов с начальными позициями, в которых вычисляется функция (значения должны быть в строго возрастающем порядке и лежать в указанных границах), то есть solve(problem, QuadDirect(), splits).
Пример
Функцию Розенброка можно оптимизировать с помощью QuadDirect() следующим образом:
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)
prob = Optimization.OptimizationProblem(f, x0, p, lb = [-1.0, -1.0], ub = [1.0, 1.0])
solve(prob, QuadDirect(), splits = ([-0.9, 0, 0.9], [-0.8, 0, 0.8]))