1、1红绿灯转换周期的设计摘要针对有信号灯的路口,车辆通行能力的问题。我们首先根据题意将一小时这一周期,分为 36 个长度为 10s 的时段。对于每个时段的到达车辆数,假设其服从泊松分布,且取值在给定范围内,可以通过编程模拟每个时段的到达车辆数。另外,引入每时刻开始时的滞留车辆数这一概念。而在每个周内,当滞留车辆数与到达车辆数之和在通行能力范围之内时,它们可以全部通过,当超过通行能力时,则按通行能力通过,不能通过的车辆将滞留到下一周期。由此便可以建立模型,模拟出一个周期内,每一时段的滞留车辆数,到达车辆数,以及通过车辆数,问题便可以得到解决。对于问题一,只需将每个时段的通过车辆数累积,即可得到方向
2、 1 一个周期内的通过车辆数,为 3364。问题二要求等待时间,则在原有模型的基础上,引入每时段内到达车辆所需的等待时间这一概念,得到红灯时方向 1 车辆平均等待时间为 43s,最大等待时间为 70s。在问题三中,我们假设,车辆等长且间距相等,由此将求平均排队长度和最大排队长度,转化为求平均滞留车辆数和最大滞留车辆数。得到平均排队长度为 198m,最大排队长度为 480m。对于第四问,绿灯时平均通过车辆数为总通过车辆数除以绿灯个数,即为 93 辆。问题五要求考虑方向 2,方向 2 的处理与方向 1 基本相同。不同之处是方向 1 的30s 绿灯和 70s 红灯对应方向 2 的 30s 红灯和 7
3、0s 绿灯。编程求得在一小时内有 5040辆来自方向 2 的车通过交叉路口。当方向 2 的信号灯是红灯时,平均一辆车的等待时间为 93s,最大等待时间为 110s。等待方向 2 红灯时车队的平均排队长度是 282m,最大排队长度为 834m。绿灯时,方向 1 平均 140 辆车通过交叉路口,最多 140 辆通过交叉路口。最后的拓展问题,让方向 1 的绿灯时间在一定的范围内,以一定步长变化,得到不同红灯长度的情况下车辆总的等待时间,求出使得总等待时间最短的绿灯时间。当考虑到方向 2 时,思路不变,只是总等待时间为两个方向的等待时间之和,求出使得总等待时间之和最短的方向 1 的绿灯时间为 28s。
4、关键词:红绿灯周期、车辆、等待时间2一、问题重述假设两个单行车道的交叉路口由一个红绿灯控制。假定每十秒有 515 辆道路 1 的车到达交叉路口,每十秒大概 624 辆道路 2 的车到达交叉路口。如果是绿灯,每十秒道路 1 的车可通过交叉路口有 36 辆,每十秒有 20 辆道路 2 的车通过这个交叉路口。不允许转弯。已知,红绿灯在方向 1 绿灯 30 秒,红灯是 70 秒写一个仿真算法回答 60分钟时段内的问题1、在一小时内有多少辆来自道路 1 的车通过交叉路口2、当道路 1 的信号灯是红灯时,平均一辆车的等待时间?最大等待时间3、等待道路 1 红灯时车队的平均排队长度是多少?最大排队长度4、绿
5、灯时,道路 1 平均多少辆车通过交叉路口?最多多少辆?5、若是来自道路 2 的车,请回答以上问题如何运用你的算法决定转换时间使得总的等待时间最短?当考虑到道路 2 的时候,你应该修正你的算法。二、 问题分析现代社会交通堵塞是很严重的出行问题,如何设计红绿灯的转换周期,使得汽车等待时间以及排队长度最短是很重要的问题。根据现有的交通流理论,我们认为任意时段内车辆到达数符合泊松分布。第一个问根据题意,我们把 10s 作为一个最小的计算周期,假设一小时内的每一个 10s 内,到达交叉路口的车的数量均服从泊松分布,且在给定范围之间,由此一共生成 360 个服从泊松分布的随机数,作为车辆到达数。并给出滞留
6、车辆数这一概念,即某时刻前到达且尚未通过的车辆数,在绿灯时,将每 10s 的滞留车辆数与每 10 秒最大通过车辆数 36 比较,其较小值即为该 10s 的通过量。累加即可得出一小时到达并通过交叉路口的车辆数。第二个问求解每辆车的平均等待时间,需求出是所有车辆的总等待时间,我们求出每个时段内滞留车辆的等待时间,然后累加得到总的等待时间,后得到每辆车的平均等待时间。然后,比较每个时段内滞留车辆的等待时间,得到最大等待时间。第三个问题,我们假设所有车车长相同,车辆排队时保持相同的间距。同样,我们求出每个时段内的滞留车辆数,乘以车长和间距可以得到排队长队,累加后除以总时段数得出车队平均排队长度。然后,
7、通过比较每个时段内的车辆排队长队,可以得到最大排队长度。第四个问题,因为车辆只能在绿灯时通过交叉路口,所以,每个绿灯周期时平均通过交叉路口的车辆数,就等于一小时内通过交叉路口的车辆数除以一小时内的绿灯周期个数。第五个问题,方向 2 的思路基本与方向 1 的相同,所不同的是方向 1 是 30s 绿灯,70s 红灯,对应方向 2 为 70s 绿灯,30s 红灯。另外,方向 2 来车辆较大,而绿灯时通过能力较小,所以考虑到可能会出现一个绿灯周期过完后,路口仍有车辆滞留的情况,要对每辆车的等待时间的计算做重新考虑和分析。至于最后的拓展问题,可以让方向 1 的红灯时间在一定的范围内,以 1s 为步长变化
8、,分别得到车辆总的等待时间,求出使得总等待时间最短的红灯时间。当考虑到方向 2 时,思路不变,只是总等待时间为两个方向的等待时间之和,求出使得总等待时间之和最短的红灯时间。3三、 模型假设1、1 小时内每 10 秒到达车辆数均在 5 到 15 辆之间,且服从泊松分布。2、车辆长度相等,且均为 4.5m,停车等待红灯时所有车辆间间距都相同,且均为1.5m。3、在方向 1 红灯时对应方向 2 为绿灯,在方向 1 绿灯时对应方向 2 为红灯。四、 符号系统Q(t): t 时段内道路 1 的车到达交叉路口的辆数;I(t): t 时段开始时在道路 1 的交叉路口滞留的车辆数;q(t): t 时段内道路
9、1 的车通过交叉路口的辆数;D(t): t 时段内到达的车辆要通过路口所需的等待时间;Q: 一周期内总通过车辆数;T: 车辆总等待时间;五、 模型建立5.1 随机模拟模型假设车辆到达交叉路口服从泊松分布,首先运用 matlab 生成一组符合泊松分布并且区间在题目给定的范围内的随机数,模拟每 10 秒到达交叉路口的车辆数 Q(t),因为以 10s 为一个时段计算,所以在一小时为周期的情况下,有 360 个时段,即 t 的取值从0 到 359。在初始时段,即 t=0 的时候,假设道路没有车辆滞留,该时段通过路口的车辆数q(0)可以用该时段到达叉路口的车辆数 Q(0)表示如下:36)0(;36)(0
10、Qq则之后的每一时段 t+1 开始时的交叉路口的滞留车辆都可以用前一时间段 t 的滞留车辆数,到达车辆数以及通过车辆数表示。即某时段开始时的滞留车辆数,即上一时段结束时的滞留车辆数,为上一时段开始时的滞留车辆数,加上上一时段到达的车辆数,扣除上一时段通过车辆数。用图表形式表示如图 1.图 1. t+1 时段开始时的滞留车辆用公式的形式表示即: 360,1)()(1( ttqQtItI式中,虽然仅有 360 个时段,但 t 的取值从 0 到 360。因为第 361 个时段的开始时的滞留车辆数,虽然不在考虑周期内,但它也是最后一个时段结束时的滞留车辆数,也能根据周期内的数据求得,所以 t 的取值从
11、 0 到 360。接下来求每个时段内的通过的车辆数,当红灯时,没有车辆能通过路口,即,当绿灯时,时段内的需要通过路口的车辆数为滞留车辆数和时段内到达的车0)(tq辆数之和,当他们的数量小于绿灯时的通行能力时,可以全部通过,当他们的数量大于通行能力时,按最大通行能力通过。无法通过的车辆将滞留到以后通过。用公式表Q(t) q(t)I(t)4示如下: 红 灯 情 况绿 灯 情 况036)(36)()( tQItItq由此模拟随机模型基本建立完成,对于一个周期一小时内的车辆进出情况可以用图表的形式表示如图 2:图 2.一小时内车辆进出情况5.1.1 问题一的求解根据建立的模型,编写程序,多次模拟,求出
12、每次模拟,每一时段的滞留车辆数,到达车辆数,以及通过车辆数,其中一次模拟的数据见附录 1。观察数据发现对于方向1,基本上每一次绿灯结束后,滞留车辆数都会为 0,即每一个红绿灯周期内到达的车辆,都可以在该周期的绿灯周期内通过路口,不会有车辆堆积到下一个周期。说明对于方向 1,现在的红绿灯安排是合理的,绿灯时间是充裕的。通过累加每一时段的通过车辆数可以得到总的通过车辆数,即: 3590)(tq多次运行程序发现 q 的值在 3364 附近波动,用 matlab 的 normplot 函数处理,发现图形显示为直线,即多次模拟得到的 q 值近似服从正态分布,如图 3。用 normpfit 函数处理得到参
13、数 ,其 95%的置信区间为3332,3396。64.3, I(360)I(0) I(1) I(2) I(359)Q(0) q(0) Q(1) q(1) Q(359)5图 3. normplot 函数得到的图像5.1.2 问题 2 的求解问题 2 要求当方向 1 的信号灯是红灯时,平均一辆车的等待时间和最大等待时间。求解思路是对于任意红灯时段,该时段到达的车辆所需的平均等待时间,为该时段开始时的滞留车辆全部通过路口所需的时间,因为只有在前面的滞留车辆先通过,后到达的车辆才能通过路口。若一个周期 30s 绿灯时间能使得滞留车辆通过,那么该时段到达的车辆能在这个红绿灯周期内通过,若不能,则要到下一
14、个周期甚至下下个周期才能通过了。定义数组 D(t),记录每个时段到来的车所需的等待时间,可以将时段 t 表示为第 n个红绿灯周期的第 m 个 10s 时段,即 9,1035,2110 mnnt对于方向 1,因为通过之前运行程序可以发现,每一个红绿灯周期 100s 内到达的车均能在 30s 绿灯时间通过,所以认为绿灯时段到达的车的等待时间为 0。红灯时的等待时间为,该时段到下一次绿灯开始的时间,加上绿灯开始后该时段滞留的车通过路口所需的时间,用公式表示为: 9,3108)(72102362,)( mtImttD通过编程可以得到每个时段到达车辆的等待时间,对每个时段的到达车辆数和等待时间相乘再求和
15、,即可得到所有到达车辆总等待时间,即: 3590)(ttDIT再用总等待时间除以红灯时到达车辆总数,即可得到红灯时车辆的拼接等待时间。最大等待时间同样可以通过编程,得到每个时段到达车辆的等待时间,求出其最大值。程序运行的结果,平均等待时间在 43s 附近波动,最大等待时间为 70s。5.1.3 问题三的求解对于问题三求平均排队长度和最大长度,根据模型假设,我们认为车辆是等长的,车辆也是等间距的。所以要求排队长度可以转换为求滞留车辆数。根据之前建立的模型,我们已经可以求出每一时段开始时的滞留车辆数,对其求平均即可得到平均滞留车辆数,进行比较即可得到最大滞留车辆数。程序运行的结果,平均滞留车辆数在
16、 33 附近波动,最大滞留车辆数在 80 附近波动。即平均排队长度为 198m,最大排队长度为 480m。5.1.4 问题四的求解因为车辆只能在绿灯时通过交叉路口,所以,每个绿灯周期时平均通过交叉路口的车辆数,就等于一小时内通过交叉路口的车辆数除以一小时内的绿灯周期个数,约为 93 辆。5.1.5 问题五的求解方向 2 的思路基本与方向 1 的相同,所不同的是方向 1 是 30s 绿灯,70s 红灯,对6应方向 2 为 70s 绿灯,30s 红灯。另外,方向 2 来车辆数较大,而绿灯时通过能力较小,所以考虑到可能会出现一个绿灯周期过完后,路口仍有车辆滞留的情况,要对每辆车的等待时间的计算做重新
17、考虑和分析。对于方向 2,通过之前运行程序可以发现,由于生成数的随机性,且方向 2 来车辆较大,而绿灯时通过能力较小,所以在每一个 100s 的红绿灯周期中,不一定能保证在绿灯时,该周期到达的车辆都能通过。一旦无法全部通过,那么滞留的车就会到下一个绿灯周期再通过,这样下一个周期需要通过的车辆数就会增加,基本上是不可能在一个周期内通过了,这样就会造成积压,使得滞留车辆数呈整体随时间上升的趋势。这样绿灯时到达的车辆也需要等待,所以等待时间需要重新计算。通过编程可以得到每个时段到达车辆的等待时间,对每个时段的到达车辆数和等待时间相乘再求和,即可得到所有到达车辆总等待时间,即: 3590)(ttDIT
18、再用总等待时间除以红灯时到达车辆总数,即可得到红灯时车辆的拼接等待时间。最大等待时间同样可以通过编程,得到每个时段到达车辆的等待时间,求出其最大值。编程求得在一小时内有 5040 辆来自方向 2 的车通过交叉路口。当方向 2 的信号灯是红灯时,平均一辆车的等待时间为 93s,最大等待时间为 110s。等待方向 2 红灯时车队的平均排队长度是 282m,最大排队长度为 834m。绿灯时,方向 1 平均 140 辆车通过交叉路口,最多 140 辆通过交叉路口。5.2 优化模型至于最后的拓展问题,可以让方向 1 的红灯时间在一定的范围内,以一定步长变化,得到不同红灯长度的情况下车辆总的等待时间,求出
19、使得总等待时间最短的红灯时间。当考虑到方向 2 时,思路不变,只是总等待时间为两个方向的等待时间之和,求出使得总等待时间之和最短的红灯时间。假定红绿灯周期为 100s 固定不变,那么方向 1 红灯时间需以 1s 为步长变化,所以建立模型时不再以 10s 作为计算时段,而是改用 1s 作为计算时段,那么一小时内就有3600 个时段。假设道路 1 和 2 的到来车辆满足泊松分布,生成 3600 组满足泊松分布且在给定范围内的泊松数。分析题意得出方向 1 能使车辆在绿灯结束后不发生滞留的绿灯时间约为 sT7.26.310方向 2 能使车辆在绿灯结束后不发生滞留的绿灯时间约为 5由此分析得到方向 1
20、的绿灯时间在 25 到 28s 时两条道路的车辆均不会有过多的滞留。然后分别求出方向 1 的绿灯时间为 25,26,27,28s 时,到达方向 1 车辆的总等待时间和到达方向 2 车辆的总等待时间。方向 1 车辆的总等待时间为每一秒到达车辆所需等待时间之和,即为该秒开始时滞留车辆通过所需的时间之和。方向 1 的绿灯时间为 25,26,27,28s 时,对应方向 2 的绿灯时间为75,74,73,72s。方向 2 车辆所需的等待时间计算方法同方向 1。7编程求出当方向 1 绿灯时间为 25s 时,所需总等待时间为 72491s,方向 1 绿灯时间为 26,27,28 时所需总等待时间分别为 55
21、987s,43795s 和 37245s,如表 1。表 1.不同绿灯时间下的总等待时间方向 1 绿灯时间(s) 总等待时间(s)25 7249126 5598727 4379528 37245表明当 t=2s8 时,即方向 1 绿灯时间为 28 时,两条道路所有的等待时间最少。六、 模型分析(1)数据结果经过多次分析比较稳定,且做过稳定性分析。因为假设满足泊松分布,而泊松分布的条件是无干扰条件下,而在有红绿灯的情况下近似服从。(2)最后一问精确到 1s,所得结果更加的精确。(3)在求解前 4 个问时假设在一个 10s 内车在同一时间到达,和实际有误差。七、 模型推广该种排队模型对于流水式的工作
22、环境都比较实用,某段时间暂停时,所有没有工作完成的机器都将停止工作。实际运行当中应该使不同的流水线上暂停时间最少。八、 结论对于道路 1:(1)60min 内通过岔路口的车辆 3354 辆(2)红灯时,车辆平均等待时间 43s,而车辆最大等待时间 70s。(3)平均排队长度为 198m,而最大排队长度为 480m。(4)绿灯时平均通过交叉路口的车辆数为 93 辆。对于道路 2:(1)60min 内通过岔路口的车辆 5039 辆(2)红灯时,车辆平均等待时间 93s,而车辆最大等待时间 110s。(3)平均排队长度为 282m,而最大排队长度为 834m。(4)绿灯时平均通过交叉路口的车辆数为
23、140 辆。 (5):当道路 1 的红灯时间为 72s,绿灯时间为 28s 时,两条道路的车辆总的等待时间最少。九、 参考文献1 张德丰 概率与数理统计分析 清华大学出版社 2005 年2 许详 matlab 基础教程 清华大学出版社 168-172 页 2005 年 5 月。3 刘敏,单行道信号交叉口红绿灯配时优化的休假排队模型,http:/ 年 1 月 26 日) 。4 张显 泊松过程在排队论中的应用 http:/ 滞留数 通过数 滞留时间 需等待时间double pj,pj2,pj3;srand( time(NULL) ); /生成 360 个 5 到 15 随机数for(i=0;i=1)pj=(1.0*he2)/(36*(1+1+6*2);/算红灯时平均滞留的车辆数/第四问if(l0=36)q0=l0;elseq0=36;max2=0;/绿灯时最大通过量max2=q0+q1+q2;