修复车检器问题
This commit is contained in:
parent
d764c7e763
commit
a6a2e5a626
|
|
@ -53,8 +53,8 @@ environment:
|
|||
free_flow_speed: 30.56
|
||||
|
||||
reward:
|
||||
efficiency_alpha: 2.19
|
||||
safety_beta: 9.19
|
||||
efficiency_alpha: 2.1159
|
||||
safety_beta: 7.8553
|
||||
efficiency_exponent: 0.50
|
||||
safety_exponent: 0.50
|
||||
ttc_threshold_s: 2.3
|
||||
|
|
|
|||
|
|
@ -215,6 +215,8 @@ class SUMOEdgeVSLEnvironment:
|
|||
str(self.end_time),
|
||||
"--collision.action",
|
||||
"warn",
|
||||
"--no-step-log",
|
||||
"true",
|
||||
"--quit-on-end",
|
||||
"true",
|
||||
]
|
||||
|
|
|
|||
|
|
@ -199,7 +199,8 @@ class SUMONetworkParser:
|
|||
for lane in lane_nodes:
|
||||
lane_idx = int(lane.get("index", "0"))
|
||||
allow = (lane.get("allow") or "").strip()
|
||||
if allow != "emergency":
|
||||
allow_tokens = {token for token in allow.split() if token}
|
||||
if allow_tokens != {"emergency"}:
|
||||
traffic_lanes.append(lane_idx)
|
||||
|
||||
if not traffic_lanes:
|
||||
|
|
|
|||
|
|
@ -36,8 +36,8 @@ def average_reward_components(totals: Mapping[str, float], steps: int) -> Dict[s
|
|||
|
||||
@dataclass(frozen=True)
|
||||
class RewardConfig:
|
||||
efficiency_alpha: float = 2.19
|
||||
safety_beta: float = 9.19
|
||||
efficiency_alpha: float = 2.1159
|
||||
safety_beta: float = 7.8553
|
||||
efficiency_exponent: float = 0.50
|
||||
safety_exponent: float = 0.50
|
||||
ttc_threshold_s: float = 2.3
|
||||
|
|
@ -55,8 +55,8 @@ class RewardConfig:
|
|||
_ = speed_actions_ms
|
||||
|
||||
return cls(
|
||||
efficiency_alpha=float(raw_cfg.get("efficiency_alpha", 2.19)),
|
||||
safety_beta=float(raw_cfg.get("safety_beta", 9.19)),
|
||||
efficiency_alpha=float(raw_cfg.get("efficiency_alpha", 2.1159)),
|
||||
safety_beta=float(raw_cfg.get("safety_beta", 7.8553)),
|
||||
efficiency_exponent=float(raw_cfg.get("efficiency_exponent", 0.50)),
|
||||
safety_exponent=float(raw_cfg.get("safety_exponent", 0.50)),
|
||||
ttc_threshold_s=float(raw_cfg.get("ttc_threshold_s", 2.3)),
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ EPS = 1e-6
|
|||
BUILD_LOCK_TIMEOUT_S = 300.0
|
||||
BUILD_LOCK_STALE_S = 900.0
|
||||
BUILD_LOCK_POLL_S = 0.2
|
||||
DERIVED_ASSET_VERSION = 2
|
||||
|
||||
|
||||
@dataclass
|
||||
|
|
@ -191,6 +192,7 @@ def _build_signature(
|
|||
detector_start_offset_m: float,
|
||||
) -> str:
|
||||
payload = {
|
||||
"derived_asset_version": DERIVED_ASSET_VERSION,
|
||||
"net_file": str(net_path),
|
||||
"net_mtime_ns": net_path.stat().st_mtime_ns,
|
||||
"route_file": str(route_path),
|
||||
|
|
@ -206,6 +208,28 @@ def _build_signature(
|
|||
return digest[:16]
|
||||
|
||||
|
||||
def _lane_permission_tokens(lane: sumolib.net.lane.Lane) -> set[str]:
|
||||
permissions = lane.getPermissions()
|
||||
if permissions is None:
|
||||
return set()
|
||||
if isinstance(permissions, str):
|
||||
return {token for token in permissions.split() if token}
|
||||
return {str(token).strip() for token in permissions if str(token).strip()}
|
||||
|
||||
|
||||
def _is_emergency_only_lane(lane: sumolib.net.lane.Lane) -> bool:
|
||||
return _lane_permission_tokens(lane) == {"emergency"}
|
||||
|
||||
|
||||
def _get_traffic_lane_indices(edge: sumolib.net.edge.Edge) -> List[int]:
|
||||
traffic_lane_indices = [
|
||||
lane.getIndex() for lane in edge.getLanes() if not _is_emergency_only_lane(lane)
|
||||
]
|
||||
if traffic_lane_indices:
|
||||
return traffic_lane_indices
|
||||
return [lane.getIndex() for lane in edge.getLanes()]
|
||||
|
||||
|
||||
def _load_ready_corridor_artifacts(
|
||||
manifest_path: Path,
|
||||
project_root: Path,
|
||||
|
|
@ -756,13 +780,7 @@ def _build_detector_additional(
|
|||
continue
|
||||
|
||||
edge = derived_net.getEdge(edge_range["edge_id"])
|
||||
traffic_lane_indices = [
|
||||
lane.getIndex()
|
||||
for lane in edge.getLanes()
|
||||
if "emergency" not in lane.getPermissions()
|
||||
]
|
||||
if not traffic_lane_indices:
|
||||
traffic_lane_indices = [lane.getIndex() for lane in edge.getLanes()]
|
||||
traffic_lane_indices = _get_traffic_lane_indices(edge)
|
||||
|
||||
local_position = global_distance - edge_range["start_m"]
|
||||
edge_pos_index = per_edge_pos_index.get(edge_range["edge_id"], 0)
|
||||
|
|
|
|||
Loading…
Reference in New Issue