3. 十字路口信号灯控制仿真

任务目标

在SUMO中构建一个十字路口场景,为路口配置四相位交通信号灯,设置东西与南北方向不对称的车流,通过对比固定配时方案下不同方向的平均等待时间与排队长度,分析信号灯配时对通行效率的影响。

环境依赖

需要SUMO 1.14及以上版本,并确保sumo、netedit命令可用。本案例使用SUMO XML格式手工定义路网与信号灯,不依赖额外Python库。

路网与信号灯配置

创建两条双向两车道道路交叉形成的十字路口。交叉点中心坐标为(0,0),东西方向道路长度200m,南北方向道路长度200m。信号灯采用4相位固定配时(周期60s):

  • 相位1(东西直行+右转):25s(含3s黄灯)
  • 相位2(东西左转):15s(含3s黄灯)
  • 相位3(南北直行+右转):25s(含3s黄灯)
  • 相位4(南北左转):15s(含3s黄灯)

东西方向车流量设为南北方向的2倍,用于观察不对称流量下的排队差异。

完整实现代码

以下四个文件构成完整仿真场景,保存至同一目录。

1. 路网文件 cross.net.xml

```xml ```

2. 路由文件 cross.rou.xml

```xml ```

3. 仿真配置文件 cross.sumocfg

```xml ```

4. 输出统计配置 output.add.xml

```xml ```

运行方式

在命令行进入文件所在目录,执行:

```bash sumo -c cross.sumocfg --additional-files output.add.xml ```

仿真运行360秒(6分钟),每60秒输出一次各方向检测器统计。若需图形界面观察,将sumo替换为sumo-gui。

验证方法与判定标准

仿真结束后,打开生成的det_we.xml、det_ew.xml、det_ns.xml、det_sn.xml文件,检查meanWaitingTime与jamLengthInMeters字段。由于东西方向车流密度是南北方向的2倍,预期结果应满足:

  • 东西方向(det_we、det_ew)的平均等待时间高于南北方向(det_ns、det_sn);
  • 东西方向的最大排队长度明显大于南北方向;
  • 四个方向均无车辆长时间(超过一个完整信号周期60s)无法通过路口。

若上述条件成立,说明信号灯配时方案在不对称流量下产生了预期的通行效率差异,案例验证通过。可通过调整cross.rou.xml中period值改变流量强度,观察不同负载下排队变化趋势。

信号灯相位与车流冲突关系

北 (N) 南 (S) 西 (W) 东 (E) 相位1: 东西直行 相位2: 东西左转 相位3: 南北直行 相位4: 南北左转 周期: 60s 绿灯: 22s+12s 黄灯: 3s×4 流量: 1辆/3s 流量: 1辆/3s 流量: 1辆/6s 流量: 1辆/6s 图例: 相位1(东西直行) 相位2(东西左转) 相位3(南北直行) 相位4(南北左转)

上图展示了十字路口的几何结构与四个信号灯相位的放行关系。东西方向(相位1、2)总绿灯时间为34秒,南北方向(相位3、4)总绿灯时间同样为34秒,但由于东西方向车流量是南北的2倍,东西方向每个绿灯周期内通过的车辆数更多,排队消散速度相对更慢,导致等待时间上升。

常见问题

  • 路网文件报错:若提示连接(connection)定义错误,检查fromLane与toLane的索引是否对应实际车道方向。本例中所有连接均为直行,未包含转向车道。
  • 信号灯不工作:确认tlLogic的id与交叉口junction的id一致(均为0),且type="traffic_light"已正确设置。
  • 检测器无输出:检查lane属性中的车道ID是否存在于路网中。本例使用E3_0表示西进口道的内侧车道,E1_0为东进口道内侧车道,以此类推。