以下是代码,提示我M(j,k)=(Y(:,j)'*v(4:5))/(X(:,j)'*v(1:3))出错,索引超出数组元素数目(0)怎么改?。
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);
optimopts=optimoptions('linprog','display','off','Algorithm','dual-simplex', 'TolFun', 1e-10, 'TolCon', 1e-7); %Default optimization-options
A=[-X' Y'];b=zeros(5,1);
LB=zeros(5,1);UB=[];
for i=1:5
Aeq=[X(:,i)',zeros(1,2)];beq=1;
f=[zeros(1,3),-Y(:,i)'];
w(:,i)=linprog(f,A,b,Aeq,beq,LB,UB);
Eii=Y(:,i)'w(4:5,i);
for k=1:5
f=[zeros(1,3),Y(:,k)'];
Aeq=[X(:,k)',zeros(1,2);EiiX(:,i)',-Y(:,i)'];
beq=[1;0];
v=linprog(f,A,b,Aeq,beq,LB,UB);
E(i,k)=(Y(:,k)'*v(4:5))/(X(:,k)'*v(1:3));
end
E(i,k)=Eii;
end
Nk=mean(E);
at = 1; %at表示新计算的平均博弈交叉效率值与原效率值,初始值取1
while at>10^-3
for j=1:5
for k=1:5
if k~=j
Aeq =[X(:,j)',zeros(1,2)]; beq=1;
a=[-X' Y';X(:,k)'*Nk(k) -Y(:,k)'];b=zeros(6,1);
f=[zeros(1,3),-Y(:,j)'];
v=linprog(f,a,b,Aeq,beq,LB,UB,[],optimopts);
M(j,k)=(Y(:,j)'*v(4:5))/(X(:,j)'*v(1:3));
else
M(j,k)=Nk(k);
end
end
end
Q=mean(M');
for z=1:3
at=abs(Q(z)-Nk(z));
if at>10^-3
Nk=Q;
break
end
end
end
Q;
这个代码是求解DEA博弈交叉模型的代码,除此之外,还有其他错误吗?
请将程序以代码形式上传,这种文本形式的代码 * 等符号都被识别成格式标识符了。
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。