type
Post
status
Published
date
Sep 13, 2026
slug
cumcm2026-b-retrospective
summary
从测向误差与几何反例,到全向搜索、定向覆盖、最终算法与六次正式测试。约 2.7 万字、122 处数学表达式、10 处图像与动画,记录一次看不到全局最优、却必须把系统真正做完的数模经历。
tags
数学
竞赛
思考
category
技术分享
icon
password
阅读指南 · 19 章 / 约 2.7 万汉字
① 从零入门 参赛感受 · 规则与反馈 · 完整计费
② 理解几何 误差锥与半平面 · 直径的反例 · 四圆盘选点 · 精度与路程
③ 读懂算法 全向发现 · 联合调度 · 定向覆盖 · 成对阴性 · 最终决策 · 有限终止
④ 查看证据 实验分层 · 六次正式测试 · 用量统计
⑤ 回到个人 最后优化为什么难 · 提交与经验 · 概念地图与资料
正文含原生数学公式、几何配图和真实动作 GIF;文末附可离线打开的交互阅读版。
<p><strong>交互演练 · 把最终算法放进浏览器</strong></p><p><a href="https://fxy-b-signal-lab.me-5a3c.chatgpt.site">打开 B 题信号搜索实验室 ↗</a></p><p>随机生成 10—16 个干扰源,在你的电脑上实际运行最终 Q3 / Q4 算法。可以选择边界密集或聚集分布、调节定向源比例与误差场,暂停、单步、拖动时间轴,观察测向锥、可行域、轨迹和逐项代价。点击已知信道,再用地图 ◎ 按钮放大几何细节。</p><p>这是自建合成演练,不是正式测试成绩。首次运行需加载 Python / NumPy 环境;计算在读者浏览器内完成,观察者真值不会参与策略决策。网站与运行必需的最终算法源码已获授权公开。</p>交互演练 · 把最终算法放进浏览器
打开 B 题信号搜索实验室 ↗
随机生成 10—16 个干扰源,在你的电脑上实际运行最终 Q3 / Q4 算法。可以选择边界密集或聚集分布、调节定向源比例与误差场,暂停、单步、拖动时间轴,观察测向锥、可行域、轨迹和逐项代价。点击已知信道,再用地图 ◎ 按钮放大几何细节。
这是自建合成演练,不是正式测试成绩。首次运行需加载 Python / NumPy 环境;计算在读者浏览器内完成,观察者真值不会参与策略决策。网站与运行必需的最终算法源码已获授权公开。
01 写在前面:我为什么觉得这道 B 题特别难
“今年的 B 题,和 A、C 题以及往年的题,根本不是一个难度。”
这是我做完这次比赛后最直接的感受。这里的“难度”是我的参赛体感,不是对所有历史题目做过统一评测后得到的排名。但我希望把这句话展开:究竟是什么让这道题如此难?难在公式长,代码多,还是运行时间紧?
我的答案是,它把几个通常可以分开处理的问题绑在了一起。你既要研究测向数据所允许的全部几何位置,又要决定下一步去哪儿;既要把发现、定位和清除放进同一个流程,又要给出“没有遗漏”的依据;既要优化平均速度,又不能让某个不走运的输入把程序拖进无穷循环。到最后,局部的一点进步,很容易碰坏另一个环节的前提。
我后来还有一句更直接的感受:“特别是最后的算法设计,我觉得根本就是没有最优解,光靠人脑也想不出优化方案。”数学上,我们没有证明最优解不存在。更准确地说,我们没有求得、也没有证明全局最优;当各种决策相互影响时,单靠直觉,已经很难找到一个稳定更好的组合。后文会专门解释这种感觉从哪里来,以及 AI 在其中到底帮了什么忙。
这篇文章比正式论文更慢地展开。论文需要在有限篇幅内陈述模型、证明和结果;这里给那些第一次接触题目的人补上被压缩的中间台阶:为什么想到这个量,为什么这个推理成立,为什么一个很自然的判断反而不成立。如果你只看最终的两行成绩,会错过这道题真正有意思、也最磨人的部分。
全文以我提供的最终提交材料为准:《论文源码最终版.pdf》共 32 页,支撑材料为 139.rar。采用方案是问题三的稀疏环联合调度、问题四的 21 站覆盖与锚定定位。过程中出现过的其他研究版本,不因为目录更新或数字更漂亮就自动成为本文主角。我们讨论最终留下来的系统,同时保留它尚未解决的问题。
先把结果放在这里,后面再解释它们意味着什么。问题三三次正式测试累计清除 36 个源,逐局每源虚拟耗时均值为 280.120 秒;问题四累计清除 42 个源,对应均值为 403.339 秒。正式测试没有公开真实源总数,所以这两行不是“官方全清率”的另一种写法。六份日志的上传状态有归档证据,但上传成功也不是获奖或评分结果。
下面的回放来自 Q4 第三次正式测试。青线连接机器狗实际发出的动作位置,橙点标记成功清除动作发生的位置。它们不是隐藏的干扰源坐标;一次清除允许有 20 米距离,因此把清除位置直接当成真实源,会给动画加上日志中并不存在的信息。回放按动作序列等间隔播放,虚拟时间取日志读数,不能用动画的快慢推断现实运行速度。
阅读时可以记住贯穿全文的四个问题:目前知道什么?还可能是什么?下一步做什么?凭什么现在能结束? 第一问主要回答第二个,第二问着重回答第三个,后两问把四个问题接成了一套真正行动的系统。

02 第一层:先把题目翻译成一个可以运行的世界
想象一个圆形区域,半径为 1800 米,里面藏着若干静止的无线电干扰源。机器狗可以移动、选择频道检测、尝试光学定位并清除目标。题目给出的不只是几个坐标计算任务,而是一个带反馈的行动环境:你发出动作,环境返回有限的信息,然后你根据这些信息决定下一步。
第三、四问中,真实源数在 10 到 16 之间。频道从 1 到 20 中选取,而且一个频道至多对应一个源。这使“频道”成为追踪目标的标识:今天在这里收到频道 7,下一步在另一处又收到频道 7,在题设静态模型中,两次观测约束的是同一个源。反过来说,没有出现的频道既可能没有源,也可能只是还没被发现。
每个源的有效接收半径在 1000 到 1500 米之间。1000 米是保证接收距离的下界;1500 米是一次有效观测能够给出的最大距离信息。这两个数不能混用。拿 1500 米去设计“保证能发现”的站点覆盖,会把接收半径实际只有 1000 米的合法源漏掉;把一次已接收源的距离上界写成 1000 米,又会误删仍然可能的远处位置。
在问题三中,源是全向辐射,只要距离进入真实接收半径,就有接收条件。问题四允许定向源:除了距离足够近,测站还必须位于源的某个闭 180 度发射半平面。这里“闭”意味着边界也包含在接收侧。这个小词会进入后面的凸包证明,并不是可以随意省略的修饰。
三种检测反馈到底告诉我们什么
正常示向反馈给出一个方向角,同时说明机器狗在该源接收范围内,且距离大于 5 米。方向有误差,因此它并不告诉你一条精确射线上的点,而是告诉你“真实方向位于报告方向左右一定角度之内”。这是一条几何约束,不是一个坐标答案。
near 表示位于辐射范围内且距离不超过 5 米。题目的光学清除距离是 20 米,因此这种反馈可以直接进入原地清除分支。但程序仍然必须等待清除成功响应,才能把该频道登记为已清除。知道自己理论上应该成功,与系统已经确认动作成功,是两个状态。
no_signal 只表示此处没收到这个频道。在全向条件下,它可以帮助排除距离太近的位置;在定向条件下,可能是距离不够,也可能只是位于发射背面。相同的字符串,在两种物理模型下携带的信息不同。后面 Q4 的难度,相当一部分就来自这条语义变化。
固定误差为什么这么关键
测向误差在给定范围内,而且同一地点的误差固定。若你站在同一点连续测十次,不能把它想象成十个独立的随机扰动,然后平均到接近真值。题目没有提供这种随机模型。重复得到同一种偏差,并不会自动产生十倍的信息。
一个粗略的尺度直觉是:在距离 1000 米处,1 度带来的横向偏移约为 17.45 米;在 1500 米处约为 26.18 米。这里用的是“距离乘角度的弧度近似”,用于理解尺度。两侧都允许偏转,因此整条可能带的宽度还要考虑上下两边。仅有一次方向观测,往往不足以支撑 20 米清除。
减少不确定性的可靠办法,是换一个有意义的位置再观察,让两组约束相交,而不是在原地无限重复。换位置本身又要花移动时间,于是从最初的几何问题开始,信息与成本就已经纠缠在一起。
圆域限制谁,程序知道多少
1800 米限制的是源的位置,不是机器狗的运动边界。第四问的外环站略在圆域之外,恰恰是在利用这个差别。若不先弄清楚规则,就可能把合法的覆盖设计误判成越界,或者反过来对机器狗施加题目没有要求的限制。
源位置、接收半径、发射方向和真实总数,都不是在线策略可以偷看的输入。合成实验和官方演练在结束后可能提供真值,方便评价;那也不能把事后看到的信息倒灌进搜索或停止判断。回看一条路线时知道终点在哪里,和行动当时能否知道,是完全不同的事情。
最基本的正确性要求因此是:只根据公开反馈更新认知,只根据已接受动作更新位置和时间,只根据成功响应更新清除集合。一个请求被拒绝,不能假装机器狗已经移动;一次失败清除,不能假装目标已经消失;接口异常,更不能被翻译成“任务完成”。这些看起来像工程细节,但它们直接决定数学推导是否还对应真实运行。
把这个世界理解清楚,才适合开始推公式。后面任何一个“显然”,都应该能追溯到这里的一条规则。
03 第二层:先算清代价,再讨论什么叫更好
很多优化争论,其实从一开始就没有在比较同一个目标。有人觉得检测次数少就是快,有人盯着轨迹长度,有人只看程序在电脑上跑了几秒。B 题需要先把这些时间放回各自的位置。
设 L 为全部移动距离,单位米;M 为检测次数;W 为实际发生的频道切换次数;A 为光学清除尝试次数,无论成功失败都计入;K 为成功清除的不同源数。机器狗速度为 5 米每秒,检测一次 5 秒,切频一次 1 秒,光学定位尝试 3 秒,成功清除另加 2 秒。因此完整虚拟耗时为:
这个公式的好处,是它把每个策略决定都变成可以追问的费用。一次额外补测可能减少后续移动,但补测本身不是免费的;一次原地试探失败,只损失 3 秒光学费用,如果为了试探专门绕了路,还必须加上那段移动;一次顺路测量不新增测点,也照样要交检测和可能的切频费。
一个完整的小账本
例如一项教学动作序列,累计移动 1000 米,检测 4 次,实际切频 3 次,光学尝试 2 次,其中清除了 1 个源。其费用是 秒。这只是解释计费的构造例,不是某局正式成绩。两次光学尝试意味着有一次失败,不能只给成功的那次记账。
再考虑 K 固定为 12 的局部比较。额外走 100 米,增加 秒每源;多一次不切频检测,增加 秒每源;多一次失败光学尝试,增加 秒每源。如果检测还切换频道,再增加 秒每源。这解释了为什么“敢不敢试探一次”和“要不要绕路补测”可能具有完全不同的成本量级。
但这不是让程序永远不检测、只管走近清除。检测能改变后续行动的依据,一次花掉 6 秒的观测,可能避免数百米甚至更长的无效移动。优化需要比较完整后果,而不是按单步动作价格排序。便宜的动作,如果不能带来有用信息,重复一百次仍然很贵。
两种平均数不能互换
第 i 局成功清除了 K_i 个源,总虚拟时间为 T_i,该局的每源时间是 。正式论文主要报告各局比值的算术平均:
另外一个常见量是 ,它把所有已清除源放在一起平均。两者都可以有意义,但权重不同。前者每局权重相同,后者清除源更多的局占更大权重。
用一个教学例子就能看清差别:第一局 100 秒清除 10 个,得到 10 秒每源;第二局 300 秒清除 15 个,得到 20 秒每源。局均 J 是 15 秒每源,总体比值 J_pool 是 秒每源。若把这两个数用同一个“平均耗时”标签混着写,读者很难知道变化来自算法,还是来自统计方式。
本项目最后的 280.120 与 403.339,采用逐局等权的口径。正式表保留每局清除数,就是为了让读者能够重新算出这个平均,而不是只接受一个无法拆开的汇总数字。
两套时钟各回答一个问题
虚拟耗时衡量题目定义的任务费用。程序现实运行时间衡量代码和接口在实际计算机上花了多久。模拟器可以在很短现实时间里完成一段需要大量虚拟移动时间的操作。因此一局现实只跑约三秒,与虚拟耗时几千秒,并不矛盾。
最终论文用正常进入与退出响应中的现实时间戳之差作为程序运行时间,包含接口调用等待。这不是纯 CPU 时间,也不等于手动打开界面、点击准备、导出文件的整段人类操作时长。若把不同起止点的秒数放在一张表里比较,运行再快也解释不清楚。
还有一项容易漏掉的费用:清除最后一个已知目标以后,为确认没有未知源而继续做的必要扫描。站在拥有隐藏真值的事后视角,你可能认为这些扫描“多余”;在线策略当时并不知道真实总数,它们可能正是可靠停止所必须支付的代价。因此完整计费不能截断在最后一次成功清除。
效率与完成性是两条轴
一个方案平均时间很小,却会在部分合法输入上卡住,不能只靠前半句说明自己更好。另一个方案有有限完成保证,但耗时上界极其宽松,也不能把“能结束”包装成“足够快”。我们需要分别报告完成依据、观测到的效率和实现的异常范围。
这也是本文后面一直坚持区分的三层:覆盖与有限兜底负责在前提成立时把任务做完;评分与调度负责尽量节省费用;实验负责记录某个具体实现在哪些案例上做到了什么。它们互相支持,却不能互相替代。
04 问题一上:从一条有误差的方向,到一个可以计算的集合
第一次看“多次测向交会”,最容易画出几条直线,然后取交点作为目标。但方向一旦有误差,几条线未必交于一点;即便勉强做一个最小二乘交点,也还没有回答:所有允许误差下,真实目标到底可能落在哪里?
最终方案采用集合思路。每条观测给出一块允许区域,真实源必须同时满足所有观测,所以把这些区域取交集。这里并不需要给误差指定高斯分布,也不需要把某些位置解释成更高概率。只要误差确实落在界内,兼容集合就应保留真值。
为什么是前向锥,而不是一条无限直线
设第 i 次检测站为 S_i,报告方向为 θ_i,误差半角为 α。理论推导取 度。方向角按东向为零、逆时针增加。定义 ,表示角度 β 对应的单位方向向量。两个边界方向就是 与 。
从站点指向候选位置 X 的向量是 X−S_i。合法位置必须位于下边界左侧、上边界右侧。这两个条件一起,保留报告方向前方的窄角锥;它们不会把与报告方向相反的整条直线也算进去。丢掉“前向”二字,会允许实际不可能的背向交会。
用叉积判断左右,省掉斜率的麻烦
对二维向量 ,定义 ()。它是有向面积的两倍:正号意味着 b 位于 a 的左侧,负号意味着位于右侧,零表示共线。
因此单次观测约束可以写成:
可以拿最简单的水平例子检查符号:a=(1,0) 向东,b=(0,1) 向北,叉积等于 1,北方确实是向东走时的左侧。记住这个检验方法,比死记两行不等号可靠。
使用叉积还有两个直接收益。其一,竖直边界不需要写无限斜率;其二,报告角跨越 0 度时不必增加一套比较分支。比如 359.5 度附近的两条边界,在坐标向量里仍然只是两条普通直线。几何对象没有变,角度的显示方式也不应改变程序逻辑。
A 与 b 分别是什么()
把下边界约束展开,设 ,可得:
上边界设 ,则有:
于是两行合起来就是 。A_i 的每一行是边界的外法向量,指向违反约束的一侧;b_i 是由站点位置确定的常数。不是机器狗要去估计 A 或 b,真正未知的只有候选坐标 X。
多次观测时,把各站的两行依次堆起来,得到 。所有满足这些线性不等式的点,就是纯测向交集 P。半平面都是凸集,交集仍然凸。这意味着区域内任意两点之间的线段也留在区域内,后面的顶点检查正是建立在这一性质上。
不要一上来就找“多边形面积”
交集不一定是一个漂亮的二维多边形。它可能为空:没有位置能同时满足全部输入;可能无界:沿某些方向还能无限延伸;也可能退化成一条线段或一个点。程序若默认“输入若干角度就一定有正常多边形”,就会在这些情况上给出貌似正常的伪答案。
最终第一问先检查非空性,再判断有界性。非空性可以用一个几何观察理解:若闭凸多面集合非空,那么它到原点的最近点存在。这个最近点若不在原点,就只能落在某条边界的垂足或若干边界的交点。检查原点、垂足与两两边界交点是否满足全部不等式,便能在二维结构中寻找可行点。
无界性看的是有没有一个非零方向 d,使 。若有可行点 X₀,那么 对任何 都保持可行,可以一直走下去。这里 d 是“允许无限延伸的方向”,不是另一个具体源位置。二维里可检查坐标轴方向及约束边界的平行方向,识别这样的延伸锥。
当区域非空且有界,再保留满足全部约束的边界交点,得到顶点集 V。单点时直径为零,线段时取端点距离;普通凸多边形的直径,是顶点两两距离的最大值。直觉上,若一个最远点躲在边的内部,总能沿线段把它推向某个端点而不减小最大距离;凸性把无穷多个位置的问题压缩到了有限顶点上。
纯测向区域和物理兼容区域要分清
第一问主要研究由测向产生的 P。若额外加入目标源域圆或接收距离圆,区域可能进一步变小,但其边界也可能包含圆弧。这时不能继续假装只有直线交点就能描述全部区域。
后两问会使用保守凸外包,用多边形从外侧包住圆形约束,方便统一处理。那是出于保证性和计算结构的另一层选择。理解第一问时先不要把这些先验偷偷混进去:否则你评价的就不再是同一个定位对象,也无法公平比较第二测点带来的纯测向改善。

05 问题一下:直径 40 米,为什么仍然清除不了
得到定位区域之后,机器狗还不能随意找一个“中心”去清除。题目要求的是距离真实源不超过 20 米,而真实源只知道落在一个集合里。因此一次有保证的清除,需要找到某个圆心 c,使整个兼容集合都落在以 c 为圆心、半径 20 米的圆盘内。
这个要求比“集合里任意两点相距不超过 40 米”更强。前者要用同一个圆心同时照顾全部位置,后者只是对每一对位置分别限制距离。成对关系足够好,不自动意味着存在一个共同中心。
先检查直径中点圆
设 A、B 是区域中最远的两点,距离为 D。如果一个半径 D/2 的圆能包含它们,那么 A、B 必须恰好是这个圆的一对直径端点,圆心只能是中点 。没有第二个可以调整的中心。
所以“是否存在直径为 D 的覆盖圆”,可直接检查所有顶点 v 是否满足 。若全部满足,圆盘的凸性会把顶点的全部凸组合也包含进去,于是包住整个多边形;如果有一个顶点在外面,这个半径下又没有别的可选圆心,答案就是不能。
注意这个结论只针对半径固定为 D/2。它不妨碍一个稍大的圆用另外的圆心覆盖区域。这个差别正好引出最小包围圆。
等边三角形把错误直觉击穿
取 。这是边长 40 米的等边三角形,它的直径就是 40 米。以 AB 中点 (20,0) 为圆心、20 米为半径,第三个顶点距离圆心 米,明显在圆外。
那么换一个中心可不可以让 20 米够用?等边三角形的最小包围圆就是外接圆,其半径为 米,仍然超过 20 米。因此不是中点选得笨,而是不存在任何一个半径 20 米的圆能同时包住这三个点。
只画一个三角形,还不算完全回应赛题。还需要证明它真能由合法测向数据产生。最终论文给出的三个站点是 ,报告方向分别为 1、121、241 度。三个误差锥的下边界沿着三角形的三条边,另外三条上边界没有截去它,六个半平面的交集恰好就是这个三角形。
再取真实源 。它到三个站的距离均约为 1020.065 米,实际方向与报告方向的误差约为 0.351405 度,落在 1 度范围内。选择允许的 1500 米接收半径,相关位置也满足源域等约束。这样,反例不仅在几何图上成立,也在题目的合法输入里成立。
这一步非常重要。模型优化中经常会遇到“我构造了一个极端图形”的论证,但那个图形是否能被系统真实产生,必须另行核验。这里把反例与合法观测连起来,才真正否定了原判断。
最小包围圆如何计算
定义 。意思是:给定一个候选中心,先看它到所有顶点最远的距离;再在全部中心里,让这个最远距离尽可能小。它是在最坏位置意义下挑一个最好的中心,不需要任何概率假设。
平面上,最小包围圆至多由三个支撑点确定。一个点时半径为零;两个点确定的候选是中点圆;三个非共线点确定外接圆。于是可以枚举这些候选中心,对每个中心重新检查全部顶点,选半径最小的有效圆。三个点构造出来的圆不一定包住其他点,所以“回查全部顶点”不能省。
为什么不需要四个支撑点?直观上,如果圆还没有被两端对顶或三个方向共同顶住,圆心就仍有可以移动并缩小半径的余地。二维里三个方向足以限制这种移动。最终论文以最小包围圆的几何性质作为依据,程序则通过有限枚举和回查落实。
对于非空有界的平面定位区域,有 。左侧来自最远点必须同时装进圆里;右侧的最紧情况由等边三角形达到。若最小圆由三个点支撑,三个相邻圆心角中至少一个不小于 120 度,对应弦长至少为 ,而弦长不能超过区域直径 D,于是得到上界。
这给出三个非常清晰的判断区间: 米时一定不够; 米时一定够;处在两者之间时,只看直径无法决定,必须继续计算覆盖半径。前面那个三角形就站在“不够但直径没超 40”的边界上。
验证做到了哪一步
论文的双站正例得到直径 24.692713 米、最小覆盖半径 12.346356 米,与三站反例形成对照。程序还对 60 组输入各检查 12 个方向,将多边形最大投影与线性规划结果比较,共 720 次,最大差异约 1.1369×10⁻¹² 米;40 组包围圆核对的最大上下界间隙约 1.5072×10⁻⁶ 米。
这些数字说明有限算例中的独立核验相容,不意味着所有浮点输入都已有形式正确性保证。极薄区域、几乎平行的边界、接近矛盾的约束,仍可能对容差敏感。最终程序给出相应诊断,没有把“加了一点容差”说成“彻底解决所有退化几何”。
第一问留下来的核心资产,不只是一个计算圆的函数,而是后续行动必须遵守的尺度:用覆盖整个兼容区域的证据决定有保证清除,用成功响应登记完成。

06 问题二上:保证下一站还有信号,为什么只要四个圆盘
第一问是在已经获得观测之后解释它们;第二问开始主动设计观测。我们站在第一次检测位置 S₁,得到方向 θ₁,接下来应该去哪儿?理想的新站既不能失联,又要让两条视线形成足够好的交会角,还不应走得太远。
为了避免每次都背着全局坐标,把 S₁ 当作局部原点,把报告方向当作横轴正方向。第二测点写为 :a 表示沿报告方向前进多少,b 表示向侧面移动多少。最后再旋转平移回全局坐标即可。这个坐标变换没有改变几何,只是让每个数字的含义更直接。
真实源可以写成 ,其中 , 度。第一次正常示向没有告诉我们 r,只告诉我们它不在近距提示范围里,并且处于实际接收半径 R 内。R 本身未知,但在 1000 到 1500 米之间。
保证接收是一个“对所有”的要求
如果某个候选源位置距离第一次测点为 r,与这条信息兼容的最小接收半径就是 。这里不是假定真实半径一定等于这个数,而是说它最小可以这么小。你要保证下一站接收,就必须在最不利的允许半径下也接收。
因此,对所有允许的 r 和 φ,都应满足:
这原本是一族无限多个圆盘约束:每个可能的源位置都是一个圆心,对应一个必须能到达的接收范围。表面上看,似乎要把全部距离和全部方向都采样一遍才能判定。最终推导把它压缩成了四个圆盘,而且是连续条件下的等价描述。
四个圆盘的圆心分别为 ,半径都为 1000 米。第二测点必须处于它们的交集中。5 米这个端点按从大于 5 米一侧趋近的极限理解,不表示正常示向可以在恰好 5 米时发生。
第一步:为什么方向只看两端
令 。第二站到候选源的距离平方为 。对固定 r,距离最大等价于 q 最小。
由两个以 为圆心的圆盘约束,可以推出 。将它们相加,就能得到 。于是当 时,,右侧正是两个端点投影中的较小者。所以最坏方向出现在 或 ,无须逐个检查中间方向。
这里的论证顺序值得注意:不是任何位置都能凭直觉说“最坏角度在边缘”。我们先从圆盘约束推出 a 的符号,再建立端点的最坏性。若跳过这个条件,类似的端点简化在别的问题里未必成立。
第二步:为什么短距离只看 5 与 1000
当 时,最小允许接收半径固定为 1000 米。对固定方向,距离平方是 r 的二次凸函数。凸函数在闭区间上的最大值可以在端点取得,因此只需要检查 r 接近 5 米以及 米。
把两个距离端点和两个方向端点组合起来,恰好是四种极端情形。四个圆盘并不是经验挑出的四个“典型源”,而是连续最坏条件经过几何化简后的结果。这是证明与密集采样的区别。
第三步:为什么 1500 不增加第五个圆盘
当 时,首次能够接收已经意味着真实半径 。若我们能保证 ,那么由三角不等式,
而 r 本身就是这一情形下真实接收半径的下界,所以仍能接收。远处的可能源,虽然更远,但第一次接收同时也提供了“它的半径至少这么大”的信息。把这两条信息一起使用,才会发现 1500 米没有引入新的约束。
这是我觉得第二问推导最值得讲清楚的地方:如果只记住“源距可能到 1500”,却忘了“它已在第一次被接收到”,就容易给模型加上过强而无必要的限制。条件信息不能拆开各自取最坏,再把彼此不相容的最坏情况硬凑在一起。
精确解集的适用范围
四圆盘交集是“不利用目标圆域进一步排除位置”时的通用保证接收区域。若第一次测点靠近源域边缘,某些方向和距离组合实际不可能落在源域内,利用这个额外条件可能扩大安全选点范围。因此论文给出的区域仍安全,但未声称在所有带源域先验的具体位置上都最大。
这也解释了两个容易混淆的“区域”。一个是源可能在哪里的定位区域;另一个是机器狗下一步可以去哪里的测点区域。图上都能画成一块二维形状,但未知对象完全不同。特别是候选的 100×50 米矩形,是测点选择范围,不能把它当成已把干扰源定位进这样的矩形。

07 问题二下:从安全测点,到精度、路程与余量的取舍
保证不失联,只解决了第二站设计的一半问题。若第二次观察方向几乎平行于第一次,即使信号一直在,两条细长误差锥的交集也可能很大,甚至无界。检测成功和定位有效,仍然不是同一件事。
最终方案在保证接收区内选取两个对称矩形:。它们让机器狗向前走一段,再向侧面拉开基线。由于四个圆盘都是凸的,只要核验矩形全部顶点在交集中,整个矩形也就在其中。八个顶点的最小接收余量约 3.94 米,给出了这个候选范围的安全依据。
交会角为什么影响定位
想象两条很窄的光带交叉。如果接近直角,交集会比较紧凑;如果两条光带几乎平行,交集会沿某个方向拉得很长。测向误差锥也有同样的现象:角度误差虽然只有 1 度,但不好的测站几何会把它放大成很长的位置不确定性。
在上侧候选矩形里,第二测点到任何允许首次真实射线的垂距,至少为 550cos1°−800sin1°≈535.95 米。这远大于 5 米,排除了第二站触发近距提示的情况。再结合源到第二站距离不超过 1500 米,可得两条真实视线的锐夹角大于约 20.93 度;扣除两次测向总计不超过 2 度的偏差,报告视线的锐夹角仍大于约 18.93 度。
这不是在宣称定位误差很小,而是在建立交集不会沿某个共同方向无限延伸的依据。先保证有界,再比较覆盖半径,是合理的顺序。下侧矩形由对称性有同样结论;当任务还有其他目标时,选上侧还是下侧可以根据后续路线决定。
几种“很自然”的走法实际怎样
论文用统一的 225 组离散情况比较候选。径向前进到 (750,0),移动加检测只要 155 秒,也不失联,但有 66 组纯测向交集无界,另有 5 组近距情形。它省掉了侧向路程,却牺牲了交会几何。
纯侧移到 (0,600),移动加检测只有 125 秒,有界样本中的最大覆盖半径约 49.36 米,看起来相当好;但它有 100 组失联。只摘取“成功接收的那部分样本半径小”来夸它,会把方案真正失败的部分从评价里删掉。
较短斜移 (500,500) 在这组样本里不失联也不无界,代价约 146.42 秒,但最大覆盖半径约 117.35 米。默认点 (750,600) 的时间约 197.09 秒,对应最大覆盖半径约 72.24 米。不同方案走到了不同的权衡位置,没有哪个单独数字能概括全部表现。
在 25 米步长网格里筛出接收余量不小于 20 米的 189 个候选后,(775,600) 的样本最大覆盖半径最小,约 69.83 米。但这里的“最小”有两个限定:在这组候选点中、在这组评价样本中。它不是对连续可行域和全部合法误差同时成立的全局最优。
为什么最终仍保留默认点
默认 (750,±600) 的移动距离约 960.47 米,接收余量约 43.38 米。精度优先候选 (775,±600) 的移动距离约 980.11 米,接收余量约 23.78 米。向前多挪 25 米,实际路径长度增加约 19.64 米,移动检测时间增加约 3.93 秒,样本最大覆盖半径减少约 2.406 米。
这笔交换到底值不值,不能只由第二问的一张表替整个后续任务决定。若这几米半径缩减恰好让某个目标少补测一次,可能有价值;若它仍远大于 20 米,却额外远离下一项任务,完整费用未必更好。默认方案重视更大的接收余量,另一方案作为精度优先选择,两者都写清代价。
把评价加密到 5577 组后,这两个候选仍全部正常接收且交集有界,最大半径仍约 72.24 与 69.83 米。这是有价值的数值稳定性证据,但有限样本加密后结果不变,仍不等于证明连续最坏值已经被找到。
两次测向为什么仍然可能不够
以 (775,600) 为第二站,论文构造两个合法可能源 ,使它们在两站都可能产生同样的合法读数。两个可能位置相距约 55.90 米,超过 40 米。任何半径 20 米的圆都不可能同时覆盖它们,因此这组观测不足以支撑一次有保证清除。
这个例子的逻辑比“我们的实验里有些半径大”更强:它展示了同一观测对应两个无法同时清除的位置,信息本身就不足。但它只针对这一个固定测点构造,不能越界推出“所有自适应二次测向策略都不可能成功”。
如果你读懂这一问,就能理解后两问为什么不能简单地“发现目标—按固定坐标测第二次—取交点—清除”。安全测点只是持续缩小不确定性的一个工具。何时补测、何时试探、何时转用有限覆盖,仍然要由整套策略来处理。

08 问题三上:七个站如何承担全域发现
第三问把目标从单个源扩大到源数未知的全域任务。一个策略可以非常擅长处理已发现目标,却永远漏掉远处某个频道。因此,首先要解决的不是“已知源怎么排得更近”,而是如何给未知源准备一个不能绕开的发现机制。
全向源的接收半径至少为 1000 米,源域半径为 1800 米。只要设计有限个站,使源域里每一点都距某个站不超过 1000 米,并在这些站检测每个仍未知的频道,就能够保证任何实际存在的未知源至少被收到一次。这里不需要猜测真实源数,也不需要假定源均匀分布。
原点加六个外站的结构
采用的站集由原点和一个正六边形环构成。外站写成 ,。r 决定环有多大,φ 决定整体旋转角。原点覆盖中心区域,外环填补周边,六重对称让覆盖上界可以解析计算。
对任意源位置,考虑它与最近外站的夹角 δ,取值在 0 到 30 度之间。记源距原点为 t。它到原点距离平方是 t²,到最近外站则为 t²+r²−2trcosδ。最近站距离取两者的较小值。
两项在 时交换。由分段结构可以知道,最坏点要么在原点与外站的等距位置附近,要么在目标圆边界上。因此全域最近站距离可用两个量的最大值控制:。
这个公式的作用,是把“图上看起来覆盖到了”变成可以检查的连续条件。最终候选半径 r 为 1125、1200、1300 米,对应覆盖半径约 999.111、968.902、936.483 米,均小于 1000 米。特别是 1125 米配置的余量比较小,不能把边界上的近似图当作充分验证。
既有证明,为什么还要选择不同环
不同布局下,同一个覆盖站集的行走代价可能差很多。原点扫完之后,已经出现的频道会提供粗糙方向信息。最终策略枚举三个半径和 24 个旋转角,共 72 个候选,用包含已知目标代表点和外站的开放路线长度来选择。
开放路线意味着不强制回到起点;任务是完成清除,不是绕一圈回家。目标代表点只是当前观测下用于排程的估计位置,不能被当作源真值。用它们挑路线有助于效率,覆盖证明则仍由实际站位承担。两个用途必须保持分离。
选择 72 个候选,不意味着穷尽了所有可能的站位,更没有证明七站一定是最少站数或全程路线一定最短。它只是把一个有覆盖依据的结构,变成能响应当前反馈的有限搜索空间。对比赛实现来说,这种“先固定安全结构,再优化结构内的选择”是非常重要的取舍。
稀疏反馈触发外移,但不会替代覆盖证书
若原点没有发现目标,而且第一外站新发现的频道数只有 1 到 4 个,最终策略把尚未访问的五个外站沿原射线外移到 1700 米。它希望较早触及外部区域。但“目前发现少”不是“中心必空”的证明,算法不能仅凭这条启发式删除内部覆盖责任。
外移之后,原点与第一个外站保持不变,其他五站换位置,结构已经不是规则六边形。原来的对称公式失去适用条件,所以程序必须重新核验整个连续源域。不能把旧证明贴在新站集上,就说保证仍然存在。
具体做法是使用边长 10 米的方格。保留所有可能与源域相交的格子;若每个格心 q 都能找到一个站 s,使 ,那么格内任意位置 x 到这个站的距离至多是格心距离加半对角线,仍不超过 1000 米。
这是有裕量的整格覆盖,不是普通“采了一堆点,都通过了”。方格里的任意点距格心最多 米,这个显式误差项把有限检查扩展到了整块格子。为了不漏边缘格,保留格心时还要把源圆半径向外扩相应的半对角线。只检查落在圆内的格心,可能遗漏与圆边界相交但格心在外的格子。
如果证书不成立,程序报告异常,而不是拿“这次大概没问题”接着走。更换待访站后,路线中的实际坐标也要同步更新;否则数学上证明的是一组站,机器狗走的却是另一组站。
站到了,频道也必须真的测过
每站集中检测尚未发现且未清除的频道。一个源已经被发现,就有后续定位流程承担处理,无需在每个站再把它当作未知频道重复扫描。在额度内,对有价值的已知频道可做机会测量,并优先处理当前接收频道以减少切换费用。
停止核验时,重要的不是“访问站数等于七”这个计数,而是实际站位构成有效覆盖,并且每个仍未知频道在相应站上真的有必需扫描记录。漏测一个频道,就不能用这一站的到达记录替它提供无信号证据。路径记录、频道记录与证明对象必须对齐,才能从几何覆盖走到程序完成性。
09 问题三下:把目标、补测和清除放进同一套调度
发现机制提供了骨架,接下来才是让骨架高效运行。最朴素的办法是先扫完全部站,再逐一定位和清除所有目标。它容易理解,却可能来回穿越同一片区域:搜索时经过的好位置没有拿来补测,稍后又专门走回来;去清除一个目标时顺路能做的事情,被拆成了另一条路线。
最终方案把未访问站和未清目标合成任务集,根据最新反馈选择下一项。它不是一次算好全程后机械执行,而是每做完一站或一个目标,就从实际位置重新规划。这种反馈驱动结构,更符合“信息边行动边到来”的问题本质。
先维护可信位置范围,再维护路线估计
对已发现频道,将每次正常示向的前向误差锥相交,再加入源域和最大接收距离约束。实现采用 1.01 度工程误差半角,并用外切多边形包住圆形区域:源域圆用 32 边形,接收圆用 64 边形。
为什么是外切?因为我们宁可保留一些实际上不可能的位置,也不能因离散化把真源排出去。内接多边形只占圆的一部分,若真源落在被切掉的弧边区域,就会产生虚假的小区域和虚假的清除资格。外包稍松,会多做些工作;错误内缩,则可能让保证彻底失效。
对这个凸外包 C,Q3 使用顶点算术平均作为候选圆心 c,再计算所有顶点到它的最远距离 r_c。这个点不是面积质心,也不一定是最小包围圆圆心。只要回查出的半径不超过 19.9 米,仍然足以证明 20 米圆覆盖 C。做出充分证书,并不要求每次都求到最紧的圆。
与此同时,路线规划可以使用另一个代表点。全向源在某站无信号,意味着源不在该站半径 1000 米的开圆盘内。程序用有限样点排除不相容部分,估计更合适的路线代表;若样点为空,就退回顶点均值。这些样点只影响往哪里走,不参与清除证书,也不因为某片没有采样点就把它判成空域。
这就是两种精度的分工:安全集合尽量保守,路线估计可以启发式。为了走得更聪明而使用近似,并不等于允许近似越过清除和停止的判断边界。
路线怎样挑下一项
任务代表点与剩余站组成开放路径。程序分别从不同首项构造最近邻初序,再进行有限轮 2-opt 改进。所谓 2-opt,可以理解为把路线中一段访问顺序反转,若因此缩短相邻连接,就采用这一交换。
在静态点集上,它有助于消除某些交叉或不必要的绕行,但只保证找到局部改进,不能证明最短路线。在本题里任务代表点还会随观测变化,所以这条路线甚至只是当前认知下的临时安排。程序只执行首项,随后再根据新状态规划,不把预估位置与实际机器人位置混在一起。
主动补测选择的是信息与出口的组合
若当前目标尚未取得清除资格,就要选择新的测点。Q3 围绕定位区域的顶点均值和主轴区间中点,按多个半径、多个方向生成候选。主轴可以直观理解为区域拉得最长的方向,它提示哪里可能需要改善交会。
候选必须远离过往测点至少 10 米,距原点不超过 3500 米,并且到凸外包全部顶点的距离不超过 990 米。由于距离函数的凸性,顶点最大距离控制整个凸多边形;于是任何仍可能的源位置都在候选的保证接收范围内,还留有距离裕量。
接着对有限个代表源位置预测一次观测后的区域大小,评分综合当前移动、预计后续清除移动、剩余不确定性及离开该目标后去下一任务的代价。把出口纳入评分很重要:同样能定位的两个补测点,一个把机器狗送向后续任务,另一个可能把它留在相反一侧。
论文将这种评分写成 。H 包含到预测中心的距离、超过清除阈值后的惩罚、半径仍大于 80 米时的额外惩罚,以及到后续出口的距离。它是比较候选的费用代理,不是实际耗时上界,也不是观测到某结果的概率模型。
若主候选池没有可用点,程序用另外的几何选点规则寻找较好的交会正弦,并惩罚过长移动。这里的备用候选是有限定位流程内部的明确分支;它仍受总次数上限约束,不会把“暂时没有好点”变成无限搜索。
机会测量、试探与小覆盖
主动补测每源最多四次。机会测量则利用既定行程中的当前位置,不专门新增测点,但仍计检测与切频费用。相关次数是每频道累计额度,重新规划不能让额度恢复。否则看似每轮有限的过程,经过无限重规划后仍可能没有总上限。
若已有至少两条正观测,且候选覆盖半径大于 19.9 米但不超过 80 米,可以在顶点均值处试探一次。80 米不是清除半径,而是“是否值得花钱试一下”的门槛。失败正常计费,不改变“目标仍未清除”的事实。
试探失败后,程序可在多边形主轴坐标下构造外接矩形,分成边长不超过 28 米的格子。如果格子总数不超过四个,就从近到远尝试格心。每格半对角线不超过 米,故完整执行这个小覆盖,能够覆盖当前区域。这已经具有几何保证,与单个中心试探的性质不同。
若这些办法仍未完成,就进入基于首次有效示向的完整 108 点兜底。先使用高效常规动作,再使用有明确次数的有限尝试,最后保留能够结束的后备结构,才把“平均情况下好用”的定位器接成一项可终止的任务。后面会将它与 Q4 的兜底一起展开。

10 问题四上:定向源把“覆盖”这个词重新定义了
如果说第三问的重点是把搜索与定位合起来,第四问则要求先重新审视搜索保证本身。接收半径没有变小,源域也没有变大,但增加一个发射方向条件,就足以让第三问的完整证明失效。
对源 g,设发射正面法向为 n,测站为 s。定向接收要求两个条件同时成立:,以及 。前者表示足够近,后者表示站在正面。全向接收只需要第一条。几何上,接收范围是一个圆盘与经过源位置的闭半平面的交集。
一个最简单的漏检构造
将源放在圆域最东端 ,令它向东发射。第三问外站半径不超过 1700 米,所有站的横坐标都小于 1800,所以都在它的背面。无论站点距离它多近,都不能用全向圆盘覆盖证明“必然接收到”。
这个例子说明,不能把 Q4 理解成“Q3 稍微多检测几次”。在同一批背面站点上反复测量,并不会改变发射方向。必须修改空间布局,使每个允许位置和每个允许方向都受到照顾。
近站凸包条件的直觉
把距离源 g 不超过 1000 米的站称为近站。若 g 落在这些近站的凸包中,就能保证任何经过 g 的闭半平面都包含至少一个近站。为什么?如果全部近站都严格在某条分界线的同一侧,它们的任何加权平均也会在那一侧,不可能组合成分界线上的 g。
这是一种“从四面把点围住”的条件,但不要求每个方向恰好等间隔布站。凸包允许不同数量的近站共同提供保证,只要它们的空间关系足够包住 g。这里的近站还必须满足距离下界 1000 米,不能用远处的站把凸包画大之后就宣称接收有保证。
代数上,若 ,则 。所有正权重项不可能都严格为负,因此至少一个近站满足 。它既在正面,又距离足够近,接收条件同时成立。
注意这是充分条件。我们采用它,是因为它容易形成连续验证结构;并没有借此宣称所有可能的覆盖设计都必须长成同一种形状。把一个可用证书说成唯一必要结构,也会限制后续优化思路。
21 个站的具体位置
最终配置包含原点、半径 997 米的八个内环站,以及十二个外环站。内环每隔 45 度放一个;外环每隔 30 度放一个。外环半径取 1800.1/cos15°≈1863.600652 米,因此外环正十二边形的内切半径是 1800.1 米,严格包含半径 1800 米的源圆。
外环超过源域边界并非画图误差。如果凸包边界恰好只贴住源域,在数值和方向边界上会非常紧;这里有 0.1 米的几何裕量。内环的 997 米对应中心三角形与接收距离之间至少 3 米的裕量。两个裕量服务不同条件,不能都笼统称为“安全距离”。
图中展示的 向东发射,只是解释新旧覆盖逻辑差别的构造例。正式测试中的源坐标不公开,我们没有用这个图替任何正式场景补真值。阅读后面的回放时也应坚持同一边界。
连续覆盖怎样被有限检查
要对整个圆域证明近站凸包条件,总不能枚举无限多个位置。最终论文把外凸包划分成 8 个中心三角形、8 个凸四边形和 4 个外带三角形。它们是有限几何单元,所有位置都属于某个单元,于是只需要证明每个单元内部满足条件。
对边长均小于 1000 米的三角形,内部任一点到任一顶点的距离,不超过该三角形最长边。三个顶点全是近站,而内部点本来就在它们凸包里,条件自然成立。
四边形更微妙:部分对角线可能超过 1000 米,不能要求四个顶点对内部每点都足够近。于是利用两条对角线交点 O,把凸四边形分成四片。对于靠边 AB 的小三角形 ABO,A、B 必须始终是近站,而另外两个顶点 C、D 中至少有一个足够近;同时该小片落在 ABC 与 ABD 两个三角形的共同范围内。这样,不论 C、D 谁更近,都能选出包含当前位置的近站凸包。
第二个距离条件可以沿 C、D 的垂直平分线裁开:每片内哪个顶点更近已经固定,再对凸片顶点检查平方距离最大值即可。无限多个未知位置就被归约成原顶点和有限边界交点。整个过程中没有把发射方向离散成若干角度来替代连续保证。
最终核验得到三类单元需要的接收半径上界分别为 997.000000、995.673070、964.670683 米,均小于 1000 米。还要检查单元方向、严格凸性、边关联、非邻接边不相交以及面积相加等于总凸包面积,防止图上分区出现缝隙、重叠或漏块。
所以 21 站方案的价值,不是“在图上撒了更多点”,而是找到一种可以完整验证的几何结构。站点数量、位置与后续行走路径仍然没有全局最优证明,但发现保证已有具体可追溯的依据。

11 问题四中:两次“没信号”,怎样合起来提供新信息
定向条件让一个无信号观测变得含糊,但不代表全部负反馈都没有用。关键在于:能否把多个观测放进同一个几何关系里,让它们共同排除某种解释?最终采用的成对阴性响应,就是这样的例子。
在讲它之前,先确认 Q4 的正观测处理。每个频道保留首次正常示向锚点,并累积后续有效方向;将误差楔形与接收圆的外包约束相交,得到包含所有兼容真值的保守区域 P_c。工程半角取 1.01 度,目的是给边界留量,并不改变题设固定误差的语义。
Q4 对区域顶点求最小包围圆,再检查每个顶点到候选中心的距离。如果半径不超过 19.9 米,20 米圆能够覆盖整个凸区域,就得到清除证书。和 Q3 相比,选中心的方法不同;共同之处是最终都必须回查全部顶点,并且只把成功响应当成已经清除。
为什么一个阴性点不够
假设在锚点 a 收到信号,往侧前方走到 q 没收到。可能是 q 距离真实源超过了接收半径,也可能距离仍近却进入发射背面。只要其中一种解释成立,源位置仍可能合法。直接以 q 为圆心排除半径 1000 米的区域,相当于偷偷把全向假设搬进了定向模型。
要从负观测得到更强约束,需要让“距离太远”和“两个点都在背面”在某种位置假设下同时不可能。不是单点更聪明,而是多个点之间的相对关系增加了约束。
先换到锚点坐标
以锚点 a 为原点,报告方向 u 为横轴,垂直方向 v 为纵轴。把真实源写成 ,其中 ,,k 是误差角的正切。它描述一条细长锥:往前越远,允许横向偏移也随之增大。
两个无信号测点写成 。这里 α_i、β_i 是测点坐标,不是测向误差半角。为避免符号相似造成混淆,可以把它们读成“第 i 个点前进了多少、横向偏了多少”。
要求两点在锚点前方,并且分居整个误差锥两侧:。再要求 ,使点不是偏得过分靠侧面。只有满足这些几何门槛,下面的推断才有资格使用。
反证分成距离与方向两步
定义 。如果两个点都没有信号,结论是源的纵向距离 。换句话说,源不能沿报告方向无限躲在远处。
先反过来假设 。比较每个负测点到源的距离与锚点到源的距离,可展开得到:
使用 ,把最不利的横向项也算进去,右侧不超过 。由 可知它不大于零。于是两个负测点都不比已经接收到信号的锚点更远,也就都在真实接收圆里。
接下来处理方向。两个负点分居允许射线的两侧,其连线会穿过从 a 指向 g 的真实射线。由于 d 至少不小于两点的前向坐标,交点位于 a 与 g 之间。发射闭半平面包含锚点 a,也包含源 g,因此包含整个线段 [a,g],包括这个交点。
若两个负点都在发射半平面的严格背面,它们的连线及任何凸组合也会在背面,不可能穿过这个正面交点。所以至少有一个负点在发射正面。而前一步又证明它在真实接收圆内,它就必须收到信号,与“两点都是阴性”矛盾。于是最初 的假设不成立。
这就是成对使用反馈的逻辑:不是把两个模糊信息简单相加,而是构造一个它们无法共同解释的远处位置。对全向源,仅凭距离步骤就能得到矛盾,因此这个约束也可用于混合条件。
一个看得懂的数字例子
取 ,两个教学测点 ,都相对于同一个有效锚点。它们满足位于误差锥两侧, 米;二次项除以 2γ 约为 167.6 米,与 米取最大,得到 米。
若这两个位置都返回无信号,那么在这些条件下,源沿报告方向的纵向坐标必须小于 300 米。此例用于解释公式,不是正式运行记录,也不表示算法每次都固定去这两个点。
实现为何还要比证明保守一点
程序采用 、条件余量和向外放宽的闭约束,把 转为不误删边界的限制。若裁剪产生空区域,会拒绝该次裁剪并保留原域,而不是宣布“这个频道没有源了”。正锚和阴性观测必须属于同一静止、未清除源的有效记录;不能在源已经清掉后,用新产生的无信号反推它之前的位置。
这条证书只缩小可能位置,不会直接宣告清除,更不会证明整个任务结束。定位信息增强、清除成功与停止资格依旧是三件事。也不是所有随便选的两个阴性点都能套公式,几何门槛和同源条件缺一不可。
理解这一节后,Q4 的难度会更具体:它不只是增加几个 if 分支,而是反馈的含义变了,需要重新设计信息组合的方式。
12 问题四下:最终算法到底怎样决定下一步
有了 21 站发现保证和锚定定位模型,剩下的是如何在每一步安排这些能力。最终策略称为 21 站覆盖与锚定定位联合清除,程序配置为 quad21_anchor0,组合模式为 combined。名字只用于识别采用实现,重要的是下面的实际行为。
它维护剩余必需站、未知频道、已发现未清目标、每个频道的观测记录,以及各类主动或机会动作已经用了多少次。清除会改变待办集合,检测会改变位置估计,移动会改变后续路线的起点,因此每次动作完成后都要按实际反馈更新状态。
为什么不能把所有目标立刻插进路线
覆盖阶段,已发现目标不一定适合马上服务。首次示向的兼容区域可能很大,仅凭一个方向就把粗糙中心插入路线,容易造成大绕行。最终策略仅在 near,或者至少两次正观测、包围半径不超过 200 米且尚未作中心试探时,将该目标作为可服务任务插入。
200 米是排程门槛,不是清除距离。它意味着“值得把它提上日程”,不意味着“走到中心必能清除”。这种门槛把发现阶段的时间分配控制住,避免每看到一个很模糊的目标,就中断覆盖去追它。
当已经发现 16 个不同频道时,由源数上限可知未知源搜索已经没有必要,转入已知目标收尾;覆盖完成后也转入收尾。此时不再要求目标满足常规插入门槛,否则难定位的目标可能永远不被服务。但“发现 16 个”只改变调度,不是完成,仍要逐个收到成功清除响应。
联合路线与首次锚点尝试
可服务目标估计位置与全部剩余必需站组成开放路线。程序将目标插入站点路线,与最近邻初序比较,再做有限轮 2-opt 反转改进。如果当前首项是覆盖站,就继续扫描;若是目标,就进入有界定位流程。必需站只重排,不能因为评分不高被删除。
首次收到某频道正常方向响应时,策略会在当前站点原地试一次清除。理由来自两个阈值之间的间隙:near 只覆盖 5 米以内,但光学能清到 20 米。距离在 5 到 20 米之间的源会正常返回方向,仍可能原地清掉。失败付出光学费用,每频道最多一次,而且失败不能被拿来任意内缩兼容区域。
这项规则很容易被夸成一个“特别聪明的优化”。但最终材料没有同场景关闭它的消融对照,因此我们只能解释它为什么可能有价值,以及它在采用实现中如何受控,不能给它编造一个确定的提速百分比。
主动测点怎样产生
每源主动补测最多三次。主候选池包括锚点前方若干距离与正负侧偏的组合、包围圆心周围多个半径上的八方向点、后续几个覆盖站,以及其他未清目标的估计位置。这相当于同时考虑几何测向价值和任务路线价值。
候选要距历史测点至少 25 米,距原点不超过 3500 米,到用于评分的全部样本位置不超过 1499 米。这里尤其要注意:评分样本只是多边形顶点与包围圆心组成的有限集合。这个筛选并不等于已经证明候选会对所有真实类型和方向接收到信号。
主候选池没有可用点时,启用另外一套有限几何候选,使用 10 米历史间隔、990 米外包距离阈值等不同参数。备用池的条件与主池不同,不能在正文里把它们合并成一句“所有测点都保证接收”,那样会超过实现和证明范围。
把方向不确定性引入评分
对每个代表源位置,程序在一周内取 96 个发射朝向,保留与已有正观测相容、也不违背距离条件下负观测的朝向。再看这些朝向有多大比例能够面向候选测点,形成方向上的接收权重;距离权重在 1000 米以内取 1,随后随距离走向 1500 米而线性下降。
它们的乘积用于比较候选,不是题目提供的概率。96 个方向是离散评分样本,不是连续方向覆盖证书。如果没有保留朝向,程序也不会因此删掉源位置,而采用评分约定继续处理。信息估计可以粗略,安全可行域不能因为样本没覆盖就消失。
定位收益则与交会正弦有关。新旧视线近共线时,正弦小,几何信息差;交会较开时,信息潜力更大。程序由此估计一次观测可能缩小多少半径,再用检测常数、当前位置到候选点的移动、候选到目标中心的后续移动作惩罚,选择收益代价评分高的点。
这个评分是在有限代表位置、有限朝向和启发式近似下提出的行动建议。真实反馈可能比预测好,也可能差。真正的清除资格仍由更新后的完整凸外包和包围圆回查决定,不能因为评分说“应该已经很准”就跳过核验。
三次补测之后,流程仍然必须有尽头
每次补测后,先检查 near 与 19.9 米覆盖证书。至少两条正观测且包围半径不超过 80 米时,每频道还允许一次中心试探。最后一次补测后同样要检查,不应因循环结束就漏掉已经满足的清除资格;也不能偷偷发起第四次主动补测,破坏次数预算。
机会观测和清除后共享观测也有独立累计上限:覆盖站机会测量每频道最多八次,清除后共享测量每频道最多六次,定位入口当前位置机会观测最多一次。它们在已有位置发生,节省的是专门移动,不是检测费用。
如果常规流程仍未成功,程序回到首次锚点定义的有限覆盖集合。它不因为当前评分差而无休止地生成新候选。每个目标都有从发现到成功或显式异常的有限路径,才有资格讨论整局的有限完成性。
从这个层次看,最终算法不是一个神奇公式,而是一整套有边界的决策组织:哪些信息能裁剪集合,哪些近似只能排顺序,什么时候允许试探,额度用完如何收尾。最后优化困难,也正因为修改一个局部,往往会影响这套组织中的多个环节。
13 把系统合上:108 点兜底、停止证明与时间上界
读到这里,可能会有一个疑问:既然常规定位这么复杂,为什么还能声称流程有限结束?答案不在某个启发式评分足够聪明,而在首次有效示向留下了一块始终保留的有限覆盖区域。
设首次正常示向站为 a,报告方向与垂直方向为 u、v。真实源距锚点不超过 1500 米,工程角宽约束给出横向偏差上界 米。因此真源包含在局部长方形 中。它可能很长,但很窄。
为什么恰好是两行、五十四列
用边长 28 米的方格铺设一个略大的矩形 。,两行共高 56 米,能够包含原本的狭长区域。每个格心距离格子最远角点为 ≈19.799 米,小于光学清除半径 20 米。
于是每个格心放一个半径 20 米的清除圆,所有格子都被覆盖,整个首次示向区域也被覆盖。无论真源具体在哪,只要把必要格心遍历到,就必有一个执行位置距它不超过 20 米。这是有限光学保证,不依赖后续无线电测向一直好用,也不依赖定向源朝哪边发射。
28 米不是凭经验随手挑的“差不多网格”。它由清除半径和格子半对角线联系起来。若把格子边长改成 30 米,半对角线就超过 20 米,格角会产生洞;程序可能看似更省点,但原证明已经不成立。参数优化有些地方可以自由试,有些地方必须先重做证书。
两问的访问顺序不一样
Q3 将两行格心按蛇形顺序访问,从距当前位置较近的一端进入。相邻格心之间距离为 28 米,108 点之间共 107 段,内部路线长度为 2996 米。这种顺序容易给出明确长度界,并且不因新的猜测删除未覆盖的格心。
Q4 使用另一固定列序:先从第 15 列向第 0 列,再从第 16 列到第 53 列,每列两点按近远访问。完整内部路线长度为 3416 米。它调整尝试顺序,但仍保留完整覆盖。不能因为两问都有“108 点”,就认为它们的路线预算和证明完全相同。
Q4 还允许在严格分离证书成立时跳过必败中心。若存在单位方向 n,使中心 p 与当前凸区域所有点之间沿该方向的投影间隔都大于 20 米加裕量,那么它到区域中任何可能源都超过清除半径,这个点必然无效。程序提出候选法向后回查全部顶点,证书不足就保留点,而不是按“看着离区域挺远”跳过。
删除完整有序路线中的中间点,会由三角不等式保证连接路程不增加。但这只解决长度问题;正确跳过仍要先证明该中心不可能覆盖真源。两个依据都需要,不能拿“跳过会更短”替代“跳过不会漏”。
正常停止的反证到底在说什么
第一种停止方式是成功清除 16 个不同频道。由于题目源数最多 16 个,每频道至多一个源,收到 16 个不同频道的成功记录后就不会还有第 17 个。这依赖的是公开题设上界,而不是猜测这局实际有多少个。
第二种方式是必需覆盖扫描完成,而且所有已发现源都已清除。若还假设存在一个未发现源,它的频道始终处于未知列表,因此在覆盖站上已被必需检测过。Q3 的距离覆盖,或 Q4 的近站凸包条件,保证至少有一站能接收到它,与“始终未发现”矛盾。因此不存在遗漏的未知源;已知源则已收到成功清除记录,任务完成。
这份证明同时要求几何覆盖和逐频道行为记录。只画出站点,不实际去测,不够;到过站却漏了某个未知频道,也不够;把源数下界 10 当作停止目标,更不够。下界只能告诉你源不会少于 10,不能告诉你清掉 10 个后剩下的一定不存在。
有限动作和费用上界不是现实速度保证
Q3 每站检测未知与机会频道不重复,最多七站各二十频道;每源主动补测与机会测量有总预算,可得 。光学尝试保守取 ,包含常规清除、试探、小覆盖和完整兜底。取 ,再用行动点半径限制和兜底长度,可得 米,对应虚拟费用上界 272611.2 秒,约 75.73 小时。
Q4 相应计数为 ,, 米。按宽松计费得到 209491.2 秒的条件上界。若每动作量化增加不超过一微秒,再加有限个动作的量化预算,两问仍分别小于论文列出的 272611.203 与 209491.203 秒。
这些上界为什么看起来远大于实验均值?因为证明按最不利的合法分支、单段距离和尝试次数保守累加,目的在于排除无限耗时,并让预算落在题目的虚拟时限内。它没有说典型场景会走这些极端路线,也没有说现实电脑能把所有情况在二十分钟内完成。
整个结论仍以反馈有效、角度外包和保守几何判定成立、动作正常接受为条件。浮点极端输入、网络故障与现实运行时间要在实现层另行处理。若没有合法首测方向,near 后原地清除又异常失败,就不能虚构一个锚点继续套保证;正确的状态是未解决或异常。能够明确失败边界,也是完整系统的一部分。

14 实验到底证明了什么:开发、演练与正式要分开读
当一个复杂策略终于跑出数字,最容易发生的事情是把所有测试放在一起说“我们验证了很多次”。但次数只是外壳,样本来自哪里、是否用于选型、彼此是否独立,以及知道多少真值,才决定结果能解释到哪一步。
第一层:几何与实现的核对
前两问的解析推导承担连续条件下的结论;有限数值算例用来检查实现是否与推导一致。线性规划投影核验、最小包围圆上下界核对、候选区域顶点检查,都能发现程序错误,但不是用数值测试取代数学证明。
后两问的站集证书与有限格心覆盖也属于有明确前提的几何依据。程序在浮点上执行这些检查,仍需要容差、非有限值处理和异常记录。把它们合称“已验证”,可以;把它们合称“任意输入形式认证”,则超过证据。
第二层:开发案例
Q3 采用 40 个独立空间布局,分为面积均匀、边界扰动、紧簇、双环、近共线五类,每类八个。每个布局搭配四种地点误差场,共 160 局。Q4 同样使用 40 个布局、四种误差场,但分为八类,包括圆内合成、外边缘、窄角簇、外圈均布、接收半径边界、近共线、近距边界和外环合成。
这里有两个必须说清的“不是”。第一,四种误差场共享同一组源位置,160 局不能当成 160 个独立空间布局;第二,这些案例参与过方案研究,不能在最后重新命名成未见盲测。若将来做重采样,应以布局为单位处理相关性,而不是把每个误差场运行当成完全独立的抽签。
两问各 160 局均完成全部清除,各累计清除 2060 个源。Q3 的局均 秒每源,总体比值 ;Q4 分别为 447.810943 与 431.547643。两个统计量不相等,是局权重与源数权重不同的正常结果。
Q3 的中位数约 259.048,95% 分位数约 366.138,最大值约 393.944 秒每源;Q4 的中位数约 454.346,95% 分位数约 635.787,最大值约 702.358。只看平均值会让后者某些高耗时场景从视野中消失。分位数描述的是这些已运行样本,不是对所有未来场景的时间保证。
Q3 边界扰动类均值约 324.712,紧簇类约 175.482;Q4 窄角簇类约 317.59,外环合成约 526.10。空间位置确实会影响整条路线,但类别之间不只有一个变量在变,因此不能拿这张分类表直接识别某个单因素的因果效应。
Q3 开发中共有 1119 次失败光学尝试,全部计费,没有一局走进完整 108 点兜底。“160 局全清”不等于“每次光学尝试都成功”;“没有用到完整兜底”也不等于兜底可以删除。前者是结果统计,后者是有限样本没有触发某个有保证分支。
第三层:官方演练
冻结策略参数后,先前五局演练,Q3 清除 63/63 个源,局均约 235.094 秒;Q4 清除 73/73 个,局均约 368.441 秒。正式前在当前环境中又各完成十局,Q3 清除 142/142 个,局均 219.736176;Q4 清除 138/138 个,其中定向源 60 个,局均 417.579477。
为什么 Q3 后一批均值更低,而 Q4 更高?仅凭这些数字不能判断策略进步或退步,两批案例不同,而且采用的冻结方案相同。场景变化就能引起均值变化。将两组非配对数据的差异写成“本次优化提升”,是把场景差异冒充算法差异。
演练结束后有真值可核对,因而能写出 142/142 和 138/138 这样的数量关系。正式测试的可见信息不同,下一节不会沿用同样写法。源总数不是一个想填就能填的表格空位。
第四层:缺少什么,直接说出来
最终归档没有同一组案例下的基准策略对照,也没有单个模块开关的消融结果。因此它能说明采用策略如何运行、费用分布怎样、哪些样本较慢,却不能分解“联合调度贡献百分之几”“首次锚点试探节省百分之几”。
独立未见布局的验证也尚未形成足够强的最终证据。重复跑开发集可以查回归,但不能恢复它作为盲测的身份。若重新开展优化,最该先做的事情之一,就是提前冻结对照、独立布局、评价方式和失败记录规则,再看新方案能否稳定获益。
这些边界不会让结果变得没有价值。恰恰相反,知道结果能够回答哪个问题,才能在下一轮真正增加证据,而不是增加一批又一批看似丰富、实际不可比较的数字。
15 六次正式测试:高耗时那局,给出的教训更多
2026 年 9 月 13 日,在保持演练阶段源码、参数和运行环境不变的情况下,完成了 Q3、Q4 各三次正式测试。六局都正常进入和退出,归档的官方历史记录显示六份日志已上传。原生加密日志以原始文件名与字节保存在支撑材料中。
下面只使用公开记录能够支持的数量。正式测试不公开真实源总数,因此表中是成功清除数,不填隐藏全清比例。程序运行时间由进入与退出响应的现实时间戳差得到,包含接口等待。
测试 | 已清除数 K | 总虚拟耗时 T / 秒 | T/K / 秒每源 | 程序时间 / 秒 |
Q3 第1局 | 12 | 3318.244129 | 276.520344 | 2.753 |
Q3 第2局 | 13 | 3567.978533 | 274.459887 | 2.551 |
Q3 第3局 | 11 | 3183.189469 | 289.380861 | 2.280 |
Q4 第1局 | 15 | 5339.114766 | 355.940984 | 2.943 |
Q4 第2局 | 11 | 5665.387937 | 515.035267 | 3.483 |
Q4 第3局 | 16 | 5424.664558 | 339.041535 | 3.002 |
Q3 累计清除 36 个源,三个 T/K 的均值是 280.120364 秒,范围约 274.460 到 289.381。Q4 累计清除 42 个,均值是 403.339262 秒,范围约 339.042 到 515.035。正式样本只有每问三局,它们描述本次观察结果,不足以估计所有未知场景上的长期平均水平。
这一次具体为什么停止
Q3 三局与 Q4 前两局都完成了相应覆盖扫描,并清除了所有已检测目标,按覆盖完成证据停止。Q4 第三局成功清除 16 个不同频道,达到题设源数上限,以另一条充分条件停止。
这与“模拟器告诉我们全清”不同。我们的完成依据来自公开动作记录与模型条件;日志上传状态说明提交了行为记录,不是官方公布了全清认证或评分。复盘保留这一区别,是为了不让读者从“正常退出”自动脑补不存在的结果字段。
每一秒从哪里来
按完整费用公式重建,六局移动费用占比在 71.41% 到 79.58% 之间,是共同的大头。检测、切频以及成功失败的全部光学尝试也都保留。下面的堆叠图使用逐局每源费用,不把不同清除数量的整局总额直接拼在同一根柱子里比较。
Q3 三局检测次数为 115、117、100,失败光学尝试分别为 3、0、0;Q4 检测次数为 195、259、198,失败尝试分别为 16、11、16。失败次数少不自动带来整局更快,因为移动、扫描、源数分母和定位路径同时在变化。
本次复盘对六份 public_actions.jsonl 做了独立只读复算,没有重新运行策略:从实际位置序列累积移动、按检测频道变化计算切频、按成功响应统计不同已清频道,再与退出虚拟时钟和正式汇总表核对。六份原生日志 SHA256 与清单一致,29 项运行冻结文件哈希一致。这个检查回答的是归档内部是否自洽,不是重新取得一组官方成绩。
Q4 第二局为什么看起来慢很多
把 Q4 第一、二局放在一起,T/K 从 355.941 增至 515.035 秒,约上升 44.70%。如果只看柱子长度,很容易说第二局“走得更多”。但它的移动总费用由约 4069.115 秒略降到 4045.388 秒,实际路程也略短。
真正上升的是检测次数,从 195 到 259;切频从 172 到 237。光学尝试则从 31 降到 22,并不是失败试探突然暴涨。整局虚拟耗时从 5339.115 到 5665.388 秒,增长约 6.11%;与此同时,已清除数从 15 降到 11。分母变小放大了每源指标。
算式可以拆成:。这一分解非常朴素,却比给慢局编造一个未经验证的“复杂方向导致绕路”故事更可靠。
我们不知道正式场景的隐藏布局和方向,不能用想象补全原因。这里能确定的是费用组成和分母共同解释了指标变化,不能确定的是哪个隐藏场景因素导致这些动作变化。前者有日志,后者需要额外信息或同场景干预实验。
正式结果留下了怎样的优化线索
移动仍值得优先关注,但“优先关注移动”不等于可以删掉必要覆盖站,也不等于检测越少越好。第二局表明,在不同清除数量下,持续扫描的固定成本也会显著影响每源指标。未来若要修改搜索与收尾策略,必须在保持停止依据的前提下比较完整任务费用。
三个正式样本不足以选择下一版参数。它们已经被看过、解释过,再用同样三局反复挑方案,会继续把测试样本变成开发样本。更好的下一步是保留这些案例作回归,另建事前冻结的独立布局与同场景对照。
这也是为什么我愿意把较慢那局完整放出来。它不只是拉高均值的坏消息,而是一堂关于统计口径、费用归因和证据边界的课。

16 最难的最后一段:为什么连优化方向都想不出来
“光靠人脑也想不出优化方案”,并不是说人不能理解前面的公式,也不是说某一行代码写不出来。它描述的是另一种瓶颈:已经有了一个能完成任务的系统,却很难判断再改什么,才能稳定地变好。
最初阶段的进步通常比较清楚。漏掉前向约束,就补上;直径判据错误,就换成覆盖圆;定向源能躲过七站,就重做发现结构。这些是被明确反例或逻辑缺口推动的修正。到了最终阶段,明显错误少了,剩下的是很多彼此制约的选择,没有一个按钮按下去就能让全部指标一起变好。
一个动作有三种后果
机器狗选择补测点,首先支付当前移动与检测费用;其次获得某种未知反馈,改变后续可行域;最后停在一个新的空间位置,改变去下一任务的代价。只估计第一项,会把最便宜却没信息的点选出来;只看第二项,会为了漂亮交会角走很远;忽略第三项,就可能把目标解决后留在整个任务最不方便的位置。
而且反馈在动作之前未知。你可以用有限代表位置和方向预测,但真实输入可能落在代表样本没有覆盖好的部分。为了每一步都精确求解所有可能未来反馈的最优行动,需要描述一棵随观测分支展开的决策结构。它不是“把现在这些点做一次最短路径”那么简单。
新增一次机会测量,也会同时改变多个目标。它可能使其中一个目标立即满足清除证书,也可能只是增加一次无信号记录;前者会提前删除任务,后者可能改变补测方向。被调整的不只是这一条记录,而是后续任务集合及其访问顺序。
为什么局部更好会变成整体更差
假设一个补测点让当前目标的包围半径少了几米,但仍未跨过 19.9 米清除阈值。它看起来提高了定位精度,却未必省掉下一次动作。另一个半径缩减较少的点,恰好靠近下一覆盖站,可能对完整路线更有利。
再看原地试探。单次失败只有 3 秒,看起来很便宜;但为很多并不接近的目标都触发一次,累计起来也会有代价。若它偶尔省掉长距离定位,收益又可能很大。最后值不值得保留,需要比较同场景下实际发生的成功与失败,而不是只把某次成功的故事拿出来证明规则优秀。
覆盖站数量也类似。少一个站会减少扫描与移动,却可能需要更复杂的连续覆盖构造,或者使更多目标只被远距离、低交会角观测到,增加后续定位费用。站数更少,是结构变化;全程更快,是另一项需要证据的结论。
这类问题让人难以用一次灵感完成优化,因为每个局部都有“看起来合理”的方向,但它们未必能同时成立。最后算法里留下的门槛、评分权重和有限候选,是在工程可实施范围内做出的取舍,不能因为符号写得整齐就自动升级成最优性定理。
“没有最优解”怎样说才准确
在我的参赛感受里,这句话表达的是看不到一条可直接抵达最优的路。但技术上要分开三件事:某个明确目标下最优策略是否存在;我们是否有能力求出它;我们是否有证据证明当前策略就是它。本文没有证明第一件事的否定,也没有完成后两件事。
甚至“全局最优”本身也需要先说清评价环境。是对所有合法场景取最坏费用?对某个已知分布取期望?还是仅对给定开发集的平均时间最小?题目没有给出误差与源位置的概率分布,不能擅自把某个启发式平均解释成真实环境期望。对固定开发集调到最低,也不等于对未来案例最优。
因此最终论文采用更克制的目标:给出有条件完成依据,在完整计费下展示采用方案的实际表现,并明确它没有连续最优选点和全程最短路线证明。这个表述没有把问题变简单,但让我们知道自己究竟解决了哪一部分。
AI 帮忙扩大了尝试范围,没有免掉验证
人脑很难同时维护大量候选组合,AI 可以协助把想法写成实现、将公式翻成检查、梳理失败分支,并整理实验数据。这让很多原本停留在口头的候选变得可以运行、可以比较。它扩展了能够探索的范围,而不是凭空提供了未来反馈或最优策略。
但候选生成得越快,筛选压力越大。一段代码能跑,不表示数学前提没变;一张表均值更低,不表示场景可比;一个新版本没有报错,也不表示所有边界都保住了。研发进入后期,瓶颈很大程度上从“能不能写”变成“能不能判断值得采用”。
如果再做一次,我会更早给每个改动配一个明确假设。例如“共享测量是否减少专门补测的路程,且没有增加过多无信号检测?”然后固定对照,记录完整费用和失败情形,只让实验回答这个问题。这个过程不保证每轮都会变好,但至少不会把解释不了的数字当成进展。
我对 B 题难度的感受,最后落在这里:它让人同时面对复杂策略空间和有限证据。你需要不断作选择,却很难获得一种彻底放心的“这就是最优”感。最后交付的,是一套能说明依据和局限的方案,以及把它真正做完的过程。
17 25.1 亿 Tokens:这次人机协作到底有多大
我在复盘时补充了一张 UsageMesh 截图,希望把用量也记下来。它提供了一个不同于论文页数、代码文件数的观察角度:这段时间,人与模型之间究竟发生了多少轮计算与上下文处理。
截图选择的是“近 7 天”,设备、客户端与模型都处于全部范围。总 Tokens 显示为 2.51B,约 25.1 亿;请求记录 21,044 条,涉及 2 台设备和 5 个模型。它是当时界面上的统计快照,不是我们从本项目单独导出并重新归集的专项账本。
截图指标 | 展示值 | 本文采用的含义 |
总 Tokens | 2.51B | 输入、缓存、输出及 Reasoning 的界面总量 |
请求记录 | 21,044 | 当前筛选范围下的请求记录数 |
设备 / 模型 | 2 / 5 | 当前界面覆盖范围 |
缓存命中率 | 95.9% | 用量概览展示的命中指标 |
缓存读取 | 2.39B | 构成区显示约占总量 95.5% |
新增输入 | 101.23M | 构成区约 4.0% |
输出 | 7.87M | 构成区约 0.3% |
Reasoning | 4M | 构成区约 0.2% |
缓存写入 | 0 | 截图展示值 |
估算费用 | ≥ $2,686.04 | 设备端兼容价卡估算,非实际账单 |
这个大数字不能怎样读
首先,25.1 亿 Tokens 不等于模型新写出了 25.1 亿 Tokens 的文字。缓存读取占绝大部分。大量已有上下文被再次纳入处理,会让总量很大,但它和新生成输出不是同一种工作。截图已经把新增输入、缓存读取、输出和 Reasoning 分列,复盘应该保留这种区别。
其次,概览的 95.9% 缓存命中率与构成区的 95.5% 缓存读取占比,不应互相替换。它们显示为不同指标,分母口径没有在这张截图里完整展开,本文不自行补定义。各项数值也经过界面舍入,不能拿舍入后的分项做精确会计核对,再把细小不一致当成系统错误。
再次,“估算费用 ≥ $2,686.04”不能写成“我实际花了 2686 美元”。截图自己注明价卡估算、非实际账单,前面的“大于等于”也应该保留。它反映特定计价口径下的估算规模,不代表订阅扣款、充值消耗或实付总额。
最后,当前范围包含全部设备、客户端与模型。截图没有显示项目级过滤,所以不能把所有请求都算成本次数模独占,也不能把它当作本篇文章的生成用量。将它记录在这里,是记录这段时间的人机协作背景;若以后要做项目级成本分析,需要进一步的项目归属数据。
真正需要管理的是上下文与采用状态
AI 能在短时间里给出很多文本和代码,但项目最终不能由“最后一次对话里听起来最有信心的回答”决定。一个版本是否采用,一条证明是否适用于新站位,一张图用了哪一批数据,都需要落在可重复读取的记录里。
本项目保留了各问交接、采用方案、源码哈希和独立证据。研究任务可以产生新版本,但总协调需要重新核对和合并;目录名更大,不自动表示升级;AI 检查通过,不自动表示人工终审完成。将这些状态分开,才能让不同任务继续工作时,不把旧候选误当成当前基线。
长上下文的价值不只是“记得多”,而是能够围绕同一份实际证据持续推进。反过来,如果上下文里混着旧数字、新论文和不同测试口径,模型越能写,越容易把它们拼成一份流畅但不对应任何真实版本的说明。缓存高并不能解决这种版本混淆,文件级证据和明确采用状态才有用。
人的工作没有因为 Tokens 变多而消失
人的关键任务包括判断题意、提出实际目标、确认采用、指出叙述含混,以及决定何时停止无休止地试候选。本次复盘里,我补充的“难度不在一个层级”“靠人脑想不出最后的优化方向”,就是公式和日志中不会自动出现的参赛体验。
队友的检查、论文撰写与合并工作保留各自来源,不能因为 AI 后来参与统筹,就把外部人工工作抹去。同样,AI 写了验证程序,也不等于人已经逐项审阅了数学;生成了论文使用声明,也不等于所有实际使用细节已经由人工确认。
最终论文包含 AI 使用声明,支撑材料另附使用详情。对我而言,记录用量不是为了把“大”本身当成成果,而是把这次特殊的协作方式留下来:模型扩大了可尝试的范围,人仍然要对方向、采用与表达负责,而每一项声称完成的工作都应该有对应证据。
这张截图和前面的费用图其实有一个共同提醒:面对漂亮或震撼的汇总数字,先问分子是什么、分母是什么、统计范围是什么。先把数字读对,才有资格讨论它说明了什么。

18 从算法到提交包:最后一公里同样属于建模
做出最终算法以后,任务仍然没有结束。数学推导、运行源码、统计脚本、图表和论文必须描述同一套东西。只要其中一个环节使用了旧版本,就会出现“论文写的是 A、程序跑的是 B、图表展示的是 C”的局面。
本项目早期将初版、检查验证、论文合并分开,再逐步调整为由总协调直接承接采用方案和材料整合。随后 Q3、Q4 允许在独立研发任务中推进,但各问只更新自己的研究与证据,主采用状态由总协调合并。过程 Notion 同步曾暂停,优先把进度写进本地可重新读取的交接,避免并行工作覆盖同一份摘要。
这些安排的价值,是明确“当前事实在哪里”。任务之间不共享脑内记忆;新对话必须实际读取最新检查点,再打开对应结果与代码。跨问迁移一个稳定模块,也不能仅凭名称相同,必须固定来源并在本问条件下验证。尤其 Q3 全向的无信号排除,不能因为好用就直接进入 Q4 定向模型。
冻结究竟冻结什么
最终采用后,需要固定运行源码与必要几何配置,而不只是记一个策略名字。同一名字下面改了一行阈值,行为就可能改变;相同代码若载入另一份站点配置,也可能不再对应原覆盖证明。支撑包中的 29 项运行冻结文件,提供了核对实际内容的锚点。
正式测试以后,原生加密日志保持原名与原字节。用于统计的公开动作文件另行保留,不能为让费用表好看而删除失败动作。正式表应由实际记录重建,并与退出虚拟时钟核对。哈希能证明“文件是否还是那份”,不能单独证明“内容的数学结论正确”,两类检查各有用途。
为什么要把代码、数据和图留在一起
论文中的一张柱状图,至少需要回答四个问题:原始数据在哪;怎样变成这一组分项;使用哪一种平均;哪段程序生成图。如果这些信息都留在一次聊天里,换电脑或过几天就难以恢复。将代码、汇总输入、原始证据和绘图产物分别归档,才能沿着图表反向追溯。
最后的 32 页 PDF与更早的内部论文版本不同。此前本地检查点仍记录“正式待做”和另一份更长的附录安排;本轮复盘以我新提供的最终包为准,从里面读到了正式六局结果。它提醒我们,旧工作台摘要只是某个时间点的记录,不能因为它写得详细就压过更新的实际交付。
但“我确认这是最终提交材料”与“提交平台已经出具受理回执”仍是不同证据。本文接受前者作为材料身份,能够核对日志上传归档,没有据此声称看到了后者,更不会凭材料目录推测官方评分或奖项。
如果重来一次,哪些事情应该更早做
我会更早整理一张规则表,逐项标出未知信息、允许动作、反馈语义和时间费用。固定误差与定向无信号这种条件,一旦一开始读错,后续代码写得越多,修正成本越高。
我会更早跑通最小完整闭环,哪怕最初的策略很慢:能合法进入、处理反馈、清除、说明停止、正常退出并保存日志。然后在同一闭环上改进,避免等到论文临近完成才发现运行状态和证明状态无法对上。
我会更早冻结独立验证布局与基准,对每个优化记录预期机制,而不是先观察大量结果,再回头挑一种有利的解释。失败案例和高耗时案例应该从一开始就保留,不能到了正式写作才决定哪些数字适合展示。
我会把参数分成几何阈值、工程裕量与调度偏好。20 米、28 米格子之间有直接覆盖关系;19.9 米留有数值裕量;80 米和 200 米是特定分支门槛。改参数之前先知道它承担什么责任,才能判断需要重做证明、补回归还是仅比较效率。
最后,我会把论文写作与实验数据生成更紧密地连接起来。不是等模型“全部完成”才写,也不是先用想象补出最终数字,而是让每个采用结论始终有当前文字和来源。这样在最后阶段,主要工作是检查与收拢,而不是重新猜测几天里到底发生了什么。
这次 B 题留给我的,不是一套可以直接复制到所有问题的万能算法。更持久的经验,是把“我觉得可行”一步步推到“我能说明为什么可行”,再推到“实际记录确实与这份说明一致”。这种推进很慢,也常常看不到最优解在哪里,但它让最后的结果可以被理解、被复查、被继续改进。
19 读完之后:一张概念地图与可继续追溯的资料
这篇文章的四问可以沿着一条线重读。问题一解决“已有观测允许哪些位置”,给出半平面交会、直径与覆盖圆的区别;问题二解决“下一次观测去哪里比较合理”,将接收保证与交会几何分开;问题三加入源数未知和全域行动,用覆盖与有限定位接成完整任务;问题四改变接收语义,再以定向覆盖、锚定约束与有界调度重建这个任务。
如果公式太多,可以先只记住三个集合。第一个是源可能在哪里的兼容集合;第二个是机器狗能去哪里的安全或候选测点集合;第三个是为了保证发现而实际必须完成的站点集合。它们都能画在平面上,却服务不同问题。将这三者分开,大部分名词就不再绕。
再记住三个数的角色。20 米是物理清除半径,19.9 米是证书采用的工程阈值,80 米是是否尝试中心清除的启发式门槛。对后两问而言,任何路线代表点、样本平均或估计半径,只要还没经过相应的完整区域核验,就没有资格替代 20 米覆盖证据。
常见疑问,集中回答
为什么不把误差锥中心线相交,直接清除? 因为中心线只是报告方向,不是精确真实方向。一个点估计可以用于规划,但要保证距离不超过清除阈值,需要控制全部允许误差下的兼容范围。
为什么圆域外面可以设站? 题目用半径 1800 米限制源分布,不限制机器人运动。Q4 外环凸包要包住源域并照顾边界朝外发射,略在圆外的站具有明确几何用途。
为什么找到十个还要继续找? 十个是源数下界,不是实际数量。除非已经清除十六个,或者完成所需覆盖并处理全部已发现目标,否则没有足够依据排除仍未知的源。
为什么已经有定位圆,还会试探失败? 有保证清除只在覆盖证书满足时成立。80 米内中心试探等分支是有次数限制的付费尝试,它们允许失败,并把失败完整计入费用。论文中的“全清”是整局完成,不是每次动作都成功。
为什么不能删掉从未触发的兜底? 已运行样本没有触发,只说明这些样本上常规分支够用。有限兜底承担其他合法情况的完成依据,删除它后需要重新解释那些情况怎样结束。
为什么不直接用更多采样证明保证? 普通有限采样可能漏掉连续空间的小洞。Q3 整格覆盖的关键是半对角线裕量,Q4 单元覆盖的关键是凸性与有限极值点,108 点覆盖的关键是格角到格心距离。这些结构才把有限检查延伸到连续区域。
为什么不报每个模块提高了多少? 最终归档缺少同场景消融记录。可以解释机制、报告完整策略表现,不能用不配对场景的均值差为模块生成因果贡献。
来源与核验范围
材料来源为 FXY 提供并确认为最终提交件的《论文源码最终版.pdf》与 139.rar。题目规则、四问证明、参数与结果均从这份最终材料整理。文中的教学坐标例、账本例与解释性类比,会明确与正式轨迹区分;动画只使用公开动作,不补造隐藏源真值。
论文中的几何依据包括最小包围圆的经典结果,相关参考列于原论文参考文献;本篇不增加未经查证的外部研究结论。读者若需要追溯每个公式,可对应论文第二章的半平面与包围圆、第三章的四圆盘选点、第四章的全向联合调度、第五章的定向覆盖与锚点定位、第六章的正式结果与计费核验。
本次新增检查是对现有材料的只读核对:六局公开动作费用重算、不同频道清除计数、退出虚拟时钟、六份原生日志 SHA256 与 29 项运行冻结文件一致。没有重新运行策略、没有重新调用官方演练或正式测试,也没有把 AI 核对记作人工审核。
个人难度评价与最终算法优化感受,来自 FXY 在本次复盘中的明确补充。其余文字由 AI 协助展开,没有虚构最难的一晚、队友争论或没有记录的戏剧性情节。UsageMesh 原图只代表截图筛选范围,估算费用不是实付账单,全部用量也没有被擅自归为本项目独占。
文末交互附件已内置六局动作数据。下载 HTML 用浏览器打开,可以选择局次、播放或暂停、拖动动作进度,观察清除数量与虚拟时间如何变化。它便于阅读过程,不是模拟器,不支持重算策略,也没有隐藏真值输入。读者看到的是已经发生的公开动作,而不是一个可以预测新场景成绩的工具。
回到文章开始的那句话:我依然觉得,这道 B 题的难度体验非常特别。最深的收获,是意识到一个答案真正落地,需要兼顾数学、行动、证据和表达。我们没有找到一个足以声称全局最优的终点,但确实把一段充满不确定性的过程,推进到了可以说明、可以结束、可以交付的位置。
整理日期:2026-09-13。唯一记录 ID:FXY-20260913-B-BLOG-01。
- 作者:FXY
- 链接:https://www.xpy.me/article/cumcm2026-b-retrospective
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章




