数据包络分析 (MATLAB代码)
X=[] % 输入多指标输入矩阵X
Y=[] % 输入多指标输出矩阵Y
[n,m]=size(X) % n为输入的指标数,m为决策单元数
s=size(Y) % s为输出的指标数
epsilon=10^-10 % 定义非阿基米德无穷小量epsilon
f=[zeros(1,n) -epsilon*ones(1,m+s) 1] % f为目标函数的系数矩阵
A=zeros(1,n+m+s+1) % A为约束不等式系数矩阵
b=0 % b为常数项
LB=zeros(n+m+s+1,1)
UB=[]
LB(n+m+s+1)=-Inf
for i=1:n % Aeq为约束等式的系数矩阵
Aeq=[X eye(m) zeros(m,s) -X(:,i)
Y zeros(s,m) -eye(s) zeros(s,1)]
beq=[zeros(m,1) % beq为常数项
Y(:,i)];
w(:,i)=linprog(f,A,b,Aeq,beq,LB,UB) % 解线性规划,得DMUi的最佳权向
量w
end
w % 输出最佳权向量
s_minus=w(n+1:n+m,:) % 输出输入松弛变量
s_plus=w(n+m+1:n+m+s,:) % 输出输出松弛变量
theta=w(n+m+s+1,:) % 输出综合效率
数据包络分析(