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 | |
deam | LP | GLPK | |
deaboot | LP | GLPK | |
deabigdata | 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 |
deaenv | LP | GLPK | |
deacost | LP | GLPK | |
dearevenue | LP | GLPK | |
deaprofit | LP | GLPK | |
deaprofitability | NLP | Ipopt | |
malmquist | LP | GLPK | |
malmluen | 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 for a list of all available solvers.
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:
using Ipopt
using DataEnvelopmentAnalysis
X = [5 13; 16 12; 16 26; 17 15; 18 14; 23 6; 25 10; 27 22; 37 14; 42 25; 5 17];
Y = [12; 14; 25; 26; 8; 9; 27; 30; 31; 26; 12];
myoptimizer = DEAOptimizer(Ipopt.Optimizer, time_limit = 10, silent = true);
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
DataEnvelopmentAnalysis.DEAOptimizer — TypeDEAOptimizer(optimizer; time_limit, silent)An data structure storing the configuration of a DEA optimizer.
Optimizer specification:
LP: linear programming default optimizer, GLPK.NLP: nonlinear programmin default optimizer, Ipopt.- Any JuMP supported solver.
Optional Arguments
time_limit=:60: time limit in seconds.silent=true: suppress optimizer output.
DataEnvelopmentAnalysis.newdeamodel — Functionnewdeamodel(DEAOptimizer)Generate a new JuMP model for DEA with the specified optimizer.
This function is used internally and for packages that want to extend the functionality of this package.