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

Optimization.jl: Единый пакет для оптимизации

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

Optimization.jl предоставляет самый простой способ создания и решения задачи оптимизации. Он обеспечивает быстрое прототипирование и экспериментирование с минимальными синтаксическими издержками, предоставляя единый интерфейс к более чем 25 библиотекам оптимизации, а значит, и к более чем 100 решателям задач оптимизации, охватывающим почти все классы алгоритмов оптимизации, такие как глобальные, смешанные целочисленные, невыпуклые, локальные второго порядка, с ограничениями и т. д. Он позволяет выбрать бэкенд автоматического дифференцирования (AD), просто передав аргумент, указывающий на используемый пакет, и автоматически генерирует эффективные производные целевой функции и ограничений, предоставляя при этом гибкость для переключения между различными движками AD в зависимости от вашей задачи. Кроме того, Optimization.jl берет на себя передачу специфической для задачи информации решателям, которые могут ее использовать, например, структуру разреженности матрицы Гессе или матрицы Якоби ограничений и граф выражений.

Он расширяет общий интерфейс SciML, что делает его очень простым в использовании для любого, кто знаком с экосистемой SciML. Также его очень легко расширить для новых решателей и новых типов задач. Пакет активно поддерживается, и новые функции добавляются регулярно.

Установка

Предполагая, что у вас уже правильно установлена ​​Julia, достаточно импортировать Optimization.jl стандартным способом:

import Pkg
Pkg.add("Optimization")

Пакеты, необходимые для основной функциональности Optimization.jl, будут импортированы соответствующим образом, и в большинстве случаев вам не нужно беспокоиться о ручной установке зависимостей. Optimization.jl изначально предлагает решатель LBFGS, но для большего выбора решателей (обсуждаемых ниже в разделе «Пакеты Optimization») вам потребуется добавить соответствующие пакеты-обертки.