1. 引言
近年来,越来越多的城市出现大规模的交通拥堵状况,严重影响着人们的日常出行。缓解交通拥堵的措施一般可分为三种:减少车辆数量(限行措施)、增加基础设施能力(拓宽道路、增加路网密度、优化道路结构等)和增加路口的吞吐量。研究表明,增加路口的吞吐量是最为经济的方式之一,而路口的吞吐量瓶颈与路口的管理存在很大关系。自20世纪初电力交通信号灯开始使用至今,大多数交通灯仍采用固定的时间周期模式,而随着城市的发展,车辆不断增多,而且路况变得愈加复杂,这种固定时间周期的交通信号灯已经不能很好地适用拥挤的路况,这使得智能交通灯成为当前一大研究热点。
所谓智能交通灯,就是根据历史或当前城市交通状态,动态设定路口处交通信号灯相位规则。从而使得路口处车辆可以在尽可能短的时间内有序通过,消除空等,减少平均等待时间。
基于IEEE802.11p的车联网技术的不断成熟也促进了智能交通灯的发展,作为智慧城市不可或缺的一部分,一些国家已经开始推广车联网,车联网的普及会使交通信号灯系统发生巨大改变。车联网中车辆可以通过V2I和V2V的形式进行通信,以此来共享车辆实时信息。
虚拟交通灯(Virtual Traffic Lights, VTL)的提出开启了智能交通灯的另一个方向,即在车联网中采用虚拟交通灯来解决交通拥堵问题,该方法不需要任何街边基础设施,而是让车辆间进行直接通信,协商出路权分配规则,并通过车载显示装置来告知司机交通灯信号,可以极大节省修建交通信号灯的费用,并且使得交通信号灯无处不在。
本文基于SUMO (Simulation of Urban Mobility)搭建了虚拟交通灯平台,设计了虚拟交通灯平台的车辆状态、消息格式以及核心控制算法等。通过与传统的交通灯进行对比,证明虚拟交通灯相较于传统物理交通灯性能有很大的提升,为今后的深入研究提供平台和框架。
2. 国内外现状
文献 [1] 首次提出这个概念,虚拟交通灯包括三个部分:首先,领导者选举,通过算法选举出领导车辆来代替实体交通灯;其次,交通控制,领导车辆分配路权规则并发送给车辆。最后是领导权转移,领导车辆离开路口前进行领导权转移,由下一辆获得领导权的车辆继续控制路口。可是文中未给出详细的算法过程。文献 [2] 则给出了详细交互过程并改进了 [1] 中的车辆消息传播方式。文献 [3] 提出为绿灯通行车辆设定阀值来控制通行时间,文献 [4] 在 [3] 的基础上,提出独立路口虚拟交通灯相位算法,通过各车道车辆的等待时间,排队长度以及排队数量这三个参数算出优先级,从而减少等待时间。文献 [5] 中提出了能让通行方向不冲突的车辆同时通行的算法,从而增加吞吐量,减少平均行驶时间。除了改进交通控制逻辑的方法,还有的研究分别专注于虚拟交通灯与车载用户界面结合后对主驾驶安全性的影响 [6];领导车辆算法的改进,如选举问题中一致性达成问题 [7] 和减少交互通信量问题 [8]。
本文基于SUMO搭建了一个虚拟交通灯平台,设计了相关的车辆状态、车辆间通信的消息格式和消息类型,并实现了简单的虚拟交通灯控制算法,包括领导车辆的选举,绿灯通行权的授予与回收,领导车辆的传递。对比实验表明虚拟交通灯比传统物理交通灯性能有很大的提升。
3. 虚拟交通灯的设计
本部分主要介绍虚拟交通灯的总体设计。不同状态下车辆的行为应该有所不同,因此,在3.1给出了车辆的三种状态及其描述。其次,为了实现车辆间的信息交互,在3.2和3.3中分别给出了车辆间通信的消息格式和消息类型。接下来的3.4、3.5和3.6则介绍了控制算法的核心内容,分别为领导车辆的选举、绿灯通行权的授予与回收、领导车辆的传递。
3.1. 车辆状态描述
交通灯的作用是实现路口资源的分配,根据路口资源的使用情况为车辆设置了三种状态,分别为FREE状态、DANGEROUS状态和MOVING状态。
FREE状态:该状态表示当前没有其他道路上的车辆与该车辆抢占路口资源。处于FREE状态的车辆可以不加任何控制地通过当前所处路口。
DANGEROUS状态:该状态表示当前有其他道路上的车辆与该车辆抢占路口资源。处于DANGEROUS状态的车辆需要获得路口的通行权才能通过当前路口,如果不对该状态车辆加以控制,会有发生碰撞的危险。
MOVING状态:该状态表示当前车辆已经获得了路口资源的使用权,处于该状态下的车辆可以通过当前路口。
车辆状态转换图如图1所示:

Figure 1. Diagram of the vehicle status transition
图1. 车辆状态转换图
①:当存在通行车辆的道路数大于1时,车辆从FREE状态转化成DANGEROUS状态。
②:当其他道路车辆离开路口时,剩下一条道路上的车辆将从DANGEROUS状态转化成FREE状态。
③:当处于DANGEROUS状态的车辆获得leader车辆授予的绿灯通行权时,将会从DANGEROUS状态转化成MOVING状态。
④:当处于MOVING状态的车辆被leader收回绿灯通行权时,将会从MOVING状态转化成DANGEROUS状态。
3.2. 消息格式
车辆间的通信按照固定的消息格式,本文基于简化原则,为车辆设置的消息格式如表1所示:
message (source, destination, message_type, intersection, content)
3.3. 消息类型
车辆间通信所使用的消息类型如表2所示。
3.4. 领导车辆的选举
leader车辆选举算法是虚拟交通灯方案的主要算法,虚拟交通灯方案需要选举出leader车辆来负责每个方向车辆绿灯通行权的授予与回收。如图2所示,leader车辆的选举过程如下:
① 所有车辆经过固定时间间隔都会广播车辆状态消息(VEHICLE_STATUS),将自身信息(车辆ID、所处位置等)广播出去。
② 初始时,A车辆检查到自身的currentLeader属性值为None,因此向其他车辆广播leader询问消息(LEADER_INQUIRY),以获取当前路口的leader车辆。
③ 其他车辆收到A车发过来的leader询问消息后,检查自身currentLeader属性,并通过leader回复消息(LEADER_ANSWER)回复车辆A。由于初始状态时还未存在leader车辆,因此leader回复消息中的结果为None。
④ A车辆收到其他车辆回复的leader回复消息,判断当前路口还未存在leader车辆,于是广播leader选举消息(LEADER_REQUEST),申请在当前路口进行一次leader选举。
⑤ 其他车辆收到leader选举消息后,根据车辆的位置、类型等信息(本算法以车辆到路口的距离作为指标,距离路口越远的车辆,优先级越大,越容易成为leader),分布式地计算出当前路口的leader (图2中所示例子选出的leader车辆为A)。
⑥ 当选为leader的车辆发出leader声明消息(LEADER_CLAIM),将leader车辆身份广播出去
⑦ 其他车辆收到leader声明消息后,将自己currentleader值更新。
3.5. 绿灯通行权的授予与回收
若当前路口已经存在leader车辆,其他车辆就需要和leader车辆协商通行。具体而言,就是其他车辆向leader车辆申请绿灯通行权,而leader车辆负责绿灯通行权的授予与回收。如图3所示(图3中所示例子leader车辆为A),绿灯通行权的授予与回收过程如下:

Figure 3. Grant and revoke of the green right of way
图3. 绿灯通行权的授予与回收
① B、C车辆通过绿灯请求消息(GREEN_REQUEST)向leader车辆发出绿灯通行权请求。
② leader车辆收到B、C车辆发来的绿灯请求消息,将其加入绿灯申请队列,并且按照一定的优先级对其进行排序。
③ leader车辆分别对绿灯申请队列中的车辆有序发送绿灯授予消息(GREEN_GRANT),发送绿灯授予消息后,leader车辆通过计时器开启倒计时(本文设置为20 s)。
④ C车辆收到绿灯授予消息后获得绿灯通行权,即C车辆所处车道的车辆均可通行。
⑤ 若在倒计时结束前,C车辆所处车道的车辆已全部通过该路口,则leader车辆将为绿灯申请队列中的下一车辆授予绿灯通行权(图3示例子为车辆B)。若经过20s后C车辆所属车道上还有车辆未通过路口,leader车辆将对其发送绿灯回收消息(GREEN_REVOKE),并为绿灯申请队列中的下一车辆授予绿灯通行权。
3.6. 领导车辆的传递
当leader车辆将要离开当前路口时,需要将领导权传递给其他车辆,之后方可通行。图4所示例子中的leader车辆的传递过程如下:
① 首先,leader车辆(图4例子为A)通过一定算法计算出候选leader车辆(图4例子为C)。本文根据车辆到路口的距离来计算,距离越远,优先级越高。
② leader车辆向候选leader车辆发送leader传递消息(LEADER_DELIVER)。
③ 车辆C收到leader传递消息后,将currentleader属性值更新为自己,并且广播leader改变消息(LEADER_CHANGE)。
④ 其他车辆收到leader改变消息后,将currentleader属性值更新为车辆C。
4. 虚拟交通灯的实现
4.1. SUMO软件简介
SUMO (Simulation of Urban Mobility)是一款开源、精微的多模式交通仿真软件。该工具无需考虑所有必要的事项即可得到一个完整的交通仿真效果,例如实现或设置用于处理道路网络、需求和交通控制的方法。通过使用通用的体系结构和模型库,使已实现的算法更具有可比性。它能够应对由各种车辆组成的给定交通需求,如何在给定的道路网络中运行进行仿真。该仿真平台可以解决大量的交通管理问题。同时,对于路网中的每辆车,SUMO都有明确的建模,拥有自己的路线,并能通过网络进行独立地移动。
在Python中使用SUMO的过程如下:
1) 设置环境变量,设置环境变量SUMO_HOME,值为SUMO的安装路径;
2) 在Python中导入traci模块;
3) 定义调用的SUMO的命令参数列表sumoCmd:
① sumo-gui可执行路径,一般为SUMO_HOME环境变量拼接“tools”;
② “-c”:说明说明下个参数为配置文件;
③ sumocfg:文件路径,配置了仿真的路网文件和车辆文件;
④ “--tripinfo-output”:说明下个参数为导出文件路径;
⑤ 导出xml数据文件路径,仿真过程所有车辆数据的统计数据;
4) 调用traci.start方法连接,参数为命令参数列表sumoCmd;
5) 编写循环执行traci.simulationStep语句。
4.2. 主要类的设计
本文采用Python作为搭建虚拟交通灯平台的编程语言。下面表3给出主要的类的设计,包括车辆(Vehicle)类和车辆控制器类(VehicleController),这些类的设计具有较好可扩展性,可作为今后继续研究的平台使用。例如,本文中按照发送绿灯请求车辆到路口的距离来设置优先级,如需更换其他排序规则(如按照紧急度排序),只需更改车辆控制器类的sortedVehicles方法即可,其他部分可以保持不变。
5. 仿真实验及数据
5.1. 实验数据设置
5.1.1. 交叉路口模型
为了简化实验,本文采用了图5所示的双路口道路模型,但平台也适用于多路口道路模型。
5.1.2. 车流量设置
图5所示的双路口模型共有6个方向的出口和6个方向的入口,故共有
条不同的行驶路线。单条行驶路线车流量定义为每小时每条行驶路线的车辆数。本实验设置单条行驶路线车流量最小值为10辆每小时,最大值为200辆每小时,以10为递增量构建20组总车流量数据,设每组数据中每条行驶线路的车流量相同,则每组总车流量计算为15条*单条行驶路线车流量,如第1组总车流量为15*10辆每小时,第2组总车流量数据为15*20辆每小时,第20组总车流量数据为15*200辆每小时。
5.2. 实验结果及分析
实验中传统物理交通灯采用固定时长控制,绿灯时间固定为33秒。实验采用20组总车流量数据,对比两种交通灯下车辆通过图5所示路口的总通行时间,总通行时间越少,则证明该交通灯性能越好。

Figure 6. Comparison of experimental results
图6. 实验结果对比
由图6可知,当总车流量小于15*130 (辆/每小时)时,两种交通灯差距比较小,当总车流量大于15*130 (辆/每小时)时,两种交通灯在总通行时间上差距越来越大,这证明随着总车流量的增多,虚拟交通灯比传统物理交通灯有更优秀的性能,对路口资源利用率更高。
6. 总结及展望
针对传统物理交通灯时间周期模式固定以及每年需要高额维护费用等弊端,本文设计并实现了基于SUMO的虚拟交通灯平台。通行车辆之间通过V2V方式进行信息交互、选择领导车辆,并由领导车辆承担传统交通灯的工作,执行绿灯通行权的授予和回收,从而实现绿灯通行权的动态调整。通过在平台上实现传统的交通灯与虚拟交通灯进行比较实验,证明虚拟交通灯相较于传统物理交通灯性能有很大的提升。同时,本文提出的基于SUMO的虚拟交通灯平台具有较好的可扩展性,可以适用于其他多路口模型,后续可以将本平台应用于其他虚拟交通灯实验中。
基金项目
广东省省级大学生创新创业训练项目(编号S202011845159,S202011845160)。