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