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

NLPModels.jl

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

NLPModels, как и сам пакет Optimization.jl, предоставляет стандартизированный интерфейс моделирования для представления нелинейных программ, что упрощает использование различных решателей для одной и той же задачи. Расширение Optimization.jl для NLPModels призвано обеспечить тонкий слой преобразования для обеспечения совместимости NLPModel, основного экспорта пакета, с оптимизаторами экосистемы Optimization.jl.

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

Для преобразования NLPModel установите пакет OptimizationNLPModels:

import Pkg;
Pkg.add("OptimizationNLPModels")

Сам по себе пакет NLPModels.jl не содержит оптимизаторов или моделей. Ряд пакетов предоставляют задачи оптимизации (CUTEst.jl, NLPModelsTest.jl), которые могут решаться с помощью любого оптимизатора, поддерживаемого Optimization.jl

Использование

Например, можно решить задачу, определенную в NLPModelsTest, с помощью Ipopt.jl. Сначала установите пакеты следующим образом:

import Pkg;
Pkg.add("NLPModelsTest", "Ipopt")

Мы создаем экземпляр задачи 10 из набора оптимизаций Хока — Шитковского, доступном в NLPModelsTest как HS10, а затем преобразовываем его в OptimizationProblem.

using OptimizationNLPModels, Optimization, NLPModelsTest, Ipopt
using Optimization: OptimizationProblem
nlpmodel = NLPModelsTest.HS10()
prob = OptimizationProblem(nlpmodel, AutoForwardDiff())
OptimizationProblem. In-place: true
u0: 2-element Vector{Float64}:
 -10.0
  10.0

Теперь эту задачу можно решить так же, как любую другую задачу OptimizationProblem:

sol = solve(prob, Ipopt.Optimizer())
retcode: Success
u: 2-element Vector{Float64}:
 -5.513205801266308e-15
  1.0000000024923896

API

Задачи, представленные как NLPModel, можно использовать для создания объектов OptimizationProblem и OptimizationFunction.