| model_addmin | R Documentation |
Solve the weighted version of the additive-min (mADD) model of Aparicio et. al (2007) with different returns to scale. For non constant returns to scale, a modification given by Zhu et al. (2018) is done.
model_addmin(datadea,
dmu_eval = NULL,
dmu_ref = NULL,
orientation = NULL,
weight_slack_i = 1,
weight_slack_o = 1,
rts = c("crs", "vrs", "nirs", "ndrs"),
method = c("mf", "milp"),
extreff = NULL,
M_d = NULL,
M_lambda = 1e3,
maxfr = NULL,
tol = 1e-6,
silent = TRUE,
compute_target = TRUE,
check_target = FALSE,
returnlp = FALSE,
...)
datadea |
A |
dmu_eval |
A numeric vector containing which DMUs have to be evaluated.
If |
dmu_ref |
A numeric vector containing which DMUs are the evaluation reference set.
If |
orientation |
This parameter is either |
weight_slack_i |
A value, vector of length |
weight_slack_o |
A value, vector of length |
rts |
A string, determining the type of returns to scale, equal to "crs" (constant),
"vrs" (variable), "nirs" (non-increasing) or "ndrs" (non-decreasing). Under non-increasing
or non-decreasing returns to scale, you may set |
method |
A string with the method: "mf" (default) for maximal friends, or "milp" for the mixed integer linear program of Aparicio et al. (2007). MILP method is faster but very problematic numerically. |
extreff |
A vector with the extreme efficient DMUs for "milp" method, as it
is returned by function |
M_d |
Numeric, a big positive quantity for "milp" method. It is an upper
bound for auxiliary variables named "d" in Aparicio (2007). If |
M_lambda |
Numeric, a big positive quantity for "milp" method. It is an upper bound for lambda variables. A very big value can produce catastrophic cancellations. If the results are not correct or the solver hangs, try to change its value (1e3 by default). |
maxfr |
A list with the maximal friends sets for "mf" method, as it is returned by function
|
tol |
Numeric, a tolerance margin for checking efficiency in |
silent |
Logical. If |
compute_target |
Logical. If it is |
check_target |
Logical. If it is |
returnlp |
Logical. If it is |
... |
For compatibility issues. |
A list of class dea with the results for the evaluated DMUs (DMU component),
along with any other necessary information to replicate the results, such as
the name of the model and parameters orientation, rts,
dmu_eval and dmu_ref.
In this model, the efficiency score is the sum of the slacks. Therefore,
a DMU is efficient when the objective value (objval) is zero.
Vicente Coll-Serrano (vicente.coll@uv.es). Quantitative Methods for Measuring Culture (MC2). Applied Economics.
Vicente Bolós (vicente.bolos@uv.es). Department of Business Mathematics
Rafael Benítez (rafael.suarez@uv.es). Department of Business Mathematics
University of Valencia (Spain)
Aparicio, J.; Ruiz, J.L.; Sirvent, I. (2007) "Closest targets and minimum distance to the Pareto-efficient frontier in DEA", Journal of Productivity Analysis, 28, 209-218. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1007/s11123-007-0039-5")}
Zhu, Q.; Wu, J.; Ji, X.; Li, F. (2018) "A simple MILP to determine closest targets in non-oriented DEA model satisfying strong monotonicity", Omega, 79, 1-8. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1016/j.omega.2017.07.003")}
model_additive, extreme_efficient,
maximal_friends
# Example 1.
data("Airlines")
datadea <- make_deadata(Airlines,
inputs = 4:7,
outputs = 2:3)
result <- model_addmin(datadea = datadea,
method = "milp")
targets(result)
## Not run:
# Example 2. Directional model with Additive-min model in second stage
data("Airlines")
datadea <- make_deadata(Airlines,
inputs = 4:7,
outputs = 2:3)
resdir <- model_basic(datadea = datadea,
orientation = "dir",
maxslack = FALSE)
proj_input <- targets(resdir)[[1]] + slacks(resdir)[[1]]
proj_output <- targets(resdir)[[2]] - slacks(resdir)[[2]]
nd <- ncol(datadea$dmunames) # Number of DMUs
maxfr <- maximal_friends(datadea = datadea)
for (i in 1:nd) {
datadea2 <- datadea
datadea2$input[, i] <- proj_input[i, ]
datadea2$output[, i] <- proj_output[i, ]
DMUaux <- model_addmin(datadea = datadea2,
method = "mf",
maxfr = maxfr,
dmu_eval = i)$DMU[[1]]
resdir$DMU[[i]]$slack_input <- DMUaux$slack_input
resdir$DMU[[i]]$slack_output <- DMUaux$slack_output
resdir$DMU[[i]]$target_input <- DMUaux$target_input
resdir$DMU[[i]]$target_output <- DMUaux$target_output
}
targets(resdir)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.