当前位置:文档之家› 公交车调度问题的数学模型

公交车调度问题的数学模型

承诺书我们仔细阅读了中国大学生数学建模竞赛的竞赛规则.我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。

我们知道,抄袭别人的成果是违反竞赛规则的, 如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。

我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。

如有违反竞赛规则的行为,我们将受到严肃处理。

我们授权全国大学生数学建模竞赛组委会,可将我们的论文以任何形式进行公开展示(包括进行网上公示,在书籍、期刊和其他媒体进行正式或非正式发表等)。

我们参赛选择的题号是(从A/B/C/D中选择一项填写): B 我们的参赛报名号为(如果赛区设置报名号的话):所属学校(请填写完整的全名):参赛队员 (打印并签名) :1. 赵惠平2. 李敏3. 赵俊海指导教师或指导教师组负责人 (打印并签名):日期:年月日赛区评阅编号(由赛区组委会评阅前进行编号):编号专用页赛区评阅编号(由赛区组委会评阅前进行编号):全国统一编号(由赛区组委会送交全国前编号):全国评阅编号(由全国组委会评阅前进行编号):对公交车调度问题的研究摘要公交车调度问题是现代城市交通中一个突出的问题。

本文通过所给的一条公交线路上下行方向各时间段,各站点的客流量,根据一些合理假设,并在优先考虑将乘客拉完同时兼顾公交公司利益最大化的基础上,利用最优化思想建立线性规划模型。

然后根据所给资料,利用数学软件编程检验。

通过对数据的分析,并且考虑到方案的可操作性,将一天划分为高峰时间段和一般时间段,。

首先给该线路设计一个便于操作的全天(工作日)的公交车调度方案,包括两个起点站的发车时刻表和车辆数。

通过分析发现满足高峰时间段所需的车辆数便可满足一整天其他时间所需车辆数,所以对于车辆数,是通过对各路段个时间端上车人数净增量来确定的。

算出时间段内每分钟车上的净增人数,根据每小时发车的时间间隔算出每小时的车辆数,进而得到了全天的车辆数。

我们通过假设乘客均匀到站,并且乘客候车时间包括在车辆运行中,即认为公交车到站后乘客上车不费时间,建立线性规划模型进行求解。

最后我们对题目所给数据进行了处理,得出了车辆具体的运行方案,并用所建模型对结果作检验。

并用Matlab编写了所需程序。

关键字:公交车调度线性规划净增量均匀到站一问题重述我们提到城市交通所存在的问题,首先引起大家共鸣的就是堵车,等车时间长,乘车拥挤等问题。

针对乘客而言,等车时间越短,车辆数越多,满意度越高。

但对公交公司而言,发车时间间隔越长,满载率越高,效益越好。

针对这些问题,我们对我国一座特大城市某条公交线路进行设计优化,问题如下:该条公交线路上行方向共14站,下行方向共13站,第3-4页给出的是典型的一个工作日两个运行方向各站上下车的乘客数量统计。

公交公司配给该线路同一型号的大客车,每辆标准载客100 人,据统计客车在该线路上运行的平均速度为20公里/小时。

运营调度要求,乘客候车时间一般不要超过10分钟,早高峰时一般不要超过5分钟,车辆满载率不应超过 120%,一般也不要低于50%。

试根据这些资料和要求,为该线路设计一个便于操作的全天(工作日)的公交车调度方案,包括:(1)两个起点站的发车时刻表;(2)一共需要多少辆车;(3)这个方案以怎样的程度照顾到了乘客和公交公司双方的利益。

将这个调度问题抽象成一个明确、完整的数学模型,指出求解模型的方法;根据实际问题的要求,如果要设计更好的调度方案,应如何采集运营数据。

二问题分析2.1 概论这是一个公交车的调度问题。

问题的特点在于数据量大,数据处理复杂,公交车调度实际是动态的,乘客的到达和公交车的运行都存在许多随机因素。

此问题是多元目标规划,发车时刻表应均衡乘客和公交公司双方利益,发车时刻表关键是发车的时间的间隔。

但对乘客来说,发车间隔越短越好,车越多越好,则乘客满意度就越高;对公交公司来说发车间隔适当长一点越好,满载率越高越好,相应的运行车辆总数和发车总次数就会变少,则利润越好。

因此,在某种程度上,两者之间的利益是对立的。

因此,假设每单位时间段内,等车乘客服从均匀分布,并且满足客候车时间不要超过10分钟,早高峰时不要超过5分钟,车辆满载率不应超过 120%,一般也不要低于50%。

根据分析上下车人数折线关系图确定总车辆数。

根据对上下车人数趋势的分析,有明显的高峰时期和高峰路段,因此按一整天每站经过的车辆进行聚类分析,来预测具体的高峰路段,从而确定区间车的运行路段。

2.2 问题一由图2.2.1,图2.2.2可知,上下车人数存在明显的峰值,我们可将时间分为高峰时段和一般时段,早高峰为7点到8点的和晚高峰17点到18点。

通过以上分析我们可以通过计算每个时间段内车内的人数峰值得出每个时间段内需要发出的车辆数。

在通过比较每个时间段的发车数可以得出一天中需要车辆最多的时间段,这个时间段的车辆数能够满足其他时间段的需求。

对于下行表我们也作出类似的分析,最终将上下行车对应的时间段内车辆数相加,得到需要的最大车辆数。

我们可以发现任意时间段内前面某几站上车的人数大于下车的人数,从某站以后的每站上车的人数小于下车的人数(如图2.3.1所示)。

由图2.2.1可发现,公交车内人数呈现先增加后减小的变化趋势,且存在峰值点,这个点就是公交在行驶过程中需要满足载客人数的最大值,我们只要满足峰值时的乘客其他路段的乘客必然可以满足。

图2.2.1 上行各时间段上车人数折线图图2.2.2 下行每时间段上车人数折线图2.3 问题二我们针对问题二对数据进行分析,用Excel作出上行上下车全天总人数统计图如图其净增量就可抽象为上下车人数折线所加的面积。

为了解决公交车调度存在明显的高峰期,将时间分类为一般时间和高峰时间,对部分路段进行区间加车。

根据乘客的候车时间对每单位时间段内每分钟的发车数分类,计算出发一辆车的时间间隔,进而算出发车时刻表。

图2.3.1 上下车全天总人数统计图三模型假设(1)公交车行驶过程中不存在交通堵塞现象; (2)每个时间段内等车乘客服从均匀分布;(3)公交车按发车时刻表顺次发车,准时到达每个站点;(4)车辆匀速行驶,速度为20公里/小时各站乘客上下车的时间和公交车在各个 车站停留的时间均包含在平均速度之内; (5)在车站等车的人在公交车来之前不会离开;四 符号说明j x :第j 站上车人数 j y :第j 站下车人数i h :第i 时间段a i:每辆车高峰路段车上的人数ij δ:第i 时间段第j 站总增人数 ij δ:第i 时间段第j 站每分钟增加人数m :各站正净量之和t :i h 时间段内积攒够120人所需要的时间i S :i h 时间段内发车数量j r :各站上车人数净增量i w :第i 时间段内每分钟的发车数σi:第i 时间段内发车的时间间隔s :某段路上车上净人数i N :第i 时间段内高峰路段所有人数i U :第i 时间段内每分钟发车数Z :总车数L T :车在路上所用时间T :跑完一趟休息时间五 模型的建立与求解问题一 模型建立:i h 时间段内每分钟车上的净增人数: ij δ=(j x —j y )/60最大净增人数: m =∑=ni 0σ每小时发车的时间间隔: σi =60/s非高峰时: 目标函数: Min i S =60/t S.T :50≦m *t ≦1000<t ≦10 高峰时: 目标函数: Min i S =60/t S.T :50≦m *t ≦1000<t ≦10 模型求解:运用Excel 求出上行下行各组所发的次数,时间间隔,请参见下表1、表2,所得上下行车辆共66辆。

表一上行发车时刻表[1]表二 下行发车时刻表问题二 模型建立:某段路上车上净人数:各站上车人数净增量:j r =j x —j yi h 时间段内发车数量:i S =∑=nj 1(j x —j y )第i 时间段内每分钟的发车数:i w =(∑=n j 1a i —∑=ni 1i S )/600 第i 时间段内每分钟发车数:i U =(∑=ni 1i S )/600六、模型评价6.1 模型优点本文针对所给的公交运营数据,从发车时间间隔着手,逐步深入进行数据分析,作出上行下行上下车人数折线图,找出乘车高峰点和高峰时间段。

在设计调度方案时从车辆数入手,得到发车时刻表,用简单的单目标规划求解,算法简单易行。

6.2 模型缺点建立模型时运用等式过多,没有给出有些不确定值的变动范围,虽使模型简化,但是缺少一定的准确性。

建立模型之前,对调度的影响因素考虑过于复杂,没有及时作出合理的假设。

由于建模过程分析中,对思考方向作了几次调整,花费了大量时间,最终只对发车时刻表和总车辆数得出具体结论,对乘客和公交公司双方的利益并未做过多分析。

6.3 模型改进采用长时间比较稳定的运营数据,尽可能将一些因素考虑进去,如上车下车所花费的时间,起点终点排队问题,模型误差会减小。

运用多目标规划对顾客满意度和公交公司利益进行分析,对双方利益作出均衡。

我们感觉到好模型的建立与顺利完成,需要大胆去想象尝试,尽快对最优思路做出选择,对建模的时间进行合理分配,小组进行积极合作,有效分工。

七、参考文献[1] 熊玲关于公交车调度问题的研究武汉科技学院学报 2005 年01 月第18 卷第1 期武汉八、附录function [s,t]=zhp111(a)%s是h(i)时间段内发车的数%t是h(i)时间段内发车时间间隔aaa=[];b=a(find(a>0));aaa=[aaa b];c=sum(aaa);d=120/c;if d>10t=10;else t=d;ends=60/t;。

相关主题