From fb836e699ae961373c0fed65a042b6df7f34081c Mon Sep 17 00:00:00 2001 From: cbb <2625274797@qq.com> Date: Tue, 20 Oct 2026 22:55:49 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20#24=20=E8=AE=BE=E8=AE=A1=E5=AE=9A?= =?UTF-8?q?=E7=A8=BF=E2=80=94=E2=80=94=E5=85=88=E7=AE=97=E5=85=A8=E5=80=99?= =?UTF-8?q?=E9=80=89=E9=97=B4=E9=9A=99=E7=9F=A9=E9=98=B5=E5=90=8C=E6=97=B6?= =?UTF-8?q?=E4=BE=9B=E6=89=93=E5=88=86=E4=B8=8E=E8=AE=A4=E8=AF=81(?= =?UTF-8?q?=E9=9B=B6=E9=A2=9D=E5=A4=96=E5=87=A0=E4=BD=95=E8=B0=83=E7=94=A8?= =?UTF-8?q?)=EF=BC=8C=E5=8F=A3=E5=BE=84=E5=BC=BA=E5=88=B6=E8=B5=B0?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E8=AE=A4=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/探索日志.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/探索日志.md b/docs/探索日志.md index b50df90..a2e0a2b 100644 --- a/docs/探索日志.md +++ b/docs/探索日志.md @@ -108,6 +108,15 @@ - **对 `backoff` 的预期与判据**:全拒意味着"连第 1 步的端点或中点已经穿进障碍",缩步能不能救取决于**穿得有多深**(穿 0.1 mm 救得回,穿 3 mm 救不回)。这个数转储里没记(只记被选中那条),所以直接由 `backoff_mean`/`reject_all_mean` 来量: `reject_all_mean ≈ 原全拒次数`(=backoff_mean+brakes_mean,与轮次 33 cap 的 19.55 可比),`backoff_mean/(backoff_mean+brakes_mean)` 就是"缩步能救回的比例"。这是补跑(#22)要读的第一个数。 +## #24 的设计定稿:一次几何调用同时供打分与认证(不放松判据、不加成本) + +- 表面看有循环依赖:打分要用的"沿路间隙"目前只在安全层里算,而安全层只认证**排完序**的候选。破法是把顺序倒过来——**先对全部 K 条候选算一次 `2·commit_n` 点的间隙矩阵**,然后: + - 打分:`score = −e_end − gap_w · relu(gap_ref − 该候选沿路最小间隙)`(间隙不足的候选先降序,但**不淘汰**它,判据仍是后面的 `gap > 0`); + - 认证:直接用同一份间隙矩阵算 `plen`,**不需要再算第二次**。 +- 于是代价是**零额外几何调用**,但口径上要求走批量认证(`cert_batch=1`)——串行那条靠"第一条全安全就早停"省掉后面 K−1 次调用,一旦要按间隙排序就必须先看全部候选。这跟实时性是同一个方向:批量口径本来就是为压最坏情况(轮次 34:80.2→37.1 ms)而做的,所以这条杠杆顺带把部署口径推到批量那侧。 +- 读法预设(免得事后挑数):主判据是 `brake_rate`(全拒/规划次数,刚补上的分母)与 `success`/`time_ok_1p3`;`gap_ref` 取 0.5 mm 起(宽相位截顶值以内,见轮次 33 的口径教训:余量门限高于 cap 会恒假)。 +- A/B 脚本 `ml/runs/_gapscore_sweep.sh`(`gap_w = 0.5 / 2.0 / 8.0`,三档差一个数量级,看是否有拐点)。等链跑完、库能改之后实现+单测再跑。 + ## 代价探针的第一版量错了对象(仪表缺陷,已修) - 第一版 `ml/runs/_kcost_probe.py` 把"整次 `rollout(..., max_sec=0.041)` 调用"当成"一次规划"来量,得到 `K8/cb0 P50 = 144.8 ms`、`K16/cb0 = 139.6 ms` 这种**比轮次 34 的 33.5 ms/规划大四倍**的数——那里面包含每次调用的固定开销(`tasks_to_tensors`、生成器、首段同步),2 步的调用只做 1 次规划,所以固定开销占了大头。绝对值完全不可比,我先差点把它当"K 翻倍不花钱"的证据。