Skip to content

Commit

Permalink
Documented translation layer
Browse files Browse the repository at this point in the history
  • Loading branch information
alonsoC1s committed Aug 15, 2024
1 parent a7e286c commit f406147
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 1 deletion.
3 changes: 2 additions & 1 deletion docs/pages.jl
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ pages = ["index.md",
"PRIMA.jl" => "optimization_packages/prima.md",
"Polyalgorithms.jl" => "optimization_packages/polyopt.md",
"QuadDIRECT.jl" => "optimization_packages/quaddirect.md",
"SpeedMapping.jl" => "optimization_packages/speedmapping.md"
"SpeedMapping.jl" => "optimization_packages/speedmapping.md",
"NLPModels.jl" => "optimization_packages/nlpmodels.md"
]
]
58 changes: 58 additions & 0 deletions docs/src/optimization_packages/nlpmodels.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# NLPModels.jl

[NLPModels](https://jso.dev/NLPModels.jl/latest/), 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:

```julia
import Pkg;
Pkg.add("OptimizationNLPModels")
```

The package NLPModels.jl itself containts no optimizers or models. Several packages

Check warning on line 18 in docs/src/optimization_packages/nlpmodels.md

View workflow job for this annotation

GitHub Actions / Spell Check with Typos

"containts" should be "contains".
provide optimization problem ([CUTEst.jl](https://jso.dev/CUTEst.jl/stable/),
[NLPModelsTest.jl](https://jso.dev/NLPModelsTest.jl/dev/)) which can then be solved with
any optimizer supported by Optimization.jl

## Usage

For example, solving a problem defined in `NLPModelsTest` with
[`Ipopt.jl`](https://github.com/jump-dev/Ipopt.jl). First, install the packages like so:

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

We instantiate [problem
10](https://jso.dev/NLPModelsTest.jl/dev/reference/#NLPModelsTest.HS10) in the
Hock--Schittkowski optimization suite available from `NLPModelsTest` as `HS10`, then
translate it to an `OptimizationProblem`.

```@example NLPModels
using OptimizationNLPModels, Optimization, NLPModelsTest, Ipopt
nlpmodel = NLPModelsTest.HS10()
prob = OptimizationProblem(nlpmodel, AutoForwardDiff())
```

which can now be solved like any other `OptimizationProblem`:

```@example NLPModels
sol = solve(prob, Ipopt.Optimizer())
```

## API

Problems represented as `NLPModel`s can be used to create `OptimizationProblem`s and
`OptimizationFunction`.

```@docs
SciMLBase.OptimizationFunction(::AbstractNLPModel, ::ADTypes.AbstractADType)
SciMLBase.OptimizationProblem(::AbstractNLPModel, ::ADTypes.AbstractADType)
```

0 comments on commit f406147

Please sign in to comment.