SUMO简介
SUMO,全称Simulation of Urban Mobility,是开源、微观、多模态的交通仿真软件。它纯粹是微观的,可以针对每辆车进行单独控制,因此非常适合交通控制模型的开发。SUMO最大的优点是可以利用TraCI((Traffic Control Interface))接口用Python语言实现模型开发
学习SUMO是一个趋势,但是会涉及路网文件、车辆文件等文件的编写,所以最好有些编程基础,在理解的基础上套用就足以实现一些简单的仿真。
SUMO下载与安装
SUMO的下载在它的官网上就可以直接下,并且解压了之后可以直接用。它的安装包里有SUMO-GUI、NETCONVERT、NETDIT、DUAROUTER等应用,常用的是NETDIT.EXT和SUMO-GUI.EXT,其中NETEDIT是用于绘制路网文件和生成需求的,生成路网文件画好之后储存即可生成.net.xml文件,SUMO-GUI是用于仿真模拟的。
需要注意的是:使用TraCI接口的话需要先设置环境变量,可以参考官网介绍。
SUMO仿真实现流程
基本流程:生成道路文件(.net.xml)——生成车辆文件(.rou.xml)——将车辆文件和道路文件写入.sumocfg文件——在SUMO-GUI中打开.sumocfg文件即可开始仿真。
深度强化学习算法介绍
深度强化学习将深度学习的感知能力和强化学习的决策能力相结合,可以直接根据输入的状态数据进行控制,是一种更接近人类思维方式的人工智能方法。
深度学习具有较强的感知能力,但是缺乏一定的决策能力;而强化学习具有决策能力,对感知问题束手无策。因此,将两者结合起来,优势互补,为复杂系统的感知决策问题提供了解决思路。
深度强化学习算法需要设定状态空间、动作空间、奖励函数等。状态空间代表了环境的状态,在SUMO中,可通过遍历路网中的车辆,通过traci.vehicle.getDistance()以及traci.vehicle.getSpeed ()两个函数,经过处理后得到车辆的位置和速度信息。动作空间代表了智能体所能够采取的动作集合。在SUMO中,智能体在计算得到动作后,可通过traci.trafficlight.setPhase()将信号设置为动作对应的信号方案。奖励函数为动作选择提供指导,在执行动作后,需要计算其对应的奖励函数。在通常设计中,奖励函数由4部分构成,分别为各车道在决策点的排队长度之和rqueue、相邻决策点之间的累计车辆等待时间之差rwaitTime、各车道在该决策点的刹车数量之和rhalting、代表相位是否切换的变量rphase。