超效率SBM

通CCR与BCC、SBM已经发布资源,超效率SBM代码已经修复(网上的带bug)
通过链接启发:https://tieba.baidu.com/p/5986755578

https://download.csdn.net/download/qq_42830971/20586629

可联系邮箱找SBM资源:leon_leon@yeah.net

import gurobipy
import pandas as pd
from gurobipy import quicksum


class effect_economic(object):
    def __init__(self,input_var,output_var,data):
        self.DMUs = len(data['DMUs'])
        self.m1= len(input_var)
        self.m2=len(output_var)
        self.X = data[input_var]
        self.Y=data[output_var]
        self.result = []
#    def __SBM_super_C(self):
    def __call__(self):
        for k in range(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 in range(self.m1)), sense=gurobipy.GRB.MINIMIZE)
            MODEL.addConstrs(quicksum(lambdas[i] * self.X.iloc[i][j] for i in range(self.DMUs) if i != k) <=  (1+fi[j]) * self.X.iloc[k][j] for j in range(self.m1))
            MODEL.addConstrs(quicksum(lambdas[i] * self.Y.iloc[i][j] for i in range(self.DMUs) if i != k) >=  (1-fo[j]) * self.Y.iloc[k][j] for j in range(self.m2))
            MODEL.addConstr(t-t/self.m2 * quicksum(fo[j] for j in range(self.m2)) == 1)

            MODEL.setParam('OutputFlag', 0)
            MODEL.setParam("NonConvex", 2)
            MODEL.optimize()
            self.result.append(MODEL.objVal)
        return self.result

eff = effect_economic(input_var=['x1','x2'],output_var=['y1','y2'],data=data)
eff()
效率SBM模型(Super Efficiency SBM Model)是一种基于数据包络分析(DEA)的线性规划模型,用于测量技术效率、纯技术效率和规模效率。它将所有单位按照其输入和输出产出的比率分为两类:一类为技术有效单位(TEU),即在给定的输入产出组合下,无法再提高任何一项产出或降低任何一项输入的单位;另一类为非技术有效单位(NTEU),即在给定的输入产出组合下,可以通过提高某些产出或降低某些输入而变得更有效率的单位。由此,效率SBM模型可以在数据包络分析的基础上,进一步对未达到效率边界的非技术有效单位进行优化。 在Matlab中,我们可以使用相关工具箱(如Optimization Toolbox、Linear Programming Toolbox)来实现效率SBM模型的线性规划算法。具体过程包括:输入单位的输入和输出向量,设定线性规划目标函数(通常是最大化权重和),添加线性约束条件(如产出大于等于输入、每个输入以及输出都非负等)并求解线性规划问题。求解出的TEU即为效率单位。此外,还可以使用一些基于Matlab平台的DEA软件包(如DEAP、DMU-X)来自动化执行这些操作。 总之,效率SBM模型的Matlab代码实现是相对简单的,但需要具备一定的线性规划理论和Matlab编程技能。在实际应用中,它广泛用于评估生产、服务、教育等领域的效率,为单位提供管理和决策方面的参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小蜗笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值