问题标题:
functionf=myfun(x)矩阵定义省略forj=1:28a=0;fori=1;27;a=a+x(i)*A(i,j)*T(i);endJT1(j)=a;endforj=1:28a=0;fori=1;27;a=a+x(2*i)*A(i,j)*T(i);endJT2(j)=a;endforj=1:28a=0;fori=1;27;a=a+x(i*3)*A(i,j)*T(i);endJT3(j)=a;endN=[0,0];fori=1:27forj=
问题描述:
functionf=myfun(x)
矩阵定义省略
forj=1:28
a=0;
fori=1;27;
a=a+x(i)*A(i,j)*T(i);
end
JT1(j)=a;
end
forj=1:28
a=0;
fori=1;27;
a=a+x(2*i)*A(i,j)*T(i);
end
JT2(j)=a;
end
forj=1:28
a=0;
fori=1;27;
a=a+x(i*3)*A(i,j)*T(i);
end
JT3(j)=a;
end
N=[0,0];
fori=1:27
forj=1:28
ifx(2*i)==1&&A(i,j)==1;
N(k)=j;k=k+1;
end
end
end
a=N(1);b=N(2);
ifJT1(a)-JT1(b)>0;%这步就是错的
WT1(a)=JT1(a)-JT1(b);
elseWT1(b)=JT1(b)-JT1(a);
end
k=1;
fori=1:27
forj=1:28
ifx(3*i)==1&&A(i,j)==1;
N(k)=j;k=k+1;
end
end
end
a=N(1);b=N(2);
ifJT2(a)+WT1(a)>JT2(b)+WT1(b)
WT2(a)=JT2(a)+WT1(a)-JT2(b)+WT1(b);
elseWT2(b)=JT2(b)+WT1(b)-JT2(a)+WT1(a);
end
m=0;
forj=1:28
ifJT1(m)+JT2(m)+JT3(m)+WT1(m)+WT2(m)
代华锋回答:
你是如何判断你的代码出错了呢?如果你能通过某种依据确定程序执行到某一行时结果不对,那么就可以逐步的检查之前的代码来缩小搜索范围,并最终准确定位.而且值得一提的是,你代码里大量的出现一些有问题的行,例如,你经...
傅双玲回答:
是要用fmincon来调用,运行到标记位就出错
代华锋回答:
首先把你for里的那些;改成:再说。你可以任意给一个x然后调用函数去验证一下结果,正确无误后再用在fmincon里。
点击显示
其它推荐
热门其它推荐