数学建模常用模型(十) :数据包络(DEA)分析法

数学建模常用模型(十) :数据包络(DEA)分析法

数据包络分析(DEA)是一种用于评估决策单元(Decision Making Unit,DMU)效率的方法。在DEA中,每个DMU都是一个有多个输入和输出指标的单位,而DEA的目标是找到一个最优的权重组合,使得每个DMU在其输入和输出指标上都能达到最大值,即达到最高的效率。
这是我自己总结的一些代码和资料(本文中的代码以及参考书籍等),放在github上供大家参考:https://github.com/HuaandQi/Mathematical-modeling.git

1.数据包络(DEA)分析法的应用

DEA可以用于评估不同单位的效率,例如企业、学校、医院等,以及对它们进行比较和排名。它在经济学、管理学、运筹学等领域得到广泛应用。

2.程序实例

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import linprog

# 输入数据:每个DMU的输入和输出指标
# 输入指标:x1, x2
# 输出指标:y1, y2
data = np.array([
    [2, 3, 4, 5],
    [1, 2, 6, 7],
    [3, 4, 8, 9],
    [4, 5, 10, 11]
])

# 定义DMU的个数和指标个数
num_dmu, num_indicators = data.shape

# 设置目标函数的系数
c = np.zeros(num_dmu)
c[0] = 1

# 设置约束条件:每个DMU的输入指标和输出指标的系数
A_eq = np.zeros((num_indicators, num_dmu))
A_eq[:, 1:] = -data[:, 1:]
b_eq = data[:, 0]

# 设置上界约束
bounds = [(0, None)] * num_dmu

# 使用线性规划求解DEA模型
result = linprog(c, A_eq=A_eq, b_eq=b_eq, bounds=bounds)

# 提取最优权重和效率
weights = result.x[1:]
efficiency = 1 / result.fun

# 绘制效率图
dmu_labels = ['DMU1', 'DMU2', 'DMU3', 'DMU4']
x = np.arange(len(dmu_labels))
plt.bar(x, efficiency, align='center', alpha=0.5)
plt.xticks(x, dmu_labels)
plt.xlabel('DMU')
plt.ylabel('Efficiency')
plt.title('DEA Efficiency')
plt.ylim(0, 1.1)
plt.show()

# 输出结果
print("最优权重:", weights)
print("最大效率:", efficiency)

在这个例子中,我们假设每个DMU有4个指标(2个输入指标和2个输出指标),然后通过线性规划求解最优权重和效率。结果将给出每个DMU的最优权重以及对应的效率。

3.运行结果

运行上述代码,将绘制一个柱状图,显示每个DMU的效率。效率越接近1,表示该DMU越高效。通过柱状图,我们可以更直观地比较不同DMU之间的效率,并找出效率较高或较低的单位。

你可能感兴趣的:(数学建模,数学建模)