This commit is contained in:
Horldsence
2026-09-11 11:36:08 +08:00
parent 2d2a9a4e6a
commit a18a139a1d
93 changed files with 9245 additions and 3806 deletions
+36 -22
View File
@@ -14,12 +14,12 @@
1. **感知层**:每频道一个贝叶斯后验(网格幸存集),融合全部正/负观测;
2. **决策层**:站点扫频、定位测量、清除三类任务统一建表,开放路径
最近邻 + 2-opt 排序,每个动作后滚动重排(动态 TSP);
3. **选点层**:定位测量点按期望后验半径 + λ·移动时间评分(信息增益贪心
的半径代理形式),直指 20m 清除证书阈值。
3. **选点层**:定位测量点按信息增益(期望 log 幸存占比,默认)或期望
后验半径 + λ·移动时间评分,直指 20m 清除证书阈值。
## 2. 网格幸存集滤波与真源保留定理
每频道维护 Ω 上间距 h 的网格(h=25m,约 1.6 万格),`alive` 为幸存格
每频道维护 Ω 上间距 h 的网格(h=14.65m,约 4.7 万格),`alive` 为幸存格
集合。Voronoi 裕量 m = √2/2·h 是格心到格内任一点的最大距离;所有删除
判定都内缩 m,即**仅当整格与可行集不相交时才删格**:
@@ -56,15 +56,17 @@
评分(`BayesConfig.score_mode`):
- `radius`(默认):期望后验半径 —— 对 K 个代表假设(幸存格均匀抽样)
各自模拟一次测量的幸存分支,分支半径用幸存子采样的质心最大距离近似,
r_eff~U(1000,1500) 的不确定性解析积分(p_no_signal = (d−1000)/500);
总分 = E[半径] + λ·移动秒数(λ=0.1);
- `entropy`:期望 log 幸存占比(香农信息增益在均匀先验下的形式)。
- `entropy`(默认,Optuna 选定):期望 log 幸存占比 —— 香农信息增益在
均匀先验下的形式。对 K 个代表假设(幸存格均匀抽样)各自模拟一次
测量的幸存分支,r_eff~U(1000,1500) 的不确定性解析积分
(p_no_signal = (d−1000)/500);总分 = E[log 幸存占比] + λ·移动秒数;
- `radius`:期望后验半径 —— 同样的分支模拟,但以幸存子采样的质心最大
距离为半径代理,总分 = E[半径] + λ·移动秒数。更直接瞄准证书阈值,
在 entropy 模式下半径项与信息项量纲失配的场合可作为备选。
λ 与半径同量纲,量级必须小:λ 过大时终局阶段"走 300m"的代价压过
"半径 35m→25m"的收益,选点器原地重测、收敛停滞(消融实测 λ≥0.5 时
单源定位步数翻倍)。
两种模式的 λ 量级都必须小:λ 过大时终局阶段"走 300m"的代价压过
"后验收缩"的收益,选点器原地重测、收敛停滞(消融实测 entropy+λ=0.01
显著优于早期 radius+λ=1.0 组合,单源定位步数从 ~7 降到 ~2)。
## 4. 统一任务循环(动态 TSP)
@@ -79,21 +81,26 @@
移动 + 换频 + 动作耗时;终点自由不回起点)。这是 A2"站内最近邻服务
队列"的推广:消融显示距离缩短约 24% 是主要收益来源。
停止条件与基线一致:清满 16(数量上界)或全部频道 CLEARED/ABSENT;
`persistent_search` 开启时找全后继续复扫到限时(复扫读数同样进 PF)。
停止条件与基线一致:清满 16(数量上界)或全部频道 CLEARED/ABSENT,
`stop_reason=all_resolved` 即停并 `/exit`——**虚拟时间即评测成绩口径**
[用户决策修订 2026-09-11]。复扫保险模式(`mcm26b run --persistent`,
原默认行为):找全后继续只复扫未清除频道直到清除数达 16、实机预算
耗尽或虚拟安全余量(`search.virtual_reserve_s=10000s`)不足,供需要
"防缺席证明假设偏差"保险的场景显式开启。
## 5. 消融结果(自建模拟器,persistent 关)
## 5. 消融结果(自建模拟器,persistent 关,对齐找全口径)
12 随机场景(6 种子 × 10/16 源)+ 2 边界场景,与 SevenBatch 配对:
12 随机场景(6 种子 × 10/16 源)+ 2 边界场景,与 SevenBatch 配对;
bayes 参数为 Optuna 回填后的库默认值:
| 指标 | SevenBatch | bayes |
|---|---|---|
| 有效运行(全清+缺席正确+零异常+正常退出) | 14/14 | **14/14** |
| 平均虚拟时间 | 5352.7s | **4277.6s(−19.5%)** |
| 配对降幅(最差 / 最好) | — | +1.4% / −28.1% |
| 平均移动距离 | 23413m | **17820m(−24%)** |
| 平均检测次数 | 102.4 | 109.6 |
| 单局实机计算墙钟 | 1.3s | 1.0s |
| 平均虚拟时间 | 5352.7s | **3726.2s(−30.0%)** |
| 配对降幅(最差 / 最好) | — | +7% / −41% |
| 平均移动距离 | 23413m | **15050m(−36%)** |
| 平均检测次数 | 102.4 | 110.0 |
| 单局实机计算墙钟 | 1.3s | 1.9s |
复现:`uv run python scripts/benchmark_q3_bayes.py --seeds 0,1,2,3,4,5`
(逐场景数据与场景 JSON 见 `output/q3/bayes-ablation/`)。
@@ -103,8 +110,15 @@
`scripts/tune_q3_bayes.py`:TPE(dev 依赖 `optuna`,缺失时自动退化为
随机搜索),目标 = 场景子集平均虚拟时间 + 10⁶×失败惩罚。搜索空间:
λ、代表点数、子采样规模、网格间距、站点环半径、2-opt 轮数、评分模式。
输出 `output/q3/bayes-tuning/best_params.json`,人工复跑全量基准确认
后再回填 `config.BayesConfig` 默认值。
最优组合(entropy 评分、λ=0.0105、h=14.65m、代表点 7、2-opt 4 轮)
已按验收流程回填为 `config.BayesConfig` 默认值:全量基准 3726s/−30.0%
优于回填前的 4277s/−19.5%。两处人工修订:
- `station_ring_radius_m` 保留 1200(Optuna 建议 1159.7 虽再快约 60s,
但七站排除盘对最外圈格心的覆盖差 3.3m,PF 无法独立证明缺席,
只能靠覆盖账本兜底——设计性质优先于 1.7% 的均值差异);
- 评分模式在 entropy(信息增益)与 radius(期望后验半径)之间由调参
数据决定,两者实现均保留(`BayesConfig.score_mode`)。
调参记录见 `output/q3/bayes-tuning/best_params.json`。
## 7. 已知边界
+3 -2
View File
@@ -8,8 +8,9 @@
> **延伸实现(2026-09-11)**:本文规划的无信号负观测更新、开放路径 2-opt
> 任务排序等已落地为贝叶斯闭环策略 `bayes`(网格幸存集滤波 + 信息增益
> 选点 + 滚动任务调度),自建消融相对本文七点批量策略平均虚拟时间再降
> 19.5%。设计、严格性证明与消融数据见 [algo-3-bayes.md](algo-3-bayes.md)。
> 选点 + 滚动任务调度,参数经 Optuna 回填),自建消融相对本文七点批量
> 策略平均虚拟时间再降 30.0%(均值 3726s)。设计、严格性证明与消融数据
> 见 [algo-3-bayes.md](algo-3-bayes.md)。
## 1. 问题界定与思路来源