Year3Project记录|Reinforcement Learning for Adaptive Traffic Light Control

203 阅读11分钟

Reinforcement Learning for Adaptive Traffic Light Control

用于记录项目进程以及学习内容
导师: Prof. Giovanni Montana

相关论文

该章节列举所阅读论文并总结论文内容

IntelliLight: A Reinforcement Learning Approach for Intelligent Traffic Light Control

该论文发布时间较早(2018),是早期用强化学习解决控制交通信号灯问题的所发布的论文,目的是让交通信号灯根据道路情况变化得更加动态,作者称之为智能信号灯(IntelliLight,DRL)。与DRL对比的另外两种信号灯是固定时间变化(Fix Time Control, FT)与人为手动变化的交通信号灯(Self-Organizing Traffic Light Control)。其中智能信号灯是基于 Deep Q-learning(DQN)的框架,并在DQN的基础上加入了Memory Palace和Phase Gate(稍后会解释什么是Memory palace和Phase Gate),根据作者的实验结果,各程度IntelliLight相比于FT和SOTF都有了一定程度的提升,证明了通过强化学习控制的智能信号灯能有效缓解交通拥堵情况。

在传统的对通过强化学习控制智能信号灯的研究中出现了以下两个技术难点:

  1. 如何向模型表达当前的路况
  2. 如何建模环境与决策之间的相关性(我把他当作如何找到一个value function)
  3. 除1和2之外,还存在一个难点是文章中未提及的:reward没有及时性,无法立即判断当前做出的决定是否就是符合全局的最好的结果(这点其实在论文中有得到解决,但是并未提及)

在这篇论文中,作者并没有着重考虑难点1,作者认为向模型表达路况可以直接将路面信息的图片通过CNN处理后再以此作为IntelliLight模型的输入。

对于难点2,作者则更深入的解释如何设计value function:

作者将模型分为了两个部分:online part、offline part; offline part主要是为了收集道路信息用于模型训练。online part则包括了主要工作收集道路信息、通过模型的policy和epsilon-greedy做出决策以及得到反馈并储存信息。在这个部分又将分出两个部分,进一步训练和升级。论文中的进一步训练部分使用了一个信号灯的两个不同时间点作为样本(可以为多次),在判断是否改变信号灯并得到反馈后储存(s,a,r),通过mini-batcg重复经过一次训练后对模型进行升级。升级后的模型被用于为下一个该路口的路况做出决策,得到反馈后重复步骤。对于一个路口来说,能保证路口持续在升级,避免了受到reward的延迟性的影响让路口不断优化以达到最优。

由此构建出一个Value Function:

  • 所有接近车道上的排队长度 L 的总和,其中 L 被计算为给定车道上等待车辆的总数。
  • 所有接近车道上的延迟 D 的总和,其中车道 i 的延迟 Di 在方程式 1 中定义。
Di=1lanespeedspeedlimitD_i = 1- \dfrac{lane speed}{speed limit}
  • 所有接近车道上的更新等待时间 W 的总和。这等于接近车道上所有车辆的 W 总和。时间t时车辆j 的更新等待时间 W 定义如方程 2
Wj(t)={Wj(t1)+1,vehicle<0.10,vehicel0.1W_j(t) = \begin{cases} W_j(t-1)+1,\quad vehicle<0.1\\ 0,\quad vehicel\geq 0.1 \end{cases}
  • 交通灯切换的指示器 C,其中 C = 0 表示保持当前状态,C = 1 表示改变当前状态。
  • 在上次action a 之后,在时间间隔 t 内通过交叉口的车辆总数 N。
  • 上次action a 之后,在时间间隔 t 内通过交叉口的车辆总行驶时间 T,定义为车辆在接近车道上花费的总时间(以分钟为单位)。

Reward=w1iILi+w2iIDi+w3iIWi+w4C+w5N+w6T Reward = w_1 * \sum_{i\in I}{L_i} + w_2* \sum_{i\in I}{D_i} + w_3 * \sum_{i \in I}{W_i} + w_4 * C + w_5 * N + w_6 * T

为了基于状态和动作来估计奖励,该模型需要学习一个Deep Q-Network Q(s, a); 但是网络很难知道不同时间阶段应该用哪一种处理方法,所以作者在这里加入了phase gate来帮助模型分辨

  • phase gate learning:根据当前的状态(State)、行动(Action)、奖励(Reward)等信息,选择适当的phase gate来激活相应的模型,从而对当前的任务进行学习和解决。这种方法可以帮助系统更好地适应不同的环境和任务,并提高学习的效果和泛化能力。

同时,模型将学会很好地估计这些频繁的phase和action的reward,但忽视其他不太频繁的phase-action组合。这将导致学习到的智能体在不常见的phase-action组合上做出很差的决策。因此,当不同车道上的交通情况差异巨大时,这些不平衡的样本将导致在不常见的情况下性能较差。但是我们可以通过为不同的phase-action组合使用不同的Memory Palace来解决这个不平衡问题。不同phase-action组合的训练样本被存储到不同的Memory Palace中。然后,从不同的palace中选择相同数量的样本。这些平衡的样本将防止不同的phase-action组合干扰彼此的训练过程,从而提高网络准确预测奖励的拟合能力。

  • memory palace:定期地,模型将从记忆中取样,并使用这些样本来更新网络。这个记忆通过定期添加新的数据样本并偶尔删除旧样本来维护。

实验阶段实验被分成了六个不同的方法组

  • Fixed-time Control (FT). 固定时控制方法使用预先确定的周期和相位时序计划,当交通流稳定时广泛使用。

  • Self-Organizing Traffic Light Control (SOTL)这种方法根据当前的交通状态来控制交通信号灯,包括经过的时间和等待在红灯前的车辆数。具体来说,当等待车辆的数量超过经过手动调整的阈值时,交通信号灯会变化。

  • Deep Reinforcement Learning for Traffic Light Control (DRL)这种方法应用了DQN框架来选择交通路口的最佳交通信号灯配置。具体来说,它仅依赖于原始的交通信息作为图像输入。

  • IntelliLight (Base). 这种方法没有使用Memory Palac 和相位门 Phase Gate

  • IntelliLight (Base+MP).通过将Memory Palace概念引入到 IntelliLight-Base 中,我们将不同相位和时间的样本存储在不同的记忆中。

  • IntelliLight (Base+MP+PG).添加Memory 和 Phase Gate两种方法

最终测试结果: image.png

与作者提出的不同方法进行比较。表6、7显示了我们提出的不同方法的性能。首先,我们可以看到,添加Memory Palace有助于在配置3和4下实现更高的奖励,尽管在配置1和2下没有提高奖励。这是因为对于简单的情况(配置1和2),相位相对长时间保持稳定(因为交通只来自一个方向或在很长时间内保持不变)。因此,Memory Palace对于构建更好的奖励预测模型没有帮助。进一步添加Phase Gate也减少了大多数情况下的队列长度,并实现了最高的奖励,证明了这两种技术的有效性。


Multi-Agent Reinforcement Learning for Traffic Light Control

论文目的:用强化学习算法减少整个城市车辆等待时间


Coordinated Deep Reinforcement Learners for Traffic Light Control

内容:


学习 Reinforcement Learning Book

该章节列举导师推荐内容以及内容总结
  • Multi-armed Bandits
  • Finite Markov Decision Process
  • Dynamic Programming
  • Monte Carlo Methods
  • Temporal-Difference Learning

项目过程

该章节列举项目进行过程中所遇到的难题以及如何解决

想法:

  1. 对于我的项目,采集道路环境目前不在我的考虑范围内,主要考虑模型控制信号灯的模型,CNN部分可能直接套用论文中的部分(不需要考虑CNN,只需要强化学习的环境/模型以及simulator)
  2. 需要定义policy后才能定义reward,比如说为了缓解某一个方向的交通压力;又或者为了整体道路交通保持通畅;出现紧急事故,如出现车祸、火警出警... modified:只需要考虑模型搭建以及后续的multiagent,实现多个路口,不考虑复杂情况
  3. 需证明:每个路口做出的决定都是最优决定,那么全局就会有最好的情况,即全局道路没有拥堵 modified:删除 不需要证明
  4. 假设每个路口的初始状态都是红灯,CNN采集信息时传入waiting_vehicle和coming_vehicle等 modified:看完行业中的代码,文献后再进行判断
  5. 论文中原来运用的是bellman-equation来做下一个Q的选择,希望把这个BE换成TD来进行下一次Q的预测,理由:TD更适合在线学习,是交通灯中需要处理的,但是会有偏差,这个放在DQN中应该可以得到解决;BE更加稳定,也更能保证收敛到准确的最优解

干了什么:

10.22:今天主要研究如何用SUMO生成一段道路、十字路口以及git上传代码(git好像出了点问题一直push不进去);晚上用SUMO自带的Netedit设计了一个简单的十字路口,了解一下里面的内容,能让里面的车辆根据红绿灯跑起来了。 这里学习SUMO推荐一下b站上的一个up:玫瑰学派 但是好像只有22年的三个视频,更多轻松学习SUMO的教程还得再找找。btw:提到的三篇论文其实还没看完,重新看了一下书,对TD和Monte Carol Method有更多的了解。觉得控制代码中十分需要TD,还不太了解这个和DQN能够怎么配合,争取在周三之前了解一遍,周二跟博士哥探讨一下,周三跟大导师面谈。

10.28


导师面谈内容

该章节用于记录与导师的面谈

内容:

面谈1.带我的Phd.大哥Mianchu给我指了一条明路,让我能够从书本上的理论搭建模型向代码搭建模型迈出一大步。 推荐Cartpole强化学习项目,学习如何搭建一个强化学习的网络,这其中我发现微软的AI-For-Beginner课程非常好,手把手教学AI-For-Beginner

面谈2.这次面谈还是跟博士哥一起,导师有事;主要是简要描述了一下目前的进度,simulator搭建上了,和python连接上了;学习了一下DQN,探讨了一下TD和BE,可以更改,但是还不着急,后续再考虑,主要还是环境;读了一下伪代码;接下来内容:1. 主要是把环境搭建起来,放入cartpole的模型中跑一下;2. 再理解一下DQN伪代码,自己写一写。下次meeting前主要点是1

面谈4.这次和大导师面谈了,直观展示了Simulator是如何展示的,讲了一下SUMO中道路的搭建和路口的搭建,还有红绿灯在SUMO中是如何被控制的... 展示了一下目前写好的代码,包括环境的基本的网络搭建, 展示了一下写上去的算法的伪代码,参考了一下论文PlayingAtari。这次面谈比较重要的点是定了一下短期的目标和项目的安排:短期就是这两周让环境可以正式运行起来,有明确的observation、reward和action,并且尽快完成DQN算法的实现代码,让环境可以搭配代码运行。尽量在十二月前完成,十二月开始项目的下一个阶段,加入multi-agent,这也是本次项目的最终目标。为了让环境有更强的泛化性,我的环境在参考了其他代码的基础上增加了对红绿灯的储存和多个红绿灯控制车道的储存;上次说到的放入cartpole中跑一下有点不太会操作,我的环境还是更加基于红绿灯的,不知道对杆子应该怎么操作,自己测试了一下还是有输出结果和reward的。