您好,欢迎访问三七文档
优化控制交通——十字路口的交通模型背景——十字路口的红绿灯控制的缺陷白天内交通灯的时间长短不变主干道单位时间的车流量一天当中变化很大我进攻的方向在哪里?——初步试验性实践:观察非常复杂的系统行人、自行车的影响很小摩托车会从汽车旁的狭小空间内通过汽车的运行更有规律记录分析用较简单的函数行吗有现成的数学理论吗计算机模拟实现——实践化的艰辛与快乐程序的结构:理想化的模拟程序设计遇到的难题核心——优化:判别优与劣的标准各部分的确定总的方式把一天分为几个车流量变化不大的时段,在每个时段内采用固定的红绿灯时间不同的时段的红绿灯时间不同。A车道B车道C车道D车道A车道B车道C车道D车道当绿灯亮起来后,第一辆车马上启动,其它汽车在它前面的那一辆启动一段时间后才启动。经实测,这段时间平均大概是2秒。假设车队有N辆车,那么绿灯亮到这辆车启动的时间为2(n-1)秒,然后它以车队的平均速度V1步/秒匀速行驶,行驶的距离为n(L+D)步直到开过停车线。所需总时间为2(n-1)+n(L+D)/V秒,即2(n-1)+2n。模型的核心在单位时间内,计算所有车辆在通过十字路口浪费的总路程。每辆车损失的路程可能包含的情况A:车从V减速到0损失的行驶路程V2/2a(a为加速度);B:车从0加速到V损失的行驶路程V2/2a;C:车从车队的速度V1加速到A损失的行驶路程(V-V1)2/2a;D:车从A减速到车队的速度V1损失的行驶路程(V-V1)2/2a;E:等待红灯时损失的行驶路程V*T(T为红灯时间)F:跟随车队缓慢开过损失的行驶路程(V-V1)*T(T跟随车队缓慢行驶的时间)路程的损失计算模型计算每辆车的损失路程并累加。我们把汽车分成三种情况:绿灯亮起来前已经在车队中的车:A+B+E+F绿灯亮起来后到达车队尾的车,但车队的最后一辆车还没有开动:C+D+E+F灯亮起来后到达车队尾的车,但车队的最后一辆车已经开动:C+D+F车队全部通过后到达的车没有路程损失。车队行驶通过的模型车队的最后一辆车开过停车线所需得时间。汽车的启动时间跟随车队行驶的时间当绿灯亮起来后,第一辆车马上启动,其它汽车在它前面的那一辆启动一段时间后才启动。经实测,这段时间平均大概是2秒。假设车队有N辆车,那么绿灯亮到这辆车启动的时间为2(n-1)秒,然后它以车队的平均速度V1步/秒匀速行驶,行驶的距离为n(L+D)步直到开过停车线。所需总时间为2(n-1)+n(L+D)/V秒,即2(n-1)+2n。A车道B车道C车道D车道A车道B车道C车道D车道车队全部通过时间的计算模型从绿灯亮到车队全部通过的时间的计算采用分段累计法。先算当前的车队所需的通过时间t1=2(n-1)+n(L+D)/V,计算在这时间内新到的车组成的车队所需的通过时间t2=n1(L+D)/V循环此过程直到新到的车少于等于1部。从南往西,从北往东从西往北,从东往南从南往北,从北往南从东往西,从西往东原来通行时间(秒)25254040优化后的通行时间(秒)66810车流量(辆/分钟)5,84,95,910,10读取车道K的车流量。红灯时间i加1判断红灯时间内是否有车到(红灯时间*车流量)是否判断是否是车队是按车队的方法循环计算每辆车的损失路程S和当前车队通过所需的时间T否按车流的方法循环计算每辆车的损失路程S和当前车队通过所需的时间T总损失路程=总损失路程+S总需要时间=总需要时间+T红灯时间变为T记录总损失路程到数组B(K,i)总需要时间到数组A(K,i)ClsDima(8,200),w(4),b(8,200)velocy=5:lcar=5+3:lbus=10+3:avelocy=15:r=10000000Forp=1To8READvData9,9,5,7,5,6,7,8v(p)=v/60Fori=1To200timered=i:timeall=0:chedui=1:sa=01n=Int(v(p)*timered):Ifn1ThenGoTo5longeur=n*8Whilechedui=1Time=longeur/8+2*(n-1)Forncar=1Ton:s=0s=12*(timered+(n-1)*8/8+2*(n-1))+25sa=sa+sNextncarchedui=0:GoTo4WendForncar=1Ton:s=0:t=0a=Rnd(1)If((ncar-1)/v(p)+v(p)*a)(lastn*2*(n-1))Thent=(lastn*2*(n-1))-(ncar/v(p))Ift=0Thennowlong=(n-ncar/(13/5*v(p)))*8:sa=sa+4Ifnowlong8ThenGoTo5Ift0Thensa=sa+21:nowlong=lastn*8s=12*(t+nowlong/8)-nowlongsa=sa+sNextncarTime=longeur/84timeall=timeall+Time:timered=Time:lastn=n:GoTo15a(p,i)=timeall:b(p,i)=saNextiNextp'FORp=1TO8'FORi=5TO100STEP5'PRINTb(p,i);'NEXTi:PRINT'NEXTpForg1=5To60Step1Forg2=5To60Step1Forg3=5To60Step1Forg4=5To60Step1w(1)=g2+g3+g4w(2)=g4+g1+g3w(3)=g2+g4+g1w(4)=g1+g2+g3lostdistance=0Fork=1To8Ifk=1Or2Thenm=1:a=w(m):runtime=g1:Ifruntimea(k,a)ThenGoTo14Ifk=3Or4Thenm=2:a=w(m):runtime=g2:Ifruntimea(k,a)ThenGoTo13Ifk=5Or6Thenm=3:a=w(m):runtime=g3:Ifruntimea(k,a)ThenGoTo12Ifk=7Or8Thenm=4:a=w(m):runtime=g4:Ifruntimea(k,a)ThenGoTo11lostdistance=lostdistance+b(k,w(m))NextkIfrlostdistanceThenr=lostdistance:r1=g1:r2=g2:r3=g3:r4=g411Nextg412Nextg313Nextg214Nextg1Printr1,r2,r3,r4四、结果与比较。以下是我们在东街口早晨7:15实测的车流量数据:从南往西,从北往东从西往北,从东往南从南往北,从北往南从东往西,从西往东原来通行时间(秒)25254040优化后的通行时间(秒)66810车流量(辆/分钟)5,84,95,910,10车辆平均长度L平均车间距D原来车速V跟随车队行驶的车速V1加速度a5步3步20步/秒8步/秒8步/秒0500010000150002000025000300003500040000原来优化后损失的路程(步)为什么红绿灯时间就不能缩短?短的红绿灯时间更灵活,更有效率。结论——自我反思•我的优点在哪里?•不是最彻底的解决方案设想一个完美的模型:每时每刻收集车流量和每条车道上车队的长短,用这些信息判断当前的交通状况,预测未来可能的通行方案,再依据此寻找到最有效率的方案以决定当前的通行车队和通行时间长短。致谢
本文标题:优化控制交通
链接地址:https://www.777doc.com/doc-225291 .html