Originally posted by: Nathalia R.
Hi!
This is the second phase of DEA BCC model (output oriented)
To find the possible input excesses (smenos) and output shortfalls (smas), I solved a two-phase LP problem.
Phase 1 is the usual model in its dual form where i found theta. For the second phase I used that theta taking as variables lambda, smas and smenos.
I'm trying to make a loop to solve all the LP in one and not running it DMU by DMU.
Can anyone help me?
Regards!
.mod
intn=...; //número de DMU
int m=...; //número de entradas
int s=...; //número de salidas
rangeDMU=1..n;
range entrada=1..m;
rangesalida=1..s;
float X[DMU][entrada]=...;
float Y[DMU][salida]=...;
float teta[DMU]=...;
int o=...; // DMU observada
assert o in DMU;
//Variables
dvar float+ smenos[entrada];
dvar float+ smas[salida];
dvar float+ lambda[DMU];
//expresion
dexprfloat holg = (sum(i in entrada) (smenos[i])) + (sum(r in salida) (smas[r]));
//Función objetivo
maximize holg;
subject to
{
forall(i in entrada)
restric1:
sum(j in DMU) (lambda[j]*X[j][i]) + smenos[i] == X[o][i];
forall(r in salida)
restric2:
sum(j in DMU) (lambda[j]*Y[j][r]) - smas[r] == (teta[o]*Y[o][r]);
restric3:
sum(j in DMU) (lambda[j]) == 1;
}
execute
{
writeln("Holg= ",holg);
writeln("Smenos=",smenos);
writeln("Smas=",smas);
writeln("lambda=",lambda);
writeln();
}
.dat
n=34;
m=4;
s=2;
o=1;
SheetConnectionsheet("Datos2.xlsx");
Xfrom SheetRead(sheet,"data!B2:AI5");
Yfrom SheetRead(sheet,"data!B6:AI7");
tetafrom SheetRead(sheet,"data!B8:AI8");
#DecisionOptimization#OPLusingCPLEXOptimizer