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;