NLPModels.jl
NLPModels, similarly to Optimization.jl itself, provides a standardized modeling interface for representing Non-Linear Programs that facilitates using different solvers on the same problem. The Optimization.jl extension of NLPModels aims to provide a thin translation layer to make NLPModel
s, the main export of the package, compatible with the optimizers in the Optimization.jl ecosystem.
Installation: NLPModels.jl
To translate an NLPModel
, install the OptimizationNLPModels package:
import Pkg;
Pkg.add("OptimizationNLPModels")
The package NLPModels.jl itself contains no optimizers or models. Several packages provide optimization problem (CUTEst.jl, NLPModelsTest.jl) which can then be solved with any optimizer supported by Optimization.jl
Usage
For example, solving a problem defined in NLPModelsTest
with Ipopt.jl
. First, install the packages like so:
import Pkg;
Pkg.add("NLPModelsTest", "Ipopt")
We instantiate problem 10 in the Hock–Schittkowski optimization suite available from NLPModelsTest
as HS10
, then translate it to an 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
which can now be solved like any other OptimizationProblem
:
sol = solve(prob, Ipopt.Optimizer())
retcode: Success
u: 2-element Vector{Float64}:
-5.547032851145213e-15
1.0000000024923896
API
Problems represented as NLPModel
s can be used to create OptimizationProblem
s and OptimizationFunction
.