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
2. 路由文件 cross.rou.xml
3. 仿真配置文件 cross.sumocfg
4. 输出统计配置 output.add.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值改变流量强度,观察不同负载下排队变化趋势。
信号灯相位与车流冲突关系
上图展示了十字路口的几何结构与四个信号灯相位的放行关系。东西方向(相位1、2)总绿灯时间为34秒,南北方向(相位3、4)总绿灯时间同样为34秒,但由于东西方向车流量是南北的2倍,东西方向每个绿灯周期内通过的车辆数更多,排队消散速度相对更慢,导致等待时间上升。
常见问题
- 路网文件报错:若提示连接(connection)定义错误,检查
fromLane与toLane的索引是否对应实际车道方向。本例中所有连接均为直行,未包含转向车道。 - 信号灯不工作:确认
tlLogic的id与交叉口junction的id一致(均为0),且type="traffic_light"已正确设置。 - 检测器无输出:检查
lane属性中的车道ID是否存在于路网中。本例使用E3_0表示西进口道的内侧车道,E1_0为东进口道内侧车道,以此类推。