PyCMA.jl
|
Страница в процессе перевода. |
PyCMA — это реализация CMA-ES и ряда связанных инструментов численной оптимизации на Python. OptimizationPyCMA.jl предоставляет доступ к оптимизатору CMA-ES через унифицированный интерфейс Optimization.jl, как и к любому собственному оптимизатору Julia.
Пакет OptimizationPyCMA.jl использует PythonCall. При первом использовании минимальный дистрибутив Python с PyCMA устанавливается автоматически, поэтому настраивать Python вручную не требуется.
Методы
PyCMAOpt поддерживает обычные именованные аргументы maxiters, maxtime, abstol, reltol, callback в дополнение к относящимся к PyCMA параметрам (передаваемым в функцию solve в точности через именованные аргументы).
Пример
using OptimizationPyCMA
rosenbrock(x, p) = (p[1] - x[1])^2 + p[2] * (x[2] - x[1]^2)^2
x0 = zeros(2)
_p = [1.0, 100.0]
l1 = rosenbrock(x0, _p)
f = OptimizationFunction(rosenbrock)
prob = OptimizationProblem(f, x0, _p, lb = [-1.0, -1.0], ub = [0.8, 0.8])
sol = solve(prob, PyCMAOpt())
retcode: Success
u: 2-element Vector{Float64}:
0.799999999999999
0.6399999989278904
Передача параметров, относящихся к решателю
Все именованные аргументы, не распознанные пакетом Optimization.jl, передаются напрямую в PyCMA.
Если именованный аргумент в Optimization.jl совпадает с именованным аргументом в PyCMA, приоритет имеет именованный аргумент из Optimization.jl.
Исчерпывающий список именованных аргументов можно получить, выполнив следующий скрипт Python:
import cma
options = cma.CMAOptions()
print(options)
Пример передачи именованных аргументов PyCMA verbose и seed:
sol = solve(prob, PyCMA(), verbose = -9, seed = 42)
Устранение неполадок
Исходный объект результата Python прикрепляется к решению в поле original:
sol = solve(prob, PyCMAOpt())
println(sol.original)
Сотрудничество
Сообщения об ошибках и запросы функций оставляйте в системе отслеживания ошибок Optimization.jl. Приветствуются любые запросы на вытягивание, улучшающие оболочку Julia или документацию.