https://github.com/javierbarbero/DataEnvelopmentAnalysis.jl
Tip revision: 5eb588ce29e6486e98174cbb0371d3bf4d95597c authored by Javier Barbero on 18 September 2021, 14:51:16 UTC
Fix issues in lambda matrix and model without slacks
Fix issues in lambda matrix and model without slacks
Tip revision: 5eb588c
optimizer.md
```@meta
CurrentModule = DataEnvelopmentAnalysis
DocTestSetup = quote
using DataEnvelopmentAnalysis
end
```
# Configuring the optimizer
DataEnvelopmentAnalysis.jl will use a default optimizer/solver for each DEA model, as shown in the next table.
| Function | Specific Options | Problem type | Default Optimizer |
| ---------------|--------:|------------:|------------------:|
| `dea` | | LP | GLPK |
| `deaddf` | | LP | GLPK |
| `deaadd` | | LP | GLPK |
| `deagdf` | | NLP | Ipopt |
| `dearussell` | `:Input` or `:Output` | LP | GLPK |
| `dearussell` | `:Graph` | NLP | Ipopt |
| `deaerg` | | LP | GLPK |
| `deamddf` | | LP | GLPK |
| `deaholder` | `l = 1` | LP | GLPK |
| `deaholder` | `l = 2` | QP | |
| `deaholder` |`l = Inf`| LP | GLPK |
| `dearddf` | `:ERG` | LP | GLPK |
| `dearddf` | `:MDDF` | LP | GLPK |
| `deacost` | | LP | GLPK |
| `dearevenue` | | LP | GLPK |
| `deaprofit` | | LP | GLPK |
| `deaprofitability` | | NLP | Ipopt |
| `malmquist` | |LP | GLPK |
Where:
- LP = Linear programming.
- NLP = Nonlinear programming.
- QP = Quadratic programming.
Models can be solved using a different optimizer by passing a `DEAOptimizer` object to the `optimizer` optional argument. See [JuMP documentation](https://jump.dev/JuMP.jl/v0.21.6/installation/#Installing-a-solver) for a list of all available solvers.
!!! warning "Choose a valid optimizer"
The optimizer must support the problem type of the DEA model.
For example, you cannot solve a Generalized Distance Function DEA model using the GLPK solver because it is a linear programming solver and `deagdf` requires a nonlinear programming solver.
The following is an example of solving the radial DEA model using the `Ipopt` sovler:
```jldoctest
julia> using Ipopt
julia> using DataEnvelopmentAnalysis
julia> X = [5 13; 16 12; 16 26; 17 15; 18 14; 23 6; 25 10; 27 22; 37 14; 42 25; 5 17];
julia> Y = [12; 14; 25; 26; 8; 9; 27; 30; 31; 26; 12];
julia> myoptimizer = DEAOptimizer(Ipopt.Optimizer, time_limit = 10, silent = true);
julia> dea(X, Y, slack = false, optimizer = myoptimizer)
Radial DEA Model
DMUs = 11; Inputs = 2; Outputs = 1
Orientation = Input; Returns to Scale = CRS
──────────────
efficiency
──────────────
1 1.0
2 0.62229
3 0.819856
4 1.0
5 0.310371
6 0.555555
7 1.0
8 0.757669
9 0.820106
10 0.490566
11 1.0
──────────────
```
### Optimizer API
```@docs
DEAOptimizer
newdeamodel
```