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.
datadea: A deadata object with n DMUs, m inputs and s outputs.
dmu_eval: A numeric vector containing which DMUs have to be evaluated. If NULL (default), all DMUs are considered.
dmu_ref: A numeric vector containing which DMUs are the evaluation reference set. If NULL (default), all DMUs are considered.
orientation: This parameter is either NULL (default) or a string, equal to "io" (input-oriented) or "oo" (output-oriented). It is used to modify the weight slacks. If input-oriented, weight_slack_o are taken 0. If output-oriented, weight_slack_i are taken 0.
weight_slack_i: A value, vector of length m, or matrix m x ne (where ne is the length of dmu_eval) with the weights of the input slacks. If 0, output-oriented.
weight_slack_o: A value, vector of length s, or matrix s x ne (where ne is the length of dmu_eval) with the weights of the output slacks. If 0, input-oriented.
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 check_target = TRUE because methods are not reliable. Generalized returns to scale are not available.
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 extreme_efficient. If NULL (default) this vector is computed internally.
M_d: Numeric, a big positive quantity for "milp" method. It is an upper bound for auxiliary variables named "d" in Aparicio (2007). If NULL
(default), it is estimated automatically. A very big value can produce catastrophic cancellations. If the results are not correct or the solver hangs, try to change its value.
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 maximal_friends. If NULL (default) this list is computed internally.
tol: Numeric, a tolerance margin for checking efficiency in extreme_efficient
or maximal_friends functions, and for checking targets.
silent: Logical. If FALSE, it prints all the messages from function maximal_friends.
compute_target: Logical. If it is TRUE (default), it computes targets.
check_target: Logical. If it is TRUE, it checks the efficiency of targets. If a target is not efficient, the method has failed.
returnlp: Logical. If it is TRUE, it returns the linear problems (objective function and constraints).
...: For compatibility issues.
Note
In this model, the efficiency score is the sum of the slacks. Therefore, a DMU is efficient when the objective value (objval) is zero.
Examples
# 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 DMUsmaxfr <- maximal_friends(datadea = datadea)for(i in1: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)
References
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. 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. tools:::Rd_expr_doi("10.1016/j.omega.2017.07.003")