超效率-SBM模型
这段时间差不多忙完了,终于有时间可以来经营我的博客了。
上阵子挺多人私信我,原谅我记性不好,可能没有回复全。
这篇文章是超效率的扩展。
超效率SBM
SBM本身就是非径向模型(non-radial model),想要了解径向超效率的请自行去前面翻阅。
上篇文章说到super-SBM的一个模型,公式为:
这个模型是分式模型,我们可以通过charnes cooper变换,将其转变成为:
python代码(部分)
在编程过程中,本来我以为第一个模型是无法出结果的,但是很无语的是,是我有bug了。这里就附上第一个模型的超效率核心部分代码(第二个也是差不多,万变不离其宗)。
首先,数据为:
def__SBM_super_C(self):for k in self.DMUs:
MODEL = gurobipy.Model()
fi = MODEL.addVars(self.m1)
lambdas = MODEL.addVars(self.DMUs)
fo = MODEL.addVars(self.m2)
t = MODEL.addVar()
MODEL.update()
MODEL.setObjective(t + t/self.m1 * quicksum(fi[j]for j inrange(self.m1)), sense=gurobipy.GRB.MINIMIZE)
MODEL.addConstrs(quicksum(lambdas[i]* self.X[i][j]for i in self.DMUs if i != k)<=(1+fi[j])* self.X[k][j]for j inrange(self.m1))
MODEL.addConstrs(quicksum(lambdas[i]* self.Y[i][j]for i in self.DMUs if i != k)>=(1-fo[j])* self.Y[k][j]for j inrange(self.m2))
MODEL.addConstr(t-t/self.m2 * quicksum(fo[j]for j inrange(self.m2))==1)
MODEL.setParam('OutputFlag',0)
MODEL.setParam("NonConvex",2)
MODEL.optimize()
self.Result.at[k,('效益分析','效率')]= MODEL.objVal
return self.Result
首先是用最基本的SBM模型对所有DMUs进行分析,结果如下,前四个DMUs是SBM有效的:
效率(SBM) 有效性 类型
A 1 SBM 有效 规模报酬固定
B 1 SBM 有效 规模报酬固定
C 1 SBM 有效 规模报酬固定
D 1 SBM 有效 规模报酬固定
E 0.42 非 SBM 有效 规模报酬固定
F 0.571429 非 SBM 有效 规模报酬固定
然后为深入了解前四个DMUs中哪个更好,针对这四个,做超效率-SBM模型分析。(注意此时得到的E、F值不用,用基础SBM中得到的效率值。)
效益分析
效率
A 1.14286
B 1.16383
C 1.08824
D 1.125
E 1
F 1
最终,整合后得到的效率值应该是:
效益分析
效率
A 1.14286
B 1.16383
C 1.08824
D 1.125
E 0.42
F 0.571429
这个例子是来自于书本的(Data Envelopment Analysis 2th Edition),书中给出了结果,与复现结果是一致的。
版权归原作者 sylvia-xy 所有, 如有侵权,请联系我们删除。