数学模型课程结业论文
ti?0或1(i=1,..,7)
3.2题三的求解
S1 800 S2 800 S3 1000 S4 0 S5 1303 S6 2000 S7 0 费用 1406330 得到最优最小费用为W?1406330万元。
4.优缺点改进
由于总费用由订购费用和运输费用部分组成,运输费又由一般线路上的运输费和铺设管道上的运输费组成. 利用求网络中最短路径的弗洛伊德方法得到新的算法,可对含多种权重计算方式的网络进行搜索,得出最小费用路径(最短路径),算出两点之间的最优路径,进而根据非线性规划,借助于Lingo软件求解即可求出相应的结果.
1.优点
1)本问题中运用了求网络中最短路径的弗洛伊德思想,改进和修改得到新的算法,可对含多种权重计算方式的网络进行搜索,算出两点之间的最优路径,计算结果准确,从而得出相应的购运单价的矩阵.
2)本问题构造出的模型算法较简单,也可以运用相应的其他编程软件来得到比较满意的结果.
3)本模型计算步骤清晰,借助于Lingo软件求解,可靠性较高. 2.缺点
1)由于题意中不考虑铁路公路间转运的中转费用,也不限制转运次数,因此在算法设计中存在着考虑不周全的缺限,如我们考虑是先通过铁路再通过公路到铺设点,但这不一定是最小费用路径,有可能先通过公路,然后经铁路再经公路运到铺设点,费用更少,这里没有理论证明.
2) 问题二要求根据问题一的分析,指出哪家钢厂销价的变化对购运计划和总费用影响最大,哪家钢厂钢管产量的上限的变化对购运计划和总费用的影响最大,并给出相应的数字结果. 这个问题属于规划问题的灵敏度分析,在此模型中,只是通过说明销价增加一万元,减少一万元来说明,并没有给出一般的理论说明。
3.模型改进
这个数学模型可以应用于西部开发中“西气东送”问题,当然,西部开发中“西气东送”问题远比我们的假设还要复杂的多,但无论如何,他们的本质一样,我们可将本问题运用于时间的变化等范围的推广。文还可以把问题1归结为网络最小费用流问题,建立了线性和非线性最小费用流模型,并运用相应的解法和分支定界法求解,简洁,层次分明。
9
数学模型课程结业论文
5.参考文献
1.《数学模型》 单峰 朱丽梅 田贺民 国防工业出版社 2.《运筹学教程》 胡运权 清华大学出版社
3.《MATLAB程序设计与应用》 刘卫国 中国水利水电出版社
6.附录
附录一:
Floyd算法函数在matlab下的M函数文件如下: function [D,path]=floyd(a) n=size(a,1);
D=a;path=zeros(n,n); for i=1:n
for j=1:n
if D(i,j)~=inf path(i,j)=j; end end end
for k=1:n
for i=1:n
for j=1:n
if D(i,k)+D(k,j) 附录二: ab=[1 1 2 3 4 5 6 7 8 9 10 11 12 13 15 16 17 18 19 20 20 22 23]; bb=[ 14 15 15 16 19 18 23 24 10 10 11 15 13 14 16 17 19 19 20 21 22 23 24]; w=[20 202 1200 690 690 462 70 30 450 80 1150 1100 306 195 720 520 170 88 160 70 320 160 290]; ab1=[1 2 4 5 6 7 8 9 10 11 14 15 16 17 18 33 34 35]; bb1=[19 20 21 22 23 24 25 26 27 28 29 30 31 31 19 24 31 32]; w1=[3 2 600 10 5 10 12 42 70 10 10 62 30 20 104 31 110 20]; a=sparse(ab,bb,w); a(24,24)=0; a=a+a'; a=full(a); 10 数学模型课程结业论文 for i=1:24 for j=1:24 if(a(i,j)==0&i~=j) a(i,j)=inf; end end end [D,path]=floyd(a); a1=sparse(ab1,bb1,w1); a1(35,35)=0; a1=a1+(a1)'; a1=full(a1); for i=1:35 for j=1:35 if(a1(i,j)==0&i~=j) a1(i,j)=inf; end end end [D1,path1]=floyd(a1); %距离转换为费用的程序 D1=D1*0.1; %把公路最短距离换算成公路最少费用 for k=1:300 m1(k)={k}; end for k=1:50 m2(k)={300+k}; m3(k)={350+k}; m4(k)={400+k}; m5(k)={450+k}; end for k=1:100 m6(k)={500+k}; m7(k)={600+k}; m8(k)={700+k}; m9(k)={800+k}; m0(k)={900+k}; end for i=1:24 for j=1:24 %把铁路最短距离换算成铁路最少费用 switch D(i,j) 11 数学模型课程结业论文 case 0 D(i,j)=0; case m1 D(i,j)=20; case m2 D(i,j)=23; case m3 D(i,j)=26; case m4 D(i,j)=29; case m5 D(i,j)=32; case m6 D(i,j)=37; case m7 D(i,j)=44; case m8 D(i,j)=50; case m9 D(i,j)=55; case m0 D(i,j)=60; otherwise D(i,j)=ceil((D(i,j)-1000)/100)*5+60; end end end %c矩阵表示七个钢管生产厂到十五个铺设节点之间的距离,先把它们都设成20000(任意一个钢管厂到任意一个铺设节点之间的距离不会超过20000),然后用 for 循环求出最小值 c=20000*ones(7,15); for i=1:7 %7个钢管生产厂 for k=18:32 个铺设节点 for j=8:24 %7个钢管生产厂和17个中转点,i=1,表示第一个钢管生产厂,j=8,表示第一个中转点 if c(i,k-17)>D(i,j)+D1(j-7,k) c(i,k-17)=D(i,j)+D1(j-7,k); %对于所有中转点,在铁路网和公路网上的下标相差8 end end end 12 数学模型课程结业论文 end for i=1:7 for k=18:32 if c(i,k-17)>D(i,1)+D1(33,k) c(i,k-17)=D(i,1)+D1(33,k); 3代表第一个钢管生产厂S1点 end if c(i,k-17)>D(i,6)+D1(34,k) c(i,k-17)=D(i,6)+D1(34,k); 4代表第六个钢管生产厂S6点 end if c(i,k-17)>D(i,7)+D1(35,k) c(i,k-17)=D(i,7)+D1(35,k); 5代表第七个钢管生产厂S7点 end end %因为S1,S6,S7这三个钢管厂有公路直接连接到铺设节点,所以把这三个点单独处理 end 13