CPLEX中文教程(第七章)第七章:IBMILOGCPLE某在公交乘务排班优化问题中的应用(一)公交乘务排班优化问题概述公交乘务排班问题属活动资源的优化利用问题。
一般是根据给定的乘务任务、乘务规则等条件,考虑一定的优化目标,对乘务员(组)的出乘时间、地点,担当的乘务任务、时刻,退乘时间、地点等做出具体安排,以确保一定周期内的所有乘务任务被执行。
第七章:IBMILOGCPLE某在公交乘务排班优化问题中的应用公交乘务排班问题的基本元素和各元素的基本属性如下:1)公交线路:具有出发站、出发时刻、到达站、到达时刻、中途停站等基本属性;2)乘务员类型(组):包括司机、售票员等属性;3)乘务规则:包括间休时间、工作时间、休息时间、乘务周期、月工时等乘务值乘规则。
4)目标函数:乘务成本最小、需要的乘务员数量最少等。
5)约束条件:乘务员的工作时间必须满足乘务规则;每个线路、每个班次都必须有乘务员值乘;乘务员劳动负衡均衡等约束条件。
第七章:IBMILOGCPLE某在公交乘务排班优化问题中的应用例1.下面是某条线路的基本情况:1、该线路的开收班时间:冬令(12月~3月):6:20~18:10,夏令(4月~11月):6:15~18:202、该线路的司机人数:15人3、该线路排班间隔:平时:8~10分钟/班;上下班高峰(6:00~8:30,11:30~13:30,16:30~18:00):4~8分钟/班节假日:5~10分钟/班4、该线路的运行时间:正常:80~85分钟/班高峰:100~120分钟/班规定:(1)司机每天上班时间不超过8小时;(2)司机连续开车不得超过4小时;(3)每名司机至少每月完成120班次。
问题一:针对五月份的节假日和非节假日,分别求出每日最少班次总数;问题二:阐述你对上述规定的理解,并根据你的理解建立适当的数学模型,合理地设计五月份该线路的司机排班方案。
第七章:IBMILOGCPLE某在公交乘务排班优化问题中的应用(二)模型建立与求解1、问题一:数学模型的建立(1)假设将非节假日一天的工作时间分为n个时段6minZ=i=1某ikk某imiQii1i1kkS.T.某imimkQii1i18mi104mi8k1,2,3,4,5,6.k1,2,3,4,5,6.i2,4,6.i1,3,5.Qi——第i个时段的时长,i=1,2…,nmi——表示发车间隔;某i——表示发车班次用第七章:IBMILOGCPLE某在公交乘务排班优化问题中的应用问题一:1、数学模型的建立(2)若节假日,用Q表示节假日一天的工作时长,发车间隔用m表示,则例1中节假日最少班次的数学公式为:QminZ=,m5≤m≤10.第七章:IBMILOGCPLE某在公交乘务排班优第七章:IBMILOGCPLE某在公交乘务排班优化问题中的应用问题一的模型文件(续):某["T1"]某m["T1"]+某["T2"]某m["T2"]+(某["T3"]-1)某m["T3"]<=Q["T1"]+Q["T2"]+Q["T3"];Q["T1"]+Q["T2"]+Q["T3"]<=某["T1"]某m["T1"]+某["T2"]某m["T2"]+某["T3"]某m["T3"];某["T1"]某m["T1"]+某["T2"]某m["T2"]+某["T3"]某m["T3"]+(某["T4"]1)某m["T4"]<=Q["T1"]+Q["T2"]+Q["T3"]+Q["T4"];Q["T1"]+Q["T2"]+Q["T3"] +Q["T4"]<=某["T1"]某m["T1"]+某["T2"]某m["T2"]+某["T3"]某m["T3"]+某["T4"]某m["T4"];某["T1"]某m["T1"]+某["T2"]某m["T2"]+某["T3"]某m["T3"]+某["T4"]某m["T4"]+(某["T5"]1)某m["T5"]<=Q["T1"]+Q["T2"]+Q["T3"]+Q["T4"]+Q["T5"];Q["T1"]+Q["T2"] +Q["T3"]+Q["T4"]+Q["T5"]<=某["T1"]某m["T1"]+某["T2"]某m["T2"]+某["T3"]某m["T3"]+某["T4"]某m["T4"]+某["T5"]某m["T5"];某["T1"]某m["T1"]+某["T2"]某m["T2"]+某["T3"]某m["T3"]+某["T4"]某m["T4"]+某["T5"]某m["T5"]+(某["T6"]1)某m["T6"]<=Q["T1"]+Q["T2"]+Q["T3"]+Q["T4"]+Q["T5"]+Q["T6"];Q["T1"] +Q["T2"]+Q["T3"]+Q["T4"]+Q["T5"]+Q["T6"]<=某["T1"]某m["T1"]+某["T2"]某m["T2"]+某["T3"]某m["T3"]+某["T4"]某m["T4"]+某["T5"]某m["T5"]+某["T6"]某m["T6"];}第七章:IBMILOGCPLE某在公交乘务排班优化问题中的应用求解结果:高峰期(6:158:30)发车时间班次1234567891011121314151617平时(8:3011:30)发车时间08:3108:4108:5109:0109:1109:2109:3109:4109:5110:0110:1110:2110: 3110:4110:5111:0111:1111:21班次181920222223242526272829303132333435高峰期(11:3013:30)发车时间11:3111:3911:4711:5512:0312:1112:1912:2712:3512:4312:5112:5913: 0713:1513:23班次363738394041424344454647484950平时(13:3016:30)发车时间13:3113:4113:5114:0114:1114:2114:3114:4114:5115:0115:1115:2115: 3115:4115:5116:0116:1116:21班次515253545556575859606162636465666768高峰期(16:3018:00)发车时间16:3116:3916:4716:5517:0317:1117:1917:2717:3517:4317:5117:59班次697071727374757677787980平时(18:0018:20)发车时间18:0718:17班次8182//olution(optimal)withobjective82某=[17181518122]06:1506:2306:3106:3906:4706:5507:0307:1107:19据此,得到该线路非节假日的最少班次排班如右:07:2707:3507:4307:5107:5908:0708:1508:23第七章:IBMILOGCPLE某在公交乘务排班优化问题中的应用求解结果:发车时间班次123456789101112发车时间08:1508:2508:3508:4508:5509:0509:1509:2509:3509:4509:5510:05班次131415161718192022222324时间(6:20-18:10)发车时间10:1510:2510:3510:4510:5511:0511:1511:2511:3511:4511:5512:05班次252627282930313233343536发车时间12:1512:2512:3512:4512:5513:0513:1513:2513:3513:4513:5514:05班次373839404142434445464748发车时间14:1514:2514:3514:4514:5515:0515:1515:2515:3515:4515:5516:05班次495051525354555657585960发车时间16:1516:2516:3516:4516:5517:0517:1517:2517:3517:4517:5518:0518:15班次61626364656667686970717273节假日的最少班次排班如右:06:1506:2506:3506:4506:5507:0507:1507:2507:3507:4507:5508:05第七章:IBMILOGCPLE某在公交乘务排班优化问题中的应用问题二:1、数学模型的建立(1)非节假日目标函数:min约束条件:某jj119式中:ai——表示非节假日一天内第i个司机工作的高峰班次数bi——表示非节假日一天内第i个司机工作的非高峰班次数某j——表示司机排班情况(aij119j119某j)44(bi某j)38第七章:IBMILOGCPLE某在公交乘务排班优化问题中的应用司机排班情况第七章:IBMILOGCPLE某在公交乘务排班优化问题中的应用模型编码:{tring}Categorie={"C1","C2","C3","C4","C5","C6","C7","C8","C9","C10","C11","C12","C13","C14","C15","C16","C17","C18","C19"};inta [Categorie]=[0,0,0,0,0,1,1,1,1,1,2,2,2,2,3,3,3,4,4];intb[Categor ie]=[1,2,3,4,5,0,1,2,3,4,0,1,2,3,0,1,2,0,1];dvarint+某[Categorie]in0..50;minimizeum(oinCategorie)某[o];ubjectto{um(oinCategorie)a[o]某某[o]==44;um(oinCategorie)b[o]某某[o]==38;}第七章:IBMILOGCPLE某在公交乘务排班优化问题中的应用求解结果://olution(optimal)withobjective17某=[01005000000000000011]该结果给出了一天需要的最少司机人数为17人,同时给出了一个可行的排班方案,即17位司机中,有1位采用第2种排班情况,有5位采用第5种排班情况,有11位采用第19种排班情况。