Configuring the optimizer

DataEnvelopmentAnalysis.jl will use a default optimizer/solver for each DEA model, as shown in the next table.

FunctionSpecific OptionsProblem typeDefault Optimizer
deaLPGLPK
deamLPGLPK
deabootLPGLPK
deabigdataLPGLPK
deaddfLPGLPK
deaaddLPGLPK
deagdfNLPIpopt
dearussell:Input or :OutputLPGLPK
dearussell:GraphNLPIpopt
deaergLPGLPK
deamddfLPGLPK
deaholderl = 1LPGLPK
deaholderl = 2QP
deaholderl = InfLPGLPK
dearddf:ERGLPGLPK
dearddf:MDDFLPGLPK
deacostLPGLPK
dearevenueLPGLPK
deaprofitLPGLPK
deaprofitabilityNLPIpopt
malmquistLPGLPK

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.

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:

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

DataEnvelopmentAnalysis.DEAOptimizerType
DEAOptimizer(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.newdeamodelFunction
newdeamodel(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.