|
3 | 3 | [](https://github.com/jump-dev/ECOS.jl/actions?query=workflow%3ACI)
|
4 | 4 | [](https://codecov.io/gh/jump-dev/ECOS.jl)
|
5 | 5 |
|
6 |
| -Julia wrapper for the [ECOS](https://github.com/embotech/ecos) embeddable conic |
7 |
| -optimization interior point solver. |
| 6 | +[ECOS.jl](https://github.com/jump-dev/ECOS.jl) is a wrapper for the |
| 7 | +[ECOS](https://github.com/embotech/ecos) solver. |
8 | 8 |
|
9 | 9 | The wrapper has two components:
|
| 10 | + |
10 | 11 | * a thin wrapper around the complete C API
|
11 |
| - * an iterface to [MathOptInterface](https://github.com/jump-dev/MathOptInterface.jl) |
| 12 | + * an interface to [MathOptInterface](https://github.com/jump-dev/MathOptInterface.jl) |
| 13 | + |
| 14 | +## Affiliation |
| 15 | + |
| 16 | +This wrapper is maintained by the JuMP community and is not a product of |
| 17 | +Embotech AG. |
| 18 | + |
| 19 | +## License |
| 20 | + |
| 21 | +`ECOS.jl` is licensed under the [MIT License](https://github.com/jump-dev/ECOS.jl/blob/master/LICENSE.md). |
| 22 | + |
| 23 | +The underlying solver, [embotech/ecos](https://github.com/embotech/ecos), is |
| 24 | +licensed under the [GPL v3 license](https://github.com/embotech/ecos/blob/develop/COPYING). |
12 | 25 |
|
13 | 26 | ## Installation
|
14 | 27 |
|
15 | 28 | Install ECOS.jl using `Pkg.add`:
|
16 | 29 | ```julia
|
17 |
| -import Pkg; Pkg.add("ECOS") |
| 30 | +import Pkg |
| 31 | +Pkg.add("ECOS") |
18 | 32 | ```
|
19 | 33 |
|
20 | 34 | In addition to installing the ECOS.jl package, this will also download and
|
21 |
| -install the ECOS binaries. (You do not need to install ECOS separately.) |
| 35 | +install the ECOS binaries. You do not need to install ECOS separately. |
22 | 36 |
|
23 | 37 | To use a custom binary, read the [Custom solver binaries](https://jump.dev/JuMP.jl/stable/developers/custom_solver_binaries/)
|
24 | 38 | section of the JuMP documentation.
|
25 | 39 |
|
26 |
| -### License |
27 |
| - |
28 |
| -`ECOS.jl` is licensed under the MIT License (see LICENSE.md), but note that ECOS |
29 |
| -itself is GPL v3. |
30 |
| - |
31 | 40 | ## Use with JuMP
|
32 | 41 |
|
33 |
| -TO use ECOS with [JuMP](https://github.com/jump-dev/JuMP.jl), use |
| 42 | +To use ECOS with [JuMP](https://github.com/jump-dev/JuMP.jl), use |
34 | 43 | `ECOS.Optimizer`:
|
35 | 44 | ```julia
|
36 | 45 | using JuMP, ECOS
|
37 | 46 | model = Model(ECOS.Optimizer)
|
38 |
| -set_optimizer_attribute(model, "maxit", 100) |
| 47 | +set_attribute(model, "maxit", 100) |
39 | 48 | ```
|
40 | 49 |
|
| 50 | +## MathOptInterface API |
| 51 | + |
| 52 | +The ECOS optimizer supports the following constraints and attributes. |
| 53 | + |
| 54 | +List of supported objective functions: |
| 55 | + |
| 56 | + * [`MOI.ObjectiveFunction{MOI.ScalarAffineFunction{Float64}}`](@ref) |
| 57 | + |
| 58 | +List of supported variable types: |
| 59 | + |
| 60 | + * [`MOI.Reals`](@ref) |
| 61 | + |
| 62 | +List of supported constraint types: |
| 63 | + |
| 64 | + * [`MOI.VectorAffineFunction{Float64}`](@ref) in [`MOI.Nonnegatives`](@ref) |
| 65 | + * [`MOI.VectorAffineFunction{Float64}`](@ref) in [`MOI.SecondOrderCone`](@ref) |
| 66 | + * [`MOI.VectorAffineFunction{Float64}`](@ref) in [`MOI.Zeros`](@ref) |
| 67 | + |
| 68 | +List of supported model attributes: |
| 69 | + |
| 70 | + * [`MOI.ObjectiveSense()`](@ref) |
| 71 | + |
41 | 72 | ## Options
|
42 | 73 |
|
43 |
| -The list of options is defined the [`ecos.h` header](https://github.com/embotech/ecos/blob/master/include/ecos.h), |
44 |
| -which we reproduce here: |
45 |
| -```julia |
46 |
| -gamma # scaling the final step length |
47 |
| -delta # regularization parameter |
48 |
| -eps # regularization threshold |
49 |
| -feastol # primal/dual infeasibility tolerance |
50 |
| -abstol # absolute tolerance on duality gap |
51 |
| -reltol # relative tolerance on duality gap |
52 |
| -feastol_inacc # primal/dual infeasibility relaxed tolerance |
53 |
| -abstol_inacc # absolute relaxed tolerance on duality gap |
54 |
| -reltol_inacc # relative relaxed tolerance on duality gap |
55 |
| -nitref # number of iterative refinement steps |
56 |
| -maxit # maximum number of iterations |
57 |
| -verbose # verbosity bool for PRINTLEVEL < 3 |
58 |
| -``` |
| 74 | +The following options are supported: |
| 75 | + |
| 76 | +| Parameter | Explanation | |
| 77 | +| --------------- | ------------------------------------------- | |
| 78 | +| `gamma` | scaling the final step length | |
| 79 | +| `delta` | regularization parameter | |
| 80 | +| `eps` | regularization threshold | |
| 81 | +| `feastol` | primal/dual infeasibility tolerance | |
| 82 | +| `abstol` | absolute tolerance on duality gap | |
| 83 | +| `reltol` | relative tolerance on duality gap | |
| 84 | +| `feastol_inacc` | primal/dual infeasibility relaxed tolerance | |
| 85 | +| `abstol_inacc` | absolute relaxed tolerance on duality gap | |
| 86 | +| `reltol_inacc` | relative relaxed tolerance on duality gap | |
| 87 | +| `nitref` | number of iterative refinement steps | |
| 88 | +| `maxit` | maximum number of iterations | |
| 89 | +| `verbose` | verbosity `bool` for `PRINTLEVEL < 3` | |
0 commit comments