资源预览内容
第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
第9页 / 共22页
第10页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
优化控制交通 十字路口的交通模型背景十字路口的红绿灯控制的缺陷白天内交通灯的时间长短不变主干道单位时间的车流量一天当中变化很大我进攻的方向在哪里? 初步试验性实践:观察观察非常复杂的系统非常复杂的系统行人、自行车的影响很小行人、自行车的影响很小摩托车会从汽车旁的狭小空间内通过摩托车会从汽车旁的狭小空间内通过汽车的运行更有规律汽车的运行更有规律记录记录分析分析用较简单的函数行吗用较简单的函数行吗有现成的数学理论吗有现成的数学理论吗计算机模拟计算机模拟 实现实践化的艰辛与快乐程序的结构:理想化的模拟程序设计遇到的难题l核心优化:判别优与劣的标准l各部分的确定总的方式l l把一天分为几个车流量变化不大的时段,在每个时段内采用固定的红绿灯时间固定的红绿灯时间l l不同的时段的红绿灯时间不同。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。模型的核心n n在单位时间内,计算所有车辆在通过十字路口浪费的总路程。每辆车损失的路程可能包含的情况oA:车从V减速到0损失的行驶路程nV2/2a(a为加速度);oB:车从0加速到V损失的行驶路程nV2/2a;oC:车从车队的速度V1加速到A损失的行驶路程n(V-V1) 2/2a;oD:车从A减速到车队的速度V1损失的行驶路程n(V-V1) 2/2a;oE:等待红灯时损失的行驶路程nV*T(T为红灯时间)oF:跟随车队缓慢开过损失的行驶路程n(V-V1)*T(T跟随车队缓慢行驶的时间) 路程的损失计算模型计算每辆车的损失路程并累加。我们把汽车分成三种情况:n绿灯亮起来前已经在车队中的车:A+B+E+Fn绿灯亮起来后到达车队尾的车,但车队的最后一辆车还没有开动:C+D+E+Fn灯亮起来后到达车队尾的车,但车队的最后一辆车已经开动:C+D+Fn车队全部通过后到达的车没有路程损失。车队行驶通过的模型车队的最后一辆车开过停车线所需得时间。l汽车的启动时间l跟随车队行驶的时间 当绿灯亮起来后,第一辆车马上启动,其它汽车在它前面的那一辆启动一段时间后才启动。经实测,这段时间平均大概是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部。从南往西,从南往西,从北往从北往东东从西往北,从西往北,从从东东往南往南从南往北,从南往北,从北往南从北往南从从东东往西,往西,从西往从西往东东原来通行原来通行时间时间(秒)(秒)2525252540404040优优化后的化后的通行通行时间时间(秒)(秒)6 66 68 81010车车流量流量(辆辆/ /分分钟钟)5 5,8 84 4,9 95 5,9 91010,1010读取车道K的车流量。红灯时间 i 加1判断红灯时间内是否有车到(红灯时间*车流量)是否判断是否是车队 是按车队的方法循环计算每辆车的损失路程S和当前车队通过所需的时间T 否按车流的方法循环计算每辆车的损失路程S和当前车队通过所需的时间T 总损失路程=总损失路程+S 总需要时间=总需要时间+T红灯时间变为T 记录总损失路程到数组B(K,i)总需要时间到数组A(K,i) n nClsClsn nDim a(8, 200), w(4), b(8, 200)Dim a(8, 200), w(4), b(8, 200)n nvelocy = 5: lcar = 5 + 3: lbus = 10 + 3: avelocy = 15:r = 10000000velocy = 5: lcar = 5 + 3: lbus = 10 + 3: avelocy = 15:r = 10000000n nFor p = 1 To 8For p = 1 To 8n n READ v READ vn n Data 9, 9, 5, 7, 5, 6, 7, 8 Data 9, 9, 5, 7, 5, 6, 7, 8n n v(p) = v / 60 v(p) = v / 60n n For i = 1 To 200 For i = 1 To 200n n timered = i: timeall = 0: chedui = 1: sa = 0 timered = i: timeall = 0: chedui = 1: sa = 0n n1 n = Int(v(p) * timered): If n 1 Then GoTo 51 n = Int(v(p) * timered): If n 1 Then GoTo 5n n longeur = n * 8 longeur = n * 8n n While chedui = 1 While chedui = 1n n Time = longeur / 8 + 2 * (n - 1) Time = longeur / 8 + 2 * (n - 1)n n For ncar = 1 To n: s = 0 For ncar = 1 To n: s = 0n n s = 12 * (timered + (n - 1) * 8 / 8 + 2 * (n - 1) + 25 s = 12 * (timered + (n - 1) * 8 / 8 + 2 * (n - 1) + 25n n sa = sa + s sa = sa + sn n Next ncar Next ncarn n chedui = 0: GoTo 4 chedui = 0: GoTo 4n n Wend Wendn n For ncar = 1 To n: s = 0: t = 0 For ncar = 1 To n: s = 0: t = 0n n a = Rnd(1) a = Rnd(1)n n If (ncar - 1) / v(p) + v(p) * a) (lastn * 2 * (n - 1) Then t = (lastn * 2 * (n - 1) - If (ncar - 1) / v(p) + v(p) * a) (lastn * 2 * (n - 1) Then t = (lastn * 2 * (n - 1) - (ncar / v(p)(ncar / v(p)n n If t = 0 Then nowlong = (n - ncar / (13 / 5 * v(p) * 8: sa = sa + 4 If t = 0 Then nowlong = (n - ncar / (13 / 5 * v(p) * 8: sa = sa + 4n n If nowlong 8 Then GoTo 5 If nowlong 8 Then GoTo 5n n If t 0 Then sa = sa + 21: nowlong = lastn * 8 If t 0 Then sa = sa + 21: nowlong = lastn * 8n n s = 12 * (t + nowlong / 8) - nowlong s = 12 * (t + nowlong / 8) - nowlongn n sa = sa + s sa = sa + sn n Next ncar Next ncarn n Time = longeur / 8 Time = longeur / 8n n4 timeall = timeall + Time: timered = Time: lastn = n: GoTo 14 timeall = timeall + Time: timered = Time: lastn = n: GoTo 1n n5 a(p, i) = timeall: b(p, i) = sa5 a(p, i) = timeall: b(p, i) = san n Next i Next in nNext pNext pn nFOR p = 1 TO 8FOR p = 1 TO 8n nFOR i = 5 TO 100 STEP 5FOR i = 5 TO 100 STEP 5n nPRINT b(p, i);PRINT b(p, i);n nNEXT i: PRINTNEXT i: PRINTn nNEXT pNEXT pn nFor g1 = 5 To 60 Step 1For g1 = 5 To 60 Step 1n n For g2 = 5 To 60 Step 1 For g2 = 5 To 60 Step 1n n For g3 = 5 To 60 Step 1 For g3 = 5 To 60 Step 1n n For g4 = 5 To 60 Step 1 For g4 = 5 To 60 Step 1n n w(1) = g2 + g3 + g4 w(1) = g2 + g3 + g4n n w(2) = g4 + g1 + g3 w(2) = g4 + g1 + g3n n w(3) = g2 + g4 + g1 w(3) = g2 + g4 + g1n n w(4) = g1 + g2 + g3 w(4) = g1 + g2 + g3n n lostdistance = 0 lostdistance = 0n n For k = 1 To 8 For k = 1 To 8n n If k = 1 Or 2 Then m = 1: a = w(m): runtime = g1: If runtime a(k, a) Then GoTo If k = 1 Or 2 Then m = 1: a = w(m): runtime = g1: If runtime a(k, a) Then GoTo 1414n n If k = 3 Or 4 Then m = 2: a = w(m): runtime = g2: If runtime a(k, a) Then GoTo If k = 3 Or 4 Then m = 2: a = w(m): runtime = g2: If runtime a(k, a) Then GoTo 1313n n If k = 5 Or 6 Then m = 3: a = w(m): runtime = g3: If runtime a(k, a) Then GoTo If k = 5 Or 6 Then m = 3: a = w(m): runtime = g3: If runtime a(k, a) Then GoTo 1212n n If k = 7 Or 8 Then m = 4: a = w(m): runtime = g4: If runtime a(k, a) Then GoTo If k = 7 Or 8 Then m = 4: a = w(m): runtime = g4: If runtime lostdistance Then r = lostdistance: r1 = g1: r2 = g2: r3 = g3: r4 = g4 If r lostdistance Then r = lostdistance: r1 = g1: r2 = g2: r3 = g3: r4 = g4n n11 Next g411 Next g4n n12 Next g312 Next g3n n13 Next g213 Next g2n n14 Next g114 Next g1n nPrint r1, r2, r3, r4Print r1, r2, r3, r4四、结果与比较。以下是我们在东街口早晨7:15实测的车流量数据:从南往西,从北往东 从西往北,从东往南 从南往北,从北往南 从东往西,从西往东 原来通行时间(秒) 25254040优化后的通行时间(秒) 66810车流量(辆/分钟) 5,84,95,910,10车辆平均长度L 平均车间距D 原来车速V 跟随车队行驶的车速V1 加速度a 5步 3步 20步/秒 8步/秒 8步/秒 为什么红绿灯时间就不能缩短?短的红绿灯时间更灵活,更有效率。结论结论自我反思自我反思我的优点在哪里?我的优点在哪里?不是最彻底的解决方案不是最彻底的解决方案设想一个完美的模型:每时每刻收集车流量和每设想一个完美的模型:每时每刻收集车流量和每条车道上车队的长短,用这些信息判断当前的交条车道上车队的长短,用这些信息判断当前的交通状况,预测未来可能的通行方案,再依据此寻通状况,预测未来可能的通行方案,再依据此寻找到最有效率的方案以决定当前的通行车队和通找到最有效率的方案以决定当前的通行车队和通行时间长短。行时间长短。 致谢致谢
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号