www.gusucode.com > 用matlab和lingo软件解决了数学建模大赛2000年B题 > 用matlab和lingo软件解决了数学建模大赛2000年B题/钢管订购/obs-target.m
%目标函数非线性,将其写为非线性目标函数 function f=target(x) f1=0;f2=0; p=[160 155 155 160 155 150 160]; b=[0, 104, 301, 750, 606, 194, 205, 201, 680, 480, 300, 220, 210, 420, 500]; %找到最小单位运费矩阵cc c1=findc1('train.xls'); c2=findc2('road.xls'); cc=findc(c1,c2); %提取矩阵中从节点s到节点a的部分 c=cc(1:7,25:39); %求出单位总费用矩阵 for i=1:7 for j=1:15 c(i,j)=c(i,j)+p(i); end end %将目标函数两部分f1,f2分别写出 temp=0; for i=1:7:105 temp=temp+x(i)*c(i); end for i=1:105 f1=f1+x(i)*c(i)-temp; end for j=107:120 f2=x(j)*(x(j)+1)/20+(b(j-105)-x(j))*(b(j-105)+1-x(j))/20; end f=f1+f2;