-
-
Notifications
You must be signed in to change notification settings - Fork 85
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
60 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | ||
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) | ||
``` |