公交司机排班方案 下载本文

公交司机排班方案 程晨 药学院 1040714

公交司机排班方案

一 摘要

公交司机如何排班影响到了公交客运是否健康的发展。合理的排班方案有利于司机调度与乘客的出行。为了使各方利益达到最大化,现在我们利用均匀分布模型给出公交司机排班方案的最优化。

为了给出公交司机排班方案的最优化解,首先针对问题一,我们将节假日与非节假日的发车时间一览表排出来其次求出当月最少班次总数。然后,对于问题二,我们先利用matlab随机给数,得出正常期与高峰期的平均发出时间间隔。再建立0,1模型,每一个司机对于这一班车只有两种情况,开或不开。对于问题三,只是比问题二多了几个条件,只需将模型优化一下即可。

关键词:最优化解 随机给数 0,1模型

二 问题重述

2.1 问题重述

目前,随着南京市经济进一步的发展,道路变得越来越多。公交优先,百姓优先,为此南京市公交总公司开辟了各种线路,有市内线,近郊线,远郊线,旅游线,机场线,社区线等140多条线路,以满足老百姓出行需要。而现实是有的线路司机不足,常常存在向其他车队借调司机和车辆跑班,影响其他线路的排班秩序;有的线路司机需要每天开车12~13小时,影响司机的休息,从而给交通留下安全隐患;有的线路因经常堵车,打乱了线路调度计划,使得交接班司机和乘客怨声载道。一般,公交公司按月给司机排班。

下面是某条线路的基本情况(附件),请你根据有关数据完成下列问题。 规定:(1)司机每天上班时间不超过8小时;(2)司机连续开车不得超过4小时;(3)每名司机至少每月完成120班次。

问题一:根据五月份的节假日情况,求出当月最少班次总数; 问题二:阐述你对上述规定的理解(模型假设),并根据你的理解建立适当的数学模型,合理地设计五月份该线路的司机排班方案;

问题三: 根据五月份该线路的司机排班方案,计算出每天需要的司机人数,假如规定每个司机每周连续工作五天,休息两天。请你通过某周(周一至周日)需要司机人数求出司机总数最少的排班方案。 附件:

1、该线路的开收班时间: 夏令(12月~3月):6:15~18:20, 冬令(4月~11月):6:20~18:10 2、该线路的司机人数:15人 3、该线路排班间隔: 平时:8~10分钟/班;10 高峰(上下班):

6:00~8:30,11:30~13:30,16:30~18:00:4~8分钟/班 节假日:5~10分钟/班 10

4、该线路的运行时间: 正常:80~85分钟/班 85 高峰:100~120分钟/班 120

2.2 问题分析

城市城际公交拥有运量大、速度较快、污染低、安全、便宜、方便等优势,逐渐成为全国各城市客运交通系统的骨干。目前,基于节能减排新观点深入人心,我国正在大力推行城市公交系统的建设,而公交司机的排班成为了公司领导、司

机、百姓最为关注的问题。随着人们时间观、舒适观、及权利的维护观相对提升,制定高效的司机排班方案越来越难,其不仅要考虑社会效益、节假日安排、乘客乘坐能力,还要考虑公交公司的收益状况、公交司机的跑班时间安排等情况。

司机跑班制度安排将直接影响公交公司的利益及普通百姓的上班出行情况,不合理的排班方案会是公交资源的浪费,也会使百姓对公交怨声载道失去信心。因此,城市公交司机排班方案的制定是一项比较复杂的系统工程,并且受到政府、公交公司和百姓的热情关注。

传统的排班制度的制定大多依赖于临时客运量的变化随即安排的,这种做法导致了诸多问题,如:司机过度跑班引起安全隐患、百姓等车过长或过度拥挤乘车,怨声载道……这种传统的排班制度不能带来双赢甚至多赢。高效的司机排班制度要考虑到各方的利益,采取分层分段的方式进行研究,从而能达到各方利益共同兼顾的目标。

三 模型假设

1.公交司机的身体状况良好

2.不裁剪也不增加该路公交司机的人数

3.即使高峰时期班次的时长也不会超过120分钟 4.每日的乘客量基本相同 5.公交车排除各种故障的影响 6.不考虑其它的外界因素

7.本论文涉及时间的数据均以整分钟计 8.班次时长是指来回的时间 9.五月有9个休息日无假日

四 符号说明

t1i------这班车高峰期的发车时间间隔 t2i----- 这班车正常期的发车时间间隔

n----------每日发车班次总数

ti?1--------第i班车的上一班车发车时间

t1----------高峰期总的时间间隔 t2-----------正常期总的时间间隔 T----------一天的工作时间 m---------每天发车的时间

xijk------第i个司机跑第j天是否跑第k个班次

Cijk---------第i个司机跑第j天的第k个班次所用的时间。

?t----------前后两班车次的时间间隔

P-------公交司机人数

五 模型的建立与求解

5.1问题一的模型

非节假日公交最少班次表 高峰 平时 高峰 班次 时间 班次 时间 班次 1 8:46 19 11:44 37 2 8:56 20 11:52 38 3 9:06 21 12:00 39 4 9:16 22 12:08 40 5 9:26 23 12:16 41 6 9:36 24 12:24 42 7 9:46 25 12:32 43 8 9:56 26 12:40 44 9 10:06 27 12:48 45 10 10:16 28 12:56 46 11 10:26 29 13:04 47 12 10:36 30 13:12 48 13 10:46 31 13:20 49 14 10:56 32 13:28 50 15 11:06 33 13:36 51 16 11:16 34 17 11:26 35 18 11:36 36

时间 6:20 6:28 6:36 6:44 6:52 7:00 7:08 7:16 7:24 7:32 7:40 7:48 7:56 8:04 8:12 8:20 8:28 8:36 平时 时间 班次 13:46 52 13:56 53 14:06 54 14:16 55 14:26 56 14:36 57 14:46 58 14:56 59 15:06 60 15:16 61 15:26 62 15:36 63 15:46 64 15:56 65 16:06 66 16:16 67 16:26 68 16:36 69 高峰 时间 班次 16:44 70 16:52 71 17:00 72 17:08 73 17:16 74 17:24 75 17:32 76 17:40 77 17:48 78 17:56 79 18:04 80 平时时间 班18:10 8 节假日公交最少班次表 时间 班次 时间 班次 时间 班次 时间 班次 6:20 1 9:20 19 12:20 37 14:50 52 6:30 2 9:30 20 12:30 38 15:00 53 6:40 3 9:40 21 12:40 39 15:10 54 6:50 4 9:50 22 12:50 40 15:20 55 7:00 5 10:00 23 13:00 41 15:30 56 7:10 6 10:10 24 13:10 42 15:40 57 7:20 7 10:20 25 13:20 43 15:50 58 7:30 8 10:30 26 13:30 44 16:00 59 7:40 9 10:40 27 13:40 45 16:10 60 7:50 10 10:50 28 13:50 46 16:20 61 8:00 11 11:00 29 14:00 47 16:30 62 8:10 12 11:10 30 14:10 48 16:40 63 8:20 13 11:20 31 14:20 49 16:50 64 8:30 14 11:30 32 14:30 50 17:00 65 8:40 15 11:40 33 14:40 51 17:10 66 8:50 16 11:50 34 17:20 67 9:00 17 12:00 35 17:30 68 9:10 18 12:10 36 17:40 69 模型一的分析:首先本文假设5月有9个休息日,而无假日,其次,问题一是‘根据五月份的节假日情况,求出当月最少班次总数’,所以我们在时间数据方面都是以最长时间作为参考数据的。5月最少班次总数:72*9+81*22=2430次

5.2模型二

发车的时间间隔是在一定范围内浮动的,不确定的。司机会根据等待人数的多少来选择间隔时间。如,高峰期,发车间隔为4-8min,当等待的人数较多时,司机就会选择较短的时间间隔4min发车,而较少的人数时则会选择8min。在一天之内,发车的时间间隔大致服从随机均匀分布函数,运用此函数分别算出高峰期与正常期的发车时间间隔的随机均匀分布,并把数据分别保存在数组t1i和

t2i中,以备后期计算使用。

时间 17:50 18:00 18:10 班次70 71 72 为了计算非节假日每日发车班次总数n,首先,我们用ti?1表示第i班车的上一班车发车时间,t1i表示这班车高峰期的发车时间间隔,t1表示高峰期总的时间间隔。t2i表示这班车正常期的发车时间间隔,t2表示正常期总的时间间隔。T表示

一天的工作时间。m表示每天发车的时间,初始值设为0。用数学式子表达如下:

4《t1i《8 8《t2i《10 t1+t2》710

ti?ti?1?t1i或者ti?ti?1?t2i

此式子由MATLAB编程可解出每天需要的班次数n。由于每次运用随机均匀分布函数所产生的数据不同,则结果n也不同。故我们采样了40个结果数据,数据如下:

次数 班次数 次数 班次数 次数 班次数 次数 班次数

1 98 11 98 21 99 31 100 2 99 12 97 22 99 32 98 3 98 13 99 23 97 33 101 4 101 14 97 24 99 34 99 5 99 15 100 25 101 35 96 6 99 16 98 26 98 36 99 7 97 17 101 27 98 37 100 8 99 18 98 28 97 38 99 9 101 19 99 29 99 39 101 10 98 20 101 30 97 40 98

为了使一天的班次数更接近现实,我们采用取平均值的方法来求出每天总的班次数为98.8,整为99。故每天的总班次数为99次。

同理,节假日的班次数也可以如此计算, 次数 班次数 次数 班次数 次数 班次数 次数 班次数

1 98 11 93 21 93 31 94 2 94 12 97 22 98 32 96 3 97 13 97 23 98 33 97 4 98 14 93 24 95 34 91 5 96 15 95 25 93 35 95 6 95 16 95 26 94 36 93 7 96 17 95 27 101 37 100 8 97 18 95 28 98 38 99 9 93 19 93 29 96 39 92 10 99 20 97 30 98 40 95 为了使一天的班次数更接近现实,我们采用取平均值的方法来求出每天总的班次数为95.7,整为96。故节假日每天的总班次数为96次。

2. 为了求解需要的司机数及排班方案,我们建立如下0,1模型:

xijk?1,第i个司机跑第j天的第k个班次??

j天的第k个班次?0,第i个司机不跑第Cijk:第i个司机跑第j天的第k个班次所用的时间。

?t:前后两班车次的时间间隔

数学表达示如下: 目标函数

minP

ijk??xi?1k?1pn?99?j?1,2,?31? %每天至少99班次

xijk?xijk?1?xijk?2?3开三班

?i?1,2?p;j?1,2?m;k?1,2,?n? %司机不能连续

??xj?1k?1mnijk?120?i?1,2,?p? %每个司机每月至少开120班次

?xk?1nk?1nijk?cijk?480i?1?i?1,2,?p;j?1,2,?m? %每个司机每天的工作时间不超过8小时

??710 %不存在加班情况

???t

??ti

5.3 模型三

要求每个司机每周连续工作五天,休息两天,通过一周需要司机人数给出司机总数最少的排班方案。所以无论是正常期还是高峰期,公交往返一次的时间我们都去取最小值,而发车时间间隔都取最大值,这样就可以使排班司机总数最少。

非节假日:

xijk?1,第i个司机跑第j天的第k个班次??

0,第i个司机不跑第j天的第k个班次?Cijk= 80, 第k班在正常期内所用的时间

100,第k班在高峰期内所用的时间

?t= 8,第k班在正常期内前后两班车次的时间间隔 10,第k班在高峰期内前后两班车次的时间间隔

??ikpn

xijk?81

xijk?xijk?1?xijk?2?3开三班

?i?1,2?p;j?1,2?m;k?1,2,?n? %司机不能连续

??xj?1k?1mnijk?120?i?1,2,?p? %每个司机每月至少开120班次

?xk?1nk?1nnijk?cijk?480i?1?i?1,2,?p;j?1,2,?m? %每个司机每天的工作时间不超过8小时

??710 %不存在加班情况

n???t?xkijk??tin?0 ?xij?1k?0 ?xij?2k?0 ?xij?3k?0 ?xij?4k?0

kknnkk

?xknij?5k?0 ?xij?6k?0

kn

六 模型的评价

6.1 模型的优点

近年来,公交线路发展的很快,为了方便市民出行,增添了很多条公交线,但公交公司仍采取传统跑班的制度,这样很容易造成安排上的混乱,公交司机一天可能上十几个小时的班,也可能连续开好几个小时的车,易造成驾驶疲劳,很容易形成交通事故,危害他人的财产生命安全。现在采取这样的排班制度,既可以使司机有很好的休息与上班的时间安排,每人的工作量不会相差太大,又可以根据乘客的流量缩短或延长发车的时间间隔,使每车的乘客量基本保持在一个水平上。

6.2 模型的缺点

模型的可行性是在模型的假设基础上成立的,我们没有考虑车辆损毁的情况,没有考虑司机的身体异样,也没有考虑到特殊的天气等自然的不可控的因素。

七 参考文献

附录: 模型二:

function s=diaotu(t)

t1=random('unif',4,8,1,120) t2=random('unif',8,10,1,120)

n=1 %初始累加计数器,0时刻发出第一班车

m=0 %设每天的第一次发车时间为0,一天共工作710分钟 while(m<=710) n=n+1

if(m>=0&&m<130||m>=310&&m<430||m>=610&&m<700) m=m+t1(n-1)

else (m>=130&&m<310||m>=430&&m<610||m>=610) m=m+t2(n-1) end end end

function s=diaotu(t)

t=random('unif',5,10,1,120)

n=1 %初始累加计数器,0时刻发出第一班车

m=0 %设每天的第一次发车时间为0,一天共工作710分钟 while(m<=710) n=n+1

m=m+t(n-1) end end