
在数据超过30个的情况时(题主给出的数据为36个),在 matlab2016a可以通过运行。运行部分结果
不知,题主用的是什么版本的matlab?
因不知你的具体方程,按我的经验,作了如下改动。
去掉:Aeq=[X(:,i)' zeros(1,s)]beq=1
改成:Aeq=[]beq=[].
去掉:UB=[]
去掉:w(:,i)=linprog(f,A,b,Aeq,beq,LB,UB)
改成:w(:,i)=linprog(f,A,b,Aeq,beq,LB)
修改后的代码:
X=[0,29,210,30,18] %用户输入多指标输入矩阵X
Y=[50,15,1200,15,1] %用户输入多指标输出矩阵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)
for i=1:n
f= [zeros(1,m) -Y(:,i)']
Aeq=[]beq=[]
w(:,i)=linprog(f,A,b,Aeq,beq,LB) %解线性规划,得DMU的最佳权向量w
E(i, i)=Y(:,i)'*w(m+1:m+s,i) %求出DMUi的相对效率值Eii
end
w %输出最佳权向量
E %输出相对效率值Eii
Omega=w(1:m,:) %输出投入权向量。
mu=w(m+1:m+s,:) %输出产出权向量。
运行结果
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)