禁止道路限速被修改至超过上限

This commit is contained in:
Zihan Ye 2026-04-10 03:22:33 +08:00
parent e45b083067
commit 705fa846da
1 changed files with 11 additions and 2 deletions

View File

@ -127,6 +127,7 @@ class SUMOEdgeVSLEnvironment:
)
self.controlled_length_km = corridor_assets.controlled_length_m / 1000.0
self.default_edge_speeds = self._build_default_segment_speeds()
self.max_segment_speeds = self.default_edge_speeds.copy()
self.action_dims = [self.num_speed_actions] * self.num_edges
self.features_per_edge = 3
@ -345,14 +346,22 @@ class SUMOEdgeVSLEnvironment:
self._close_sumo()
def _decode_action(self, action: np.ndarray) -> np.ndarray:
return np.array([self.speed_actions_ms[int(a)] for a in action])
requested_speeds = np.array([self.speed_actions_ms[int(a)] for a in action], dtype=float)
return np.minimum(requested_speeds, self.max_segment_speeds)
def _apply_vsl(self, edge_speeds: np.ndarray):
for idx, segment_id in enumerate(self.control_edges):
if idx in self.passive_segment_indices:
continue
for edge_id in self.segment_edge_map.get(segment_id, []):
traci.edge.setMaxSpeed(edge_id, float(edge_speeds[idx]))
edge_info = self.parser.edge_info.get(edge_id)
original_edge_speed = (
float(edge_info.speed_limit)
if edge_info is not None
else float(edge_speeds[idx])
)
safe_speed = min(float(edge_speeds[idx]), original_edge_speed)
traci.edge.setMaxSpeed(edge_id, safe_speed)
def _get_edge_detector_data(self) -> Tuple[List[float], List[float], List[int], List[float]]:
speeds, occs, counts, valid_speeds = [], [], [], []