数学建模送货线路设计问题答案仅供参考
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
装订线
第九届西安电子科技大学数学建模竞赛暨全国大学生数学建模竞赛选拔赛题目
A (B)题
剪切线
通信工程学院第队
送货路线设计问题
1、问题重述
现今社会网络越来越普及,网购已成为一种常见的消费方式,随之物流行业也渐渐兴盛,每个送货员需要以最快的速度及时将货物送达,而且他们往往一人送多个地方,请设计方案使其耗时最少。
现有一快递公司,库房在图1中的O点,一送货员需将货物送至城市内多处,请设计送货方案,使所用时间最少。
该地形图的示意图见图1,各点连通信息见表3,假定送货员只能沿这些连通线路行走,而不能走其它任何路线。
各件货物的相关信息见表1,50个位置点的坐标见表2。
假定送货员最大载重50公斤,所带货物最大体积1立方米。
送货员的平均速度为24公里/小时。
假定每件货物交接花费3分钟,为简化起见,同一地点有多件货物也简单按照每件3分钟交接计算。
现在送货员要将100件货物送到50个地点。
请完成以下问题。
1. 若将1~30号货物送到指定地点并返回。
设计最快完成路线与方式。
给出结果。
要求标出送货线路。
2. 假定该送货员从早上8点上班开始送货,要将1~30号货物的送达时间不能超过指定时间,请设计最快完成路线与方式。
要求标出送货线路。
3. 若不需要考虑所有货物送达时间限制(包括前30件货物),现在要将100件货物全部送到指定地点并返回。
设计最快完成路线与方式。
要求标出送货线路,给出送完所有快件的时间。
由于受重量和体积限制,送货员可中途返回取货。
可
不考虑中午休息时间。
2、问题分析
送货路线问题可以理解为:已知起点和终点的图的遍历问题的合理优化的路线设计。
图的遍历问题的指标:路程和到达的时间,货物的质量和体积,以及最大可以负载的质量和体积。
在路线的安排问题中,考虑所走的路程的最短即为最合理的优化指标。
对于问题二要考虑到所到的点的时间的要求是否满足题意即采用多次分区域的假设模型从而找出最优的解
对于问题三则要考虑到体积和质量的双重影响,每次到达后找到达到最大的体积和质量的点然后返回,再依次分析各个步骤中可能存在的不合理因素达到模型的进一步合理优化得到最合理的解。
3、模型假设与符号说明
、模型的假设
(1)、到同一地点的货物要一次拿上,即不考虑再以后又经过时再带些货物(2)、要求达到不超过的时间不包括此次在该点交易的时间。
(3)、所用的距离数据都精确到米而时间则精确到
(4)、同一地点有多件货物也简单按照每件3分钟交接计算。
、符号说明
其中i ,j=1、2、3……50 并且
M=50kg
V=1
4、 模型的建立及求解
模型一
模型的建立
我们为了求出各个点的之间的最短的路径,使用Dijstra 算法求解。
Dijkstra 算法是图论中非常有名的一个算法。
图采用邻接矩阵的形式描述,w (i,j )表示结点i 到结点j 间的最短距离,如果没有直接连通,则为无穷大,计算机中可以用一个很大的数据代替(如
模型一 模型二 模型三 模型四
最短路径模型 任意两点
之间的最图的遍历模型
由起始点遍历路径
多区域最短路
多区域无返回起点
多阶段最短路
多阶段有返回起点
matlab中的inf)。
但dijkstra算法只能求出从结点i到其它各结点的最短路径。
算法引入这样两个集合s和t,s是那些已经确定了到i结点的最短路径的结点,t为全集u 和s的差集,即那些还未确定最短路径的结点。
而且s的初值是{i},t的初值是u-{i}。
另外再引入一个标记数组d[n],其中在某一步d[k]表示当前从i到k 的较短路径,d[k]的初值为w(i,k)。
整个算法过程如下:
1、在t中选择一个d[k]最小的结点k,将k并入s,并从t中去掉,如果t为{}则转到3;
2、用k结点和t中其余结点进行一遍比较,如果d[i]>d[k]+m[k][i],则用d[k]+m[k][i]取代原来的d[i],重复1;
3、算法结束,此时d[k]中保存的就是从i到k结点的最短路径。
算法就以这样非常简单的形式完成了求解,时间复杂度是O(n^2),确定了从i到其余各结点的最短路径。
模型的求解
根据算法和相邻的点的距离可以用dijkstra求出任意两点的最短路径。
图1相邻的点的距离
使用循环的结构求出1-50各个点之间的最短距离。
程序1见附录
可以求出w和a
a为最短路径是的所过的的地点
如从O开始到其余50个点的a(0)=[0 7 4 8 3 15 1 18 12 14 18 13 13 18 21 12 23 21 0 24 22 0 29 17 31 19 0 31 30 25 22 26 23 28 31 38 21 40 36 27 34 37 43 38 41 36 41 40 46 42 40]
要从O点到16点则要先到23即0-23-16要从O点到23点则要先到17即
0-17-23-16要从o点到17点则要先到21即0-21-17-23-16而O可以直接到21所以从0到16的最优路径是0-21-17-23-16最短的距离是w(0,16)=7493m
模型二
—对于问题一的求解
模型的建立
由前30件货物可以到达的地点可以知道i,j=13、14、16、17、18、21、23、24、26、27、31、32、34、36、38、39、40、42、43、45、49。
图2需要达到的点(红点标注的)
其中共经过21个点,运送30件货物
该30件货物=<50kg =,所以可以一次把货物携带进行运送。
由T与W关系可知要使所用的时间最小即所走的距离最短。
即
目标函数是:
T=W÷V+×30
约束条件是:必须全部遍历回到0点
即求出从O出发遍历这图的21个点的并回到o的最短的距离
要距离最短则每一步也要最短,即从O开始找最短的点到达后继续找未遍历的最短的点则可求出最短的距离。
本题要求出回到O点则可以看到两个开始最短遍历的点在某点重合即可完成
最短的遍历。
模型的求解
由图可以明显得出距离O最近的点是21点和26点。
由于32点到38点的距离小于32点到16点的距离为使从21点出来的线遍历右下的点完后再和26点出来的汇合则安排32点到35点断开。
有程序2(附录)可得:
013112
1323213
1433414
1643615
1753816
1863917
2174018
2384219
2494320
26104521
27114922
遍历节点路线是:
0-2-4-40-45-49-42-43-38-36-39-27-31-26-0
最优的路线是:
0-2-3-0-45-42-49-42-43-38-36-27-39-27-31-26-0
总路程是:W=53787m
最优时间是:T=
模型三
—对于问题二的求解模型的建立
由第一个模型建立的可以求出到达24时所用的时间是:
可知到24点的时间是:t(24)=
由表可知必须在9点之前把货物送到24点即t(24)<1故模型一不适用于问题二的求解.
由下图3可知:
图3.考虑时间的点的位置
由于右边的点的地点需要的时间要比左边的早,所以先分两个阶段,即先走左边后走右边即先走圈内的元素由程序3(附录)可得:
从O出发经过13、18、24、26、27、31、34、39、40到达45
526
731
627
929
424
328
213
831
1040
1145
而到13点时必须在9点之前到达但>1,到45点时必须在9点半之前到达而>故分成两个阶段不成功,所以分四个阶段,求出各个阶段的最短距离和到达时的时间即可。
目标函数:
=÷v+
约束条件是:T到个点的时间最大值
模型的求解
图个阶段的圈图
对四个阶段分别求出到达的时间,由程序4(附录)可知
分4个阶段
1.从0出发经过13、18到24。
满足t<1的条件
318
213
424①
②
③
④
故路线为:0-18-13-24
2. 从24出发经过31、34、40到45。
满足t<
故路线为:24-31-34-40-45
3. 从45出发经过38、42、43到49。
满足t<
所以路线为:45-42-49-43-38
4. 从38出发经过14、16、17、21、23、26、27、32、36、39回到O 。
10 36 8 27 11 39 7 26 5 21 4 17 6 23 9 32 3
16
2 31
3 3
4 4
40 5
45
3 42 5 49
4 43 2
38
214
满足t<4
故路线为:38-36-27-39-27-3-32-16-14-21-0
所以总的遍历点顺序是:
0-4-40-45-42-49-43-38-36-27-39-26-2-14-0
总时间是T=
总距离是W=57912m
最优路线是:
0--49-42-43-38-36-27-39-27-3-32-23-16-14-21-0
到每个点的时间见附录
模型四
—对于问题三的求解
.模型的建立
本题中要遍历所有的50个点但由于=147kg, =而
M<50kg,V<1故应该以M<50kg和V<1判断的标准到达的最远的点后返回。
目标函数:W=
约束条件:M<50kg,V<1
模型的求解
由O开始逐渐依次找出最近的点后再找出离该点最近的点直到不满足约束条件。
见程序5(附录)
图5.改进后的遍历图1第一阶段
2. 第二阶段
3. 第三阶段
4.第四阶段
模型的优化
由于总的=148kg =
所以最少要分四个阶段,但由于每次不可能刚好带满50kg而如果只要3次则最多只能带150kg只比原货物多2kg所以不可能是三次就把货物带完,最少要四次。
故只需要把上述的模型进行数据处理就好了。
过程如下:
1.由于到21点时M=49 V=若走过14则M大于了50故直接从21点返回。
最优路线为: 0-26-3-38-35-32-23-17-21-0
走的距离W=27122m,花费的时间T=
2.若按程序给出的从13到8的路线是而当为13-11-12-8时更短故修改之;同时到达40后如果选择34则45的周围全被遍历过。
到45后M=,V=不满足要求,故从40到34后沿21-26返回。
最优路线为:
0--3-5-38-43-42-49-50-40-45-36-21-0
走得距离是:W=83220,所用的时间是T=
3. 当到达45点时若要去20点放货物的话则需要遍历许多已经遍历过的地点,故从45点沿36-21-0返回
最优路线为:
0-26-3-22-30-28-33-46-48-44-4-45-36-21-0
所走的距离为:W=128970m,所用的时间是:T=
4.只余下了5个点,所以由图可知
路线为: 0-26-3-22-20-2-5-2-4-3-8-12-13-18-o
总路程是:W= 171510m所用的时间是T=
由上面的四个阶段可以知道该问的最优路线是:
0-26-3-38-35-32-23---6-23-32-35-38-43-42-49-50-40-45-36-20-28-33-46-4 8-44-4-45-36-20-2-5-2-4-3-8-12-13-18-o
总路程是:W= 171510m
所用的时间是T=
5、模型的分析
①误差分析:
对于模型一是使用了精确地Dijkstra算法,故误差可以忽略不计
对于模型二假定了32到38点的断开存在一定的误差,但相对于断开其余的几点得到的数值要小,故该模型可以使用。
对于模型三,由于分区域的方法有很多,故不可避免的存在些许误差,但由于区域越多,路程越多,故选择分成4个区域最合适;分成的四个不同的时间的到达区域比较紧密故按照时间的不同划分了四个区域,从而大大的消除了误差,此模型可以使用。
对于模型四的误差比较大,由于未考虑货物的拆分可能会有一定的影响同时由于4个阶段的划分也是有一定的不确定性故误差存在。
对于该模型简化了考虑的条件,仅以M和V为判断标准,虽对准确性存在挑战,但该模型相对与其他的分类有明显的优越性。
故该模型适用于该问的求解。
②灵敏度分析
对于模型一、二、三,灵敏度很好,模型的准确性很高。
对于模型四由于质量和体积的制约,使其灵敏度不会很好,但准确性较高,因此模型可以使用。
6、模型评价、改进和推广
模型的评价
优点:
充分利用了已知数据建立模型,使其具有很高的准确性和可行性
使用了准确的算法和适当的假设,使模型的准确性和实用性到达统
一
运用功能强大的Matlab工具使数据处理误差达到最小缺点
由于数据较多,没法使用工具进行模型的验证,只能一步一步的精
化模型
模型的改进
对于模型一和三主要是进行验证。
对于模型二断开的那个点可以去取别的点进行。
主要是模型四的改进,可以考虑到不同的地点送的货物进行拆分,从而渠道最优的解
模型的推广
可充分使用到图的遍历和最短路的一系列问题的求解中。
7、参考文献
First Course in Mathenmatical Moderling (Third Edition)
Frank Maurice William
2.图论任韩。
3.数学建模案例选集姜启源谢金星
4.图论第3版德迪斯特尔著
5.大学生数学建模竞赛辅导教材叶其效
6.基于matlab 动态规划中最短路线的实现程序 [J]电脑学习
施益昌郑贤斌李自立
7.物流配送问题的混沌优化算法研究中央民族大学学报(自然科学版)
2009年11月第18卷第4期
8.Dijkstra 算法在企业物流运输网络中的应用湖南农业大学学报
(自然科学版) 2005年8月第29卷4期
附录
附录1.、表格
各货物号信息表
50个位置点的坐标
相互到达信息
模型二中到达时的时间
附录2 、MATLAB程序代码
、Dijstra 求解
clc
clear all
a=[11000 8250;9185 500;1445 560;7270 570;3735 670;2620 995;10080 1435;10025 2280;7160 2525;13845 2680;11935 3050;7850 3545;6585 4185;7630 5200;13405 5325;2125 5975;15365 7045;14165 7385;8825 8075;5855 8165;780 8355;12770 8560;2200 8835;14765 9055;7790 9330;4435 9525;10860 9635;10385 10500;565 9765;2580 9865;1565 9955;9395 10100;14835 10365;1250 10900;7280 11065;15305 11375;12390 11415;6410 11510;13915 11610;9510 12050;8345 12300;4930 13650;13265 14145;14180 14215;3030 15060;10915 14235;2330 14500;7735 14550;885 14880;11575 15160;8010 15325];%a是各个点的坐标
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 3;1 8;2 20;2 4;3 8;3 4;4 2;5 15;5 2;6 1;7 18;7 1;8 12;9 14;9 10;10 18;10 7;11 12;12 13;12 25;12 15;13 18;13 19;13 11;14 18;14 16;14 17;14 21;15 22;15 25;16 23;17 23;18 31;19 24;20 22;21 26;21 36;21 17;22 30;23 17;24 31;25 41;25 19;25 29;27 31;28 33;29 22;30 28;30 41;31 26;31 34;32 35;32 23;33 46;33 28;34 40;35 38;36 45;36 27;37 40;38 36;39 27;40 34;40
45;41 44;41 37;41 46;42 43;42 49;43 38;44 48;44 50;45 50;45 42;46 48;47 40;48 44;49 50;49 42;50 40;0 18;0 21;0 26];%通路表
b=zeros(51);
for i=1:83
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);
w1=w(p,:);
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 a-ascii; %保存最小距离
save t-ascii; %保存最小路径经过的点、问题一得求解
clear all
clc
format short
w=[……数据太多省略……];
p1=7;
p2=10;
sum=0;
w(:,1)=inf;
w(:,p1)=inf;
w(:,p2)=inf;
w(13,16)=inf;
w(16,13)=inf;
x1=[1,p1];
x2=[p2,1];
for i=1:15
[s1,t1]=min(w(p1,:));
[s2,t2]=min(w(p2,:));
sum=sum+s1+s2;
w(:,t1)=inf;
w(:,t2)=inf;
p1=t1;
p2=t2;
if t1==9|t2==9
disp('到达24时所走的距离') disp(sum)
T=sum/1000/24+3*i/60;
disp('到24所用的时间')
disp(T)
end
if t1==t2
x1=[x1,t1];
x=[x1,x2];
break;
end
x1=[x1,t1];
x2=[t2,x2];
x=[x1,x2];
end
disp('顺序为:')
disp(x)
disp('总的路程为:')
disp(sum)
T=sum/1000/24+3*30/60;
disp('总的时间是:')
disp(T)
、问题二的2阶段求解clear all
clc
format short
w=[……数据太多省略……]; p=1;
x=1;
sum=0;
v=w;
w(:,p)=inf;
for i=1:10
[s,t]=min(w(p,:));
sum=sum+s;
T=sum/1000/24+3*i/60; disp([t,T])
w(:,t)=inf;
p=t;
x=[x;t];
end
disp('顺序为:')
disp(x)
disp('总的路程为:')
disp(sum)
T=sum/1000/24+3*30/60; disp('总的时间是:')
disp(T)
问题二4阶段的解法
clc
clear all
w=[inf
inf
inf
inf
];
disp('第一个区域')
p=1;
x=1;
sum=0;
v=w;
T=0;
w(:,p)=inf;
for i=1:3
[s,t]=min(w(p,:)); sum=sum+s;
T=s/1000/24+T;
disp([t,T])
T=T+3/60;
w(:,t)=inf;
p=t;
x=[x;t];
end
disp('顺序为')
disp(x')
disp('×总路程是:') disp(sum)
disp('总时间是)
disp(T)
disp('第二个区域')
w=[inf
inf
inf
inf
inf
];
p=1;
x=1;
v=w;
w(:,p)=inf;
T=;
for i=1:4
[s,t]=min(w(p,:)); sum=sum+s;
T=T+3/60;
T=s/1000/24+T;
disp([t,T])
if(i==1);
T=T+3/60;
end
if(i==4);
T=T+3/60*2;
end
w(:,t)=inf;
p=t;
x=[x;t];
end
disp('顺序为')
disp(x')
disp('×总路程是:') disp(sum)
disp('总时间是)
disp(T)
disp('第三个区域')
w=[inf
inf
inf
inf
inf
];
x=[1 3 5 4 2];
T=;
for i=1:4
m=i;
s=w(x(i),x(i+1)); sum=sum+s;
if(i==4)
m=m+1;
end
T=s/1000/24+T;
disp([x(i+1),T]) T=T+3/60;
end
disp('顺序为')
disp(x')
disp('×总路程是:')
disp(sum)
disp('总时间是)
disp(T)
disp('第四个区域')
w=[……数据太多省略……]; p=1;
x=1;
v=w;
w(:,p)=inf;
w(:,12)=inf;
T=;
for i=1:10
[s,t]=min(w(p,:));
sum=sum+s;
T=s/1000/24+T;
disp([t,T])
T=T+3/60;
w(:,t)=inf;
p=t;
x=[x;t];
if i==2
T=T+3/60;
end
if i==4
T=T+3/60;
end
if i==7
T=T+3/60;
end
if i==8
T=T+3/60*2;
end
disp([p,sum])
end
sum=sum+v(t,12);
disp('顺序是:')
disp([x',1])
disp('总距离是:')
disp(sum)
T=sum/1000/24+3*30/60;
disp('总时间是:')
disp(T)
、问题3的初步设定
clc
clear all
w=[……];
i=1;
while i<50
if (w(i,1)==w(i+1,1))
w(i,2)=w(i,2)+w(i+1,2); w(i,3)=w(i,3)+w(i+1,3); w(i+1,:)=[];
i=i-1;
end
i=i+1;
end
save w-ascii;
clc
clear all
load
a=w;
for i=1:51
a(i,i)=inf;
end
load
w=x;
p=1;
x=0;
M=0;
V=0;
sum=0;
v=a;
a(:,p)=inf;
disp('第一阶段')
for i=1:50
[s,t]=min(a(p,:)); M=M+w(t-1,2);
V=V+w(t-1,3);
sum=sum+s;
p=t;
if((M>50)|(V>1))
break;
end
n=i;
x=[x;t-1];
% disp([t-1,M,V]) a(:,t)=inf;
end
sum=sum+v(p,1);
disp('顺序为:')
disp([x',0])
disp('总路程是:') disp(sum)
T=sum/1000/24+3*i/60; disp('所用时间是:') disp(T)
disp('第二阶段')
p=1;
x=0;
M=0;
V=0;
a(:,p)=inf;
for i=1:50
[s,t]=min(a(p,:)); M=M+w(t-1,2);
V=V+w(t-1,3);
sum=sum+s;
if((M>50)|(V>1))
break;
end
n=n+1;
p=t;
x=[x;t-1];
% disp([t-1,M,V]) a(:,t)=inf;
end
disp('顺序为:')
disp([x',0])
disp('总路程是:') disp(sum)
T=sum/1000/24+3*i/60; disp('所用时间是:') disp(T)
disp('第三阶段')
p=1;
x=0;
M=0;
V=0;
a(:,p)=inf;
for i=1:50-n
[s,t]=min(a(p,:)); M=M+w(t-1,2);
V=V+w(t-1,3);
sum=sum+s;
if((M>50)|(V>1))
break;
end
p=t;
x=[x;t-1];
% disp([t-1,M,V]) a(:,t)=inf;
n=n+1;
end
sum=sum+v(p,1);
disp('顺序为:')
disp([x',0])
disp('总路程是:') disp(sum)
T=sum/1000/24+3*i/60; disp('所用时间是:') disp(T)
disp('第四阶段')
p=1;
x=0;
M=0;
V=0;
a(:,p)=inf;
for i=1:50-n
[s,t]=min(a(p,:)); M=M+w(t-1,2);
V=V+w(t-1,3);
sum=sum+s;
if((M>50)|(V>1))
break;
end
p=t;
x=[x;t-1];
a(:,t)=inf;
n=n+1;
end
sum=sum+v(p,1);
disp('顺序为:')
disp([x',0])
disp('总距离是:');disp(sum) T=sum/1000/24+3*i/60;
disp('总时间是:');disp(T)、问题三的优化
clc
clear all
load
a=w;
load
w=x;
p=1;
x=0;
M=0;
V=0;
sum=0;
v=a;
a(:,p)=inf;
for i=1:50
[s,t]=min(a(p,:));
M=M+w(t-1,2);
p=t;
if((M>50)|(V>1))
break;
end
n=i;
x=[x;t-1];
disp([t-1,M,V])
a(:,t)=inf;
end
sum=sum+v(p,1);
disp('顺序为:')
disp([x',0])
disp('总路程是:') disp(sum)
T=sum/1000/24+3*i/60; disp('所用时间是:') disp(T)
disp('第二阶段')
p=1;
x=0;
M=0;
V=0;
a(:,p)=inf;
for i=1:50
[s,t]=min(a(p,:)); M=M+w(t-1,2);
if((M>50)|(V>1))
break;
end
n=n+1;
p=t;
x=[x;t-1];
disp([t-1,M,V])
a(:,t)=inf;
end
sum=sum+v(p,1);
sum=sum+v(p,1);
disp('顺序为:')
disp([x',0])
disp('总路程是:') disp(sum)
T=sum/1000/24+3*i/60; disp('所用时间是:') disp(T)
disp('第三阶段')
p=1;
x=0;
M=0;
V=0;
a(:,p)=inf;
for i=1:50-n
[s,t]=min(a(p,:));
V=V+w(t-1,3);
sum=sum+s;
if((M>50)|(V>1))
break;
end
p=t;
x=[x;t-1];
disp([t-1,M,V]) a(:,t)=inf;
n=n+1;
if t==46
break;
end
end
sum=sum+v(p,1);
sum=sum+v(p,1);
disp('顺序为:')
disp([x',0])
disp('总路程是:') disp(sum)
T=sum/1000/24+3*i/60; disp('所用时间是:') disp(T)
disp('第四阶段')
p=1;
x=0;
M=0;
V=0;
a(:,p)=inf;
for i=1:50-n
[s,t]=min(a(p,:)); M=M+w(t-1,2);
V=V+w(t-1,3);
sum=sum+s;
if((M>50)|(V>1))
break;
end
p=t;
x=[x;t-1];
disp([t-1,M,V])
a(:,t)=inf;
n=n+1;
end
sum=sum+v(p,1);
sum=sum+v(p,1);
disp('顺序为:')
disp([x',0])
disp('总路程是:') disp(sum)
T=sum/1000/24+3*i/60; disp('所用时间是:') disp(T)。