数学建模社区-数学中国

标题: 『matlab求救贴』有关最短路径的运输问题用的是Dijkstra 算法 [打印本页]

作者: Rosalia    时间: 2014-10-26 21:47
标题: 『matlab求救贴』有关最短路径的运输问题用的是Dijkstra 算法
题目是给50个点设计运输路径 起始点为30,40
客户数:50
车辆装载量:160
配送中心坐标:
xy
30
40
客户坐标及需求:
xyq
30
40
37
52
7
49
49
30
52
64
16
20
26
9
40
30
21
21
47
15
17
63
19
31
62
23
52
33
11
51
21
5
42
41
19
31
32
29
5
25
23
12
42
21
36
16
10
52
41
15
27
23
3
17
33
41
13
13
9
57
58
28
62
42
8
42
57
8
16
57
16
8
52
10
7
38
28
27
68
7
30
48
15
43
67
14
58
48
6
58
27
19
37
69
11
38
46
12
46
10
23
61
33
26
62
63
17
63
69
6
32
22
9
45
35
15
59
15
14
5
6
7
10
17
27
21
10
13
5
64
11
30
15
16
39
10
10
32
39
5
25
32
25
25
55
17
48
28
18
56
37
10
clc
clear all
a=[5 25;5 6;5 64;7 38;8 52;10 17;12 42;13 13;16 57;17 63;17 33;20 26;
21 47;21 10;25 32;25 55;27 23;27 68;30 48;30 15;31 62;31 32;32 22;32 39;
36 16;37 52;37 69;38 46;39 10;40 30;42 41;42 57;43 67;45 35;46 10;48 28;
49 49;51 21;52 64;52 33;52 41;56 37;57 58;58 48;58 27;59 15;61 33;62 42;
62 63;63 69];%51个坐标
for i=1:51
for j=1:51
t=a(i,:)-a(j,:);
c(i,j)=sqrt(t(1)^2+t(2)^2);
end
end
a= [1 2;1 4;1 5;1 9;1 10;2 3;2 4;2 6;2 7;2 11;2 12;3 6;3 8;3 14;4 5;4 7;4 9;4 11;4 6;5 7;5 9;6 7;6 12;6 8;7 8;7 9;7 13;7 16;7 11;7 51;8 11;8 12;8 14;9 11;9 13;9 16;9 18;9 10;10 16;10 18;10 21;10 5;10 13;11 12;11 13;11 51;11 15;11 14;11 6;11 17;12 14;12 15;12 13;12 17;12 20;12 51;12 19;12 22;13 15;13 16;13 18;13 19;13 51;14 7;14 15;14 17;14 23;14 20;14 29;14 51;15 16;15 19;15 51;15 22;15 23;15 17;15 35;16 18;16 21;16 32;16 26;16 19;16 51;16 33;17 51;17 22;17 23;17 25;17 20;17 29;17 30;18 19;18 51;18 30;18 21;18 32;18 33;18 27;18 39;18 1;19        2119 27;19 26;19 28;19 31;19 51;19 24;19 30;19 37;20 22;20 23;20 25;20 29;20 30;21 27;21 33;21 32;21 26;21 28;21 51;22 51;22 24;22 30;22 31;22 25;22 23;22 35;22 28;23 24;23 28;23 30;23 25;23 31;23 35;24 26;24 28;24 31;24 34;24 30;24 25;24 35;24 29;24 2124 27;24 16;24 15;25 51;25 28;25 30;25 34;25 36;25 38;25 35;25 29;26 27;26 33;26 32;26 37;26 31;26 28;26 43;26 41;26 51;27 28;27 31;27 32;27 33;27 51;28 33;28 32;28 39;28 37;28 41;28 31;28 34;28 35;28 30;28 29;28 51;29 30;29 31;29 34;29 41;29 36;29 40;29 38;29 35;29 51;30 31;30 32;30 37;30 34;30 40;30 36;30 38;30 35;30 51;31 32;31 33;31 34;31 39;31 37;31 41;31 40;31 35;31 51;32 51;32 33;32 39;32 43;32 44;32 37;32 41;32 40;32 34;32 36;32 42;32 49;33 51;33 50;33 49;33 39;33 43;33 44;33 37;33 48;33 47;33 36;33 38;33 42;34 33;34 39;34 37;34 41;34 40;34 36;34 35;34 42;34 45;34 46;34 47;34 48;34 43;34 49;34 51;8 17;35 51;35 36;35 40;35 38;35 47;35 45;35 46;35 41;11 19;7 18;1 13;2 13;5 16;9 21;9 51;9 19;36 51;36 37;36 39;36 41;36 49;36 44;36 40;36 48;36 47;36 38;36 46;36 45;37 51;37 50;37 39;37 43;37 44;37 48;37 41;37 42;37 38;37 35;38 39;38 40;38 41;38 42;38 43;38 44;38 45;38 46;38 47;38 48;39 41;39 50;39 49;39 48;39 47;39 46;39 45;39 44;39 43;39 42;39 41;39 51;40 41;40 42;40 43;40 44;40 45;40 46;40 47;40 48;40 49;40 50;41 42;41 43;41 44;41 45;41 46;41 47;41 48;41 49;41 50;42 51;42 43;42 44;42 45;42 46;42 47;42 48;42 49;42 50;43 51;43 44;43 45;43 46;43 47;43 48;43 49;43 50;44 51;44 45;44 46;44 47;44 48;44 49;44 50;45 24;45 46;45 47;45 48;45 49;45 50;46 47;46 49;46 50;47 51;47 48;47 49;47 50;48 49;48 50;49 50;49 51;50 51;51 10;51 5;51 4;51 6;51 20;51 2;8 13;8 15;6 20;6 14;14 2;3 29;29 46;20 46;3 20;3 12;3 7;3 4;5 6;1 7;5 18;5 21;5 15;7 15;11 16;12 16;9 12;7 17;4 12;4 14;11 21;16 17;13 14;1 16;9 27;1 11;4 18;13 22;13 23;6 23;7 19;5 19;5 13;4 15;2 15;2 20;2 17];%之前存在的通路
b=zeros(51);
for i=1:414
b(a(i,1)+1,a(i,2)+1)=1;
b(a(i,2)+1,a(i,1)+1)=1;
end
a=b.*c;
for i=1:51
for j=1:51
if a(i,j)==0
a(i,j)=inf;
end
if i==j
a(i,j)=0;
end
end
end
w=a;
for p=1:51
n=size(w,1);
for i=1:n
l(i)=w1(i);
z(i)=1;
end
s=[];
s(1)=1;
u=s(1);
k=1;
while k<n
for i=1:n
for j=1:k
if i~=s(j)
if l(i)>l(u)+w(u,i)
l(i)=l(u)+w(u,i);
z(i)=u;
end
end
end
end
ll=l;
for i=1:n
for j=1:k
if i~=s(j)
ll(i)=ll(i);
else
ll(i)=inf;
end
end
end
lv=inf;
for i=1:n
if ll(i)<lv
lv=ll(i);
v=i;
end
end
s(k+1)=v;
k=k+1;
u=s(k);
end
if p==1
a=l;
t=z;
else
a=[a;l];
t=[t;z];
end
end
for i=1:51
a(i,i)=inf;
end
save w.txt a -ascii ;
save t.txt t -ascii ;
clc
clear all
a=[30 40;5 25;5 6;5 64;7 38;8 52;10 17;12 42;13 13;16 57;17 63;17 33;20 26;
21 47;21 10;25 32;25 55;27 23;27 68;30 48;30 15;31 62;31 32;32 22;32 39;
36 16;37 52;37 69;38 46;39 10;40 30;42 41;42 57;43 67;45 35;46 10;48 28;
49 49;51 21;52 64;52 33;52 41;56 37;57 58;58 48;58 27;59 15;61 33;62 42;
62 63;63 69];
for i=1:51
for j=1:51
t=a(i,:)-a(j,:);
c(i,j)=sqrt(t(1)^2+t(2)^2);
end
end
a= [1 2;1 4;1 5;1 9;1 10;2 3;2 4;2 6;2 7;2 11;2 12;3 6;3 8;3 14;4 5;4 7;4 9;4 11;4
6;5 7;5 9;6 7;6 12;6 8;7 8;7 9;7 13;7 16;7 11;7 51;8 11;8 12;8 14;9 11;9 13;9 16;9
18;9 10;10 16;10 18;10 21;10 5;10 13;11 12;11 13;11 51;11 15;11 14;11 6;11 17;12
14;12 15;12 13;12 17;12 20;12 51;12 19;12 22;13 15;13 16;13 18;13 19;13 51;14 7;14
15;14 17;14 23;14 20;14 29;14 51;15 16;15 19;15 51;15 22;15 23;15 17;15 35;16 18;16
21;16 32;16 26;16 19;16 51;16 33;17 51;17 22;17 23;17 25;17 20;17 29;17 30;18 19;18
51;18 30;18 21;18 32;18 33;18 27;18 39;18 1;19        2119 27;19 26;19 28;19 31;19 51;19
24;19 30;19 37;20 22;20 23;20 25;20 29;20 30;21 27;21 33;21 32;21 26;21 28;21 51;22
51;22 24;22 30;22 31;22 25;22 23;22 35;22 28;23 24;23 28;23 30;23 25;23 31;23 35;24
26;24 28;24 31;24 34;24 30;24 25;24 35;24 29;24 2124 27;24 16;24 15;25 51;25 28;25
30;25 34;25 36;25 38;25 35;25 29;26 27;26 33;26 32;26 37;26 31;26 28;26 43;26 41;26
51;27 28;27 31;27 32;27 33;27 51;28 33;28 32;28 39;28 37;28 41;28 31;28 34;28 35;28
30;28 29;28 51;29 30;29 31;29 34;29 41;29 36;29 40;29 38;29 35;29 51;30 31;30 32;30
37;30 34;30 40;30 36;30 38;30 35;30 51;31 32;31 33;31 34;31 39;31 37;31 41;31 40;31
35;31 51;32 51;32 33;32 39;32 43;32 44;32 37;32 41;32 40;32 34;32 36;32 42;32 49;33
51;33 50;33 49;33 39;33 43;33 44;33 37;33 48;33 47;33 36;33 38;33 42;34 33;34 39;34
37;34 41;34 40;34 36;34 35;34 42;34 45;34 46;34 47;34 48;34 43;34 49;34 51;8 17;35
51;35 36;35 40;35 38;35 47;35 45;35 46;35 41;11 19;7 18;1 13;2 13;5 16;9 21;9 51;9
19;36 51;36 37;36 39;36 41;36 49;36 44;36 40;36 48;36 47;36 38;36 46;36 45;37 51;37
50;37 39;37 43;37 44;37 48;37 41;37 42;37 38;37 35;38 39;38 40;38 41;38 42;38 43;38
44;38 45;38 46;38 47;38 48;39 41;39 50;39 49;39 48;39 47;39 46;39 45;39 44;39 43;39
42;39 41;39 51;40 41;40 42;40 43;40 44;40 45;40 46;40 47;40 48;40 49;40 50;41 42;41
43;41 44;41 45;41 46;41 47;41 48;41 49;41 50;42 51;42 43;42 44;42 45;42 46;42 47;42
48;42 49;42 50;43 51;43 44;43 45;43 46;43 47;43 48;43 49;43 50;44 51;44 45;44 46;44
47;44 48;44 49;44 50;45 24;45 46;45 47;45 48;45 49;45 50;46 47;46 49;46 50;47 51;47
48;47 49;47 50;48 49;48 50;49 50;49 51;50 51;51 10;51 5;51 4;51 6;51 20;51 2;8 13;8
15;6 20;6 14;14 2;3 29;29 46;20 46;3 20;3 12;3 7;3 4;5 6;1 7;5 18;5 21;5 15;7 15;11
16;12 16;9 12;7 17;4 12;4 14;11 21;16 17;13 14;1 16;9 27;1 11;4 18;13 22;13 23;6 23;7
19;5 19;5 13;4 15;2 15;2 20;2 17];
b=zeros(51);
for i=1:414
b(a(i,1)+1,a(i,2)+1)=1;
b(a(i,2)+1,a(i,1)+1)=1;
end
a=b.*c;
for i=1:51
for j=1:51
if a(i,j)==0
a(i,j)=inf;
end
if i==j
a(i,j)=0;
end
end
end
w=a;
for p=1:51
n=size(w,1);
for i=1:n
l(i)=w1(i);
z(i)=1;
end
s=[];
s(1)=1;
u=s(1);
k=1;
while k<n
for i=1:n
for j=1:k
if i~=s(j)
if l(i)>l(u)+w(u,i)
l(i)=l(u)+w(u,i);
z(i)=u;
end
end
end
end
ll=l;
for i=1:n
for j=1:k
if i~=s(j)
ll(i)=ll(i);
else
ll(i)=inf;
end
end
end
lv=inf;
for i=1:n
if ll(i)<lv
lv=ll(i);
v=i;
end
end
s(k+1)=v;
k=k+1;
u=s(k);
end
if p==1
a=l;
t=z;
else
a=[a;l];
t=[t;z];
end
end
for i=1:51
a(i,i)=inf;
end
一直在报错



{)50YGC79GH$2U3LJY~3A6G.jpg (14.65 KB, 下载次数: 42)

{)50YGC79GH$2U3LJY~3A6G.jpg


作者: 逝水lcc无痕    时间: 2014-10-27 00:11
你第一个a矩阵只包含50个坐标,是不是输掉了?你后面引用a(51,:)肯定会报错啊,你先检查一下那个坐标输掉了!

作者: 逝水lcc无痕    时间: 2014-10-27 00:12
你先试一下,如果还有其他什么问题,再发出来看看!





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