\section{实验结果与分析} \subsection{实验设置与数据来源} 本文的实验分两部分,职责严格区分。 \textbf{机制论证与定量结论}取自项目内自建模拟器 (\pathtext{referee},按题面附件 1、附件 2 复现的评测机)的演练局: 演练局可提供真实源位置、机器人轨迹和逐次检测读数, 因此能够支撑路径示意、机制分析与逐局的定量比较。 \textbf{最终效果验证}取自官方模拟器的六份正式导出包, 因无法获取真实位置点,只在附录~\ref{app:formal} 中报告清除数量、总虚拟时间与程序运行时间。 演练局由 \pathtext{scripts/run\_practice\_episodes.py} 采集:脚本启动评测机、 以固定种子开始一局演练,再用与 \texttt{mcm26b.cli run} 相同的生产策略对接接口, 真值与行为日志全部由评测机自己写入,策略端只看见 HTTP 响应。 采集批次共 $\PractTotalCases$ 局:问题三 $\PractQThreeCases$ 局全向源、问题四 $\PractQFourCases$ 局混合源, 源数覆盖 $10$ 至 $16$、接收半径覆盖 $1000$ 至 $1500$ m,问题四的定向源个数覆盖 $3$、$6$、$8$。 判定标准为"清完全部源 $\wedge$ 无缺席误判 $\wedge$ 主动退出 $\wedge$ 零异常 $\wedge$ 零失败清除", 本批 $\PractTotalComplete$ 局全部满足,因此可以直接作为当前实现的性能证据, 累计清除 $\PractTotalCleared$ 个源。 所有时间均按式~\eqref{eq:time} 的计时模型由动作序列独立复算, 复算值与评测机日志记录的\textbf{最大偏差为 $\PractMaxGap$ s}, 说明本文的时间口径与模拟器实现完全一致,后文所有耗时数字均可重算。 为使"最优实现"的说法可检验,本文对每一问都准备了一个\textbf{朴素基线}, 两者在同一算例上逐例配对比较: 问题一的基线用包围盒对角线代替真实直径,并以包围盒中心近似覆盖圆; 问题二的基线分别取"垂直首次示向度 $1000$ m 的 $90^\circ$ 交会点"与"候选集最小包围圆圆心"; 问题三的基线用 $49$ 点($700$ m 步长)网格发现加就近服务; 问题四的基线则把问题三的两种策略原样搬用。 基线并非稻草人:它们在部分场景中有效,暴露的是"缺了哪一步"。 \subsection{问题一与问题二的配对对比} 先看几何层的两个判据在数值上的表现。问题一用固定示例与随机交会算例 (共 $\ProjQOneExampleCases$ 例固定、$\ProjQOneRandomCases$ 例随机)对比两种实现, 见表~\ref{tab:q1compare}。 \begin{table}[htbp] \centering\small \caption{问题一:直径与覆盖判定的实现对比(时间单位:ms/例)} \setlength{\tabcolsep}{3pt} \begin{tabular}{p{3.4cm}rrrrr} \toprule 实现 & 状态正确率 & 直径平均误差/m & 直径最大误差/m & 覆盖正确率 & 平均耗时/ms\\ \midrule 最优(固定 $\ProjQOneExampleCases$ 例) & 100.0\% & 0.000 & 0.000 & 100.0\% & $\ProjQOneFixedMsOpt$ \\ 最优(随机 $\ProjQOneRandomCases$ 例) & 100.0\% & 0.000 & 0.000 & 100.0\% & $\ProjQOneRandMsOpt$ \\ 基线(固定 $\ProjQOneExampleCases$ 例) & $\ProjQOneFixedStatusBase$ & $\ProjQOneFixedMaeBase$ & $\ProjQOneFixedMaeMaxBase$ & $\ProjQOneFixedCoverBase$ & $\ProjQOneFixedMsBase$ \\ 基线(随机 $\ProjQOneRandomCases$ 例) & $\ProjQOneRandStatusBase$ & $\ProjQOneRandMaeBase$ & $\ProjQOneRandMaeMaxBase$ & $\ProjQOneRandCoverBase$ & $\ProjQOneRandMsBase$ \\ \bottomrule \end{tabular} \label{tab:q1compare} \end{table} 由表可见,最优实现(半平面交 \(+\) 顶点对枚举 \(+\) 最小包围圆) 在固定与随机两类算例上的直径误差均为零、覆盖判定全部正确; 基线的直径平均绝对误差为 $\ProjQOneFixedMaeBase$ m(固定例) 与 $\ProjQOneRandMaeBase$ m(随机例),最大误差达 $\ProjQOneRandMaeMaxBase$ m, 覆盖判定正确率仅 $\ProjQOneFixedCoverBase$ 与 $\ProjQOneRandCoverBase$。 原因在于包围盒对角线只有在区域恰好与坐标轴对齐时才等于直径, 而基线的覆盖判据几乎恒判"覆盖",因此系统性偏乐观。 计算代价方向相反:最优实现平均 $\ProjQOneRandMsOpt$ ms, 基线 $\ProjQOneRandMsBase$ ms,说明精确判据并不以牺牲效率为代价。 问题二的差距出现在"保证接收"与"定位收缩"这对指标上,见表~\ref{tab:q2compare}。 入选标准是:安全盘内最坏后验半径越小越好,同时保证接收率必须为 $100\%$。 \begin{table}[htbp] \centering\small \caption{问题二:第二检测点选点策略对比($\ProjQTwoCases$ 例随机首次示向度)} \setlength{\tabcolsep}{3pt} \begin{tabular}{p{3.2cm}rrrrrr} \toprule 选点方法 & 保证接收率 & 最坏后验均值/m & 中位/m & 平均收缩/m & 终值比 & 移动均值/s\\ \midrule 算法2(默认选点) & $\ProjQTwoGuaranteeOpt$ & $\ProjQTwoWorstOpt$ & 90.899 & 607.577 & $\ProjQTwoRatioOpt$ & 170.44 \\ 参考:盘内网格枚举 & 100.0\% & $\ProjQTwoWorstRef$ & 91.349 & 605.841 & 0.106 & 170.28 \\ 基线:垂直 $1000$ m & $\ProjQTwoGuaranteePerp$ & $\ProjQTwoWorstPerp$ & 90.775 & 601.356 & 0.116 & 200.00 \\ 基线:候选圆心 & $\ProjQTwoGuaranteeMec$ & $\ProjQTwoWorstMec$ & 375.088 & 340.721 & $\ProjQTwoRatioMec$ & 136.29 \\ \bottomrule \end{tabular} \label{tab:q2compare} \end{table} 初始候选半径均值为 $\ProjQTwoInitialRadius$ m。 由表~\ref{tab:q2compare} 可知:垂直 $1000$ m 基线的最坏后验半径与最优实现接近, 但保证接收率只有 $\ProjQTwoGuaranteePerp$——当真源位于角域远端时必然返回无信号, 这正是问题二所要避免的失败模式;候选圆心基线的保证接收率为 $\ProjQTwoGuaranteeMec$, 但最坏后验半径达 $\ProjQTwoWorstMec$ m,终值比 $\ProjQTwoRatioMec$, 相当于只收缩了一半,说明"保证接收"若脱离横向基线便几乎没有定位价值。 最优实现同时取得 $\ProjQTwoGuaranteeOpt$ 的保证接收率与 $\ProjQTwoWorstOpt$ m 的最坏后验均值,终值比 $\ProjQTwoRatioOpt$, 并与盘内网格枚举参考解($\ProjQTwoWorstRef$ m)相差不到 $2\%$。 \subsection{问题三:演练局结果与基线对比} 问题三的闭环在 $18$ 个冻结场景上逐例配对运行,三种策略的结果见表~\ref{tab:q3compare}。 \input{data/project-q3-table} 三者的全清率都是 $100\%$,因此差别完全体现在代价上。 默认策略 \texttt{bayes} 的平均虚拟时间为 $\ProjQThreeMeanOpt$ s, 七点批量策略为 $\ProjQThreeMeanSeven$ s, $49$ 点网格基线为 $\ProjQThreeMeanBase$ s; 相对基线,\texttt{bayes} 的平均降幅为 $\ProjQThreeDropOpt$、中位降幅 $\ProjQThreeDropMedianOpt$, 并在 $\ProjQThreeFasterOpt$ 个场景中全部更快。 代价的来源也很清楚:默认策略平均只需 $\ProjQThreeMeasuresOpt$ 次检测、 位移 $\ProjQThreeMoveOpt$ km,而网格基线需要 $\ProjQThreeMeasuresBase$ 次检测、 $\ProjQThreeMoveBase$ km。可见网格基线的开销主要来自"逐格走过去再检测", 而七点计划加网格幸存集把大量必然无信号的检测直接跳过, 再配合滚动任务排序把移动量压到约五分之一。 这一机制在真实演练局中得到复现。表~\ref{tab:q3practice} 给出问题三 全部 $\PractQThreeComplete$ 局全清演练局的直接统计。 \input{data/practice-q3-table} $\PractQThreeComplete$ 局的源数覆盖 $10$ 至 $16$,全部实现清除数等于源数, 且没有一次失败清除;总虚拟时间集中在 $\PractQThreeMin$ 至 $\PractQThreeMax$ s, 平均 $\PractQThreeMean$ s,平均定位清除时间 $\PractQThreeMeanClear$ s/个。 随源数增加,总虚拟时间只从约 $3.0\times10^3$ s 增长到约 $4.0\times10^3$ s, 说明发现—定位—清除三个闭环的组织方式对源数量并不敏感。 \begin{figure}[htbp] \centering \includegraphics[width=0.94\linewidth]{selfbuilt-q3-search-clear-path.png} \caption{自建模拟器演练局 \texttt{\PractQThreeMainCase}($\PractQThreeMainSources$ 个全向源)的搜索与清除路径。 折线为机器狗轨迹;每条浅色细射线表示一次 $\direction$ 检测测得的示向度, 射线起点即发起该次检测的位置;圆点为测到示向度的检测点($55$ 次), 菱形为测到近距离的检测点($1$ 次),灰色叉号为无信号检测点($29$ 次); 星号为成功清除点,金色叉号为干扰源真值。全部数据由自建模拟器真值输出。} \label{fig:selfbuiltq3} \end{figure} 图~\ref{fig:selfbuiltq3} 给出其中一局(\texttt{\PractQThreeMainCase}, $\PractQThreeMainSources$ 个源)的完整路径。 机器人先按七点计划完成覆盖与批量扫频,再围绕候选区域执行定位与清除; 清除点与源真值基本吻合,轨迹在多个源之间跳跃后逐步收敛。 该局共检测 $\PractQThreeMainMeasures$ 次、换频 $\PractQThreeMainSwitches$ 次, 移动 $\PractQThreeMainMove$ km,总虚拟时间 $\PractQThreeMainTime$ s, 程序运行时间仅 $\PractQThreeMainRun$ s。 \subsection{问题四:演练局结果与基线对比} 问题四的困难来自遮挡,因此对比的重点不只是时间,还包括"是否真的全部清除"。 表~\ref{tab:q4compare} 给出三种策略在 $11$ 个混合源场景(含 $5$ 个边界定向源场景)上的结果。 \input{data/project-q4-table} 由表~\ref{tab:q4compare} 可见,把问题三的策略直接搬用会产生两类不同后果。 \texttt{bayes} 的七点全向缺席判据会把朝外发射的定向源误判为"不存在", 因而出现 $\ProjQFourAbsentBase$ 次缺席误判、全清率只有 $\ProjQFourClearBase$, 其平均虚拟时间($\ProjQFourMeanBase$ s)虽然最短,却是"快而错", 不能作为有效结果;$49$ 点网格策略的发现是完备的, 但没有后备清除,定位停滞时只能停在"已发现"状态,全清率 $\ProjQFourClearGrid$,属于"稳而不全"。 默认策略 \texttt{directional} 在全部 $\ProjQFourValidOpt$ 局有效, 全清率 $\ProjQFourClearOpt$,缺席误判为零,平均虚拟时间 $\ProjQFourMeanOpt$ s, 平均需要 $\ProjQFourFallbackOpt$ 次后备清除——正是这部分兜底动作 换来了网格与批量策略都达不到的完备性。 演练局进一步显示了遮挡造成的额外代价。表~\ref{tab:q4practice} 给出 全部 $\PractQFourComplete$ 局全清混合源演练的统计。 \input{data/practice-q4-table} 与问题三相比,混合源场景的检测次数增加约 $3$ 倍(平均 $\PractQFourMeasures$ 次 对 $\PractQThreeMeasures$ 次),移动距离约 $\PractQFourMove$ km(对 $\PractQThreeMove$ km), 总虚拟时间平均 $\PractQFourMean$ s,平均定位清除时间 $\PractQFourMeanClear$ s/个, 约为全向源场景的 $2.6$ 倍。原因在机制上是明确的: 一次无信号观测不再等于"源在远处",而可能只是朝向遮挡, 因此必须先用若干探点排除遮挡解释,才能继续收缩位置候选集。 本批 $\PractQFourComplete$ 局全部做到"清完且无失败清除", 说明可见性筛选加后备清除在定向源个数 $3$ 至 $8$ 的范围内是稳定的。 \begin{figure}[htbp] \centering \includegraphics[width=0.94\linewidth]{selfbuilt-q4-search-clear-path.png} \caption{自建模拟器演练局 \texttt{\PractQFourMainCase}($\PractQFourMainSources$ 个源, 其中 $\PractQFourMainDirectional$ 个定向源)的搜索与清除路径。 $\mathbf{X}$ 为干扰源真值,每个定向源用"绿箭头(发射朝向)$+$ 浅绿细线扇形($\pm90^\circ$ 可见范围)$+$ 角度标注"表示; 每条浅色细射线表示一次 $\direction$ 检测测得的示向度,射线起点即发起检测的位置; 圆点为测到示向度的检测点($72$ 次),菱形为测到近距离的检测点($3$ 次), 灰色叉号为无信号检测点($84$ 次,其中相当一部分由朝向遮挡造成),星号为成功清除点。} \label{fig:selfbuiltq4} \end{figure} 图~\ref{fig:selfbuiltq4} 给出含定向源的一局(\texttt{\PractQFourMainCase}, $\PractQFourMainSources$ 个源、其中 $\PractQFourMainDirectional$ 个定向)的路径。 定向源的前向半盘造成大量无信号观测,轨迹比全向源局密集得多; 可见性筛选把探点优先放在朝向相容的位置,后备清除则在定位停滞时兜底完成清除。 该局共检测 $\PractQFourMainMeasures$ 次、换频 $\PractQFourMainSwitches$ 次, 移动 $\PractQFourMainMove$ km,总虚拟时间 $\PractQFourMainTime$ s。 \subsection{动作耗时分解} 上面的对比说明"哪种策略更快",还需要说明"时间花在哪里"。 把式~\eqref{eq:time} 重排,得到累计移动时间 \begin{equation} T_{\mathrm{move}} =T-5N_m-N_s-5N_c^+-3N_c^-. \label{eq:residual} \end{equation} 据此可把每局的总虚拟时间拆成移动、检测、换频与清除四项,见表~\ref{tab:cost}。 \input{data/practice-cost-summary-table} \begin{figure}[htbp] \centering \includegraphics[width=0.86\linewidth]{practice-virtual-time.png} \caption{自建模拟器演练局的总虚拟时间分布。每个点代表一局, 实线段为该问题全清局的均值;横轴取对数刻度, 问题四(混合源)的整体耗时明显高于问题三(全向源)。} \label{fig:practicetime} \end{figure} 由图~\ref{fig:practicetime} 与表~\ref{tab:cost} 可见, 两类场景中移动时间都是主要成本,分别占 $\PractQThreeMoveShare$ 与 $\PractQFourMoveShare$, 因此缩短总耗时的主攻方向是减少移动,这与问题三相对基线的降幅主要来自位移下降相互印证。 清除动作本身只占 $\PractQThreeClearShare$ 与 $\PractQFourClearShare$, 说明"清除"不是时间瓶颈,真正的成本在于把机器人送到能清除的位置。 检测与换频合计占比不高,但因换频次数与移动路径耦合, 仍需一并计入路径排序,不能单独优化。 \subsection{本节结论} 综合以上配对对比与演练局复算,可提炼出四点结论: 1. 几何层的精确判据不需要以效率为代价——问题一的最优实现误差为零而耗时更短, 问题二则在保证接收率为 $100\%$ 的同时把最坏后验半径压到基线的约五分之一; 2. 多源搜索的效率来自"证明不需要检测",网格幸存集与七点覆盖使默认策略的检测次数 和位移相对网格基线分别降到约四分之一和五分之一,平均虚拟时间下降 $\ProjQThreeDropOpt$; 3. 混合源场景必须为无信号保留朝向解释,否则会出现缺席误判; 默认策略以全清率 $100\%$、缺席误判 $0$ 和平均 $\ProjQFourMeanOpt$ s 的代价 换取了这种完备性; 4. 本次采集的 $44$ 局演练中,两类场景的全部源都被清除且失败清除为零, 移动时间占总耗时的 $\PractQThreeMoveShare$ 与 $\PractQFourMoveShare$, 是继续优化的首要对象;清除动作本身只占 $\PractQThreeClearShare$ 与 $\PractQFourClearShare$, 不是当前的时间瓶颈。