数据包络分析法(DEA)在数学建模中的应用

  1. 简介
    数据包络分析方法(Data Envelopment Analysis,DEA)是运筹学、管理科学与数理经济学交叉研究的一个新领域。它是根据多项投入指标和多项产出指标,利用线性规划的方法,对具有可比性的同类型单位进行相对有效性评价的一种数量分析方法。DEA方法及其模型自1978年由美国著名运筹学家A.Charnes和W.W.Cooper提出以来,已广泛应用于不同行业及部门,并且在处理多指标投入和多指标产出方面,体现了其得天独厚的优势。
  2. 数学建模的试用场景
    在数学建模中,其实这好像是一种特殊的评估,类似“亏,盈”的场景。而且在这种衡量的时候,所投入的“本”“利润”都可以是多项的,而且在这些评价的因素中他们具有量纲化。但是在进行评估的时候,本模型的好处是避开了这种缺陷。
    它能够用来比较提供相似服务的多个服务单位之间的效率,这项技术被称为数据包络线分析(DEA)。它避开了计算每项服务的标准成本,因为它可以把多种投入和多种产出转化为效率比率的分子和分母,而不需要转换成相同的货币单位。因此,用DEA衡量效率可以清晰地说明投入和产出的组合,从而,它比一套经营比率或利润指标更具有综合性并且更值得信赖。
  3. 模型建立的步骤
    ) 定义变量

设Ek(k=1,2,……, K)为第k个单位的效率比率,这里K代表评估单位的总数。

设uj(j=1,2,……, M)为第j种产出的系数,这里M代表所考虑的产出种类的总数。变量uj用来衡量产出价值降低一个单位所带来的相对的效率下降。

设vI(I=1,2,……,N)为第I种投入的系数,这里N代表所考虑的投入种类的综合素。变量vI用来衡量投入价值降低一个单位带来的相对的效率下降。

设Ojk为一定时期内由第k个服务单位所创造的第j种产出的观察到的单位的数量。

设Iik为一定时期内由第k个服务单位所使用的第i种投入的实际的单位的数量。

2) 目标函数

目标是找出一组伴随每种产出的系数u和一组伴随每种投入的系数ν,从而给被评估的服务单位最高的可能效率。

(*)

式中,e是被评估单位的代码。这个函数满足这样一个约束条件,当同一组投入和产出的系数(uj和vi)用于所有其他对比服务单位时,没有一个服务单位将超过100%的效率或超过1.0的比率。

3) 约束条件

(**)

k=1,2,……,K

式中所有系数值都是正的且非零。

为了用标准线性规划软件求解这个有分数的线性规划,需要进行变形。要注意,目标函数和所有约束条件都是比率而不是线性函数。通过把所评估单位的投入人为地调整为总和1.0,这样等式(*)的目标函数可以重新表述为:

满足以下化为vi≥0 i=1,2,…,N

关于服务单位的样本数量问题是由在分析种

,…,N

关于服务单位的样本数量问题是由在分析种
容较所挑选的投入和。下列关系式把序析中所序模型((PC2R)的MATLAB程序 clear
X=[]; %用户输入多指标输入矩阵
X Y=[]; %用户输入多指标输出矩阵Y
n=size(X',1);
m=size(X,1);
s=size(Y,1);
A=[-X' Y'];
b=zeros(n, 1);
LB=zeros(
for i=1:n;
f= [zeros(1,m) -Y(:,i)'];
Aeq=beq=1;
w(:,i)=LINPROG(f,A,b,Aeq,beq,LB,UB); %解线性规划,得DMU;的最佳权向量w;
E(i, i)=Y(:,i)'*w(m+1:m+s
end
w %输出最佳权向量 E
%输出相对效率值Eii
Omega=w(1:m,:) %输出投入权向量。 m
u=w(m+1:m+s,:) %输出产出权向量。
模型(DC2R)的MATLAB程序
clear
X=[]; %用户输入多指标输入矩阵
X Y=[]; %用户输入多指标输出矩阵Y
n=size(X',1);
m=size(X,1);
s=size(Y,1);
epsilon=10^-10; %定义非阿基米德无穷小
=10-10
f=[zeros(1,n) -epsilon*ones(1,m+s) 1]; %目标函数的系数矩阵:的系数为0,s-,s+的系数为-e,的系数为1;
A=zeros(1,n+m+s+1); b=0; %<=约束;
LB=zeros(n+m+s+1,1);
UB=[]; %变量约束;
LB(n+m+s+1)= -Inf; %-Inf表示下限为负无穷大。
for i=1:n;
Aeq=[X beq=[zeros(m, 1 )
Y(:,i)];
w(:,i)=LINPROG (f,A,b,Aeq,beq,LB,UB); %解线性规划,得DMU的最佳
end
w %输出最佳权向量
lambda=w(1:n,:) %输出
s_minus=w(n+1:n+m,:) %输出s- s_plus=w(n+m+1:n+m+s,:) %输出s+ thet服+1,:) %输出
用的序`这里写代码片序源代码务单位数量K和所。。。。。具体见
对应的一些matlab程序

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