m(i)=m(i)+N(i)*x(i,j); end; end; x, m,f ff=ceil(x) toc
function f=myfun2(XX,C,N) %问题3的目标函数 x=XX(1:7,1:21); rl=XX(8:10,1:21); f=0; for i=1:7 for j=1:21
f=f+N(i)*x(i,j)*C(i,j);%钢管费和运输费 end; end;
%铺设时的运输费 for i=2:14
f=f+(rl(1,i)*(rl(1,i)+1)/2+rl(2,i)*(rl(2,i)+1)/2)*0.1; end;
21
f=f+(rl(1,19)*(rl(1,19)+1)/2+rl(2,19)*(rl(2,19)+1)/2)*0.1;f=f+(rl(1,20)*(rl(1,20)+1)/2+rl(2,20)*(rl(2,20)+1)/2)*0.1;,20
f=f+(rl(1,1)*(rl(1,1)+1)/2+rl(2,15)*(rl(2,15)+1)/2)*0.1;%1,15
f=f+(rl(1,16)*(rl(1,16)+1)/2+rl(1,18)*(rl(1,18)+1)/2+rl(1,21)*(rl(1,21)+1)/2)*0.1;,18,21
f=f+(rl(3,9)*(rl(3,9)+1)/2+rl(3,11)*(rl(3,11)+1)/2)*0.1;%9,11
f=f+(rl(1,17)*(rl(1,17)+1)/2+rl(2,17)*(rl(2,17)+1)/2+rl(3,17)*(rl(3,17)+1)/2)*0.1; function [c,ceq]=mycon2(XX,C,N) %问题3的约束条件 x=XX(1:7,1:21); rl=XX(8:10,1:21);
s=[800 800 1000 2000 2000 2000 3000];
L=[104 301 750 606 194 205 201 680 480 300 220 210 420 500 42 10 130 190 260 100];
m=zeros(1,7);
22
a=zeros(1,21); cc=0; for i=1:7 for j=1:21
m(i)=m(i)+N(i)*x(i,j); end; c(i)=m(i)-s(i); cc=cc+m(i); end; for i=1:21 for j=1:7
a(i)=a(i)+N(j)*x(j,i); end;
ceq(i)=a(i)-rl(1,i)-rl(2,i)-rl(3,i); end; for i=1:14
ceq(i+21)=rl(1,i)+rl(2,i+1)-L(i);end;
ceq(36)=rl(3,9)+rl(1,16)-L(15); ceq(37)=rl(3,11)+rl(1,17)-L(16);
23
ceq(38)=rl(2,17)+rl(1,18)-L(17); ceq(39)=rl(3,17)+rl(1,19)-L(18); ceq(40)=rl(2,19)+rl(1,20)-L(19); ceq(41)=rl(2,20)+rl(1,21)-L(20);
ceq(42)=rl(1,15); ceq(43)=rl(2,1); for i=1:8
ceq(43+i)=rl(3,i); end;
ceq(52)=rl(3,10); for i=12:16
ceq(52+i-11)=rl(3,i); end;
ceq(58)=rl(2,16); ceq(59)=rl(2,18); ceq(60)=rl(3,18); ceq(61)=rl(3,19); ceq(62)=rl(3,20); ceq(63)=rl(2,21); ceq(64)=rl(3,21); ceq(65)=cc-5903;
24
%求解最省路径 for i=1:39 for j=1:39 if i==j a(i,j)=0; else a(i,j)=inf; end; end; end;
a(1,2)=104;a(2,3)=301; a(3,4)=750;a(4,5)=606; a(5,6)=194;a(6,7)=205; a(7,8)=201;a(8,9)=680; a(9,10)=480;a(10,11)=300; a(11,12)=220;a(12,13)=210;a(13,14)=420;a(14,15)=500;
a(2,27)=3;a(3,28)=2; a(4,25)=600;a(5,29)=10; a(6,30)=5;a(7,31)=10;
25