Skip to content

halegreen/sumo_reinforcement_learning

 
 

Repository files navigation

基于强化学习的信号灯控制

一共离散化了1561个状态

效果对比:

1.固定配时 运行一天的目标函数的值:

baselineMean = -49.2669112861 baselineMedian = -26.6055341361 baselineMin = -610.418511938

2. RL 目标函数(主要是考虑了交叉口的排队车辆数目和车辆的等待时长)结果:

训练一天: day mean median min 0 -48.8880304 -19.64970352 -1219.225075

训练七天: 0,-53.0149590875,-19.2765436027,-1527.6639257 1,-54.2333214623,-17.935867869,-2818.28265731 2,-57.6274287124,-19.3843899631,-2118.87865864 3,-59.714570849,-19.6812949563,-1868.02595337 4,-46.7937513424,-18.1156219738,-1125.55689385 5,-44.8485735228,-16.4613800723,-808.661621964 6,-47.2123872884,-17.9175417615,-1387.09445424

2018.12.1号的需求

1.真实数据:使用 sumo 的真实数据,获得真实数据,模拟一个真实的sumo接口; 真实数据 -> 转化成仿真初始状态

2.算法增加给3,4个方案; rush hour

3.毕业论文调整 - 改下题目:单交叉口信号灯智能优化与策略调控系统的设计与实现 -

4.不同的交叉路口的情况

4. 算法计算方式?待讨论

   (1) 离线计算:算法离线运行,算出信号灯控制配置方案xml
   (2) 在线计算: 分布式并行:前端 -> 选择路口 -> 选择单路口优化算法 -> 

近期工作to-do

  1. 真实数据格式 => 仿真数据 格式的转换

    • sumo 中有个工具: DFROUTER => 可以输入 road map 和 induction loop definitions、induction loop measures 文件,来产生交通需求文件

    DFROUTER

使用方法,直接调用bin/目录下的可执行文件:

dfrouter -n ../docs/examples/dfrouter/input_tri.net.xml  -d ../docs/examples/dfrouter/input_tri.det.xml -f ../docs/examples/dfrouter/input_tri_flows.txt  -o ouput_car.rou.xml --emitters-output output_car.emit.xml
  1. 模拟真实数据,使用真实数据,进行单路口信号灯优化流程

  2. 之后整个系统的架构、web系统的设计

  • 功能1 : 线上(线下)计算单路口优化方案 => 单路口信号灯配时策略 => 线上跑单路口仿真流程 结果:light id -> 多个方案配置

  • 模型训练(线下)产出方案 :

  • 功能2: 多路口优化

  • 功能3: 新修条路等改变交通环境情况,对交通的影响

  • 功能4: 应急疏导:出现交通管制时,进行快速的红绿灯调控

  • 4种单路口最优配时策略 => 调整一参数组合 => 得到40种方案多路口最优配时策略 =>

https://github.com/tyw66/SPSA-algorithm/blob/master/main.py

单路口方案的输出格式:当时的交通流量 + 信号灯配时xml

About

基于强化学习的信号灯控制

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%