对抗型交叉评价DEA模型matlab代码

对抗型交叉评价DEA模型matlab代码

对抗型交叉评价DEA模型matlab代码,代码来自于彭育威老师的《利用MATLAB进行DEA交叉评价分析》一文,​非常适合学习。

如果您想做仁慈型DEA​,可与我联系。

clear
X=[30 60 55 40 70 ;
    25 40 70 30 90; 130 150 120 70 180];%用户键入输入矩阵
Y=[35 43 76 52 63;60 80 53 42 71];%用户键入输出矩阵;
n=size(X',1); m=size(X,1); s=size(Y,1);%以下是第一轮线性规划;
A=[-X',Y'];b=zeros(n,1);
LB=zeros(m+s,1);UB=[];
for i = 1:n
     Aeq=[X(:,i)' zeros(1,s)];beq=1;
     f=[zeros(1,m) -Y(:,i)'];
     w(:,i)=linprog(f,A,b,Aeq,beq,LB,UB);%解线性规划,得出DMUi的最佳权重向量wi
     Eii=Y(:,i)'*w(m+1:m+s,i);
       for k=1: n
           f=[zeros(1,m) Y(:,k)'];
           Aeq=[X(:,k)' zeros(1,s) 
               Eii*X(:,i)' -Y(:,i)'];  
​
           beq=[1 0];
           v=linprog(f,A,b,Aeq,beq,LB,UB);
           E(i,k)=(Y(:,k)'*v(m+1:m+s))/(X(:,k)'*v(1:m)); %得到交叉评价值Eik
       end
end
E  %输出交叉评价矩阵E
ei=mean(E)  %计算E的各列平均值ei(1<=ei<=n)
[Y1]=sort(mean(E)) %按e1的大小,对诸决策单元从小到大进行排列
[Y2]=fliplr(Y1)   %按照ei的大小,对诸决策单从大到小排序