设最有调运方案中,车向前行走的路程为x(因m辆车同时到达,车速相同,每辆车前进路程为x),后退路程为x-1,x>1。
最优方案中人与车同时到达乙地,所用时间相同,所以y+(1-y)=
(1)
因为n=mbj,所以车向前时,mb个人乘车,车向后开时,无人乘车;而车向前开的时间为x/k,向后开的时间为(x-1)/k,所以在最优调运方案中,平均乘车人数为:
(2)
所以在最有方案中最小平均速度的最大值上界(在车和人同时到达乙地的方案可行时)为:
(3)
由(3)式可见平均速度大于人行军速度,且k越大平均速度越大,j越大,平均速度越小,显然是合理的。
而根据
(1)式,最优方案的平均速度为:
(4)
由此可得到关于x,y的方程组
解次方程组得:
2x-2=(k-1)y,
(5)
(6)
由(6)式可见,其余条件相同情况下车速越
快,战斗人员行军路程越短,这也说明公式是正确的。
在达最大速度情况下,人行军路程与车行军路程均已求出,下一步我们考虑实现这一上界的方案。
显然使平均速度达(3)式的任一可行方案均为最优方案,但其中某方案使人员上下车次数越少,车辆调整方向次数越少,越方便,实际效果越好。
3.3问题求解
1)开始让车满载,车和人同时出发;
2)当车开到1-y地方,让车商的战斗人员下车行军前进,车辆往回开;
3)当返回车辆遇上正在行军的战斗人员时,让其中任意mb个人乘车前进,余下的人继续行军前进;
4)当车遇到正在前面行军的战斗人员时,停车,并让车上mb个人下车与这一批人一起行军前进,车辆再返回;
5)如此直至最后mb个战斗人员也上车,并与其他战斗人员共同到达乙地。
这样在行进的过程中,一前一后的两个集团,有时共(j-1)mb个人在行军前进,mb个人在这两个集团之间乘车由后往前赶。
而当车辆返回时,两大集团共计n个人在行军前进。
随着时间的推移,第一集团每次增加mb个人,第二集团每次减少mb个人,直至第二集团完全消失,第一集团达(j-1)mb人,与最后乘车的mb人同时到达乙地。
由于n=mbj,显然这一方案是可行的。
则只需证明此方案是最优的即可:
前已计算最佳方案中每个人应步行的距离为y,应乘车前进的距离是1-y。
因每个人不是乘车就是行军前进,故只要乘车距离达到1-y,即达到了理想的平均速度。
由方案可知,第一批乘车人员恰好乘车前进1-y,余下行军,路程为y,应[y+(1-y)/k]时到达。
第二批乘车人后来赶上第一批乘车人,表明在出发至相遇这一段时间内平均速度相同。
因行军速度与车速一定,故一定乘车时间相同,行军时间相同,因而乘车路程也为1-y,加上后来行军路程,总行军路程为y,故实现了最优方案。
类似的,前(j-1)批乘车人员都行军y乘车路程为(1-y)。
最后一批乘车人在乘车时,车向前走了(j-1)(1-y),第一次车辆后退的距离为:
与最后一批人相遇时共后退:
则实际前进了:
将y用(6)式代入,得车辆在与最后一批人相遇时,离甲地距离为:
所以最后一批人乘车距离也是1-y,故故n个人与车同时到达乙地,方案确是最优的。
三最佳乘车路线
1论文摘要
利用城市公交网构建了基于公交站点的网络图。
把各个站点看作图的节点,站点间的线路看作图的边,站点间到达所需的花费作为边的权值。
同时把公汽、地铁、看作两种不同的交通方式来处理。
公交线路选择的数学模型是一般图的最短路问题,利用改进的基于广度优先搜索算法,按照乘车次数、乘车费用、乘车时间不同顺序准则给出了各种最优线路方案。
关键词:
网络图换乘公共站点最短路径问题
2问题重述与分析
随着社会的高速发展,城市建设也越来越繁华,因此,出门乘车路线的最优选择便成为当代城市人必须面对的一个问题。
针对这一问题,建立最佳乘车路线模型系统供人们参考,以满足查询者对线路的各种不同需求。
该系统核心是线路选择的数学模型与算法。
本文拟解决如下问题:
1、仅考虑公汽线路,给出任意两公汽站点之间线路选择问题的一般数学模型与算法。
根据数据,利用模型与算法,求出以下6对起始站→终到站的最佳路线。
(1)、S3359→S1828
(2)、S1557→S0481(3)、S0971→S0485
(4)、S0008→S0073(5)、S0148→S0485(6)、S0087→S3676
2、假设又知道所有站点之间的步行时间,给出任意两站点之间线路选择问题的数学模型。
3假设与模型
3.1模型假设
1)在问题一,只在任意两条线路的公共站点进行公汽换乘;
2)对转乘次数无限定;
3)如果下行线是上行线的原路返回,不考虑上行和下行线路间进行换乘;
4)环行线路是双向环路
5)线路的换乘中,等车时间=平均耗时
3.2符号说明
Start:
起始站点End:
目的站点Fee:
乘车费用
BusNum:
乘车次数Time:
乘车时间
C(i,j):
i站点到j站点的权值,表示乘车费用或者乘车时间或乘车次数,也可表示反映乘车费用和时间及乘车次数的综合信息值
EDGE[]:
结构体数组,存储网络图中所有边的信息
Road[]:
存储路径数组Road[i]:
在最优路线i节点的前驱
Max:
理论上花费最大值,赋值MyMAX
3.3模型的建立
本题要求在某城市公交网络中,从给出的起点(Start)出发,根据对线路的不同选择准则(乘车时间最短或转乘次数最少或乘车费用最低),找出一条到达目的地(End)的最优线路。
定义一把站点i到站点j的乘车时间或乘车次数或乘车费用称做i到j的花费。
定义二设有一个有限点集
其中
称为节点(顶点);弧集
其中
称为从节点
到节点
直接连接的弧(或有向边);由点集
和弧集A组成的图称为有向图,记为
。
一条路是指由节点组成的有限序列
,其中
。
当
且
时,这条路便称为回路。
不含回路的图叫做非循环图[1];
图1公交网络示意图(非真实地理位置图)
在公交网中,我们把每个站点看作图中的一个节点,把站点之间的线路看作图中对应节点的边,如图1所示,把各个站点之间所必需的花费看作对应边上的权(权>0)。
公交网就转化成图论中的加权图。
因为存在环行线路,在本题中,此题将图转化成为一般图的图论问题,即在给定的加权一般图中,从起点(Start)出发,沿一条线路到达目的地(End),使花费最少。
因此,该问题的数学模型是含有回路的一般有向图的最短路!
3.4问题的求解
仅考虑公汽线路,给出任意两公汽站点之间线路选择问题的一般数学模型与算法,求出6对起始站→终到站之间的最佳路线。
1.问题分析:
最佳路线的选择,首先设置一个统一的准则。
在一般网络图中,可以利用普通Dijkstra算法进行最短距离求解,但公交网络图节点数目庞大,运算耗时过长,且运算所得结果可能不符合人们的实际需求,所以不宜采用此算法[2]。
在本题中,采用了良好的数据结构并结合改进的算法达到查询所需时间少的要求。
2准则:
6种可能的顺序。
1)乘车次数乘车时间乘车费用2)乘车次数乘车费用乘车时间
3)乘车时间乘车次数乘车费用4)乘车时间乘车费用乘车次数
5)乘车费用乘车次数乘车时间6)乘车费用乘车时间乘车次数
3算法:
在本题中,由于网络图结构较复杂,节点数量庞大,简单利用Dijkstra算法效果不好,耗时较长,并且得到的解可能是理论上的最优解,但却不符合实际情况。
发现利用一种较为特殊的数据结构来表达图时,利用根据实际情况得到的推论,结合基于改进的广搜算法,可以得到符合实际的最优解。
1)数据结构:
结构体+链表
Fee
BusNum
Time
U
Bus
Nxt
Fee:
价钱
BusNum:
转乘次数
Time:
耗费时间
u:
边的结点
Bus:
线路
nxt:
在此线路中的u下一个节点
1-1边结构体edge
图2INDEX[I]表示以I为起始点的第一条边在EDGE[]中存储的下标位置。
公交线路可能存在的公共边,在结构体数组中首先表现为Bus不同,此外,Fee,BusNum,Time也会相应的不同。
这样起点和终点相同的一条边会因为Bus的不同而作为不同的边来处理,但同样都放到邻接表中。
算法实现过程中,根据不同的准则只可能去选择其中某一个边。
2)推论:
C(i,j)+C(j,k)>=C(i,k)
C(i,j)表示节点i到节点j所用最优的乘车次数或时间或费用。
证明:
C(i,j)=MC(j,k)=N
乘车次数:
当在j点转乘时,因为存在一次换车
M+N=C(i,j)+C(j,k)>C(i,k)
当在j点不转乘时,C(i,j)+C(j,k)>=C(i,k)
乘车时间:
当在j点转乘时,因为换乘需要耗时
C(i,j)+C(j,k)>C(i,k)
当在j点不转乘时C(i,j)+C(j,k)=C(i,k)
乘车费用:
当在j点转乘时,因为换车要重新上车,肯定要重新付费,
C(i,j)+C(j,k)>=C(i,k)
当在j点不转乘时
如果线路是一票制C(i,j)+C(j,k)=C(i,k)
如果是分段计价C(i,j)+C(j,k)>=C(i,k)
证明完毕。
根据推论,可以得到C(i,k)的最小值,即得到最优解。
3)算法步骤
编程实现了对问题的求解。
算法的过程即是C(i,j)矩阵的实现。
(1):
确定矩阵的最初值。
以线路为主体,根据费用价格准则和节点间的距离和单位距离的耗时,可以简单的得到同一条线路中的C(i,j)。
如果i,j不在同一条线路,则C(i,j)赋值为最大值Max;
(2):
确定两个节点集合A和B,AUB为全;部节点集合。
A中初始节点为所给节点Start;
(3):
根据确定的准则和推论,从B中寻找一个节点k,其到A中任意节点的C(i,k)最小,则C(Start,k)=C(i,k).存储Road(k)=i;k归入A、B中除去节点k。
如果k!
=End,转(3);否则转(4);
(4):
得到最优解即C(Start,k)。
用Road(k)及其回溯,可以得到最优路径,结束;
4)问题结果:
(以>>表示人们对线路选择中各因素的优先级)
一乘车次数最少的路线
表1)乘车次数>>乘车费用>>乘车时间
起始点
目的
点
乘车
次数
费
用
时
间
行车路线
S3359
S1828
2
3
106
S3359-L436-S1784-L167-S1828
S1557
S0481
3
3
111
S1557-L84-S1919-L189-S3186-L460-S481
S0971
S0485
2
3
139
S971-L13-S2322-L417-S485
S0008
S0073
2
2
88
S8-L355-S2263-L345-S73
S0148
S0485
3
3
111
S148-L308-S36-L156-S2210-L417-S485
S0087
S3676
2
2
70
S87-L454-S3496-L209-S3676
表2)乘车次数>>乘车时间>>乘车费用
起始点
目的
点
乘车
次数
时
间
费
用
行车路线
S3359
S1828
2
106
3
S3359-L436-S1784-L167-S1828
S1557
S0481
3
111
3
S1557-L84-S1919-L189-S3186-L460-S481
S0971
S0485
2
133
4
S971-L13-S2184-L417-S485
S0008
S0073
2
82
3
S8-L159-S491-L459-S73
S0148
S0485
3
111
3
S148-L308-S36-L156-S2210-L417-S485
S0087
S3676
2
70
2
S87-L454-S3496-L209-S3676
二乘车费用最少的路线
表1)乘车费用>>乘车时间>>乘车次数
起始点
目的
点
费
用
时
间
乘车
次数
行车路线
S3359
S1828
3
69
3
S3359-L15-S2903-L485-S1784-L167-S1828
S1557
S0481
3
111
3
S1557-L84-S1919-L189-S3186-L460-S481
S0971
S0485
3
108
3
S971-L13-S2517-L290-S2159-L469-S485
S0008
S0073
2
88
2
S8-L355-S2263-L345-S73
S0148
S0485
3
111
3
S148-L308-S36-L156-S2210-L417-S485
S0087
S3676
2
70
2
S87-L454-S3496-L209-S3676
表2)乘车费用>>乘车次数>>乘车时间
起始
点
目的点
费
用
乘车
次数
时
间
行车路线
S3359
S1828
3
2
106
S3359-L436-S1784-L167-S1828
S1557
S0481
3
3
111
S1557-L84-S1919-L189-S3186-L460-S481
S0971
S0485
3
2
139
S971-L13-S2322-L417-S485
S0008
S0073
2
2
88
S8-L355-S2263-L345-S73
S0148
S0485
3
3
111
S148-L308-S36-L156-S2210-L417-S485
S0087
S3676
2
2
70
S87-L454-S3496-L209-S3676
三乘车费用最小的路线
表1)乘车时间>>转车次数>>乘车费用
起始
点
目的
点
时
间
乘车
次数
费
用
行车路线
S3359
S1828
69
3
3
S3359-L15-S2903-L485-S1784-L167-S1828
S1557
S0481
104
4
4
S1557-L84-S1919-L189-S3186-L91-S902-L254-S481
S0971
S0485
108
3
3
S971-L13-S2517-L290-S2159-L469-S485
S0008
S0073
64
5
5
S8-L198-S1691-L476-S2085-L17-S609-L328-S525-L103-S73
S0148
S0485
107
4
4
S148-L308-S3604-L81-S2361-L156-S2210-L417-S485
S0087
S3676
51
3
3
S87-L206-S88-L231-S427-L97-S3676
表2)乘车时间>>乘车费用>>乘车次数
起始点
目的
点
时
间
费
用
乘车
次数
行车路线
S3359
S1828
69
3
3
S3359-L15-S2903-L485-S1784-L167-S1828
S1557
S0481
104
4
4
S1557-L84-S1919-L189-S3186-L91-S902-L254-S481
S0971
S0485
108
3
3
S971-L13-S2517-L290-S2159-L469-S485
S0008
S0073
64
5
5
S8-L198-S1691-L476-S2085-L17-S609-L328-S525
-L103-S73
S0148
S0485
107
4
4
S148-L308-S3604-L81-S2361-L156-S2210-L417-S485
S0087
S3676
51
3
3
S87-L206-S88-L231-S427-L97-S3676
四总结
通过这次数学建模与数学软件综合训练,不仅使我掌握了部分数学软件的使用,特别是像MATLAB、MAPLE等软件已经有了初步的认识和掌握,还有公式编辑器这个数学软件也是我新近接触到的数学软件,通过使用才发现这个软件在编辑数学公式等方面有很大的优势,也使我认识到自己接触的知识面很窄,对于好多数学知识很欠缺。
而另一个方面我也真正尝试到了数学建模的乐趣,以前自己因为认识有限,对数学建模根本不了解,现在通过对数学建模课程的学习以及对数学建模的综合训练,使我对数学建模才有了真正的了解,从理论到实践,在整整两星期的时间里,可以说得是苦多于甜,但是我可以学到很多很多的东西,同时也可以巩固了以前所学过的知识,而且还学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
五参考文献
1参考文献一
[1]胡守信,李柏年等,基于MATLAB的数学实验,科学出版社,2004-6
[2]徐全智,杨晋浩等,数学建模[M],高等教育出版社,2003-7
[3]李尚志,数学建模竞赛教程[M],江苏教育出版社,1996-6
2参考文献二
[1]俞玉森,数学规划的原理和方法,武汉:
华中理工大学出版社,1993.
[2]胡霍真,戴光明,李颖等,公交车网络的最短路径算法及实现,微机发展,Vol.15,No.9:
21-22,2005.
[3]杨新苗,王炜,马文腾等,基于GIS的公交乘客出行路径选择模型[J],东南大学学报(自然科学版),(6):
87–91,2000.
[4]陈家,ARCPINFO路径寻找功能的拓展:
双向比较追索法[J],上海师范大学学报(自然科学版),(3):
78–83,1996.