diff --git a/envs/edge_vsl_env.py b/envs/edge_vsl_env.py index 648b21f..15fce4c 100644 --- a/envs/edge_vsl_env.py +++ b/envs/edge_vsl_env.py @@ -81,10 +81,19 @@ class SUMOEdgeVSLEnvironment: for edge_id in self.control_edges: ei = self.parser.edge_info.get(edge_id) if ei and ei.detectors: - # 获取第一组检测器(pos_index=0)的所有交通车道 + # 使用该 edge 实际存在的最小 pos_index,兼容从 metrics_1 开始编号的检测器 + available_pos_indices = sorted({ + pos_index + for (lane_idx, pos_index) in ei.detectors + if lane_idx in ei.traffic_lane_indices + }) + if not available_pos_indices: + continue + first_group_dets = [] + first_pos_index = available_pos_indices[0] for lane_idx in ei.traffic_lane_indices: - det_id = ei.detectors.get((lane_idx, 0)) + det_id = ei.detectors.get((lane_idx, first_pos_index)) if det_id: first_group_dets.append(det_id) self.edge_detector_map[edge_id] = first_group_dets