模型((P
C
2
R
)的 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(m+s,1); UB=[];
for i=1:n;
f= [zeros(1,m) -Y(:,i)'];
Aeq=[X(:,i)' zeros(1,s)]; beq=1;
w(:,i)=LINPROG(f,A,b,Aeq,beq,LB,UB); %解线性规划,得 DMU;的最佳权向量 w;
E(i, i)=Y(:,i)'*w(m+1:m+s,i); %求出 DMU
i
的相对效率值 E
ii
end
w %输出最佳权向量
E %输出相对效率值 E
ii
Omega=w(1:m,:) %输出投入权向量。
mu=w(m+1:m+s,:) %输出产出权向量。
模型(D
C
2
R
)的 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 eye(m) zeros(m,s) -X(:,i)
Y zeros(s,m) -eye(s) zeros(s,1)];
beq=[zeros(m, 1 )
Y(:,i)];
w(:,i)=LINPROG (f,A,b,Aeq,beq,LB,UB); %解线性规划,得 DMU 的最佳权向量 w;
end
w %输出最佳权向量
lambda=w(1:n,:) %输出
s_minus=w(n+1:n+m,:) %输出 s
-
s_plus=w(n+m+1:n+m+s,:) %输出 s
+
theta=w(n+m+s+1,:) %输出