作业帮 > 综合 > 作业

function f = myfun(x)

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/06/05 10:51:27
function f = myfun(x)
矩阵定义省略
for j=1:28
a=0;
for i=1;27;
a=a+x(i)*A(i,j)*T(i);
end
JT1(j)=a;
end
for j=1:28
a=0;
for i=1;27;
a=a+x(2*i)*A(i,j)*T(i);
end
JT2(j)=a;
end
for j=1:28
a=0;
for i=1;27;
a=a+x(i*3)*A(i,j)*T(i);
end
JT3(j)=a;
end
N=[0,0];
for i=1:27
for j=1:28
if x(2*i)==1&&A(i,j)==1;
N(k)=j; k=k+1;
end
end
end
a=N(1);b=N(2);
if JT1(a)-JT1(b)>0; %这步就是错的
WT1(a)=JT1(a)-JT1(b);
else WT1(b)=JT1(b)-JT1(a);
end
k=1;
for i=1:27
for j=1:28
if x(3*i)==1&&A(i,j)==1;
N(k)=j; k=k+1;
end
end
end
a=N(1);b=N(2);
if JT2(a)+WT1(a)>JT2(b)+WT1(b)
WT2(a)=JT2(a)+WT1(a)-JT2(b)+WT1(b);
else WT2(b)=JT2(b)+WT1(b)-JT2(a)+WT1(a);
end
m=0;
for j=1:28
if JT1(m)+JT2(m)+JT3(m)+WT1(m)+WT2(m)
你是如何判断你的代码出错了呢?如果你能通过某种依据确定程序执行到某一行时结果不对,那么就可以逐步的检查之前的代码来缩小搜索范围,并最终准确定位.
而且值得一提的是,你代码里大量的出现一些有问题的行,例如,你经常把:写成;
还有通常控制流程语句是不需要以;结尾的,如if for 等.先把这些语法问题订正了.至于订正后你的代码是否能达到你目的,鉴于你没有说明你到底想做什么,所以对不对就需要你自己判断了.
再问: 是要用fmincon来调用,运行到标记位就出错
再答: 首先把你for里的那些; 改成:再说。你可以任意给一个x然后调用函数去验证一下结果,正确无误后再用在fmincon里。