投入导向超效率DEA程序总是运行出错。但是对程序检查了很多遍,也不知道究竟是什么错误。求各位大神指导!谢谢!
Warning: Input arguments must be scalar.
??? Error using ==> vertcat
All rows in the bracketed expression must have the same
number of columns.
程序如下,其中data1为33*11的矩阵,前四列为输出量,后七列为投入量。
a=data1(:,5:11);
b=data1(:,1:4);
x=a';
y=b';
n=size(x',1);
m=size(x,1);
s=size(y,1);
epsilon=10^-10;
f=[zeros(1,n) -epsilon*ones(1,m+s) 1];
A=zeros(1,n+m+s+1);
b=0;
LB=zeros(n+m+s+1,1);
UB=[];
LB(n+m+s+1)=-Inf;
for i=1;
Aeq=[zeros(m,1) x(:,(i+1):n) eye(m) zeros(m,s) -x(:,i);zeros(s,1) y(:,(i+1):n) zeros(s,m) -eye(s) zeros(s,1);zeros(1,1) ones(1,(i+1):n) zeros(1,m) zeros(1,s) zeros(1,1)];
beq=[zeros(m,1);y(:,i);ones(1)];
w(:,i)=LINPROG(f,A,b,Aeq,beq,LB,UB);
end
for i=2:n-1;
Aeq=[x(:,1:(i-1)) zeros(m,1) x(:,(i+1):n) eye(m) zeros(m,s) -x(:,i);y(:,1:(i-1)) zeros(s,1) y(:,(i+1):n) zeros(s,m) -eye(s) zeros(s,1);ones(1,1:(i-1)) zeros(1,1) ones(1,(i+1):n) zeros(1,m) zeros(1,s) zeros(1,1)];
beq=[zeros(m,1);y(:,i);1];
w(:,i)=LINPROG(f,A,b,Aeq,beq,LB,UB);
end
for i=n;
Aeq=[x(:,1:i-1) zeros(m,1) eye(m) zeros(m,s) -x(:,i);y(:,1:i-1) zeros(s,1) zeros(s,m) -eye(s) zeros(s,1);ones(1,1:i-1) zeros(1,1) zeros(1,m) zeros(1,s) zeros(1,1)];
beq=[zeros(m,1);y(:,i);1];
w(:,i)=LINPROG(f,A,b,Aeq,beq,LB,UB);
end
w
lambda=w(1:n,:)
s_minus=w(n+1:n+m,:)
s_plus=w(n+m+1:n+m+s,:)
theta=w(n+m+s+1,:)