禁止道路限速被修改至超过上限
This commit is contained in:
parent
e45b083067
commit
705fa846da
|
|
@ -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 = [], [], [], []
|
||||
|
|
|
|||
Loading…
Reference in New Issue