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

NOMAD.jl

Страница в процессе перевода.

NOMAD — это пакет Julia, который взаимодействует с NOMAD, реализацией алгоритма прямого поиска на адаптивных сетках (Mesh Adaptive Direct Search, MADS) на языке C++, предназначенного для решения сложных задач оптимизации черного ящика. Это такие задачи, когда для получения функций, определяющих цель и ограничения, требуется затратное компьютерное моделирование. NOMAD.jl documentation

Алгоритм NOMAD вызывается функцией NOMADOpt().

Установка: OptimizationNOMAD.jl

Чтобы использовать этот пакет, установите пакет OptimizationNOMAD:

import Pkg;
Pkg.add("OptimizationNOMAD");

Глобальный оптимизатор

Без уравнений ограничений

Метод в NOMAD выполняет глобальную оптимизацию задач как с уравнениями ограничений, так и без них. Однако линейные и нелинейные ограничения, определенные в Optimization, в настоящее время не передаются.

NOMAD работает как с нижними и верхними прямоугольными границами, заданными в lb и ub в OptimizationProblem, так и без них.

Примеры

Функцию Розенброка можно оптимизировать с помощью NOMADOpt() с прямоугольными ограничениями и без них следующим образом:

using Optimization, OptimizationNOMAD
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 = OptimizationProblem(f, x0, p)
sol = Optimization.solve(prob, NOMADOpt())

prob = OptimizationProblem(f, x0, p, lb = [-1.0, -1.0], ub = [1.5, 1.5])
sol = Optimization.solve(prob, NOMADOpt())
retcode: Default
u: 2-element Vector{Float64}:
 0.999457
 0.99893