数学建模社区-数学中国

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

作者: Araneider    时间: 2012-8-24 16:54
标题: 求大神解答,关于floyd算法
这是2000年b题的一个floyd算法matlab程序。。。。。但是有些看不懂啊~~~那个大神指教一下~~~~
) F3 e5 G; \. n9 i; v
- `+ G" @7 T0 X* [Floyd算法函数在matlab下的M函数文件如下:5 i) H0 n4 E6 [. x* Y
function [D,path]=floyd(a)
. D0 b+ P" o/ K& m0 Q, C" |* ?n=size(a,1);
( f; S6 n: k, D9 bD=a;path=zeros(n,n);
! e, n# `4 J5 I. Zfor i=1:n$ p1 o; q# [' E( n
    for j=1:n" ]3 B( e' P( n+ u
        if D(i,j)~=inf
: c2 U; p3 J3 t: X& ^- X. c$ Z            path(i,j)=j;/ w. Y: f5 `' h# C4 x: y/ o
        end
8 Y  h6 a0 e2 _% M* c4 F    end) x6 O3 N  Z# K3 `( c1 u
end
0 q7 G+ f2 e- c8 M  Wfor k=1:n8 L" D1 P0 P' o$ X% _/ L
    for i=1:n4 E( r* t8 [9 N# D6 A
        for j=1:n0 o. J, [2 a. C0 R7 z
            if D(i,k)+D(k,j)<D(i,j)9 D% A0 z* M  y8 t" V% ^
                D(i,j)=D(i,k)+D(k,j);
- I$ u- c" `5 N. q( m: @                path(i,j)=path(i,k);8 z1 q7 ?3 @. i% r# N
            end1 t2 T2 ^( t. D* `" e6 }! u8 t) h4 s
        end( K" I6 n- t* s
    end1 i' |9 i2 f5 w  B* e  P
end
3 q# B  S5 r- Y. V% u+ ~: E0 R! D上面是一个函数,这一部分可以看懂,但是下面这个求最小费的问题就看不懂了。。。。& U& e$ D3 N: d6 c8 |1 ~
ab=[1 1 2 3 4 5 6 7 8 9 10 11 12 13 15 16 17 18 19 20  20 22 23];9 T2 }0 q# u; P9 @
bb=[ 14 15 15 16 19 18 23 24 10 10 11 15 13 14 16 17 19 19 20 21 22 23 24];
6 w/ T; K0 P/ z: N; w. x7 r8 w- lw=[20 202 1200 690  690 462 70 30 450 80 1150 1100 306 195 720 520 170 88 160 70 320 160 290];6 [3 c" {4 r: s4 |& [* [  l- n/ T$ w
ab1=[1 2 4 5 6 7 8 9 10 11 14 15 16 17 18 33 34 35];! R' \1 J" M1 g: ?  [/ h& V* F
bb1=[19 20 21 22 23 24 25 26 27 28 29 30 31 31 19 24 31 32];
$ ^+ w0 N# b* S, ^4 k0 e3 Pw1=[3 2 600 10 5 10 12 42 70 10 10 62 30 20  104 31 110 20];  Y5 e9 |9 k6 r0 R. b
a=sparse(ab,bb,w);
8 a9 a9 N+ P7 W2 u  ua(24,24)=0;! ~- R2 P) I# U
a=a+a’;/ s! S0 A. z6 O- {  w& n8 P5 Y* n+ v
a=full(a);, k0 a8 S. `7 ?; j
for i=1:248 f9 ^( g4 E6 I. T
    for j=1:246 G. Y4 Q$ m9 ^& @; i
        if(a(i,j)==0&i~=j)
, B7 t/ L4 l% D, n% f+ P0 J7 N* b            a(i,j)=inf;5 x8 j7 e8 y) o# n* h
        end
/ C  l' x5 K8 B    end
& n; s8 w+ g. ^. [end
7 R0 h. Y" l& z" g. v[D,path]=floyd(a);) z% p0 o% Y- H0 _+ E" w) B
a1=sparse(ab1,bb1,w1);* R: t3 ?& j7 q; {6 {" w# [
a1(35,35)=0;
9 g8 K* q% X- G7 _7 O( Ca1=a1+(a1)';$ ]2 U" n5 y) d& {
a1=full(a1);; r: X+ C. j9 y) n
for i=1:35. V3 v5 i! r% x; y, Y
    for j=1:35
2 V) U3 o# W' b) a        if(a1(i,j)==0&i~=j)# i1 K/ _1 `: s; s
            a1(i,j)=inf;
, I) c: M9 z" ^6 _1 \        end( u# J1 ?/ B( _( u  i/ }
    end; s4 _) o) T- E* k( v* r
end. v# h5 {) m* y$ ~1 e. E
[D1,path1]=floyd(a1);
* H% s* _8 t6 C- _! V) O上面这一段应该是赋值求最短路了吧,,,但是这赋值是赋得什么值额????有大神的话可以在后面注释一下。。。万分感谢。。。
作者: Araneider    时间: 2012-8-24 17:00
  管订购和运输(2000年网易杯全国大学生数学建模竞赛B题)) }6 ?- W# Q  C+ Q" d' j5 H* g9 C
     要铺设一条的输送天然气的主管道,如图所示。经筛选后可以生产这种主管道钢管的钢厂有。图中粗线表示铁路,单细线表示公路,双线表示要铺设的管道(假设沿管道或者原有公路,或者建有施工公路),圆圈(点) 表示火车站,1 K  e; y. Y2 _& W) Y/ P" ]6 f
  每段铁路、公路和管道旁的阿拉伯数字表示里程(单位km)。
; E4 c+ R. u( q+ X/ M3 v- }- G1 \       为方便计,1km主管道钢管称为1单位钢管。" D- U: K5 q) E* Z
    一个钢厂如果承担制造这种钢管,至少需要生产500个单位。钢厂在指定期限内能生产该钢管的最大数量为个单位,钢管出厂销价1单位钢管为万元,如下表:
5 h. `5 k) G9 `I           1           2           3          4          5          6           7$ P- J8 e  h6 d+ B: {9 A
        800        800        1000        2000        2000        2000        3000" ~+ [+ ?: m& p( y1 P
        160        155        155        160        155        150        160
  P6 S1 g: c; a  [" Y  一单位钢管的铁路运价如下表:5 _- I! ?3 u4 P0 N# O' Y
里程(km)        ≤300        301~350        351~400        401~450        451~500
& I3 e9 [2 v( M2 }. S: a- @运价(万元)        20        23        26        29        320 p. [. z4 r- E, O+ X6 ~* `: G3 {' u' ~* y
里程(km)        501~600        601~700        701~800        801~900        901~1000: k* ~/ D) G9 `1 |
运价(万元)        37        44        50        55        60* K5 o7 U* Z& |6 p
  1000km以上每增加1至100km运价增加5万元。
: y8 |$ D0 ]4 j/ J     公路运输费用为1单位钢管每公里0·1万元(不足整公里部分按整公里计算)。
0 c, A. N; ~- t  钢管可由铁路、公路运往铺设地点(不只是运到点,而是管道全线)。
/ M1 h0 ^1 |1 d7 i) k请制定一个主管道钢管的订购和运输计划,使总费用最小(给出总费用)。
# r* k9 z5 {3 o0 ]! G5 M" s请就(1)的模型分析:哪个钢厂钢管的销价的变化对购运计划和总费用影响最大,哪个钢厂钢管的产量的上限的变化对购运计划和总费用的影响最大,并给出相应的数字结果。" B. \, g9 N# K/ L: t
如果要铺设的管道不是一条线,而是一个树形图,铁路、公路和管道构成网络,请就这种更一般的情况给出一种解决办法,并对图二按(1)的要求给出模型和结果.
( ]2 K) r4 p$ s. f  T; f/ O9 k' R) ]# I5 @  n/ {
C:\Documents and Settings\Administrator\桌面
作者: Araneider    时间: 2012-8-24 17:03
C:\Documents and Settings\Administrator\桌面
作者: Araneider    时间: 2012-8-24 17:05
  钢管订购和运输(2000年网易杯全国大学生数学建模竞赛B题)* T9 R$ r6 a+ Q1 s
     要铺设一条的输送天然气的主管道,如图所示。经筛选后可以生产这种主管道钢管的钢厂有。图中粗线表示铁路,单细线表示公路,双线表示要铺设的管道(假设沿管道或者原有公路,或者建有施工公路),圆圈(点) 表示火车站,
/ t$ e* {  g* G6 o  每段铁路、公路和管道旁的阿拉伯数字表示里程(单位km)。
  l) J/ Q# f0 G, C, \- B       为方便计,1km主管道钢管称为1单位钢管。
& ]( ]+ T' i' @4 d    一个钢厂如果承担制造这种钢管,至少需要生产500个单位。钢厂在指定期限内能生产该钢管的最大数量为个单位,钢管出厂销价1单位钢管为万元,如下表:
* |& e( I. P1 J3 @; D! VI           1           2           3          4          5          6           7
' N3 ]. O6 }9 e7 C4 r8 I( C, |2 VSi        800        800        1000        2000        2000        2000        3000
( H: z/ k2 L* t3 C/ o$ O7 PPi        160        155        155        160        155        150        160  k8 r, w, o- s3 i
  一单位钢管的铁路运价如下表:; }/ i! s8 ?2 C5 x/ u1 ^' M
里程(km)        ≤300        301~350        351~400        401~450        451~5005 v& o9 [" a1 Z1 [9 P1 H
运价(万元)        20        23        26        29        32. e: e6 U5 \; }
里程(km)        501~600        601~700        701~800        801~900        901~1000! Q. s7 R$ g$ ?2 x3 O
运价(万元)        37        44        50        55        60" v/ F5 ?* k$ s8 }( i
  1000km以上每增加1至100km运价增加5万元。2 \3 Y9 p7 C  X2 U0 O( W
     公路运输费用为1单位钢管每公里0·1万元(不足整公里部分按整公里计算)。
% r9 V6 @% p* Q4 G  钢管可由铁路、公路运往铺设地点(不只是运到点,而是管道全线)。/ d- j. q4 Q; X; O- y: G
1.请制定一个主管道钢管的订购和运输计划,使总费用最小(给出总费用)。
! @- M/ p9 o& n3 D. U2.请就(1)的模型分析:哪个钢厂钢管的销价的变化对购运计划和总费用影响最大,哪个钢厂钢管的产量的上限的变化对购运计划和总费用的影响最大,并给出相应的数字结果。, \$ Q& L  J- Z0 h
3.如果要铺设的管道不是一条线,而是一个树形图,铁路、公路和管道构成网络,请就这种更一般的情况给出一种解决办法,并对图二按(1)的要求给出模型和结果.
作者: Araneider    时间: 2012-8-24 17:12
上面那就是题目,,下面是给出的图5 u% U  u! R0 Q' O

作者: Araneider    时间: 2012-8-24 17:15
快来大神啊,快来大神啊
作者: 467857726de    时间: 2012-8-25 18:18
不错哦  谢谢楼主




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