数学与统计学院2011-2012学年第一学期课程论文《数学建模*》我们选择的题号是(从A/B/C/D/E中选择一项填写):_____D所属班级(请填写完整的全名):2009级数学与应用数学(师范)1班成员(打印并签名) :1. ____200902114013 X X2. ____200902114019 XXX3. ____200902114049 XXX_4.日期: 2011 年 12 月 29 日评阅成绩:公交司机排班方案摘要本文主要研究南昌市公交司机排班问题。
在最少班次问题上,将五月份分为节假日和非节假日两部分建立模型,在司机排班问题上,考虑到司机存在上班、不上班两种情况,将选择使用0-1变量、随机均匀函数,最终得到合理分配方案。
文中涉及Lingo、Matlab、Excel数据分析等多种算法。
针对问题一:首先:据题意将五月份分为节假日(9天)和非节假日(22天)两部分。
其次:而非节假日中包括平常、高峰两个时段。
最后:根据每段时间间隔,取每个班次间隔时间的最大值,即可得出五月份的最少班次总数为2377。
针对问题二:其一:公交车司机为了充分利用资源,提高公司效益,对司机的工作时间做了相关规定,但同时还要考虑到安全问题等因素,规定:司机每天上班不得超过八个小时,连续开车不得超过四个小时,但每个月至少必须得完成120个班次的任务,这与实际情况相符。
其二:司机的排班方案设计上,属于典型的分配问题。
考虑约束条件司机每天上班时间不超过8小时等,参考问题一模型,求解出每天最大班次133,在Matlab中用均匀分布函数产生出每天每个班次的运行时间。
在lingo中编程得出节假日、非节日的排班方案(表一、二)。
针对问题三:其一:每天需要的司机人数,参考问题二的数据,整理即可得出节假日每天至少需要17人,非节假日每天至少需要13人。
其二:首先,根据模型二的数据,建立模型,得出每周需要的最少人数为23人。
其次,司机每周总数最少的排班方案,选择0-1变量,参照问题二的模型。
且要使每个司机每周连续工作五天、休息两天。
最后,在Lingo中建立模型整理得出司机排班方案(见附录四)关键词:最少班次、Lingo编程、0-1模型、排班方案一、问题重述目前,随着南昌市经济进一步的发展,道路变得越来越多。
为此南昌市公交总公司开辟了各种线路,以满足老百姓出行需要。
而现实是有的线路司机不足,常常存在向其他车队借调司机和车辆跑班,影响其他线路的排班秩序;有的线路司机需要每天开车12~13小时,影响司机的休息,从而给交通留下安全隐患;有的线路因经常堵车,打乱了线路调度计划,使得交接班司机和乘客怨声载道一般,公交公司按月给司机排班。
下面是某条线路的基本情况,请你根据有关数据完成下列问题。
规定:(1)司机每天上班时间不超过8小时;(2)司机连续开车不得超过4小时;(3)每名司机至少每月完成120班次。
已知该线路有司机15人,目前该线路的排班间隔是:非节假日:平时:8~10分钟/班;高峰(上下班):6:00~8:30,11:30~13:30,16:30~18:00:4~8分钟/班节假日:5~10分钟/班该线路的开收班时间:夏令(12月~3月):6:15~18:20,冬令(4月~11月):6:20~18:10该线路的运行时间是:正常:80~85分钟/班分钟/班,高峰:100~120分钟/班问题一:根据五月份的节假日情况,求出当月最少班次总数;问题二:阐述你对上述规定的理解,并根据你的理解建立适当的数学模型,合理地设计五月份该线路的司机排班方案;问题三:根据五月份该线路的司机排班方案,计算出每天需要的司机人数,假如规定每个司机每周连续工作五天,休息两天。
请你通过某周(周一至周日)需要司机人数求出司机总数最少的排班方案。
二、模型假设(1)假设五月份有九个节假日;(2)假设一司机开第一个班次与开第二个班次之间相隔十个班次,这种称为连续的班次;(2)公交车发车间隔取整分钟,行进中公交车彼此赶不上且不超车,到达终点站后掉头变为始发车;(3)从起始站出发到终点站再回到起始站为一个来回,记作一个班次;(4)乘客流量保持不变且不用在两辆车的间隔内等太久;(5)交通情况,路面状况良好,无交通堵塞和车辆损坏等意外;(6)假设司机都不缺勤,允许自由调班;三、符号说明四、问题分析本文主要通过建立模型、使用随机均匀分布函数、0-1变量等,在Lingo 、Matlab 、Excel 中解决公交车最少班次、合理司机排班等问题,以提高公交车公司资源的有效利用。
4.1问题一就问题一而言:求出当月最少班次的总数。
分析题意,首先:将五月份分为节假日排班方案、非节假日的排班方案。
当节假日和非节假日的排班方案中的班次数达到最少,则当月的排班总次数达到最少。
其次:计算出每天的班次,分别通过建立模型求出1N 和非节假日模型求出2N ,节假日按1D 天计算,非节假日按2D 天计算。
最后:由公式2211N *+*=D N D N 计算出结果。
4.2问题二4.2.1问题2.1结合生活实际情况,考虑到安全问题,司机每天上班时间不能超过八个小时,且连续开车不能超过四个小时,考虑到公司的效益问题,每名司机每个月必须完成至少120个班次。
4.2.2问题2.2设计五月份的司机排班方案,属于典型的分配问题。
结合本题约束条件,为了充分满足司机的排班方案,参照问题一中已经建立的非节假日的模型,计算出每天的最大班次,在matlab 中运用随机均匀函数得出最大的班次各时段长数据表。
在lingo 建立模型,得出司机的排班方案。
4.3问题三4.3.1问题3.1根据问题二的司机排班方案的结果表,可以在Excel 中直接整理得出每天所需司机人数。
4.3.2问题3.2在问题二的模型基础上,结合每个司机连续工作五天、休息两天的约束条件,写出模型,在Lingo 中编程得出司机总数最少的排班方案。
五、模型建立与求解5.1问题一5.1模型的建立首先,五月份共计有D 天;12N N ⎧⎨⎩节假日:五月份非节假日:两种情况,其中节假日为1D 天,非节假日为2D 天;⎩⎨⎧高峰时段平常时段非节假日分为 两个时段; 其次,(1)建立节假日每天最少班次模型:目标函数:1min TN t=510.t ≤≤ (1)其中,T 表示五月份每天的上班总时间,t 为时间间隔,单位为分钟。
(2) 建立非节假日每天最少班次模型: 目标函数: 621min ii N x ==∑ (2)其中,2N 表示一天的班次总数。
约束条件:11111,2,3,4,5,6.1,2,3,4,5,6...8102,4,6.481,3,5.kki i ii i kki i k ii i i i x m Q k x m m Q k S T m i m i ====⎧≥=⎪⎪⎪-≤=⎨⎪⎪≤≤=⎪≤≤=⎩∑∑∑∑ (3)最后,由公式:1122N N D N D =*+*计算得出五月份额最少班次排班方案。
5.1.模型的求解首先,五月份共计31天,其中节假日为9天,非节假日为22天; 其次,(1)、运用excel 对节假日(1)式求解如下:1min T N t=510t ≤≤ (4)已知T=710,当t=10时即可以求得每天最少班次。
(5)那么五月份的节假日最少班次为:6399711=*=N (6)(2)、利用Lingo 对(2)、(3)式编程,解出五月份非节假日每天的最少班次(见附录一)如下:621min =79i i N x ==∑ (7)那么五月份的非节假日最少班次为:173822792=*=N (8)最后:五月份的最少班次为:237721=+=N N N (9)5.2问题二5.2模型的建立公交司机排班问题具有复杂性,必须考虑到多个约束条件限制,找到“合理、令人满意的方法”,并且也要使公交车公司获得最大的利益。
首先,参考问题一的模型计算出每天的最大班次量B 。
其次,在Matlab 中运用随机均匀函数产生出每一天B 个班次中每个司机每个班次的运行时间矩阵C 。
最后:(1)参照每天最多的班次量1B ,且司机不能连续开四个小时即不能连续开2B 个班次,(2)每名司机至少每月完成3B 班次。
(3)司机每天工作不超过T 小时,转化为不超过1T 分钟。
为了求解需要的司机数及排班方案,我们建立如下模型:1710min ==7110T N t =ijk 1x 0i j k i j k ⎧⎪⎨⎪⎩,第个司机跑第天的第个班次;,第个司机不跑第天的第个班次; (10)约束条件: 1111020231111(1,231)(11(1,2)*(1,2;1,2)p nijk i k ijk ijk ijk m n ijk j k nijk ijk k x B j x x x B i j x B i p x c T i p j m ==++===⎧>=⎪⎪⎪++<==⎪⎨>=⎪⎪⎪<==⎪⎩∑∑∑∑∑......p ,...m,) (11)在lingo 中编程得出结果 5.2模型的求解首先参考问题一的模型计算出每天的最大班次133。
其次,在Matlab 中运用随机均匀函数产生出133班次的每个司机班次的运行时间矩阵。
将其保存在Lingo 相应文件中,以备调用。
然后, (1)参照每天最多的班次量133,且司机不能连续开四个小时即不能连续开3个班次,(2)每名司机至少每月完成120班次。
(3)司机每天工作不超过8小时,转化为不超过480分钟。
为了求解需要的司机数及排班方案,我们建立如下模型:10ijk x ⎧⎪⎨⎪⎩第i 个司机跑第j 天的第k 个班次第i 个司机跑第j 天的第k 个班次 (12)约束条件: 11102011171(1,231)3(11120(1,2)*480(1,2;1,2)p nijk i k ijk ijk ijk m n ijk j k nijk ijk k x j x x x i j x i p x c i p j m ==++===⎧>=⎪⎪⎪++<==⎪⎨>=⎪⎪⎪<==⎪⎩∑∑∑∑∑......p ,...m,) (13)在Lingo中编程得出结果(见附录三)最后,根据运行结果整理得出第一天的节假日排班方案,由第一天的司机排班分析可知:第一天的第一个班次可能安排多个司机,而第五个班次没有安排司机。
结合公交车公司不可能将让某个班次不安排司机、司机连续开车不超过三班车等,重新对结果进行合理调节得出节假日排班方案(表一)、非节假日排班方案(表二)表三:第一天节假日排班方案5.3问题三5.3模型的建立5.3.1参照问题二的模型结果,整理出数据得出节假日每天需要的人数3N 、非节假日每天需要的人数4N 。