Документация Engee

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]))