From 01f26913bd724e61412ffbe9343ab495dfa85af8 Mon Sep 17 00:00:00 2001 From: xuwang Date: Tue, 9 Jun 2026 17:26:32 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E4=B8=8A=E6=AC=A1=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/eva_common.py | 46 +++++++++++++++------------------------------- 1 file changed, 15 insertions(+), 31 deletions(-) diff --git a/app/eva_common.py b/app/eva_common.py index bf1cc73..d471e19 100644 --- a/app/eva_common.py +++ b/app/eva_common.py @@ -740,49 +740,33 @@ def calc_inroad_imbalance_index(inroad_delay_pb_list): def _classify_angles_to_turn_types(angles, is_merge=False): - """ - 自适应阈值转向分类。 - 从实际角度数据中提取候选阈值,优先填满更多转向类型,其次选择最接近默认阈值的方案。 - """ if not angles: return set() default_straight = 30 default_uturn = 150 - abs_angles = sorted(set(round(abs(a)) for a in angles)) - - straight_candidates = set() - uturn_candidates = set() - for aa in abs_angles: - if 20 <= aa <= 50: - straight_candidates.add(aa) - if 135 <= aa <= 165: - uturn_candidates.add(aa) - straight_candidates.add(default_straight) - uturn_candidates.add(default_uturn) - straight_candidates = sorted(straight_candidates) - uturn_candidates = sorted(uturn_candidates) - - def classify(straight_thr, uturn_thr): - types = set() - for a in angles: - if abs(a) <= straight_thr: - types.add(0) - elif abs(a) >= uturn_thr: - types.add(3) - elif a > 0: - types.add(1 if is_merge else 2) - else: - types.add(2 if is_merge else 1) - return types + abs_angles = sorted(set(abs(a) for a in angles)) + straight_candidates = sorted(set(abs_angles + [default_straight])) + uturn_candidates = sorted(set(abs_angles + [default_uturn])) best_types = None best_score = (-1, float('inf'), float('inf')) for s_thr in straight_candidates: for u_thr in uturn_candidates: - types = classify(s_thr, u_thr) + if s_thr >= u_thr: + continue + types = set() + for a in angles: + if abs(a) <= s_thr: + types.add(0) + elif abs(a) >= u_thr: + types.add(3) + elif a > 0: + types.add(1 if is_merge else 2) + else: + types.add(2 if is_merge else 1) score = (len(types), -abs(s_thr - default_straight), -abs(u_thr - default_uturn)) if score > best_score: best_score = score