Skip to content

Commit e1c5b04

Browse files
Merge pull request #277 from odow/patch-1
Update docs for OptimizationMOI
2 parents 2a95726 + fb3576e commit e1c5b04

File tree

1 file changed

+25
-29
lines changed

1 file changed

+25
-29
lines changed
Lines changed: 25 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# MathOptInterface.jl
22

3-
[MathOptInterface](https://github.com/jump-dev/MathOptInterface.jl) is Julia abstration layer to interface with variety of mathematical optimization solvers.
3+
[MathOptInterface](https://github.com/jump-dev/MathOptInterface.jl) is Julia
4+
abstration layer to interface with variety of mathematical optimization solvers.
45

56
## Installation: OptimizationMOI.jl
67

@@ -12,13 +13,24 @@ import Pkg; Pkg.add("OptimizationMOI")
1213

1314
## Details
1415

15-
As of now the `Optimization` interface to `MathOptInterface` implents only the `maxtime` common keyword arguments. An optimizer which is implemented in the `MathOptInterface` is can be called be called directly if no optimizer options have to be defined. For example using the `Ipopt.jl` optimizer:
16+
As of now, the `Optimization` interface to `MathOptInterface` implements only
17+
the `maxtime` common keyword argument.
18+
19+
An optimizer which supports the `MathOptInterface` API can be called be called
20+
directly if no optimizer options have to be defined.
21+
22+
For example using the [`Ipopt.jl`](https://github.com/jump-dev/Ipopt.jl)
23+
optimizer:
24+
1625

1726
```julia
1827
sol = solve(prob, Ipopt.Optimizer())
1928
```
2029

21-
The optimizer options are handled in one of two ways. They can either be set via `Optimization.MOI.OptimizerWithAttributes()` or as keyword argument to `solve`. For example using the `Ipopt.jl` optimizer:
30+
The optimizer options are handled in one of two ways. They can either be set via
31+
`Optimization.MOI.OptimizerWithAttributes()` or as keyword argument to `solve`.
32+
33+
For example using the `Ipopt.jl` optimizer:
2234

2335
```julia
2436
opt = Optimization.MOI.OptimizerWithAttributes(Ipopt.Optimizer, "option_name" => option_value, ...)
@@ -27,32 +39,25 @@ sol = solve(prob, opt)
2739
sol = solve(prob, Ipopt.Optimizer(); option_name = option_value, ...)
2840
```
2941

42+
## Optimizers
3043

31-
32-
## Local Optimizer
33-
34-
### Local constraint
3544
#### Ipopt.jl (MathOptInterface)
3645

37-
- [`Ipopt.Optimizer`](https://juliahub.com/docs/Ipopt/yMQMo/0.7.0/)
38-
- Ipopt is a MathOptInterface optimizer, and thus its options are handled via
39-
`Optimization.MOI.OptimizerWithAttributes(Ipopt.Optimizer, "option_name" => option_value, ...)`
46+
- [`Ipopt.Optimizer`](https://github.com/jump-dev/Ipopt.jl)
4047
- The full list of optimizer options can be found in the [Ipopt Documentation](https://coin-or.github.io/Ipopt/OPTIONS.html#OPTIONS_REF)
4148

4249
#### KNITRO.jl (MathOptInterface)
4350

4451
- [`KNITRO.Optimizer`](https://github.com/jump-dev/KNITRO.jl)
45-
- KNITRO is a MathOptInterface optimizer, and thus its options are handled via
46-
`Optimization.MOI.OptimizerWithAttributes(KNITRO.Optimizer, "option_name" => option_value, ...)`
4752
- The full list of optimizer options can be found in the [KNITRO Documentation](https://www.artelys.com/docs/knitro//3_referenceManual/callableLibraryAPI.html)
4853

4954
#### Juniper.jl (MathOptInterface)
5055

5156
- [`Juniper.Optimizer`](https://github.com/lanl-ansi/Juniper.jl)
52-
- Juniper is a MathOptInterface optimizer, and thus its options are handled via
53-
`Optimization.MOI.OptimizerWithAttributes(Ipopt.Optimizer, "option_name" => option_value, ...)`
54-
- Juniper requires the choice of a relaxation method `nl_solver` which must be
55-
a MathOptInterface-based optimizer
57+
- Juniper requires a nonlinear optimizer to be set via the `nl_solver` option,
58+
which must be a MathOptInterface-based optimizer. See the
59+
[Juniper documentation](https://github.com/lanl-ansi/Juniper.jl) for more
60+
detail.
5661

5762
```julia
5863
using Optimization, ForwardDiff
@@ -64,18 +69,9 @@ f = OptimizationFunction(rosenbrock, Optimization.AutoForwardDiff())
6469
prob = Optimization.OptimizationProblem(f, x0, _p)
6570

6671
using Juniper, Ipopt
67-
optimizer = Juniper.Optimizer
68-
# Choose a relaxation method
69-
nl_solver = Optimization.MOI.OptimizerWithAttributes(Ipopt.Optimizer, "print_level"=>0)
70-
71-
opt = Optimization.MOI.OptimizerWithAttributes(optimizer, "nl_solver"=>nl_solver)
72+
opt = Optimization.MOI.OptimizerWithAttributes(
73+
Juniper.Optimizer,
74+
"nl_solver"=>Optimization.MOI.OptimizerWithAttributes(Ipopt.Optimizer, "print_level"=>0),
75+
)
7276
sol = solve(prob, opt)
7377
```
74-
75-
### Gradient-Based
76-
#### Ipopt.jl (MathOptInterface)
77-
78-
- [`Ipopt.Optimizer`](https://juliahub.com/docs/Ipopt/yMQMo/0.7.0/)
79-
- Ipopt is a MathOptInterface optimizer, and thus its options are handled via
80-
`Optimization.MOI.OptimizerWithAttributes(Ipopt.Optimizer, "option_name" => option_value, ...)`
81-
- The full list of optimizer options can be found in the [Ipopt Documentation](https://coin-or.github.io/Ipopt/OPTIONS.html#OPTIONS_REF)

0 commit comments

Comments
 (0)