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 | :Inputor: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.