CN113643553B - 基于联邦强化学习的多路口智能交通信号灯控制方法及系统 - Google Patents
基于联邦强化学习的多路口智能交通信号灯控制方法及系统 Download PDFInfo
- Publication number
- CN113643553B CN113643553B CN202110779122.5A CN202110779122A CN113643553B CN 113643553 B CN113643553 B CN 113643553B CN 202110779122 A CN202110779122 A CN 202110779122A CN 113643553 B CN113643553 B CN 113643553B
- Authority
- CN
- China
- Prior art keywords
- intersection
- reinforcement learning
- signal lamp
- agent
- traffic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G08—SIGNALLING
- G08G—TRAFFIC CONTROL SYSTEMS
- G08G1/00—Traffic control systems for road vehicles
- G08G1/07—Controlling traffic signals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/27—Design optimisation, verification or simulation using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G08—SIGNALLING
- G08G—TRAFFIC CONTROL SYSTEMS
- G08G1/00—Traffic control systems for road vehicles
- G08G1/01—Detecting movement of traffic to be counted or controlled
- G08G1/0104—Measuring and analyzing of parameters relative to traffic conditions
- G08G1/0125—Traffic data processing
-
- G—PHYSICS
- G08—SIGNALLING
- G08G—TRAFFIC CONTROL SYSTEMS
- G08G1/00—Traffic control systems for road vehicles
- G08G1/07—Controlling traffic signals
- G08G1/08—Controlling traffic signals according to detected number or speed of vehicles
-
- G—PHYSICS
- G08—SIGNALLING
- G08G—TRAFFIC CONTROL SYSTEMS
- G08G1/00—Traffic control systems for road vehicles
- G08G1/09—Arrangements for giving variable traffic instructions
- G08G1/095—Traffic lights
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- Molecular Biology (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Data Mining & Analysis (AREA)
- Chemical & Material Sciences (AREA)
- Analytical Chemistry (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Computer Hardware Design (AREA)
- Geometry (AREA)
- Traffic Control Systems (AREA)
Abstract
本发明提出了一种基于联邦强化学习的多路口智能交通信号灯控制方法,主要包含以下几方面的内容:步骤1:通过对真实路口的精准建模,使用交通模拟软件Cityflow对城市交通和交通流量进行模拟。步骤2:每个强化学习智能体使用Advantage Actor‑Critic(A2C)强化学习算法,根据路口车流情况对交通信号灯实时控制,每个交叉路口的强化学习智能体由云服务器协调训练;步骤3:提出一种新的基于云‑边协同的联邦强化学习框架;步骤4:引入类似联邦学习的梯度共享与参数传递过程,在强化学习智能体之间实现知识共享。本发明还提出了一种基于联邦强化学习的多路口智能交通信号灯控制系统。本发明法不仅在车辆平均行驶时间方面取得了较好的控制效果,而且能快速收敛到全局最优解。
Description
技术领域
本发明属于计算机技术领域,涉及一种基于联邦强化学习的多路口智能交通信号灯控制方法及系统。
背景技术
随着人工智能和物联网技术的繁荣,强化学习在智慧交通中变得越来越流行,尤其是自治交通灯系统的控制模型设计。为了实现交通网络中基于强化学习的自主信号控制,通常每个交叉路口都配备有强化学习智能体,该强化学习智能体基于物联网设备(例如交通摄像头、路边传感器)捕获的实时交通数据,生成向交叉口所有交通灯发送信号的动作。对于每个交通路口,应用在所有相关交通灯上的一组动作形成一个控制相位,向车辆发出信号,引导对应方向道路上的车辆通过路口。基于强化学习智能体的智能优化控制,可以有效降低路网中车辆的平均行驶时间。同时,所有收集到的交通数据及历史动作被用于强化学习智能体的训练学习,以逐步构建更精确的控制模型。
虽然基于强化学习的方法在获得准确的交通控制策略方面很有前途,但其使用受到可扩展性问题的极大限制。这是因为用于交通控制的强化学习智能体其训练的复杂性依赖于两个关键因素:1.用于交通网络的环境模拟建模,和2.用于每个状态的可能动作的数量。当一个交通网络中涉及到更多的路口时,由于路口动作的组合,强化学习智能体在训练时的探索空间会呈现指数级增长。因此,现有的基于强化学习的方法大多侧重于单个交叉口的信号控制优化,而不是应用在整个交通网络上。这将不可避免地降低控制质量,因为由各个路口的强化学习智能体做出的信号动作是相关的。如果不考虑强化学习智能体之间的合作,强化学习智能体很容易陷入局部最优解,而不是找到全局最优解,从而导致控制效果不佳。更糟糕的是,由于缺乏强化学习智能体之间协作,在许多实际场景中,基于强化学习的方法收敛非常慢,甚至无法收敛。因此,如何使各个路口上的强化学习智能体之间的协作快速学习形成整个交通网络的最优控制方案,成为基于强化学习的交通信号控制设计的一个主要挑战。
发明内容
为了应对上述挑战,本发明的目的是提出一种新的基于联邦强化学习的多路口智能交通信号灯控制方法,该方法可以快速导出多路口交通场景下的最优交通信号控制策略,本发明涉及联邦学习技术和深度强化学习算法,还有云-边架构设计,尤其涉及联邦学习与强化学习的结合。在多个路口的强化学习智能体之间,基于联邦学习,本发明提出了一种新的云-边协作框架,并引入了梯度共享与参数传递过程,实现了全局的知识共享,最终实现一个多路口交通环境下的智能信号灯控制系统,即所有车辆在道路网中的平均行驶时间最短。
本发明包括以下步骤:
步骤1:模拟城市道路与交通流的方法:本发明基于交通学中的最大压力理论,提出定向道路与其压力的概念,对路网中的真实路口情况和信号灯控制相位进行精确建模,生成用于仿真实验的真实道路场景数据,更好地表达路口的交通情况。采用开源交通模拟软件“Cityflow”使用公开数据集对城市交通网络和交通流量进行模拟,并通过Cityflow的可视化功能,可以观察到道路的情况和车流量的运动情况。
Cityflow是一个针对大规模城市交通场景的多智能体强化学习环境。它具有以下特点:1.作为一款微观交通模拟器,可以模拟每辆车的行为,通过接口函数可以获取车辆的详细信息。2.支持对道路网络和交通流的灵活定义,允许模拟由单个车辆组成的给定交通需求在给定的道路网络中移动。每辆车都是明确建模的,有自己的路线,并在网络独立移动。3.提供了友好的python语言支持以便支持强化学习算法,因为对python的良好支持和丰富的接口,本发明可以获得实时的道路情况和车流量运动情况。4.高效快速,得益于精心设计的多线程数据结构和仿真算法,能够进行城市级别的交通模拟,并且在性能上优于传统交通模拟软件,比传统的微观交通模拟器更加简洁快速。
对路网中的真实路口情况和信号灯控制相位进行精确建模具体包括:一个路口包含了所有进入车道的有限集合Larrive以及离开车道的有限集合Ldepart。路口的一条道路由一条进入车道和一条离开车道组成,表示为一个二元组(la,ld),其中la∈Larrive而ld∈Ldepart。需要注意的是对每一条直行、左转、右转的进入车道,都有一条离开车道与其对应。定向道路指的是一条进入车道和其对应的离开车道的二元组。同时默认所有右转的车道在任何时刻均可以通行,不受路口信号灯的控制。因此一个路口总共有8组信号灯相位。智能体的动作即是在这8个信号灯相位种选择最合适的相位。
在模拟过程中,通过Cityflow模拟器提供的数据访问接口,获得当前路口的所有信息,路口信息包括各条道路上的车辆数量、分别在进入路口道路与离开路口的道路上的等待车辆数量以及车辆行驶速度等。
采用源自交通领域中的最大压力控制理论,使用压力来反映路口与道路的拥挤程度。因此需要对从模拟器环境中获得路口信息进行加工,计算出各个定向道路上的压力,一条定向道路(la,ld)的压力定义为V(la)-V(ld),其中V(la)与V(ld)分别表示在进入车道la与离开车道ld上的车辆数。除此之外,再加上路口当前的信号灯相位,作为该强化学习智能体对当前路口情况的观测。智能体根据获得的当前路口情况,选择出最适合的信号灯相位以最大化路口流量。
在将智能体选择的信号灯相位返回环境后,调用模拟器引擎,将模拟过程推进一步即进行下1s的模拟,当信号灯相位时间未结束则继续执行模拟。
若信号灯相位时间结束则计算当前路口的压力的相反数,作为强化学习智能体控制信号灯相位后从环境中获得的奖励,其中路口的压力计算公式为即当前路口中所有进入车道上的车辆数与离开道路上的车辆数之差的绝对值。随后开始新一轮控制过程(获取状态—选择动作—推进模拟)。
步骤2:对交通信号灯的强化学习控制方法:本发明在路网中的每个交叉路口上均部署了一个强化学习智能体,在每个强化学习智能体上使用Advantage Actor-Critic(A2C)强化学习算法,用于控制当前路口的信号灯相位,每个交叉路口的强化学习智能体由云服务器协调训练,实现了根据路口车流情况对交通信号灯的实时协调控制。根据交通运输学中的最大压力控制理论,采用基于压力理论的方式设计智能体,可以让智能体以最小化路口压力为目标进行学习。而对于相同的交通状况,如果路口的压力能被控制在较低的水准,将会最大化路口的吞吐量,因此可以最小化所有车辆的平均行驶时间。
具体包括:通过从交通路口部署的物联网设备获得的道路情况,强化学习智能体得到自己对于当前路口环境的观测,根据当前的观测,强化学习智能体选择最佳的路口信号灯相位,控制交通流运动,同时将历史数据存储。预先设置好每个智能体的训练间隔时间,每隔一段时间,强化学习智能体利用历史数据进行训练,更新自身的神经网络参数。在训练过程中,强化学习智能体与道路网中的中央云服务器进行交互以获得其他强化学习智能体共享的知识,使全局信息得到有效利用。
本发明在设计强化学习智能体时,采用先进的A2C强化学习方法,每个强化学习智能体包含两个神经网络,分别为Actor网络与Critic网络。Actor网络根据强化学习智能体对环境的观测选择下一步执行的动作,而Critic网络则对Actor网络选择的动作进行评价。该方法综合了强化学习中的基于值与基于策略的方法,同时A2C算法引入了优势函数的计算,使Critic网络能够对Actor网络选择的动作进行更加准确的评估。
构建Actor网络和Critic网络:
均由两层隐藏层组成,神经元数量分别为64与32个,输入均为对路口情况的观测,而输出则分别为对信号灯相位索引的选择和对当前选择的信号灯相位的评分。它们的优化器均为Adam优化器,而学习率则分别为0.0001与0.0002。
强化学习智能体对路口信号灯的控制:
路网中的各个路口强化学习智能体根据自身对当前路口环境的观测,由Actor网络选择下一步的动作即选择出各自的信号灯相位索引,再将其转换为对应的信号灯相位后应用于路口的信号灯上。当信号的相位持续时间没有结束时,模拟器将不断执行,同时累计强化学习智能体从环境中所获得的奖励。当信号灯相位结束时,模拟环境返回奖励至强化学习智能体,智能体将奖励与自己对环境的观测和选择的信号灯相位作为历史轨迹数据存储。随后智能体开始新一次的信号灯控制过程。
强化学习智能体的本地模型更新:
当到达预先设定的一定时间,即智能体已经存储了一定的历史数据后,智能体开始本地的模型更新过程。从存储的历史数据中取出一批次的样本返回到智能体中的Actor模型与Critic模型中,智能体计算出自己的本地梯度用于本地更新同时准备将梯度信息上传至云端用于梯度聚合。其中Actor模型的梯度计算为Critic模型的损失函数为
步骤3:各路口强化学习智能体之间知识共享的方法:
本发明提出了一种新的基于云-边协同的联邦强化学习框架,结合实际场景构建一个新的云-边协同架构。将道路网络中的每个路口及部署于路口的摄像头、信号灯、控制器与传感器等物联网设备以及部署的强化学习智能体视为一个边缘节点,在一个路网中存在多个边缘节点与一个云服务器,在强化学习智能体的学习过程中,由一个中央云服务器负责协调控制各个路口即边缘节点上的强化学习智能体训练学习过程,实现知识的共享。该框架可以有效地协调所有强化学习智能体的训练过程,并形成一个优化的控制模型,用于多路口交通场景的最优化控制。
步骤4:为了提高训练过程的收敛速度和A2C强化学习智能体的控制质量,本发明基于联邦学习的思想,引入了一种类似联邦学习的梯度聚合和参数传递机制来实现强化学习智能体之间的知识共享。本发明引入梯度聚合与参数传递的过程,本发明的目标是在各个路口的强化学习智能体之间共享知识,在强化学习智能体之间实现知识共享,以快速学习形成解决方案,实现最小化路网中车辆平均行驶时间的目标。
梯度共享:在训练时,每个强化学习智能体在本地训练后,计算出自己Actor网络和Critic网络的梯度,边缘节点将各个强化学习智能体中的神经网络学习到的梯度信息上传至云端,云服务器对其进行梯度平均后再将聚合后将其下发至各个强化学习智能体,边缘节点再使用聚合后的梯度信息进行学习,使多个路口的强化学习智能体之间可以共享知识,这是因为梯度信息即是神经网络学习到的知识。
参数传递:在预先设置好的固定时间间隔后,云服务器收集各个路口的模型参数与累积奖励上传,云服务器根据累积奖励的情况从中选择表现最好的模型参数并将其下发给其他路口的强化学习智能体。对于表现较差,不如最优智能体的路口可以直接获得当前性能最优的模型,将这个优于之前模型的初始参数作为起点开始下一轮学习,有效改善学习较慢设备的表现。使每个强化学习智能体除了获得当前路口的信息,也可以通过知识的共享得到其他路口的信息,使道路网络的全局信息得到有效利用。参数传递过程在一段时间后选择各路口中的最优模型参数共享给其他路口,能够防止学习效果较差的强化学习智能体“掉队”,使各个路口的边缘设备同步学习,最终收敛至一个统一的最优模型。本发明是首次将强化学习和联邦学习的优势相结合来优化多路口交通场景的信号灯控制。
本发明还提出了一种系统,包括:存储器和处理器;所述存储器上存储有计算机程序,当所述计算机程序被所述处理器执行时,实现上述方法。
本发明还提出了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现上述方法。
本发明的有益效果在于:
本发明提出了一种新颖有效的基于云的联邦强化学习框架。通过对真实路口的精准建模,使用交通模拟软件Cityflow对城市交通和交通流量进行模拟。每个强化学习智能体使用Advantage Actor-Critic(A2C)强化学习算法,根据路口车流情况对交通信号灯实时控制,每个交叉路口的强化学习智能体由云服务器协调训练;提出一种新的基于云-边协同的联邦强化学习框架;引入类似联邦学习的梯度共享与参数传递过程,在强化学习智能体之间实现知识共享。其中路网中的每个路口作为一个边缘节点,部署了一个A2C算法智能体用于控制交通信号灯。而云服务器则负责收集与下发各个智能体的梯度和参数,完成梯度聚合与参数传递过程,起到协调路网中所有智能体的训练过程的作用。该框架可以实现路网中多个智能体的共同学习,并形成一个集中控制模型,用于多路口交通场景的优化控制。
本发明提出了类联邦学习的梯度聚合与参数传递机制,用于提高训练过程的收敛速度和各个路口的A2C智能体的控制效果。梯度信息代表着智能体在本地学习到的知识,梯度聚合将各个路口智能体所学的知识聚合后再下发。因此每个智能体都可以学习到路网中其他路口智能体共享的知识,可以有效提高智能体的控制效果。参数传递过程则是将各个智能体的中的模型参数与获得的累积奖励上传至云服务器,云端根据奖励情况选择出表现最好的一组模型参数将其下发给其他智能体。参数传递过程使得智能体可以不断地从更好的初始模型开始训练,能够大幅缩短路网中学习效果不好的智能体的训练速度,解决部分智能体在训练过程中的“滞后”问题。
本发明提出的交通信号灯控制方法,能够在适应动态交通流变化的情况下,支持多智能体之间的知识共享。基于这种模型级别的协作,该方法不仅可以大幅降低多路口环境中车辆的平均行驶时间,而且能够迅速收敛到最优解。与现有的各路口上强化学习智能体独立优化的方法不同,本发明的方法能够在强化学习智能体之间共享最好的知识。这样部署在交叉路口的强化学习智能体可以快速相互学习,更智能地控制交通流量。该方法不仅在车辆平均行驶时间方面取得了较好的控制效果,而且能快速收敛到全局最优解。
附图说明
图1是本发明基于联邦强化学习的多路口智能交通信号灯控制系统的总结构图与流程示意图。描述了云端与边缘节点的内部结构以及基于联邦学习的梯度聚合和参数传递过程。
图2是本发明对交叉路口信号灯相位的建模示意图。描述了动作、信号以及相位的概念。其中左图路口带箭头长线条表示动作,从某驶入车道通过路口进入某驶出车道。信号用来确定某一时刻哪些动作被允许,其中浅色圆点表示允许移动,深色圆点表示禁止移动。相位定义为不冲突的信号的组合,如右图所示为信号灯控制方案所采取的八相位,即东西直行、东西左转、南北直行、南北左转、西直行左转、东直行左转、北直行左转与南直行左转。
图3是本发明对交叉路口的定向道路与对应压力计算的示意图。描述了示例路口中道路与路口压力的计算方法。
图4是本发明方法的性能测试结果。
具体实施方式
结合以下具体实施例和附图,对发明作进一步的详细说明。实施本发明的过程、条件、实验方法等,除以下专门提及的内容之外,均为本领域的普遍知识和公知常识,本发明没有特别限制内容。
本发明中基于联邦强化学习的多路口智能交通信号灯控制系统,包括以下内容:
1.模拟城市道路与交通流的方法:
本发明提出了定向道路及其对应压力计算的概念,通过对道路网中路口的精确建模,生成用于仿真实验的真实道路场景数据。本发明采用开源交通模拟软件Cityflow完成对城市交通和交通流量的模拟。它允许模拟由单个车辆组成的给定交通需求在给定的道路网络中移动。每辆车都是明确建模的,有自己的路线,并在网络独立移动。通过Cityflow对python的良好支持和丰富的接口,本发明可以获得实时的道路情况和车流量运动情况。
2.对交通信号灯的强化学习控制方法:
本发明实现了根据路口车流情况对交通信号灯的实时协调控制,最小化所有车辆的平均行驶时间。本发明在路网中的每个路口上均部署了一个强化学习智能体,用于控制当前路口的信号灯相位。通过从Cityflow模拟器中获得的道路情况,强化学习智能体得到自己对于当前路口环境的观测,根据当前的观测,强化学习智能体选择最佳的路口信号灯相位,控制交通流运动,同时将历史数据存储。在一段时间后,强化学习智能体利用历史数据进行训练,更新自身的神经网络参数。在训练过程中,强化学习智能体与道路网中的中央云服务器进行交互以获得其他强化学习智能体共享的知识,使全局信息得到有效利用。
3.各路口强化学习智能体之间知识共享的方法:
基于联邦学习的思想,本发明引入了梯度聚合与参数传递过程。在训练时,边缘节点将强化学习智能体中的神经网络学习到的梯度信息上传至云端,云服务器完成聚合后将其下方,边缘节点再使用聚合后的梯度信息进行学习,使多个路口的强化学习智能体之间可以共享知识,这是因为梯度信息即是神经网络学习到的知识。而参数传递则是在一段时间后云服务器收集各个路口的模型参数与累积奖励,选择表现最好的模型参数并将其下发给其他路口的强化学习智能体,对于表现较差的路口可以直接获得当前性能最优的模型,从一个更好的起点开始下一轮学习,有效改善学习较慢设备的表现。
实施例
本发明提出了一种基于联邦强化学习的多路口智能交通信号灯控制系统实现方法及系统,以下是其代码实现部分(截取重要):
如代码1所示,这部分包括了对城市道路与交通流量的模拟的方法的代码:
#获得路口信息
defintersection_info(self,id_):
state={}
state['lane_vehicle_count']=self.eng.get_lane_vehicle_count()
state['lane_waiting_vehicle_count']=self.eng.get_lane_waiting_vehicle_count()
state['lane_vehicles']=self.eng.get_lane_vehicles()
state['vehicle_speed']=self.eng.get_vehicle_speed()
state['start_lane_vehicle_count']={lane:state['lane_vehicle_count'][lane]for lane in self.start_lane[id_]}
state['end_lane_vehicle_count']={lane:state['lane_vehicle_count'][lane]for lane in self.end_lane[id_]}
state['start_lane_waiting_vehicle_count']={lane:state['lane_waiting_vehicle_count'][lane]for lane in self.start_lane[id_]}
state['end_lane_waiting_vehicle_count']={lane:state['lane_waiting_vehicle_count'][lane]for lane in self.end_lane[id_]}
state['start_lane_vehicles']={lane:state['lane_vehicles'][lane]forlane in self.start_lane[id_]}
state['end_lane_vehicles']={lane:state['lane_vehicles'][lane]forlane in self.end_lane[id_]}
state['start_lane_speed']={lane:np.sum(list(map(lambda vehicle:state['vehicle_speed'][vehicle],state['lane_vehicles'][lane])))/(state['lane_vehicle_count'][lane]+1e-5)for lane inself.start_lane[id_]}
state['end_lane_speed']={lane:np.sum(list(map(lambda vehicle:state['vehicle_speed'][vehicle],state['lane_vehicles'][lane])))/(state['lane_vehicle_count'][lane]+1e-5)for lane in self.end_lane[id_]}#compute end lanemean speed
state['current_phase']=self.current_phase[id_]
state['current_phase_time']=self.current_phase_time[id_]
return state
#计算各条定向道路上的压力作为强化学习智能体的观测
defget_state(self):
state={id_:self.get_state_(id_)for id_in self.intersection_id}
return state
defget_state_(self,id_):
state=self.intersection_info(id_)
start_vehicle_count=[state['start_lane_vehicle_count'][lane]for lanein self.start_lane[id_]]
end_vehicle_count=[state['end_lane_vehicle_count'][lane]for lane inself.end_lane[id_]]
pressure=[]
for i in range(len(self.start_lane[id_])):
pressure.append(start_vehicle_count[i]-end_vehicle_count[i])
return_state=pressure+[state['current_phase']]
return self.preprocess_state(return_state)
#模拟器执行1步即1s的模拟,当信号灯相位时间未结束则继续执行模拟
defstep(self,action,now_step):
done=False
if(now_step==self.num_step):
done=True
for id_,a in action.items():
ifself.current_phase[id_]==a:
self.current_phase_time[id_]+=1
else:
self.current_phase[id_]=a
self.current_phase_time[id_]=1
self.eng.set_tl_phase(id_,self.current_phase[id_])#set phaseoftraffic light
self.eng.next_step()
return self.get_state(),self.get_reward(),done
#在信号灯相位结束后计算各个路口的压力作为各个强化学习智能体从环境获得的奖励
defget_reward(self):
reward={id_:self.get_reward_(id_)for id_in self.intersection_id}
return reward
defget_reward_(self,id_):
state=self.intersection_info(id_)
start_vehicle_count=[state['start_lane_vehicle_count'][lane]for lanein self.start_lane[id_]]
end_vehicle_count=[state['end_lane_vehicle_count'][lane]for lane inself.end_lane[id_]]
pressure=sum(start_vehicle_count)-sum(end_vehicle_count)
reward=-abs(pressure)
return reward
代码1
代码1简单列举多路口环境中的三个重要函数,它们分别是:intersection_info、get_state、step、get_reward,这四个函数的功能如下:intersection_info获得当前路口的所有信息,包括各条道路上的车辆数量、分别在进入路口道路与离开路口的道路上的等待车辆数量以及车辆行驶速度等。get_state对路口信息进行加工,计算各个定向道路上的压力,加上路口当前的信号灯相位,作为该强化学习智能体对当前路口情况的观测。step调用模拟器引擎,将模拟过程推进一步即进行下1s的模拟。get_reward函数计算当前路口的压力,作为强化学习智能体控制信号灯相位后从环境中获得的奖励。
如代码2所示为对交通信号的强化学习控制方法:
#构建Actor神经网络
class Actor:
def__init__(self,state_dim,action_dim):
self.state_dim=state_dim#强化学习智能体对环境的观测空间
self.action_dim=action_dim#强化学习智能体的动作空间
self.model=self.create_model()#创建神经网络
self.actor_lr=0.0001#学习率
self.opt=tf.keras.optimizers.Adam(self.actor_lr)#优化器
#创建神经网络
defcreate_model(self):
return tf.keras.Sequential([
Input((self.state_dim,)),
Dense(64,activation='relu'),
Dense(32,activation='relu'),
Dense(self.action_dim,activation='softmax')
])
#Critic神经网络
class Critic:
def__init__(self,state_dim):
self.state_dim=state_dim
self.model=self.create_model()
self.critic_lr=0.0002
self.opt=tf.keras.optimizers.Adam(self.critic_lr)
#创建神经网络
defcreate_model(self):
return tf.keras.Sequential([
Input((self.state_dim,)),
Dense(64,activation='relu'),
Dense(32,activation='relu'),
Dense(1,activation='linear')
])
#强化学习智能体根据对当前环境的观测,由Actor网络选择下一步的动作即新的信号灯相位
defchoose_action(self,state):
probs=self.actor.model.predict(
np.reshape(state,[1,self.state_dim]))
action=np.random.choice(self.action_dim,p=probs[0])
return action
#根据各个路口上强化学习智能体选择的动作,模拟进行模拟直到信号灯相位时间结束
action=Magent.choose_action(state)#由各个路口强化学习智能体的Actor网络选择信号灯相位的索引
#按照索引获得对应的信号灯相位
action_phase={}
for id_,a in action.items():
action_phase[id_]=phase_list[id_][a]
next_state,reward,done=env.step(action_phase,episode_length)#路口信号灯应用强化学习智能体选择的信号灯相位,模拟器执行一步模拟
#信号灯相位时间未结束则继续模拟
for_in range(config['phase_step']-1):
next_state,reward_,done=env.step(action_phase,episode_length)
episode_length+=1
total_step+=1
for id_in intersection_id:
reward[id_]+=reward_[id_]
代码2
在代码2中,描述了使用A2C强化学习算法对路口信号灯的控制流程。简单列出了3段代码,分别是强化学习智能体中的Actor网络与Critic网络的创建以及强化学习智能体对路口信号灯的控制。
Actor网络与Critic网络均由两层隐藏层组成,神经元数量分别为64与32个,输入均为对路口情况的观测,而输出则分别为对信号灯相位索引的选择和对当前选择的信号灯相位的评分。它们的优化器均为Adam优化器,而学习率则分别为0.0001与0.0002。在控制部分代码中,路网中的各个路口强化学习智能体根据自身对当前路口环境的观测,选择出各自的信号灯相位索引,再将其转换为对应的信号灯相位后应用于路口的信号灯上。当信号的相位持续时间没有结束时,模拟器将不断执行,同时累计强化学习智能体从环境中所获得的奖励。
如代码3所示,为各路口强化学习智能体之间知识共享的方法。
#梯度共享过程
#Actor网络计算梯度
class Actor:
defupload_gradient(self,states,actions,advantages):
with tf.GradientTape()as tape:
logits=self.model(states,training=True)
loss=self.compute_loss(actions,logits,advantages)
grads=tape.gradient(loss,self.model.trainable_variables)
return grads
#Critic网络计算梯度
class Critic:
defupload_gradient(self,states,td_targets):
with tf.GradientTape()as tape:
v_pred=self.model(states,training=True)
assert v_pred.shape==td_targets.shape
loss=self.compute_loss(v_pred,tf.stop_gradient(td_targets))
grads=tape.gradient(loss,self.model.trainable_variables)
return grads
#各个强化学习智能体上传自己Actor网络与Critic网络的梯度
def upload_gradient(self):
states=self.list_to_batch(self.state_batch)
actions=self.list_to_batch(self.action_batch)
td_targets=self.list_to_batch(self.td_target_batch)
advantages=self.list_to_batch(self.advatnage_batch)
actor_gradient=self.actor.upload_gradient(states,actions,advantages)
critic_gradient=self.critic.upload_gradient(states,td_targets)
return np.array(actor_gradient),np.array(critic_gradient)
#云服务器协同控制各个强化学习智能体的训练过程
def train(self,done):
if self.step>=self.update_interval or done:
self.step=0
actor_gradients={}
critic_gradients={}
#收集各个agent的梯度
for id_in self.intersection:
actor_gradients[id_],critic_gradients[id_]=self.agents[id_].upload_gradient()
#平均梯度
mean_actor_gradient=sum(actor_gradients.values())/len(actor_gradients)
mean_critic_gradient=sum(critic_gradients.values())/len(critic_gradients)
for id_in self.intersection:
self.agents[id_].train(mean_actor_gradient,mean_critic_gradient)
#参数传递过程,云服务器选择表现最好的强化学习智能体模型,将其参数传递给其他强化学习智能体
max_reward_id=max(episode_reward,key=episode_reward.get)
for id_in intersection_id:
Magent.agents[id_].actor.model.set_weights(Magent.agents[max_reward_id].actor.model.get_weights())
Magent.agents[id_].critic.model.set_weights(Magent.agents[max_reward_id].critic.model.get_weights())
代码3
在代码3中,主要给出了各路口强化学习智能体之间知识共享的方法。在梯度共享过程中,每个强化学习智能体在本地训练后,计算出自己Actor网络和Critic网络的梯度。各个强化学习智能体将自己的梯度信息上传到云端后,云服务器对其进行梯度平均后再将聚合后的梯度下发至各个强化学习智能体。各个强化学习智能体使用聚合后梯度再次进行训练。由于梯度信息即是强化学习智能体在本地学习到的知识,通过梯度聚合的过程,实现了强化学习智能体之间的知识共享。除了梯度共享以外,在一定时间以后,还存在参数传递过程。边缘节点将自身的模型参数与前一时段内的累积奖励上传,云服务器从中选择出最佳的模型参数,将其下发至其他边缘节点替换旧的模型参数。该过程使各个强化学习智能体从一个最佳起点开始下一阶段的学习,能够有效解决部分强化学习智能体学习效果较差而产生的“掉队”现象,使各个路口的边缘设备同步学习,最终收敛至一个统一的最优模型。
为了综合测试本发明的性能,本发明使用Cityflow交通模拟平台,在3个仿真数据集(2x2路口,3x3路口,4x4路口)以及1个真实数据集(济南3x4路口)上了进行了模拟控制,并与传统信号灯控制方法以及其他现有的先进强化学习方法进行了性能比较。测试结果为模拟一小时交通内路网中所有出行车辆的平均行驶时间。图4是本发明方法性能测试结果,可以看出应用此方法能够使得出行车辆的平均行驶时间最短。
本发明提出了一种高效的联邦强化学习方法,该方法可以快速形成全局优化的基于强化学习的强化学习智能体,并部署在交通网络的所有交叉路口上,以提高交通网络的整体控制性能。与现有的优化独立的路口上强化学习智能体模型的方法不同,受联邦学习的启发,本发明的方法能够在强化学习智能体之间共享最好的知识。这样部署在交叉路口的强化学习智能体可以快速相互学习,更智能地控制交通流量。与现有技术相比,本发明不仅可以获得更好的多路口环境下的车辆平均行驶时间,而且能够更快地收敛到最优解。
本发明的保护内容不局限于以上实施例。在不背离发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护范围。
Claims (8)
1.一种基于联邦强化学习的多路口智能交通信号灯控制方法,其特征在于,包括:
步骤1:使用开源交通模拟软件Cityflow对城市交通和交通流量进行模拟,对路网中的真实路口情况和信号灯控制相位进行精准建模,生成用于仿真实验的真实道路场景数据,并通过Cityflow的可视化功能,观察道路的情况和车流量的运动情况;
步骤2:在路网中的每个交叉路口上均部署了一个强化学习智能体,在每个强化学习智能体上使用A2C强化学习算法,根据路口车流情况实时协调控制当前路口的交通信号灯相位,每个交叉路口的强化学习智能体由云服务器协调训练,来最大化路网中各个路口的吞吐量,即最小化所有车辆的平均行驶时间;
步骤3:结合实际场景构建一个新的基于云-边协同的联邦强化学习框架,所述框架包括:将道路网络中的每个路口及部署于路口的物联网设备以及所述强化学习智能体视为一个边缘节点,在一个路网中存在多个边缘节点与一个中央云服务器,在强化学习智能体学习过程中,由一个中央云服务器负责协调控制各个边缘节点上的强化学习智能体训练学习过程,实现知识的共享;
步骤4:引入梯度共享与参数传递机制,所述梯度共享包括:在训练时,每个强化学习智能体在本地训练后,计算出自己Actor网络和Critic网络的梯度,边缘节点将各个强化学习智能体中的神经网络学习到的梯度信息上传至云端,云服务器对其进行梯度平均后再将聚合后将其下发至各个强化学习智能体,边缘节点再使用聚合后的梯度信息进行学习;
所述参数传递则是在按照预先设置的固定时间间隔后云服务器收集各个路口的模型参数与累积奖励上传,云服务器从中选择表现最好的模型参数并将其下发给其他路口的强化学习智能体,对于表现较差的路口可以直接获得当前性能最优的模型,从一个更好的起点开始下一轮学习。
2.如权利要求1所述的基于联邦强化学习的多路口智能交通信号灯控制方法,其特征在于,所述精准建模包括:一个路口包含了所有进入车道的有限集合Larrive以及离开车道的有限集合Ldepart;路口的一条道路由一条进入车道和一条离开车道组成,表示为一个二元组(la,ld),其中la∈Larrive而ld∈Ldepart;对每一条直行、左转、右转的进入车道,都有一条离开车道与其对应;定向道路指的是一条进入车道和其对应的离开车道的二元组,同时默认所有右转的车道在任何时刻均可以通行,不受路口信号灯的控制;因此一个路口总共有8组信号灯相位。
3.如权利要求1所述的基于联邦强化学习的多路口智能交通信号灯控制方法,其特征在于,在模拟过程中,通过Cityflow模拟器提供的数据访问接口,获得所有的当前路口信息,所述路口信息包括各条道路上的车辆数量、分别在进入路口道路与离开路口的道路上的等待车辆数量以及车辆行驶速度;从模拟器环境中获得路口信息,计算出各个定向道路上的压力,一条定向道路(la,ld)的压力定义为V(la)-V(ld),其中V(la)与V(ld)分别表示在进入车道la与离开车道ld上的车辆数;所述定向道路指的是一条进入车道和其对应的离开车道的二元组,同时默认所有右转的车道在任何时刻均可以通行,不受路口信号灯的控制;路口当前的信号灯相位,为该强化学习智能体对当前路口情况的观测,所述智能体根据获得的当前路口情况,选择出最适合的信号灯相位以最大化路口的吞吐量;在将智能体选择的信号灯相位返回环境后,调用模拟器引擎,将模拟过程推进一步即进行下1s的模拟,当信号灯相位时间未结束则继续执行模拟;若信号灯相位时间结束则计算当前路口的压力的相反数,作为强化学习智能体控制信号灯相位后从环境中获得的奖励,其中路口的压力计算公式为即当前路口中所有进入车道上的车辆数与离开道路上的车辆数之差的绝对值,随后开始新一轮控制过程。
4.如权利要求1所述的基于联邦强化学习的多路口智能交通信号灯控制方法,其特征在于,所述用于交通环境数据获取的物联网设备包括摄像头、信号灯、控制器与传感器。
5.如权利要求1所述的基于联邦强化学习的多路口智能交通信号灯控制方法,其特征在于,通过从交通路口部署的物联网设备获得的道路情况,强化学习智能体得到自己对于当前路口环境的观测,根据当前的观测,强化学习智能体选择最大化路口的吞吐量的信号灯相位,控制交通流运动,同时将历史数据存储;在预先设定的固定时间间隔后,强化学习智能体利用历史数据进行训练,更新自身的神经网络参数;在训练过程中,强化学习智能体与路网中的中央云服务器进行交互以获得其他强化学习智能体共享的知识,使全局信息得到有效利用。
6.如权利要求1所述的基于联邦强化学习的多路口智能交通信号灯控制方法,其特征在于,所述A2C算法强化学习智能体包含两个神经网络,分别为Actor网络与Critic网络,所述Actor网络根据强化学习智能体对环境的观测选择下一步执行的动作,Critic网络则对Actor网络选择的动作进行评价;所述Actor网络和Critic网络的构建包括:均由两层隐藏层组成,神经元数量分别为64与32个,输入为对路口情况的观测,输出分别为对信号灯相位索引的选择和对当前选择的信号灯相位的评分,优化器均为Adam优化器,学习率分别为0.0001与0.0002;
强化学习智能体对路口信号灯的控制:
路网中的各个路口强化学习智能体根据自身对当前路口环境的观测,由Actor网络选择下一步的动作即选择出各自的信号灯相位索引,再将其转换为对应的信号灯相位后应用于路口的信号灯上;当信号的相位持续时间没有结束时,模拟器将不断执行,同时累计强化学习智能体从环境中所获得的奖励;当信号灯相位结束时,模拟环境返回奖励至强化学习智能体,智能体将奖励与自己对环境的观测和选择的信号灯相位作为历史轨迹数据存储;随后智能体开始新一次的信号灯控制过程;
强化学习智能体的本地模型更新:
当到达预先设定的一定时间,即智能体已经存储了一定的历史数据后,智能体开始本地的模型更新过程;从存储的历史数据中取出一批次的样本返回到智能体中的Actor模型与Critic模型中,智能体计算出自己的本地梯度用于本地更新同时准备将梯度信息上传至云端用于梯度聚合。
7.一种基于联邦强化学习的多路口智能交通信号灯控制系统,其特征在于,包括:存储器和处理器;所述存储器上存储有计算机程序,当所述计算机程序被所述处理器执行时,实现如权利要求1-6任一项所述的方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110779122.5A CN113643553B (zh) | 2021-07-09 | 2021-07-09 | 基于联邦强化学习的多路口智能交通信号灯控制方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110779122.5A CN113643553B (zh) | 2021-07-09 | 2021-07-09 | 基于联邦强化学习的多路口智能交通信号灯控制方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113643553A CN113643553A (zh) | 2021-11-12 |
CN113643553B true CN113643553B (zh) | 2022-10-25 |
Family
ID=78417009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110779122.5A Active CN113643553B (zh) | 2021-07-09 | 2021-07-09 | 基于联邦强化学习的多路口智能交通信号灯控制方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113643553B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114120672B (zh) * | 2021-11-19 | 2022-10-25 | 大连海事大学 | 基于多智能体强化学习的异构路口场景交通信号控制方法 |
CN114598667A (zh) * | 2022-03-04 | 2022-06-07 | 重庆邮电大学 | 一种基于联邦学习的高效设备选择与资源分配方法 |
CN115083149B (zh) * | 2022-05-19 | 2023-07-28 | 华东师范大学 | 一种实时监测的强化学习可变时长信号灯控制方法 |
CN115019523B (zh) * | 2022-05-31 | 2023-10-17 | 南京邮电大学 | 基于最小化压力差的深度强化学习交通信号协调优化控制方法 |
CN115083174A (zh) * | 2022-06-07 | 2022-09-20 | 杭州电子科技大学 | 一种基于合作式多智能体强化学习的交通信号灯控制方法 |
CN115294784B (zh) * | 2022-06-21 | 2024-05-14 | 中国科学院自动化研究所 | 多路口交通信号灯控制方法、装置、电子设备及存储介质 |
CN115130683A (zh) * | 2022-07-18 | 2022-09-30 | 山东大学 | 一种基于多代理模型的异步联邦学习方法及系统 |
CN115311860A (zh) * | 2022-08-09 | 2022-11-08 | 中国科学院计算技术研究所 | 一种交通流量预测模型的在线联邦学习方法 |
CN116524745B (zh) * | 2023-05-10 | 2024-01-23 | 重庆邮电大学 | 一种云边协同区域交通信号动态配时系统及方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190347933A1 (en) * | 2018-05-11 | 2019-11-14 | Virtual Traffic Lights, LLC | Method of implementing an intelligent traffic control apparatus having a reinforcement learning based partial traffic detection control system, and an intelligent traffic control apparatus implemented thereby |
CN110032782B (zh) * | 2019-03-29 | 2023-03-07 | 银江技术股份有限公司 | 一种城市级智能交通信号控制系统及方法 |
CN112565331B (zh) * | 2020-11-02 | 2022-08-12 | 中山大学 | 一种基于边缘计算的端-边协同联邦学习优化方法 |
-
2021
- 2021-07-09 CN CN202110779122.5A patent/CN113643553B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113643553A (zh) | 2021-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113643553B (zh) | 基于联邦强化学习的多路口智能交通信号灯控制方法及系统 | |
CN110264750B (zh) | 一种基于多任务深度q网络的q值迁移的多交叉口信号灯协同控制方法 | |
CN109559530B (zh) | 一种基于q值迁移深度强化学习的多交叉口信号灯协同控制方法 | |
Wu et al. | Multi-agent deep reinforcement learning for urban traffic light control in vehicular networks | |
CN112216124B (zh) | 一种基于深度强化学习的交通信号控制方法 | |
CN110032782B (zh) | 一种城市级智能交通信号控制系统及方法 | |
CN108510764B (zh) | 一种基于q学习的多路口自适应相位差协调控制系统及方法 | |
Casas | Deep deterministic policy gradient for urban traffic light control | |
CN107705557B (zh) | 基于深度增强网络的路网信号控制方法及装置 | |
CN111696370B (zh) | 基于启发式深度q网络的交通灯控制方法 | |
CN112365724B (zh) | 一种基于深度强化学习的连续交叉口信号协同控制方法 | |
CN111845773B (zh) | 基于强化学习的自动驾驶车辆微观决策方法 | |
CN109215355A (zh) | 一种基于深度强化学习的单点交叉口信号配时优化方法 | |
CN111785045A (zh) | 基于演员-评论家算法的分布式交通信号灯联合控制方法 | |
Li et al. | Adaptive traffic signal control model on intersections based on deep reinforcement learning | |
Ye et al. | Fedlight: Federated reinforcement learning for autonomous multi-intersection traffic signal control | |
Liao et al. | Time difference penalized traffic signal timing by LSTM Q-network to balance safety and capacity at intersections | |
CN115019523B (zh) | 基于最小化压力差的深度强化学习交通信号协调优化控制方法 | |
Yan et al. | Graph cooperation deep reinforcement learning for ecological urban traffic signal control | |
Jiang et al. | A multi-intersection vehicular cooperative control based on end-edge-cloud computing | |
CN113724507B (zh) | 基于深度强化学习的交通控制与车辆诱导协同方法和系统 | |
Jiang et al. | A general scenario-agnostic reinforcement learning for traffic signal control | |
He et al. | A spatial-temporal graph attention network for multi-intersection traffic light control | |
CN115273502B (zh) | 一种交通信号协同控制方法 | |
Zhang et al. | Coordinated control of distributed traffic signal based on multiagent cooperative game |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |