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.