Files
mcm-26-b/docs/最优与基线实现对比.md
T
2026-09-12 16:58:25 +08:00

7.6 KiB
Raw Blame History

问题一至四:最优实现与基线实现对比

本文件是四问"最优实现 / 基线实现"对比的论文口径说明。代码与可复现 产物在仓库根目录 project/,运行 uv run python -m project.run 一次生成 project/results/summary.md 与逐问 q1.md … q4.md。本文件只摘录设计与结论, 数字以后者为唯一来源。

1. 交付物与目录

project/
├── README.md                 设计原则、各问对比设计、口径与边界
├── common.py                 方法描述 / 指标聚合 / 落盘 / 闭环装配
├── run.py                    统一入口(--question/--quick)
├── results/                  自动生成:q1.md/json … q4.md/json + summary.md
├── q1/  optimal.py baseline.py reference.py cases.py compare.py
├── q2/  optimal.py baseline.py reference.py region.py  cases.py compare.py
├── q3/  optimal.py baseline.py compare.py
└── q4/  optimal.py baseline.py compare.py

角色边界:

  • 最优实现:直接适配 src/mcm26b 中已由 pytest 固化的生产实现, 不重写算法;
  • 基线实现:同题下更朴素、但能独立跑通的对照,不共享最优实现的关键步骤;
  • 独立参考:与分析算法正交的数值/枚举标准,用于判定谁对谁错。

第三、四问统一走 LocalSimulator 内存回环(与官方 HTTP 协议同一边界), 真值只在评测机侧;有效性判定沿用项目口径: 全清 ∧ 无缺席误判 ∧ 正常 /exit ∧ 零异常 ∧ 逐微秒计时复算一致。

2. 四问方法设计对照

问 最优实现 基线实现 独立参考 主要指标
1 半平面交 + 顶点对精确直径 + Welzl MEC + 覆盖反例 网格采样 + 包围盒对角线代理直径/覆盖 大框半平面裁剪 + 暴力直径/MEC 状态、直径误差、覆盖准确率、耗时
2 保证接收盘内最小最坏后验半径(生产选点器) ① 垂直 1000 m 最大交会角;② 候选集 MEC 圆心 保证接收盘内 9×9 网格枚举 保证接收率、最坏后验半径、移动时间
3 bayes:粒子滤波 + 信息增益 + 滚动 2-opt grid:49 点网格 + 就近服务;seven:七点批量 冻结基准集 + 真值全清校验 全清率、虚拟时间及其分布
4 directional:31 点定向覆盖 + 联合信念 + 后备清除 问题三策略直接搬用(bayes / grid) 冻结基准集(core+boundary) 全清率、缺席误判、虚拟时间

3. 对比结果

3.1 问题一(40 个随机交会算例)

指标 最优 基线
状态判定准确率 100% 100%
直径平均绝对误差 0.000 m 4.583 m(最大 14.60 m)
直径圆覆盖判定准确率 100% 52.5%
平均耗时 0.11 ms 22.35 ms

固定示例进一步给出结构性反例(examples/q1,解析期望由 tests/test_geometry*.py 固化):

  • normal:直径 26.99 m,直径圆不覆盖定位区域(最优判否、基线判是);
  • triangle:直径 40.00 m 的等边三角形反例,最小包围圆半径 23.09 m > 20 m, 直径圆不覆盖;基线因"包围盒中心 + 对角线"恒判覆盖;
  • poor:近共线检测点 → 无界,最优/基线/参考一致判无界;
  • segment:零误差退化线段,最优判线段 D=100 m 且覆盖成立,基线退化为点;
  • empty:观测不相容 → 空集。

基线的两处结构性缺陷:直径用包围盒对角线在斜/细长区域系统性高估; 覆盖用包围盒中心圆则恒判"能覆盖",恰好丢掉问题一要考的反例。

3.2 问题二(30 个随机首次示向度,初始 ρ 均值 681.5 m)

方法 保证接收率 最坏后验均值 终值比 ρ'/ρ 移动均值
最优(保证盘内最小最坏后验) 100% 73.89 m 0.104 170.4 s
基线① 垂直 1000 m 最大交会角 0% 80.11 m 0.116 200.0 s
基线② MEC 圆心 100% 340.75 m 0.500 136.3 s
参考(保证盘内网格枚举) 100% 75.63 m 0.106 170.3 s

基线①说明"只追交会角"会在本题失败:首次角域可延伸到 1500 m, 真源在远端时第二点距离超过 1000 m,测量直接 no_signal。 基线②保证接收但后验几乎不收缩(≈0.5ρ)。最优在同等保证下把后验压到 0.10ρ, 且与网格参考几乎重合(生产采样质量足够)。

3.3 问题三(18 个冻结 core 场景,全向 10/13/16 源)

方法 有效局 全清率 虚拟时间均值 中位 检测均值 请求均值 位移均值
最优 bayes 18/18 100% 3188.7 s 3111.3 s 111.1 124.1 12338 m
中间 seven 18/18 100% 5361.7 s 5367.5 s 100.8 113.8 23508 m
基线 grid 18/18 100% 14935.7 s 15275.1 s 430.6 443.6 61550 m

配对变化:bayes 相对 grid 虚拟时间 −78.4%(18/18 场景更快), seven 相对 grid −63.7%。全部 54 局零异常、计时复算一致。

3.4 问题四(11 个冻结 core+boundary 场景,含朝外发射的边界定向源)

方法 有效局 全清率 缺席误判 虚拟时间均值 后备清除均值
最优 directional 11/11 100% 0 9069.9 s 24.8
基线 grid(49 点全向) 0/11 67% 0 18179.2 s 0
基线 bayes(七站全向缺席证明) 0/11 77% 24 3890.8 s 0

两条搬用基线的失效机理不同: bayes 用七站环的全向缺席证明,遇到背离圆心发射的边界定向源时 会把真源直接判成 ABSENT(累计 24 次 缺席误判,属"快而错",其虚拟时间 不可与最优直接比较);grid 的 49 点覆盖对定向源发现是完备的,但缺少 定向观测推理与 ≤20 m 后备清除,定位停滞只能停在 DETECTED("稳而不全")。 最优 directional 两种工况都是 11/11 全清、零误判,代价是多花时间与 平均 24.8 次后备清除。

4. 结论

  1. 问题一:生产几何内核对状态、直径、覆盖三项与独立参考逐案一致; 朴素包围盒基线在覆盖判定上只有约 52% 准确率,且对固定反例全错。
  2. 问题二:只有在"保证接收"约束内优化后验才既安全又有效;最优相对保守 基线把最坏后验半径从 0.5ρ 降到 0.10ρ,且与网格参考几乎重合。
  3. 问题三:bayes 在相同全清率下把虚拟时间降到 grid 的约 1/5, 且逐场景配对 18/18 更快,说明"负观测感知 + 信息增益选点 + 全局排序" 三步都产生净收益。
  4. 问题四:定向源的难点不是"发现"而是"证明缺席"与"失去信号后的清除"; 直接搬用第三问策略会得到 24 次缺席误判,不可接受。directional 的 联合信念 + 后备清除是 11/11 全清的关键。

写论文时建议按"基线为什么错 → 最优补了哪一步 → 独立参考如何判定"的三段式 展开,并声明:随机分布是测试假设;基线时间快于最优的场景(如问题四 bayes) 不构成有效性优势,因为该局基线未完成全清任务。

5. 复现

uv run python -m project.run                # 四问全部(约 3–4 分钟)
uv run python -m project.run --question 1   # 只跑问题一
uv run python -m project.run --quick        # 缩小算例/基准集规模
uv run pytest tests/test_geometry.py tests/test_geometry_certificates.py -q  # 几何回归