数学建模社区-数学中国

标题: 求大神解答,关于floyd算法 [打印本页]

作者: Araneider    时间: 2012-8-24 16:54
标题: 求大神解答,关于floyd算法
这是2000年b题的一个floyd算法matlab程序。。。。。但是有些看不懂啊~~~那个大神指教一下~~~~5 K3 Y2 T; [6 [/ g4 E
' G5 a5 p6 o" |, Y4 V. l
Floyd算法函数在matlab下的M函数文件如下:
3 t% b# A% d- K  F" q: I" b1 g4 \function [D,path]=floyd(a)
$ W. D) R8 d- x; d" `- W2 y. c+ nn=size(a,1);
( J8 ^. t  g% o0 q2 zD=a;path=zeros(n,n);" \) g. O  |9 n' R# I
for i=1:n$ `7 M, Z  g' j3 R; C
    for j=1:n
7 u! R/ n& P9 C0 Q+ K: {6 E! T) |+ b        if D(i,j)~=inf. a% R& u1 ~( A9 [
            path(i,j)=j;9 a  Z0 x" w4 l* F
        end( r" n) |- t9 W% {  _
    end! |& |2 \" Q7 i/ F% W
end2 E, I3 A: K$ ?4 E1 O# B
for k=1:n
( b' L" B+ A+ i& g/ [* G    for i=1:n2 B1 R# E; x& |& k9 n
        for j=1:n$ H3 S5 H2 P1 @7 C9 x/ C3 U% e
            if D(i,k)+D(k,j)<D(i,j)
2 F: M* |9 H! h( U0 C5 ^" U, U* x                D(i,j)=D(i,k)+D(k,j);
' `+ S7 t, n9 }* t5 a                path(i,j)=path(i,k);6 Z& t0 v- E' i( G- V
            end' O4 w1 y1 E# i1 _% c* u
        end( \$ m7 l; b3 h5 \2 s5 K0 a
    end
; r' G) x3 {6 K$ a6 H$ ^end
5 `$ Q1 ^9 f0 M3 Z上面是一个函数,这一部分可以看懂,但是下面这个求最小费的问题就看不懂了。。。。9 `+ T' r( T$ N: E. p# I1 \
ab=[1 1 2 3 4 5 6 7 8 9 10 11 12 13 15 16 17 18 19 20  20 22 23];
$ ?6 C2 a' T1 ^" ybb=[ 14 15 15 16 19 18 23 24 10 10 11 15 13 14 16 17 19 19 20 21 22 23 24];0 d- z4 _* v3 k1 [4 j* N* @+ D
w=[20 202 1200 690  690 462 70 30 450 80 1150 1100 306 195 720 520 170 88 160 70 320 160 290];
! w& p: b9 y$ L3 M' r4 f" Yab1=[1 2 4 5 6 7 8 9 10 11 14 15 16 17 18 33 34 35];
( C( z# W) Q1 lbb1=[19 20 21 22 23 24 25 26 27 28 29 30 31 31 19 24 31 32];4 J, [' X* @; A2 t( r% W0 `( n$ x; L
w1=[3 2 600 10 5 10 12 42 70 10 10 62 30 20  104 31 110 20];
( h7 U: ^3 p' Q3 t. @6 M9 }) g# |a=sparse(ab,bb,w);
: \. g1 |4 S0 t. O6 b6 Za(24,24)=0;( A2 a$ u/ v5 ]* h/ c- x
a=a+a’;" H) ~, _2 \6 a5 [9 w, ?1 G/ W
a=full(a);# t1 ]; O3 U, ]6 B
for i=1:24
. }" [" \) i, J    for j=1:24: a3 b/ l+ z% ?  i* g) D, A
        if(a(i,j)==0&i~=j)
* W: I+ N5 Q' j0 \) f' B, u            a(i,j)=inf;
- X& r. q9 B% i5 g        end/ B3 V, {* X* E/ U3 \5 u
    end
% q% M1 K/ U' x0 gend6 A3 J3 [- s& p* A  b( \
[D,path]=floyd(a);) \+ j! Z. e+ N) B! k
a1=sparse(ab1,bb1,w1);) _' W9 Y3 t: N$ M
a1(35,35)=0;9 P$ q( _) O  w- Y, I
a1=a1+(a1)';9 ?0 Q( B4 w* c0 s
a1=full(a1);6 @) t" b7 w: a/ \! \2 C1 M
for i=1:35' N2 M' ?9 @. z9 h! Y* J# v
    for j=1:35
9 ~4 ]3 F% k, V! E* C        if(a1(i,j)==0&i~=j)( U7 a0 l/ v1 |  s
            a1(i,j)=inf;
" L2 Z9 H# U0 ?) J& A" \4 |: X* I) y        end! v3 C# Y6 ^0 }/ `; s# j# O& k
    end
8 t) m8 T3 T" {* i& _9 Send4 _' Z: _  e: P
[D1,path1]=floyd(a1);
) A! s% h* l! h上面这一段应该是赋值求最短路了吧,,,但是这赋值是赋得什么值额????有大神的话可以在后面注释一下。。。万分感谢。。。
作者: Araneider    时间: 2012-8-24 17:00
  管订购和运输(2000年网易杯全国大学生数学建模竞赛B题)! e, I$ s1 `3 R4 C
     要铺设一条的输送天然气的主管道,如图所示。经筛选后可以生产这种主管道钢管的钢厂有。图中粗线表示铁路,单细线表示公路,双线表示要铺设的管道(假设沿管道或者原有公路,或者建有施工公路),圆圈(点) 表示火车站,
& }. [) p) O' e' q' I  每段铁路、公路和管道旁的阿拉伯数字表示里程(单位km)。
& m4 |. F; ]' H- u" r6 D2 S       为方便计,1km主管道钢管称为1单位钢管。
1 R+ z4 O' _) _4 X" F2 D    一个钢厂如果承担制造这种钢管,至少需要生产500个单位。钢厂在指定期限内能生产该钢管的最大数量为个单位,钢管出厂销价1单位钢管为万元,如下表:! u% C+ J& e+ z1 M5 {- L' I5 g
I           1           2           3          4          5          6           7# d- K# P, f0 b/ D: x. n- R
        800        800        1000        2000        2000        2000        3000- n& D6 Z) z$ m
        160        155        155        160        155        150        160
  I, L% h! s5 `; J( v4 J2 _  一单位钢管的铁路运价如下表:" Y' E, z1 M0 K3 e( t
里程(km)        ≤300        301~350        351~400        401~450        451~500
$ K2 e& r& i) `, d. t8 x& B运价(万元)        20        23        26        29        321 {! |9 m9 L6 S$ l
里程(km)        501~600        601~700        701~800        801~900        901~1000
# E* z( ?: ~& R运价(万元)        37        44        50        55        60! c7 c1 ?+ M4 P8 t4 U5 x
  1000km以上每增加1至100km运价增加5万元。
$ ?# M% a4 e* T& a% R; |9 C     公路运输费用为1单位钢管每公里0·1万元(不足整公里部分按整公里计算)。
; |0 u; P# l. u3 l2 a$ H  钢管可由铁路、公路运往铺设地点(不只是运到点,而是管道全线)。7 M2 a$ S- \$ }, V! p5 ^
请制定一个主管道钢管的订购和运输计划,使总费用最小(给出总费用)。/ |, C9 t  e8 B% b+ l
请就(1)的模型分析:哪个钢厂钢管的销价的变化对购运计划和总费用影响最大,哪个钢厂钢管的产量的上限的变化对购运计划和总费用的影响最大,并给出相应的数字结果。& }2 q5 f: s. K8 I2 {
如果要铺设的管道不是一条线,而是一个树形图,铁路、公路和管道构成网络,请就这种更一般的情况给出一种解决办法,并对图二按(1)的要求给出模型和结果.
: w1 Z6 ^' m9 k& Y( m/ l7 q8 m* i) e0 f! h2 s  W
C:\Documents and Settings\Administrator\桌面
作者: Araneider    时间: 2012-8-24 17:03
C:\Documents and Settings\Administrator\桌面
作者: Araneider    时间: 2012-8-24 17:05
  钢管订购和运输(2000年网易杯全国大学生数学建模竞赛B题)
1 k% g! M0 D. L/ t- y4 G1 b     要铺设一条的输送天然气的主管道,如图所示。经筛选后可以生产这种主管道钢管的钢厂有。图中粗线表示铁路,单细线表示公路,双线表示要铺设的管道(假设沿管道或者原有公路,或者建有施工公路),圆圈(点) 表示火车站,
; C# w9 G# ~; R; u% L  每段铁路、公路和管道旁的阿拉伯数字表示里程(单位km)。: b+ ?" J4 r4 U) n) j! J. O
       为方便计,1km主管道钢管称为1单位钢管。2 x  W# W2 m) q+ |) @
    一个钢厂如果承担制造这种钢管,至少需要生产500个单位。钢厂在指定期限内能生产该钢管的最大数量为个单位,钢管出厂销价1单位钢管为万元,如下表:
8 D- K* R7 [1 F9 y3 q/ [% {I           1           2           3          4          5          6           7, v' ]8 v4 O" A, C
Si        800        800        1000        2000        2000        2000        3000
+ U0 L3 E5 W) r1 Z, }5 ^9 IPi        160        155        155        160        155        150        160
8 r+ m! c3 u6 C. J  一单位钢管的铁路运价如下表:
- u7 `! m9 z1 p里程(km)        ≤300        301~350        351~400        401~450        451~500
3 N( T. ]$ X, J) P0 d运价(万元)        20        23        26        29        328 y$ q8 }- F0 S1 p
里程(km)        501~600        601~700        701~800        801~900        901~1000
1 j2 T! N0 t* @# o9 l运价(万元)        37        44        50        55        60) g+ N) e& V1 O8 |$ E
  1000km以上每增加1至100km运价增加5万元。1 z1 j% \: X: C4 _# x; h* P
     公路运输费用为1单位钢管每公里0·1万元(不足整公里部分按整公里计算)。* ?! ?- g% t2 P
  钢管可由铁路、公路运往铺设地点(不只是运到点,而是管道全线)。
; R# h( v3 V# A1.请制定一个主管道钢管的订购和运输计划,使总费用最小(给出总费用)。+ c! _3 J" n5 M: N" [. c
2.请就(1)的模型分析:哪个钢厂钢管的销价的变化对购运计划和总费用影响最大,哪个钢厂钢管的产量的上限的变化对购运计划和总费用的影响最大,并给出相应的数字结果。
3 {) K+ u/ y) h# L3.如果要铺设的管道不是一条线,而是一个树形图,铁路、公路和管道构成网络,请就这种更一般的情况给出一种解决办法,并对图二按(1)的要求给出模型和结果.
作者: Araneider    时间: 2012-8-24 17:12
上面那就是题目,,下面是给出的图
, q1 p$ `: ~$ g7 p; {
作者: Araneider    时间: 2012-8-24 17:15
快来大神啊,快来大神啊
作者: 467857726de    时间: 2012-8-25 18:18
不错哦  谢谢楼主




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5