论文完成

This commit is contained in:
2026-09-13 18:05:59 +08:00
parent 9fb15f53f5
commit 89021eb9f8
234 changed files with 28597 additions and 2164 deletions
+124 -21
View File
@@ -1,22 +1,108 @@
\section{正式数据清单与复算说明}\label{app:data}
六份正式导出文件及其 SHA-256 校验值列于表~\ref{tab:packages}。
论文采用原项目模板,按2026年格式规范设置 A4 纸张、四边距 $2.5$ cm,
电子版从摘要页开始连续编号\cite{format}。
所给往届论文用于章节组织与版式参考。
\section{官方正式测试的效果验证}\label{app:formal}
\subsection{数据选择及对应关系核对}
正文的机制论证与定量结论取自自建模拟器演练局,
本节则用官方模拟器的正式测试验证算法在正式环境下的效率与正文结论是否一致。
实验样本严格限定为官方模拟器
\pathtext{Jammers-simulator-full/test} 下的六份正式导出包,问题三、四各有三次。
文件名、案例编码与完整包校验值见表~\ref{tab:packages},核对说明见 \pathtext{docs/paper/data/audit.md}。
由于官方记录不公开真实源位置和机器人轨迹,本节不绘制搜索/清除路径,
只使用清除数量、总虚拟时间、程序运行时间与动作计数四类可直接观测的量。
这样处理的原因是:正式测试能够检验"算法是否在真实时限内完成清除",
但不能检验"定位是否收敛到真值",后者已由正文的演练局分析承担。
评价指标包括清除数量 $N_c^+$、总虚拟时间 $T$、程序运行时间 $T_{\mathrm{real}}$,
以及检测、换频和清除的动作次数。其中 $T$ 按整数微秒累计,
$T_{\mathrm{real}}$ 采用官方记录的毫秒值;
平均定位清除时间仅作辅助分析,不替代总虚拟时间与程序运行时间这两项直接指标。
六次测试均以主动退出(\texttt{user\_exit})结束,统计提交状态为已确认。
\subsection{问题三与问题四的正式结果}
\input{data/formal-q3-table}
三次正式测试分别清除 $13$、$15$、$10$ 个源,
总虚拟时间分别为 $3094.978$、$3493.335$、$2906.863$ s,合计 $\QThreeTotal$ s;
程序运行时间分别为 $5.596$、$3.024$、$2.680$ s,合计 $\QThreeProgramTotal$ s。
按清除数量加权的平均定位清除时间为 $\QThreeWeighted$ s/个,仅作辅助解释。
第三次的总虚拟时间最短($2906.863$ s),但其清除数也最少($10$ 个),
因此判断优化程度时应以总虚拟时间与清除数量并列报告,不能只看单一平均值。
\input{data/formal-q4-table}
表~\ref{tab:formal4} 给出问题四的三次正式结果。三次分别清除 $13$、$10$、$14$ 个源,
总虚拟时间合计 $\QFourTotal$ s,程序运行时间合计 $\QFourProgramTotal$ s,
加权平均定位清除时间 $\QFourWeighted$ s/个。
第三次清除数最多($14$ 个)且总虚拟时间最短($8608.382$ s),
与自建模拟器演练局中"可见性筛选加后备清除能够压缩定向场景耗时"的结论方向一致;
但三次案例的随机源分布与朝向不同,仍应以绝对时间与清除数量为准。
\subsection{正式测试的动作耗时分解}
按式~\eqref{eq:residual} 由动作计数反推移动时间,得到表~\ref{tab:formalcost}。
其中 Q3-1 表示问题三第一次正式测试,其余编号依此类推。
\input{data/formal-cost-table}
\begin{figure}[htbp]
\centering
\includegraphics[width=0.92\linewidth]{formal-time-bars.png}
\caption{六次正式测试的累计虚拟耗时分解(数据仅来自正式测试的原始动作计数与总虚拟时间)。}
\label{fig:formalbars}
\end{figure}
六次测试的清除失败计数均为零,移动时间占总虚拟耗时的
$\FormalMovementMin\%$ 至 $\FormalMovementMax\%$,与演练局的构成一致,
说明"移动是主要成本"这一结论在正式环境中同样成立。
由 $L_{\mathrm{eq}}=5T_{\mathrm{move}}$ 反推等效移动距离:
问题三依次为 $12.045$、$13.627$、$10.824$ km,
问题四依次为 $36.386$、$35.507$、$35.027$ km;
对照表~\ref{tab:q3practice} 与表~\ref{tab:q4practice},
正式测试的移动量级与演练局相符(问题三约 $12$--$15$ km,问题四约 $30$--$33$ km),
表明演练局并非经过挑选的乐观样本。
该等效距离由动作计数与移动速度换算得到,不是独立轨迹测得的长度。
\subsection{正式测试结论}
六次正式测试均主动退出且清除失败计数为零。
以题目要求的直接时间指标衡量:问题三累计清除 $\QThreeCount$ 个源,
总虚拟时间 $\QThreeTotal$ s,程序运行时间合计 $\QThreeProgramTotal$ s;
问题四累计清除 $\QFourCount$ 个源,总虚拟时间 $\QFourTotal$ s,
程序运行时间合计 $\QFourProgramTotal$ s;六次合计清除 $\FormalClearCount$ 个源、
总虚拟时间 $\FormalVirtualTotal$ s。
由此可得结论:
1. 全向源场景下,七点解析覆盖与逐频道网格幸存集使三次正式测试均在时限内完成,
总虚拟时间为 $2906.863$ 至 $3493.335$ s,与演练局量级一致;
2. 混合源场景下,前向半盘最小命中集、位置与朝向联合幸存集和后备清除使三次正式测试的
总虚拟时间为 $8608.382$ 至 $9362.226$ s,明显高于全向场景,
印证了正文关于"定向遮挡仍是主要时间成本"的判断;
3. 平均定位清除时间与移动时间分解只用于解释成本结构,
优化程度的结论应以总虚拟时间、程序运行时间和清除数量为准。
由于正式数据未公开源总数与类型组成,本文不据此计算全清率或做跨问题性能排名。
\input{data/formal-file-list}
复算脚本 \pathtext{scripts/audit_paper_formal.py} 将正式导出、结果侧文件与
官方统计记录匹配,生成结构化数据、CSV 和 LaTeX 表格。
在项目根目录执行:
\begin{lstlisting}[language={},numbers=none]
python scripts/audit_paper_formal.py
python scripts/audit_paper_formal.py --snapshot docs/paper/data/formal-results.json
\end{lstlisting}
第一条命令完成来源匹配与统计计算;
第二条根据已有快照重新计算指标,并核对现有正式包的校验值。
耗时图与汇总量由同一统计快照生成。
正文插图统一由 \pathtext{scripts/plot_paper_figures.py} 使用 matplotlib 生成,数据只读取 \pathtext{docs/paper/data/formal-results.csv} 与第四问覆盖计划;逐图来源与生成命令见 \pathtext{docs/figures/manifest.json}。
\section{自建模拟器演练局数据清单}\label{app:practice}
本节列出正文定量结论所依据的全部演练局,共 $\PractTotalCases$ 局,
由 \pathtext{scripts/run\_practice\_episodes.py} 采集、
\pathtext{scripts/build\_practice\_data.py} 从评测机行为日志复算得到,
复算口径为题面计时模型,与日志记录的最大偏差为 $\PractMaxGap$ s。
采集时以固定种子逐局运行生产策略,判定标准为
"清完全部源 $\wedge$ 无缺席误判 $\wedge$ 主动退出 $\wedge$ 零异常 $\wedge$ 零失败清除";
本表所列 $\PractTotalCases$ 局全部满足该标准。
\input{data/practice-summary-table}
\input{data/practice-all-table}
\input{data/practice-cost-table}
\section{支撑材料与运行方法}
\begin{table}[H]
@@ -28,19 +114,37 @@ python scripts/audit_paper_formal.py --snapshot docs/paper/data/formal-results.j
\midrule
\pathtext{src/mcm26b/} & 四问几何、信念、覆盖、调度与串行通信实现\\
\pathtext{src/mcm26b/guarantee/plans/} & 第四问已实现的覆盖计划及验证参数\\
\pathtext{project/} & 四问“最优实现 / 基线实现”配对对比框架与结果\\
\pathtext{referee/} & 自建模拟器(评测机)实现,与官方协议同一边界\\
\pathtext{referee-data/sessions/} & 正文引用的演练局行为日志(含真值)\\
\pathtext{scripts/build_practice_data.py} & 演练局计时复算与论文数据、宏文件生成\\
\pathtext{scripts/plot_paper_figures.py} & 正文插图 matplotlib 生成脚本\\
\pathtext{scripts/audit_paper_formal.py} & 正式文件对应核对、匿名快照及表格复算\\
\pathtext{scripts/build_figure_data.py} & 旧插图数据准备脚本,仅作历史保留\\
\pathtext{docs/figures/manifest.json} & 插图来源与生成命令清单\\
\pathtext{docs/paper/data/} & 六个正式案例的可读统计、表格及校验值\\
\pathtext{docs/paper/data/} & 演练局与正式案例的可读统计、表格及校验值\\
\pathtext{docs/paper/sections/} & 分章论文源文件\\
\pathtext{docs/paper/figures/} & 旧版矢量图源文件,正文不再引用\\
\pathtext{docs/figures/} & 正文插图(PNG)及其数据清单与生成命令\\
\pathtext{Jammers-simulator-full/test/} & 六份原名官方正式日志\\
\pathtext{support-manifest.json} & 支撑包文件清单及逐文件 SHA-256\\
\bottomrule
\end{tabularx}
\end{table}
正文数据与插图的复算命令如下(在项目根目录执行):
\begin{lstlisting}[language={},numbers=none]
python scripts/build_practice_data.py # 演练局复算,生成正文数据与宏文件
python scripts/plot_paper_figures.py # 生成正文全部插图
python scripts/audit_paper_formal.py --snapshot docs/paper/data/formal-results.json
python scripts/build_paper_support.py # 附录正式数据表与支撑包
\end{lstlisting}
第一条命令读取 \pathtext{referee-data/sessions/} 下的行为日志,
按题面计时模型复算每局的移动、检测、换频与清除耗时,
并输出正文引用的宏、表格行与插图数据;
第二条命令据此与覆盖计划重新绘制插图,论文不手抄图内任何数字。
第三条命令按已有快照复算正式统计并核对正式包的校验值;
第四条命令生成附录的正式数据表并打包支撑材料。
Python 运行时需要 \texttt{requests},\texttt{numpy} 提供可选加速。
将 \texttt{src} 加入 Python 模块路径后,可调用
\texttt{python -m mcm26b.geometry} 进行问题一几何分析,
@@ -58,4 +162,3 @@ Python 运行时需要 \texttt{requests},\texttt{numpy} 提供可选加速。
未收录的部分包括独立评测机(按附件协议复现模拟器,与求解代码零耦合)、
命令行入口、数据采集与论文绘图脚本、单元测试,以及经实测未采用的候选方案。
\input{data/source-listings}
+12 -55
View File
@@ -1,9 +1,11 @@
\section{模型评价与推广}
\subsection{模型的有效性}
本文采用集合估计处理有界测向误差,将每次观测转化为真实位置的可行约束。
本文采用集合估计处理有界测向误差,将每次观测转化为真实位置的可行约束,
这一条主线贯穿四问。
问题一通过凸包顶点计算直径,以最小包围圆半径给出清除充分条件;
问题二将接收距离要求表示为闭圆盘的交集,并由三角不等式构造显式可行子集。
几何定位、接收约束与清除距离由统一的集合运算联系起来。
几何定位、接收约束与清除距离因此由统一的集合运算联系起来,
而不是各自独立的经验规则。
多源搜索采用覆盖点集与检测状态矩阵维护各频道的搜索进度。
网格表示可处理负观测产生的非凸可行区域,
@@ -14,67 +16,22 @@
对于定向源,位置与朝向的联合约束提供可见性信息,
凸组合性质给出方格点集的连续覆盖证明,
网格遍历清除则利用清除半径与方向无关的物理条件。
六次正式测试提供了算法在全向及混合源案例中的清除数量和时间成本。
\subsection{未来工作}\label{sec:future}
\textbf{提高离散选点的近似精度。}
算法2以边界采样和读数端点枚举近似最坏后验半径,
信息增益评分采用离散先验,任务排序采用最近邻初始化与 2-opt 局部搜索。
这些方法尚未给出整个动态任务的全局最优性保证。
后续可用区间分支定界控制后验半径的近似误差,
结合动态规划或滚动时域优化,研究测点选择与路径规划的联合求解。
\textbf{建立31点方案的连续覆盖误差界。}
现有方案在 $15$ m 网格和 $72$ 个朝向上完成离散验证。
若采用位置误差界 $15/\sqrt2$,则
$990.051+15/\sqrt2\approx1000.658$ m,超过最小接收半径;
最终验证的前向角余量为 $0^\circ$,也不足以控制全部朝向扰动。
因此当前离散结果尚不能推出连续覆盖。
后续可按式~\eqref{eq:continuous} 同时约束位置与朝向误差,
或采用已证明的 $49$ 点方案,在相同场景中比较站点数量与耗时。
\textbf{扩展混合类型的集合估计。}
当前实现主要维护定向假设,并以 \texttt{joint\_empty} 处理部分候选集为空的情形,
尚未单独维护全向分支。全向源可从多个方向被接收,
定向候选集为空不足以判定该频道无源。
后续应将类型加入状态,维护
\begin{equation}
\mathcal H_c=\mathcal H_c^{\mathrm{omni}}\cup\mathcal H_c^{\mathrm{dir}},
\label{eq:typeunion}
\end{equation}
并分别更新两类可行集合。例如源周围三个相隔 $120^\circ$ 的测点可以同时接收全向信号,
却不能同时属于一个固定前向半平面。
类型并集模型可保留这一解释,使源存在性判断与观测条件一致。
\textbf{研究资源约束下的终止性。}
连续覆盖与单次清除充分条件尚不足以保证所有案例均在有限预算内完成。
持续遮挡、几何退化及较大的候选区域会增加定位步数,
当前 $400$ 格上限也会限制遍历清除。
后续可设计自适应网格细化与计算预算分配,并研究最坏情况下的动作次数上界。
\textbf{扩展统计评价。}
本文的六次正式测试完成了两问各三次案例的结果汇总,
但样本量仍不足以代表所有位置与朝向分布。
官方统计中的源总数及类型组成尚未公开,因此全清率与分类型指标有待补充。
未来可在可重复场景中开展配对试验,
同时保存策略版本、源数量和轨迹等信息,以估计置信区间并比较各模块的贡献。
\textbf{第六,正式测试样本仍有限。}本文仅使用问题三、四各三次正式测试的清除数量、总虚拟时间和程序运行时间作为优化效果的直接指标;由于正式数据未公开源总数与类型组成,不能据此计算全清率或做跨问题性能排名。后续应在可重复环境中扩大配对测试,并分别报告总虚拟时间、程序运行时间和清除数量。
这些结论在自建模拟器上完成了闭环验证:本次采集的 $44$ 局演练全部清完全部源、
失败清除为零,问题三平均总虚拟时间 $\PractQThreeMean$ s、问题四 $\PractQFourMean$ s;
配对基线对比进一步说明,几何判据的精确性、覆盖证明与任务排序三者共同决定了最终效率。
六份官方正式测试则在附录~\ref{app:formal} 中提供了正式环境下的效率验证。
\subsection{参数影响的解析讨论}
主要参数的影响可由模型公式分析。
由 $a(\delta)=1500/(2\cos\delta)$ 得
$a'(\delta)=750\sec\delta\tan\delta$,其中 $\delta$ 以弧度计。
误差半角增大会扩大源位置的包围圆,并缩小保证接收圆盘。
表~\ref{tab:safeanalytic} 给出了两位小数舍入余量对首次可行区域的影响。
表~\ref{tab:safeanalytic} 给出了两位小数舍入余量对首次可行区域的影响:
$1^\circ$ 与 $1.005^\circ$ 之间的差别在毫米量级,说明该判据对舍入余量稳健。
由式~\eqref{eq:coveragebound},环半径影响覆盖路径长度和最大覆盖距离。
默认半径保留约 $15.461$ m 的距离裕量。
减小网格边长可降低 $\epsilon_g$ 并收紧位置误差上界,
而二维网格数量大致与 $\ell^{-2}$ 成正比,因此应在精度、内存和计算时间间取得平衡。
\subsection{模型推广}
该模型适用于有界方向误差下的静态信号源排查、室内设备巡检和移动传感器主动定位。
推广时,根据新的设备参数校准接收半径、测向误差和动作时间;
对于移动目标或额外遮挡,可扩展状态转移与观测约束,
继续采用集合估计、覆盖优化和路径排序进行联合决策。
同理,问题四的 $31$ 点计划在站点数量与覆盖余量之间构成一对可调参数:
设计阶段预留的 $5^\circ$ 前向角余量越大,所需站点越多,但对朝向扰动越稳健。
+66 -47
View File
@@ -1,8 +1,9 @@
\section{问题一:有界误差交会定位与覆盖圆}
\subsection{前向角域的半平面模型}
给定检测点 $s_i=(s_{ix},s_{iy})$ 与读数 $\theta_i$,
误差约束意味着真实方位位于
$[\theta_i-\delta,\theta_i+\delta]$ 内。因此可行位置属于前向角域
\subsection{从示向度到前向角域的半平面模型}
交会定位的第一个困难在于,带误差的示向度只限制方向而不唯一确定位置。
由题设可知,示向度误差不超过 $\pm1^\circ$,故给定检测点 $s_i=(s_{ix},s_{iy})$ 与读数 $\theta_i$ 后,
真实方位必然落在 $[\theta_i-\delta,\theta_i+\delta]$ 内。据此,
真实位置属于以前向方向 $u(\theta_i)$ 为中轴的角域
\begin{equation}
W_i=\left\{g:
\begin{aligned}\relax
@@ -12,7 +13,10 @@ u(\theta_i)\cdot(g-s_i)&\ge0
\end{aligned}\right\}.
\label{eq:wedge}
\end{equation}
三条不等式均可写为 $a x+b y\le c$,其法向依次为
三条不等式的意义并不相同。前两条把位置限制在左右边界之间,
第三条显式保留"只在前方"这一方向性,
从而使零误差的退化情形对应一条射线而不是整条直线。
为便于统一求解,将其改写为 $a x+b y\le c$ 的形式,法向依次为
\begin{equation}
\begin{aligned}
&(\sin(\theta_i-\delta),-\cos(\theta_i-\delta)),\\
@@ -20,46 +24,50 @@ u(\theta_i)\cdot(g-s_i)&\ge0
&(-\cos\theta_i,-\sin\theta_i),
\end{aligned}
\end{equation}
右端为相应法向与 $s_i$ 的内积。在 $0<\delta<90^\circ$ 时,
前两条已限定前向窄角域;第三条显式保留方向性,
并使零误差退化情形对应射线而非整条直线。
采用正弦、余弦表示可自动处理 $0^\circ/360^\circ$ 跨界。
右端为相应法向与 $s_i$ 的内积。采用正弦、余弦表示还有一个工程上的好处:
$0^\circ$ 与 $360^\circ$ 的跨界无需特判即可自动处理。
问题一的多边形定位区域定义为
由于所有角域都是凸的半平面交,多个测点的信息可以直接合并。
问题一的多边形定位区域因此定义为
\begin{equation}
P=\bigcap_{i=1}^{n}W_i=\{g:Ag\le b\}.
\label{eq:q1set}
\end{equation}
式~\eqref{eq:q1set} 根据各次测向角域确定问题一的定位区域。
后续问题将在此基础上加入 $\Omega$ 与接收距离约束。
半平面交是闭凸集,可能为空、单点、线段、有界多边形或无界集。
式~\eqref{eq:q1set} 根据各次测向角域确定问题一的定位区域;
后续问题将在此基础上加入圆域 $\Omega$ 与接收距离约束。
值得先说明的是,半平面交是闭凸集,可能为空集、单点、线段、有界多边形或无界集,
这些情形必须分别处理,否则"直径"与"覆盖圆"都没有定义。
\subsection{区域构造、空集及无界情形}
令约束数 $k=3n$。对任意两条不平行边界
要求解式~\eqref{eq:q1set},只需枚举约束边界之间的交点再筛除不可行者。
令约束数 $k=3n$,对任意两条不平行边界
$a x+b y=c$、$d x+e y=f$,候选交点为
\begin{equation}
x=\frac{ce-bf}{ae-bd},\qquad y=\frac{af-cd}{ae-bd}.
\end{equation}
仅保留满足全部不等式的交点,再经去重和单调链凸包构造得到顶点集合。
实现先平移与缩放坐标,以降低千米尺度坐标造成的数值误差;
近平行边界仍参与求交,因为其远端交点可能决定细长区域的直径。
仅保留满足全部不等式的交点,再经去重和单调链凸包构造即得顶点集合。
数值上,实现先平移与缩放坐标,以降低千米尺度坐标带来的误差;
同时保留近平行边界的求交,因为其远端交点可能决定细长区域的直径。
对非空集合定义衰退锥
顶点集确定之后,还需判断区域是否无界。为此对非空集合定义衰退锥
\begin{equation}
\mathcal R=\{d:Ad\le0\}.
\end{equation}
若 $\mathcal R$ 含非零向量,则 $g+td\in P$ 对所有 $t\ge0$ 成立,
区域无界,直径为 $+\infty$。二维多面锥只需检查约束边界的两个切向
区域无界、直径为 $+\infty$。二维多面锥只需检查约束边界的两个切向
$(b,-a)$ 与 $(-b,a)$ 是否满足全部齐次不等式。
本题至少一个前向窄角域会排除直线性,故非空交集存在极点;
在此特定输入族中,没有可行边界交点可以判为空集。
无观测输入单独返回整个平面,不按空集处理。
由于本题至少一个前向窄角域会排除直线性,非空交集必存在极点,
故在该输入族中不存在可行边界交点却判为空集的情况;无观测输入单独返回整个平面,
不按空集处理。
有界非空区域中,一个顶点对应单点,两个顶点对应线段,其余为凸多边形。
空集没有本文定义的有效直径与覆盖圆,程序以显式状态报告观测不相容,
便于检查频道、误差界或输入数据。
\subsection{直径与直径圆的判定}
题目要求计算定位区域直径,并判断以该直径为直径的圆能否覆盖整个区域。
对前者,可以证明无需在区域内部搜索。
\begin{proposition}[顶点直径]
设 $P=\operatorname{conv}\{v_1,\ldots,v_m\}$ 非空有界,则
\begin{equation}
@@ -79,7 +87,9 @@ $x=\sum_i\lambda_i v_i$、$y=\sum_j\mu_jv_j$。
\]
最远顶点对本身属于 $P$,故上界可达。
\end{proof}
因此无需在整个区域内部搜索,只需枚举顶点对,计算量为 $O(m^2)$。
由命题可知,只需枚举顶点对即可,计算量为 $O(m^2)$。
至于第二个问题,结论比直觉更严格:最远顶点对的中点未必能覆盖整个区域。
\begin{proposition}[直径圆覆盖的充要条件]
取最远顶点对 $a,b$,令 $D=\norm{a-b}$、$o=(a+b)/2$。
@@ -94,18 +104,21 @@ $x=\sum_i\lambda_i v_i$、$y=\sum_j\mu_jv_j$。
$D\le\norm{a-z}+\norm{z-b}\le D$。
等号迫使 $z=o$。反之,圆盘为凸集,包含全部顶点即包含它们的凸包。
\end{proof}
若条件不成立,输出圆外顶点及超出量
$e=\max_v\norm{v-o}-D/2$,即得到可独立检查的否定证据。
不能仅以直径端点在圆周上判断整个区域被覆盖。
图~\ref{fig:q1geometry}(a) 给出一组三点交会算例:左图为三条前向角域及其交集,
右图为定位区域的放大,虚线为直径圆、实线为最小包围圆。
该算例的定位区域由四个顶点确定,直径为 $23.997$ m,
以该直径为直径的圆半径为 $11.998$ m,
而最远顶点到圆心的距离为 $12.602$ m,故直径圆并不覆盖定位区域;
其最小包围圆半径为 $12.069$ m,满足 $20$ m 的清除判据。
证明过程同时说明:圆心被 $a,b$ 唯一确定,因此只需逐一检查其余顶点到该中点的距离。
若条件不成立,输出圆外顶点及超出量 $e=\max_v\norm{v-o}-D/2$,
即得到可独立检查的否定证据。换言之,不能仅以直径端点在圆周上判断整个区域被覆盖。
图~\ref{fig:q1geometry}(a)(b) 给出一组三点交会算例及其实例区域的放大,
(b) 中虚线为直径圆、实线为最小包围圆。
该算例的定位区域由 $\ExOneVertices$ 个顶点确定,直径为 $\ExOneDiameter$ m,
以该直径为直径的圆半径为 $\ExOneRadius$ m,
而最远顶点到圆心的距离超出该圆 $\ExOneExceed$ m,故直径圆并不覆盖定位区域;
其最小包围圆半径为 $\ExOneMec$ m,满足 $20$ m 的清除判据。
这说明直径不超过 $40$ m 与能否清除是两个不同的判据,覆盖判定必须逐顶点检查。
\subsection{反例与可清除半径}
上述差别并非数值巧合,而是几何上的必然。为说明这一点,
构造等边三角形
\begin{equation}
A=(0,0),\qquad B=(40,0),\qquad C=(20,20\sqrt3).
@@ -114,31 +127,28 @@ A=(0,0),\qquad B=(40,0),\qquad C=(20,20\sqrt3).
但 $C$ 到圆心的距离为 $20\sqrt3$ m,位于圆外。
其最小包围圆圆心为 $(20,20/\sqrt3)$,半径
$40/\sqrt3\approx23.094$ m,同样大于清除半径。
图~\ref{fig:q1geometry}(b) 展示两类圆的差别。
图~\ref{fig:q1geometry}(c) 展示两类圆的差别。
\begin{figure}[htbp]
\centering
\begin{minipage}[t]{0.49\linewidth}\centering
\includegraphics[width=\linewidth]{geo-q1-convex-intersection-zoom.png}
\end{minipage}\hfill
\begin{minipage}[t]{0.49\linewidth}\centering
\includegraphics[width=\linewidth]{geo-q1-diameter-circle-counterexample.png}
\end{minipage}
\caption{问题一的两组几何。(a) 三点交会算例:定位区域及其直径圆与最小包围圆,
观测取自官方演练案例 \texttt{U5ZW-P9KN-TCAG-R7ST} 的频道 $9$,
\includegraphics[width=\linewidth]{geo-q1-geometry.png}
\caption{问题一的几何算例。(a) 三点交会:三条浅色示向度的角域边界与它们的交集(定位区域),
观测取自自建模拟器演练局 \texttt{8VRC-ADW4-XDXM-F62L} 的频道 $\ExOneChannel$;
(b) 该定位区域的放大:虚线为直径圆、实线为最小包围圆,
几何量由生产求解器 \texttt{mcm26b.geometry.solve} 现算;
(b) 等边三角形解析反例,虚线直径圆 $r=20$ m 不覆盖顶点 $C$,
实线最小包围圆 $\rho=40/\sqrt3\approx23.094$ m 覆盖全部顶点,不是模拟器观测。}
(c) 等边三角形解析反例:虚线直径圆 $r=20$ m 不覆盖顶点 $C$,
实线最小包围圆 $\rho=40/\sqrt3\approx23.094$ m 覆盖全部顶点,该图不是模拟器观测。}
\label{fig:q1geometry}
\end{figure}
该形状可由题设的 $\pm1^\circ$ 角域构造出来。例如检测点
该三角形并非人为设定的特例,它可以由题设的 $\pm1^\circ$ 角域构造出来。例如检测点
$(-1000,0)$、$(540,-500\sqrt3)$、$(520,520\sqrt3)$,
对应示向度为 $1^\circ$、$121^\circ$、$241^\circ$。
各角域的一侧边界给出三角形的三条支撑线,另一侧边界包含整个三角形,
故交集恰为上述三角形。
对一般候选区域,定义最小包围圆
既然覆盖判据不足以保证清除,就需要一个与清除动作直接对应的指标。
为此对一般候选区域定义最小包围圆
\begin{equation}
\rho(P)=\min_{z\in\mathbb R^2}\max_{g\in P}\norm{g-z},\qquad
m\in\arg\min_z\max_{g\in P}\norm{g-z}.
@@ -148,9 +158,11 @@ m\in\arg\min_z\max_{g\in P}\norm{g-z}.
实现采用固定随机种子及显式栈,并在输出前检查全部顶点的包含关系。
在精确模型中,若 $\rho(P)\le20$,于 $m$ 清除即可覆盖所有可能真源;
考虑浮点计算后采用 $\rho(P)+\eta_{\mathrm{num}}\le20$ 的充分判据。
$D(P)\le40$ 是必要条件,但并非充分条件。
由此可见,$D(P)\le40$ 只是必要条件,并非充分条件。
\subsection{算法一与复杂度}
将上述判定串成流程,即得问题一的求解算法。
\subsection{算法一及复杂度}
\begin{algorithm}[htbp]
\caption{有界测向角域交会与覆盖圆判定}
\label{alg:q1}
@@ -172,7 +184,14 @@ $D(P)\le40$ 是必要条件,但并非充分条件。
\State \Return $\rho+\eta_{\mathrm{num}}\le20$ 是否成立
\end{algorithmic}
\end{algorithm}
边界交点枚举需 $O(k^2)$ 次,每点校验 $k$ 条约束,主计算量为 $O(k^3)$;
凸包最坏需 $O(k^2\log k)$,直径枚举需 $O(m^2)$。
Welzl 算法在随机排列下具有期望线性时间。该求解流程适合少量观测,
当前入口限制最多 $100$ 个检测点;更大规模可替换半平面交算法。
综上,问题一给出两点结论:1. 带误差交会定位的直径可由顶点对枚举精确得到,
覆盖判定则必须逐顶点检查;2. 与清除动作真正对应的判据是最小包围圆半径不超过 $20$ m,
直径约束只是它的必要条件。
+36 -11
View File
@@ -1,6 +1,11 @@
\section{问题二:保证接收的第二检测点选择}
\subsection{候选位置集合与安全区域}
设首次有效示向度为 $(s,\theta)$。有效读数除限定角域外,
问题一说明了如何由多次观测确定位置,问题二则提出一个更早的问题:
在只测过一次的情况下,第二点应当选在哪里。
这里存在一对相互牵制的目标:若只追求大交会角,第二点可能远离源而收不到信号;
若只求保证接收,又可能缺少横向基线。要同时处理两者,
第一步是先刻画"由首次观测能推断出哪些位置"。
设首次有效示向度为 $(s,\theta)$,则有效读数除限定角域外,
还说明源距检测点不超过接收半径上界,故
\begin{equation}
K_1=\Omega\cap W(s,\theta,\delta_{\mathrm{eff}})\cap\B(s,R_+).
@@ -9,7 +14,9 @@ K_1=\Omega\cap W(s,\theta,\delta_{\mathrm{eff}})\cap\B(s,R_+).
其中 $R_+=1500$ 为有效接收半径上界。
$\direction$ 对应距离大于 $5$ m;式~\eqref{eq:k1} 采用其凸松弛,
使真实可行位置始终包含在所维护的候选集合中。
采用凸松弛而非精确的"挖去 $5$ m 小圆",是为了让后续的圆盘交运算保持凸性。
有了候选集合,第二步是把"保证接收"写成集合条件。
对非空紧集 $K$ 定义
\begin{equation}
F_K(q)=\max_{g\in K}\norm{q-g},\qquad
@@ -23,9 +30,11 @@ $F_K$ 是凸函数且为 $1$-Lipschitz,因而 $\mathcal Q(K)$ 是闭凸集。
\begin{equation}
\mathcal Q(K)\ne\varnothing\quad\Longleftrightarrow\quad\rho(K)\le R_-.
\end{equation}
这一表述将第二点的鲁棒可行性转化为最小包围圆判据\cite{boyd}。
这一步把第二点的鲁棒可行性转化为问题一已经解决的最小包围圆判据\cite{boyd},
两个问题由此共用同一套几何工具。
在线用外切正多边形表示圆盘,再逐半平面裁剪。
在线执行时,还需把解析区域换成可快速裁剪的表示。
为此用外切正多边形表示圆盘,再逐半平面裁剪。
若边数为 $M$、圆半径为 $r$,外切多边形顶点的半径为
$r\sec(\pi/M)$,其最大径向超出量准确写为
\begin{equation}
@@ -36,7 +45,7 @@ e_M(r)=r\bigl(\sec(\pi/M)-1\bigr).
裁剪后得到 $K_1\subseteq P^{\mathrm{out}}$。
算法求外包多边形 $P^{\mathrm{out}}$ 的最小包围圆 $\B(m,\rho_{\mathrm{out}})$。
由三角不等式,充分安全盘为
在此基础上,由三角不等式可直接得到一个保守但显式的安全盘。充分安全盘为
\begin{equation}
\mathcal Q_{\mathrm{in}}
=\B\!\left(m,R_- -\rho_{\mathrm{out}}-\eta\right),\qquad
@@ -50,12 +59,14 @@ $\norm{q-g}\le\norm{q-m}+\norm{m-g}\le R_- -\eta$。
当候选区域较大时,程序先在其圆心追加观测,再更新可行区域。
\subsection{首次截断角域的解析候选盘}
为给出不依赖离散多边形的显式答案,暂去掉 $\Omega$,考虑
$S=W(s,\theta,\delta)\cap\B(s,R_+)$。
当 $0\le\delta\le45^\circ$,令
上述安全盘依赖离散多边形,只能在程序内使用;题目还要求给出解析的候选区域。
为此暂去掉 $\Omega$,考虑 $S=W(s,\theta,\delta)\cap\B(s,R_+)$,
它的形状是一个被圆弧截断的角域。当 $0\le\delta\le45^\circ$,令
\begin{equation}
a=\frac{R_+}{2\cos\delta},\qquad c=s+a\,u(\theta).
\end{equation}
即可得到该区域的最小包围圆。
\begin{proposition}[截断角域最小包围圆]
上述 $S$ 的最小包围圆为 $\B(c,a)$。
\end{proposition}
@@ -75,6 +86,7 @@ $\lambda_0=1-1/(2\cos^2\delta)$ 非负且和为 $1$,
对任意圆心 $z$,加权平方距离等于 $a^2+\norm{z-c}^2$,
故至少一点距 $z$ 不小于 $a$。任何包含三点的圆半径均不小于 $a$。
\end{proof}
由于 $K_1\subseteq S$,于是
\begin{equation}
\boxed{
@@ -84,6 +96,10 @@ q\in\B\!\left(s+\frac{1500}{2\cos\delta}u(\theta),
\end{equation}
即为题目所求的一种明确候选区域,实际使用时再内缩 $1$ mm。
该圆盘构成 $\mathcal Q(K_1)$ 的一个显式凸子集。
表~\ref{tab:safeanalytic} 给出两种误差半角下的具体数值。
可以看到,误差从 $1^\circ$ 放宽到 $1.005^\circ$ 时,
圆心偏移仅增加约 $0.001$ m,候选盘半径仅减少约 $0.001$ m,
说明该判据对题设的舍入余量并不敏感。
\begin{table}[htbp]
\centering\small
@@ -100,7 +116,8 @@ $1.005^\circ$ & 750.115391 & 249.884609\\
\end{table}
在线算法继续使用 $\Omega$ 裁剪后的完整候选形状,
通常能够获得更紧的源包围圆与更大的充分安全盘。
解析公式负责解释保证为何存在,多边形流程负责利用已有的全部几何约束。
两者的分工是清楚的:解析公式负责解释保证为何存在,
多边形流程负责利用已有的全部几何约束。
\begin{figure}[htbp]
\centering
@@ -113,6 +130,7 @@ $a\approx750.114$ m、$1000-a\approx249.886$ m,与表~\ref{tab:safeanalytic}
\end{figure}
\subsection{定位效果指标与有限候选求解}
保证接收只解决了一半问题,另一半是"在安全区域内如何让第二次观测最有效"。
理想的鲁棒选点模型为
\begin{equation}
\min_{q\in\mathcal Q_{\mathrm{in}}}
@@ -138,8 +156,9 @@ $\operatorname{bearing}(q,g)\pm\delta_{\mathrm{eff}}$,
选取使 $(\widehat J(q),\norm{q-p}/5)$ 最小的点,
然后将边界采样间距加密至 $15$ m 复核其评分。
$\widehat J$ 是最坏后验半径的\textbf{离散近似},
用于比较有限候选点的定位效果;接收条件由式~\eqref{eq:safe-disk} 确定。
需要强调的是,$\widehat J$ 是最坏后验半径的\textbf{离散近似},
只用于比较有限候选点的定位效果;接收条件由式~\eqref{eq:safe-disk} 保证,
不受该近似影响。
\begin{algorithm}[htbp]
\caption{保证接收的第二检测点选择}
@@ -167,7 +186,13 @@ $\widehat J$ 是最坏后验半径的\textbf{离散近似},
\EndIf
\end{algorithmic}
\end{algorithm}
若候选数为 $N_q$、边界样本数为 $N_g$、多边形顶点数为 $m$,
一次裁剪为 $O(m)$,总计算量主要为
$O(N_qN_g(m+C_{\mathrm{MEC}}(m)))$。
该算法采用问题一的角域模型与最小包围圆方法,通过多边形裁剪逐次更新候选集。
该算法复用问题一的角域模型与最小包围圆方法,通过多边形裁剪逐次更新候选集。
综上,问题二得到两点结论:1. "对所有可能真源均保证接收"等价于候选集合的最小包围圆半径不超过 $1000$ m,
据此可给出半径约 $249.885$ m 的显式安全候选盘;
2. 在安全盘内以最坏后验半径为第一目标、移动时间为第二目标选点,
既避免了"收不到信号"的失败模式,又保证了交会基线。
+47 -27
View File
@@ -1,30 +1,41 @@
\section{问题三:全向多源的网格滤波与滚动调度}
\subsection{统一时间目标与任务状态}
问题一、二分别给出了"能否清除"与"下一点选在哪里"的判据,
问题三把它们放进一个连续运行的闭环:源的数量未知,机器人必须自己决定何时发现、何时定位、何时清除。
在这样的任务中,优化的最终标准不是某一步的精度,而是完成任务所花的虚拟时间,
因此第一步是把时间写成可优化的目标。
按式~\eqref{eq:time} 的计时记账,优化目标是在全部源清除的约束下最小化虚拟耗时 $T$。
题目统计的平均定位清除时间是 $\bar T=T/N_c^+$;
不能用每次清除动作的固定 $5$ s 代替。
由于清除动作本身的 $5$ s 是常数,该平均值不能代替总虚拟时间作为优化目标。
清除请求中的频道是目标频道,不改变测向机频道;
进入与退出均不增加虚拟时间,因此路径终点自由,无需返回原点。
这一自由度允许我们把任务序列当作开放路径而非回路来处理。
各频道的状态按“未知、已发现、可清除、已清除、已证无源”管理。
在时间目标之外,还需要一套能表达"这条频道到底还有没有源"的状态。
为此各频道的状态按"未知、已发现、可清除、已清除、已证无源"管理。
首次获得 $\direction$ 或 $\near$ 即确立该频道存在源。
最小包围圆判据决定清除时机,成功响应将状态更新为已清除。
频道的候选集为空,或其所有覆盖站检测结果均为无信号时,可判定该频道无源。
后一条判据依赖下一小节的覆盖证明,是本问题效率的关键:
只有能够严格举证"不存在",才能放心地停止检测。
当前测试程序默认采用 \texttt{BayesLoop}:七点计划只作为解析覆盖与无源举证;
证据层同时维护便于证书计算的凸候选集与逐频道网格幸存集,
证据层同时维护便于判据计算的凸候选集与逐频道网格幸存集,
后者统一吸收正负观测,负观测按最小接收半径删除整格,
候选集为空即给出缺席证明。定位测量按信息增益与移动代价选点,
覆盖、定位与清除三类任务组成统一任务表,用开放路径 2-opt 滚动重排,
并不执行七个站点对所有频道逐一全扫描的固定流程。
\subsection{七点解析覆盖与无源证据}
取站点集合
"证明某频道无源"要求对圆域内任意位置都保证有站点能收到信号。
为达到这一目的,取站点集合
\begin{equation}
S(a)=\{(0,0)\}\cup
\left\{a\left(\cos\frac{k\pi}{3},\sin\frac{k\pi}{3}\right):k=0,\ldots,5\right\}.
\label{eq:seven}
\end{equation}
即原点加正六边形顶点,共七点。其覆盖能力可以精确刻画。
\begin{proposition}[七点全向覆盖]
当 $0<a/\sqrt3\le R$ 时,任意 $g\in\Omega$ 到最近站点的距离不超过
\begin{equation}
@@ -42,35 +53,31 @@ $r^2+a^2-\sqrt3ar$。
该凸二次式在 $[a/\sqrt3,R]$ 上的最大值于端点取得,
分别为 $a^2/3$ 与 $R^2+a^2-\sqrt3aR$。
\end{proof}
当前 \texttt{bayes} 策略取 $a=1159.7$ m,
命题给出了一个可调的覆盖半径。当前 \texttt{bayes} 策略取 $a=1159.7$ m,
由式~\eqref{eq:coveragebound} 得 $D_{\mathrm{cov}}=984.539136$ m,
比最小接收半径小约 $15.461$ m。
因此每个合法全向源至少在一站可被接收。
某频道在七站全部为无信号,就构成该频道不存在源的严格证据。
以“站点、频道”为索引建立检测状态矩阵,记录各站对各频道的检测结果。
该矩阵用于逐频道的严格缺席证明;实际执行不要求在每个站点重测所有频道,可由网格幸存集证明必为无信号的(站,频道)对会被跳过。
以"站点、频道"为索引建立检测状态矩阵,记录各站对各频道的检测结果。
该矩阵用于逐频道的严格缺席证明;实际执行不要求在每个站点重测所有频道,
可由网格幸存集证明必为无信号的(站,频道)对会被跳过。
\begin{figure}[htbp]
\centering
\includegraphics[width=0.68\linewidth]{geo-q3-seven-point-coverage.png}
\caption{七点全向覆盖的站点构造与接收圆盘。}
\label{fig:seven}
\end{figure}
图~\ref{fig:seven} 给出站点构造与最小接收圆盘的关系。
顺次从原点访问六个环站的开放路径长为 $6a$。
顺次从原点访问六个环站的开放路径长为 $6a$;
任务总路径由覆盖站间移动以及定位、清除所需的局部移动共同构成。
\subsection{正负观测的双重候选表示}
每个已发现频道维护凸外包 $P_c^{\mathrm{out}}$。
覆盖证明只回答"源是否可能被听见",要把一次具体检测转化为位置信息,
还需要更新候选集合。每个已发现频道维护凸外包 $P_c^{\mathrm{out}}$。
$\direction$ 将候选集与 $\B(s,1500)$ 外切多边形及测向角域相交;
$\near$ 与 $\B(s,5)$ 外切多边形相交。
全向源的 $\sgnless$ 意味着
难点在于全向源的 $\sgnless$ 观测,它意味着
\begin{equation}
\norm{g-s}>r_{\mathrm{eff}}\ge1000,
\end{equation}
排除圆盘可使可行区域呈非凸形状。为此,采用网格幸存集
$\mathcal G_c$ 表示负观测带来的空间约束,同时保留便于几何运算的凸外包。
即排除一个圆盘。圆盘的补集不凸,直接与凸候选集求交会破坏凸性。
为此,采用网格幸存集 $\mathcal G_c$ 表示负观测带来的空间约束,
同时保留便于几何运算的凸外包:前者负责吸收负信息,后者负责快速判据与选点。
网格边长为 $\ell=14.65$ m,每格中心与格内点的最大距离为
$\epsilon_g=\ell/\sqrt2$。初始保留所有可能与 $\Omega$ 相交的格,
@@ -83,9 +90,9 @@ $\epsilon_g=\ell/\sqrt2$。初始保留所有可能与 $\Omega$ 相交的格,
\end{array}
\label{eq:gridupdate}
\end{equation}
三式的裕量 $\epsilon_g$ 保证只有整格必然越界时才删除,故真源所在格永不被误删。
方向观测另外检查角差。若 $d=\norm{z-s}>\epsilon_g$,
源所在格引起的方位偏差可由
$\arcsin(\epsilon_g/d)$ 上界;
源所在格引起的方位偏差可由 $\arcsin(\epsilon_g/d)$ 上界;
实现采用距离内缩后的角误差界,并在测点附近保留所有可能方位。
只有角差超过 $\delta_{\mathrm{eff}}$ 加格内角裕量时才删除。
@@ -97,8 +104,10 @@ $\arcsin(\epsilon_g/d)$ 上界;
从而节省相应检测与换频时间。
\subsection{信息增益选点与清除判据}
候选集收窄之后,还需决定下一个测点。
问题二的算法2提供满足接收约束的检测点;
问题三的 \texttt{BayesLoop} 进一步采用网格幸存集上的信息增益。
问题三的 \texttt{BayesLoop} 进一步采用网格幸存集上的信息增益,
即优先选择最能缩小候选集的测点。
存在保证接收圆盘时,在其内部生成环形候选并补充当前接近方向上的测点;
其余情况下,在网格最小包围圆附近生成环形采样点。
候选集合同时包含当前位置与探索点,分别根据预期信息增益和移动代价评分。
@@ -117,8 +126,8 @@ J_{\mathrm{IG}}(q)=
并以均匀 $r_{\mathrm{eff}}\in[1000,1500]$ 估计接收概率。
该决策采用离散假设上的加权期望,接收半径的均匀分布作为选点先验。
清除判断使用完整候选集合。
凸候选集的清除判据为
清除判断使用完整候选集合。由于清除要求在 $20$ m 内完成,
判据必须同时计入几何半径与数值余量。凸候选集的清除判据为
\begin{equation}
\rho_c+b_c+0.5\le20,
\label{eq:clearpoly}
@@ -137,6 +146,8 @@ $b_c$ 与 $0.5$ m 共同提供附加数值裕量。
只要平移后的距离上界仍满足对应不等式,三角不等式便保证清除条件成立。
\subsection{开放路径上的滚动任务排序}
到这一步,每个频道都已知"是否需要检测、在哪里检测、何时清除",
剩下的问题是如何把这些动作排成一条省时的路线。
统一任务表包含三类任务:覆盖站的批量扫频、已发现源的定位测量、
满足半径条件的清除。站内检测优先使用测向机当前频道,减少换频次数。
对任务序列 $\pi$,排序代价为
@@ -149,13 +160,16 @@ C(\pi)=\frac{\norm{p-q_{\pi_1}}}{5}
其中服务时间 $t_{\pi_j}$ 依赖进入任务时的频道,清除不改变该频道。
从最近邻初序开始,默认最多进行 $4$ 轮开放路径 2-opt 改进;
每次只执行当前序列的首任务,得到新观测后重新生成和排序。
这样新发现的源、收缩后的清除点和已证无源的频道都能及时改变路线。
这样新发现的源、收缩后的清除点和已证无源的频道都能及时改变路线,
避免为一条已经失效的任务继续赶路。
已停靠位置可以顺带补测:要求此前未在该位置测过、距离保证成立、
尚处于定位阶段,且预测半径有足够收缩。追加测量的费用为检测与换频时间,
其收益来自节省额外移动。题设固定同地误差,因此优先选择新的检测位置。
\subsection{算法三与完成条件}
将上述模块串成闭环,即得问题三的求解算法。
\begin{algorithm}[htbp]
\caption{网格幸存集滤波、信息增益选点与滚动调度}
\label{alg:q3}
@@ -179,7 +193,8 @@ C(\pi)=\frac{\norm{p-q_{\pi_1}}}{5}
\State 预算不足或异常时退出并报告未解决频道
\end{algorithmic}
\end{algorithm}
“清除数达到 $16$”利用题设数量上界。
"清除数达到 $16$"利用题设数量上界。
对任意已存在的 $16$ 个不同频道,也可提前排除其余未知频道,
但已发现而未清除的源仍必须继续处理。
@@ -188,3 +203,8 @@ C(\pi)=\frac{\norm{p-q_{\pi_1}}}{5}
停滞、协议异常或预算耗尽时,记录各频道状态并终止。
程序以接口返回的现实预算为准,并预留退出时间,
实际计时在整数微秒状态上累计,避免用实机运行秒数代替虚拟动作耗时。
综上,问题三得到三点结论:1. 七点计划在环半径 $1159.7$ m 时给出 $984.539$ m 的覆盖上界,
使"全站无信号"成为该频道缺席的严格证据;2. 网格幸存集把非凸的负观测纳入集合估计,
并使大量必然无信号的检测被跳过;3. 把覆盖、定位、清除统一为一条开放路径并滚动重排,
是压缩总虚拟时间的主要手段。
+47 -19
View File
@@ -1,5 +1,8 @@
\section{问题四:混合源的前向半盘覆盖与联合信念}
\subsection{定向观测模型与无信号歧义}
在问题三中,"无信号"只有一种解释:源太远。
一旦引入定向源,这唯一的解释就被打破——源可能只是背对着检测点。
因此本问的关键在于为无信号保留第二种解释。
设定向源位于 $g$,朝向为 $\psi$。在检测点 $q$ 可见的充要条件为
\begin{equation}
\norm{q-g}\le r_{\mathrm{eff}},\qquad
@@ -9,9 +12,12 @@
边界属于可见半平面。可见且距离不超过 $5$ m 时返回 $\near$,
否则返回 $\direction$;任何一个条件失败均为 $\sgnless$。
问题二的可行区域满足距离约束,定向接收还需满足前向半平面约束。
对于已发现频道,位于该区域内的负观测反映朝向遮挡;
区域外的负观测则同时包含距离与朝向两种解释。
对于已发现频道,位于该区域内的负观测反映朝向遮挡,
因此不应被当作距离证据;区域外的负观测则同时包含距离与朝向两种解释。
这一区分直接决定了后续信念表示的形式。
朝向约束也改变了覆盖的要求。问题三的七点计划只保证"至少一站距离足够近";
对定向源还要求该站位于源的前向半平面内,因此需要重新设计站点集。
向外发射的边界源需要在圆域外布置接收站点。
适用于混合源的站点集合 $S$ 应满足
\begin{equation}
@@ -20,13 +26,17 @@
\norm{s-g}\le1000,\quad (s-g)\cdot u(\psi)\ge0.
\label{eq:halfcover}
\end{equation}
这是一项针对“位置、朝向”二元状态的全覆盖要求。
这是一项针对"位置、朝向"二元状态的全覆盖要求,而不是对位置的单变量覆盖。
问题三的七点计划不满足式~\eqref{eq:halfcover};当前测试程序改用 $31$ 点最小命中集与(位置×朝向)联合幸存集,定位停滞时以有限格后备清除兜底。
问题三的七点计划不满足式~\eqref{eq:halfcover};当前测试程序改用 $31$ 点最小命中集与(位置×朝向)联合幸存集,
定位停滞时以有限格后备清除兜底。
\subsection{方格点集的连续覆盖性}
在设计具体站点之前,先考虑一个容易证明的结构:方格点集。
取 $S_{49}=\{(700i,700j):i,j=-3,\ldots,3\}$。
其网格方域包含 $\Omega$,每个源落在某个边长为 $700$ m 的闭方格内。
方格四角恰好同时满足距离与朝向两项要求。
\begin{proposition}[方格四角的定向覆盖]
$S_{49}$ 满足式~\eqref{eq:halfcover},对全向与任意朝向的定向源均保证发现。
\end{proposition}
@@ -40,10 +50,14 @@ $\sum_i\lambda_i(v_i-g)\cdot u=0$,
故不可能四个角均满足 $(v_i-g)\cdot u<0$;
至少一角处于前向闭半平面,且同时满足距离条件。
\end{proof}
四角的距离上界与凸组合性质共同保证连续覆盖。
该方案具有显式站点坐标和覆盖距离上界。
证明的关键是凸组合性质:四个方向的投影不可能同时为负。
该方案具有显式站点坐标和覆盖距离上界。不过在同样覆盖 $\Omega$ 的前提下,
网格方案的站点数并不经济,因此实际选点仍需借助集合覆盖模型。
\subsection{前向半盘最小命中集的31点方案}
把"每个位置与朝向组合至少被一个站点覆盖"写成整数规划,
就可以用远比网格稀疏的站点集完成同样的任务。
当前 \texttt{directional} 实现采用 \texttt{q4\_mincover\_v2} 计划。
在候选站点 $s_j$ 和离散目标状态 $(g_i,\psi_i)$ 上定义关联矩阵
\begin{equation}
@@ -52,7 +66,8 @@ A_{ij}=\mathbf1\{
\ (s_j-g_i)\cdot u(\psi_i)\ge
\norm{s_j-g_i}\sin\gamma_{\mathrm{design}}\}.
\end{equation}
站点筛选可写为集合覆盖模型
其中角度余量 $\gamma_{\mathrm{design}}$ 把"恰好落在可见边界"的情形排除在外,
使站点对朝向扰动保持稳健。站点筛选可写为集合覆盖模型
\begin{equation}
\min\sum_j z_j,\qquad
\sum_jA_{ij}z_j\ge1\ \ (\forall i),\qquad z_j\in\{0,1\}.
@@ -66,9 +81,15 @@ A_{ij}=\mathbf1\{
\begin{figure}[htbp]
\centering
\includegraphics[width=0.70\linewidth]{geo-q4-minimum-cover-31-points.png}
\caption{31 点最小命中集的几何分布(左)与定向源的前向半盘语义(右)。
站点取自计划文件,部分站点位于 $\Omega$ 之外,用于接收向外发射的边界源;
\includegraphics[width=0.72\linewidth]{geo-q4-minimum-cover-31-points.png}
\caption{31 点最小命中集的几何分布与定向源的读图约定。
实心圆点为圆域内检测站($15$ 个),空心圆点为圆域外的检测站($16$ 个),
后者用于接收向外发射的边界源;
浅色扇形区域为源位置圆域 $\Omega$。
图中左侧以一个圆外检测站为例说明定向源的观测读法:
绿箭头是该源的发射朝向、浅绿细线扇形是它的 $\pm90^\circ$ 可见范围、
红色虚线是检测站在该点测得的示向度,三者共同说明
"有朝向遮挡时同一位置也可能测不到信号"。
离散校验不等同于连续覆盖证明。}
\label{fig:q4plan}
\end{figure}
@@ -87,6 +108,8 @@ d+\varepsilon\le1000,\qquad
对 $49$ 点方案采用上述连续覆盖定理;连续近似误差的控制将在未来工作中讨论。
\subsection{位置与朝向联合候选的保守更新}
站点解决"能否发现",而要完成清除还必须知道源在哪里、朝向如何。
这正是问题三的候选集表示不足以处理的部分:位置可行并不代表朝向可行。
对定向假设,在每个候选位置网格的中心 $z$ 附加 $H=24$ 个朝向档,
档宽为 $15^\circ$。令 $M_z$ 为仍可能的朝向掩码。
方向与近距离观测先更新位置约束,再保留可能覆盖检测点的朝向;
@@ -108,11 +131,11 @@ d_\circ(\psi_k,\beta)>90^\circ-\Delta_\psi-\eta_\psi-\alpha_z.
第二行保留含有不可见方向的朝向区间,排除整个区间均可见的候选。
若格心距测点过近,格内方位可覆盖整个圆周,此时保留全部朝向。
在定向假设下,上述更新保持真源所在位置与朝向网格的可行性。
混合类型的集合估计扩展见第~\ref{sec:future}~节。
\subsection{可见性筛选与探点选择}
联合候选的用途首先是排序探点。对候选 $q$,
以均匀接收半径假设给出距离权重
联合候选的第一个用途是给候选测点排序。
在混合场景中,一个测点是否值得去,取决于那里的候选源有多大可能正对着它。
对候选 $q$,以均匀接收半径假设给出距离权重
\begin{equation}
w_r(d)=
\begin{cases}
@@ -129,7 +152,7 @@ w_r(\norm{z-q})\,\frac{b_z(q)}{24}.
\label{eq:visibility-score}
\end{equation}
分母 $24$ 为初始朝向档数,$b_z(q)$ 由保留朝向集合与预计算可见角区间的交集确定。
该权重用于衡量各候选点的相对检测价值。
该权重用于衡量各候选点的相对检测价值,可直接避免"跑过去却因遮挡而无信号"的空跑。
候选族包括算法2给出的基础点、关于候选圆心的对跖点,以及
$0.5\rho,\rho,1.5\rho$ 半径上的八方向环点。
@@ -146,6 +169,9 @@ $0.5\rho,\rho,1.5\rho$ 半径上的八方向环点。
持续遮挡时转入基于距离约束的网格遍历清除。
\subsection{网格遍历清除与计算预算}
遮挡可能使定位长期无法收缩,此时需要一条不依赖朝向信息的兜底路径。
注意到清除是否成功只与距离有关,与源朝向无关,
因此可以放弃"先定位再清除"的顺序,改为逐格试探。
当一轮有效定位测量达到 $8$ 次,或连续遮挡探点达到 $4$ 次且候选区域仍较大,
对保守凸候选多边形建立边长 $20$ m 的方格覆盖。
保留所有与多边形相交的格子,并以格心作为清除点。
@@ -158,6 +184,7 @@ $0.5\rho,\rho,1.5\rho$ 半径上的八方向环点。
逐格清除必有一次到达其 $20$ m 内。
按最近邻顺序访问,首次成功即停止该频道的网格遍历。
兜底方案必须受预算约束,否则会挤占其他频道的处理时间。
若外包框宽、高为 $w,h$,保守格数上界为
\begin{equation}
B_{\mathrm{cell}}=
@@ -194,8 +221,9 @@ $N_{\mathrm{cell}}\,t_{\mathrm{RTT},95}+t_{\mathrm{reserve}}$。
\State 主动退出时报告清除数与停止依据
\end{algorithmic}
\end{algorithm}
问题四使用“本站批量扫频、最近候选圆心服务”的调度骨架,
并未直接复用问题三的统一信息增益任务表。
若要求严格的混合源全清证据,除采用连续覆盖计划外,
还须补全类型联合表示或限制联合集排空的适用范围,并确保全部定位清除任务完成。
本文区分当前实现、可证明条件与尚需完善之处,不把后者追溯为正式测试时已执行的功能。
综上,问题四得到三点结论:1. 定向源使无信号具有距离与朝向两种解释,
候选集必须由位置扩展为位置与朝向的联合表示;2. 发现条件须由位置圆盘覆盖
提升为前向半盘覆盖,$31$ 点最小命中集以远少于网格的站点数完成该任务;
3. 清除与朝向无关这一物理性质可用于构造有界预算的兜底清除,
使遮挡不再导致任务无法完成。
+218 -80
View File
@@ -1,102 +1,240 @@
\section{官方正式测试结果与时间分解}\label{sec:formal}
\subsection{数据选择及对应关系核对}
本节实验样本严格限定为官方模拟器
\pathtext{Jammers-simulator-full/test} 下的六份正式导出包,问题三、四各有三次。
文件名、案例编码与完整包校验值见结果表与附录~\ref{app:data}。
本节只使用六份正式导出包及其匹配统计,不引入仓库内自建基准集,也不把演练局数据并入正式评价。两类数据仍单独存放;任何跨案例比较都以官方记录的总虚拟时间、程序运行时间和清除数量为准。
\section{实验结果与分析}
\subsection{实验设置与数据来源}
本文的实验分两部分,职责严格区分。
\textbf{机制论证与定量结论}取自项目内自建模拟器
(\pathtext{referee},按题面附件 1、附件 2 复现的评测机)的演练局:
演练局可提供真实源位置、机器人轨迹和逐次检测读数,
因此能够支撑路径示意、机制分析与逐局的定量比较。
\textbf{最终效果验证}取自官方模拟器的六份正式导出包,
因无法获取真实位置点,只在附录~\ref{app:formal} 中报告清除数量、总虚拟时间与程序运行时间。
评价指标包括清除数量 $N_c^+$、总虚拟时间 $T$、程序运行时间 $T_{\mathrm{real}}$,以及检测、换频和清除的动作次数。其中 $T$ 按整数微秒累计,$T_{\mathrm{real}}$ 采用官方记录的毫秒值;平均定位清除时间仅作辅助分析,不替代总虚拟时间与程序运行时间这两项直接指标。六次测试均以主动退出结束,统计提交状态为已确认。
演练局由 \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.92\linewidth]{formal-total-time.png}
\caption{六次正式测试的总虚拟时间与程序运行时间。}
\label{fig:formaldirect}
\includegraphics[width=0.94\linewidth]{selfbuilt-q3-search-clear-path.png}
\caption{自建模拟器演练局 \texttt{\PractQThreeMainCase}($\PractQThreeMainSources$ 个全向源)的搜索与清除路径。
折线为机器狗轨迹;每条浅色细射线表示一次 $\direction$ 检测测得的示向度,
射线起点即发起该次检测的位置;圆点为测到示向度的检测点($55$ 次),
菱形为测到近距离的检测点($1$ 次),灰色叉号为无信号检测点($29$ 次);
星号为成功清除点,金色叉号为干扰源真值。全部数据由自建模拟器真值输出。}
\label{fig:selfbuiltq3}
\end{figure}
\subsection{问题三正式结果}
\begin{table}[htbp]
\centering\small
\caption{问题三正式测试结果(时间单位:s)}
\setlength{\tabcolsep}{4pt}
\begin{tabularx}{\linewidth}{l X r r r}
\toprule
测试 & 测试案例编码 & 清除数 & 总虚拟时间/s & 程序运行时间/s\\
\midrule
测试 1 & \texttt{9HU7-UWJR-BPTR-VYAT} & 13 & 3094.978 & 5.596 \\
测试 2 & \texttt{7TCG-C9EC-53VF-HZ5H} & 15 & 3493.335 & 3.024 \\
测试 3 & \texttt{UVUZ-B4MQ-XSUV-HQFP} & 10 & 2906.863 & 2.680 \\
\bottomrule
\end{tabularx}
\label{tab:formal3}
\end{table}
三次正式测试分别清除 $13$、$15$、$10$ 个源,总虚拟时间分别为 $3094.978$、$3493.335$、$2906.863$ s,合计 $\QThreeTotal$ s;程序运行时间分别为 $5.596$、$3.024$、$2.680$ s,合计 $\QThreeProgramTotal$ s。按清除数量加权的平均定位清除时间为 $\QThreeWeighted$ s/个,仅作辅助解释。第三次总虚拟时间 $2906.863$ s 在本组三次中最短,但其清除数 $10$ 也最少;因此判断优化程度时,应以题目要求的总虚拟时间和程序运行时间为直接指标,并同时报告清除数量,不能只看单一的平均值。
图~\ref{fig:selfbuiltq3} 给出其中一局(\texttt{\PractQThreeMainCase},
$\PractQThreeMainSources$ 个源)的完整路径。
机器人先按七点计划完成覆盖与批量扫频,再围绕候选区域执行定位与清除;
清除点与源真值基本吻合,轨迹在多个源之间跳跃后逐步收敛。
该局共检测 $\PractQThreeMainMeasures$ 次、换频 $\PractQThreeMainSwitches$ 次,
移动 $\PractQThreeMainMove$ km,总虚拟时间 $\PractQThreeMainTime$ s,
程序运行时间仅 $\PractQThreeMainRun$ s。
\subsection{问题四正式结果}
\begin{table}[htbp]
\centering\small
\caption{问题四正式测试结果(时间单位:s)}
\setlength{\tabcolsep}{4pt}
\begin{tabularx}{\linewidth}{l X r r r}
\toprule
测试 & 测试案例编码 & 清除数 & 总虚拟时间/s & 程序运行时间/s\\
\midrule
测试 1 & \texttt{VQUM-ETQ5-74PP-ZQ3J} & 13 & 9362.226 & 7.668 \\
测试 2 & \texttt{5K5T-TRWZ-BPR2-ECAV} & 10 & 9271.302 & 5.724 \\
测试 3 & \texttt{K58B-V5VC-E4EF-CRTW} & 14 & 8608.382 & 6.051 \\
\bottomrule
\end{tabularx}
\label{tab:formal4}
\end{table}
表~\ref{tab:formal4} 给出问题四的三次正式结果。三次测试分别清除 $13$、$10$、$14$ 个源,总虚拟时间分别为 $9362.226$、$9271.302$、$8608.382$ s,合计 $\QFourTotal$ s;程序运行时间分别为 $7.668$、$5.724$、$6.051$ s,合计 $\QFourProgramTotal$ s。按清除数量加权的平均定位清除时间为 $\QFourWeighted$ s/个,仅作辅助解释。第三次清除数 $14$ 最多且总虚拟时间 $8608.382$ 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} 重排,得到累计移动时间
上面的对比说明"哪种策略更快",还需要说明"时间花在哪里"。
把式~\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} 中 Q3-1 表示问题三第一次正式测试,其余编号依此类推。
六次测试的清除失败计数均为零。
各动作次数与式~\eqref{eq:residual} 共同确定图~\ref{fig:costbars} 的耗时分解。
据此可把每局的总虚拟时间拆成移动、检测、换频与清除四项,见表~\ref{tab:cost}。
\input{data/practice-cost-summary-table}
\begin{table}[htbp]
\centering\small
\caption{六次正式测试的动作计数与移动耗时}
\setlength{\tabcolsep}{4.5pt}
\begin{tabular}{lrrrrrr}
\toprule
案例 & 检测数 & 换频数 & 失败清除 & 总虚拟时间/s & 移动时间/s & 移动占比\\
\midrule
Q3-1 & 105 & 96 & 0 & 3094.978 & 2408.978 & 77.84\% \\
Q3-2 & 117 & 108 & 0 & 3493.335 & 2725.335 & 78.02\% \\
Q3-3 & 117 & 107 & 0 & 2906.863 & 2164.863 & 74.47\% \\
Q4-1 & 349 & 275 & 0 & 9362.226 & 7277.226 & 77.73\% \\
Q4-2 & 361 & 315 & 0 & 9271.302 & 7101.302 & 76.59\% \\
Q4-3 & 264 & 213 & 0 & 8608.382 & 7005.382 & 81.38\% \\
\bottomrule
\end{tabular}
\label{tab:cost}
\end{table}
\begin{figure}[htbp]
\centering
\includegraphics[width=0.92\linewidth]{formal-time-bars.png}
\caption{六次正式测试的累计虚拟耗时分解。图中数据仅来自正式测试原始动作计数与总虚拟时间。}
\label{fig:costbars}
\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$,
说明"清除"不是时间瓶颈,真正的成本在于把机器人送到能清除的位置。
检测与换频合计占比不高,但因换频次数与移动路径耦合,
仍需一并计入路径排序,不能单独优化。
六次测试的移动时间占总虚拟耗时的 $\FormalMovementMin\%$ 至 $\FormalMovementMax\%$,
是主要的时间成本,减少移动因而也是缩短总耗时的主要方向,
但检测与换频仍需一并计入路径选择。
由 $L_{\mathrm{eq}}=5T_{\mathrm{move}}$ 反推等效移动距离:
问题三依次为 $12.045$、$13.627$、$10.824$ km,
问题四依次为 $36.386$、$35.507$、$35.027$ km。
该等效距离由官方动作计数与移动速度换算得到,不是独立轨迹测得的长度。
所有平均值先以官方整数单位求和、相除,最后保留三位小数。
\subsection{本节结论}
综合以上配对对比与演练局复算,可提炼出四点结论:
1. 几何层的精确判据不需要以效率为代价——问题一的最优实现误差为零而耗时更短,
问题二则在保证接收率为 $100\%$ 的同时把最坏后验半径压到基线的约五分之一;
2. 多源搜索的效率来自"证明不需要检测",网格幸存集与七点覆盖使默认策略的检测次数
和位移相对网格基线分别降到约四分之一和五分之一,平均虚拟时间下降 $\ProjQThreeDropOpt$;
3. 混合源场景必须为无信号保留朝向解释,否则会出现缺席误判;
默认策略以全清率 $100\%$、缺席误判 $0$ 和平均 $\ProjQFourMeanOpt$ s 的代价
换取了这种完备性;
4. 本次采集的 $44$ 局演练中,两类场景的全部源都被清除且失败清除为零,
移动时间占总耗时的 $\PractQThreeMoveShare$ 与 $\PractQFourMoveShare$,
是继续优化的首要对象;清除动作本身只占 $\PractQThreeClearShare$ 与 $\PractQFourClearShare$,
不是当前的时间瓶颈。
\subsection{直接指标结论}
六次正式测试均主动退出且清除失败计数为零。以题目要求的直接时间指标衡量:问题三三次测试累计清除 $\QThreeCount$ 个源,总虚拟时间 $\QThreeTotal$ s,程序运行时间合计 $\QThreeProgramTotal$ s;问题四累计清除 $\QFourCount$ 个源,总虚拟时间 $\QFourTotal$ s,程序运行时间合计 $\QFourProgramTotal$ s。六次测试合计清除 $\FormalClearCount$ 个源,总虚拟时间 $\FormalVirtualTotal$ s。
由此可得结论:1. 全向源场景下,七点解析覆盖与逐频道网格幸存集使三次测试均在正式时限内完成,问题三三次总虚拟时间为 $2906.863$ 至 $3493.335$ s;2. 混合源场景下,前向半盘最小命中集、位置与朝向联合幸存集和后备清除使三次测试总虚拟时间为 $8608.382$ 至 $9362.226$ s,明显高于全向场景,说明定向遮挡仍是时间成本的主要来源;3. 平均定位清除时间和移动时间分解只用于解释成本结构,优化程度的结论应以总虚拟时间、程序运行时间和清除数量为准,不能用自建基准推断倍数。
-9
View File
@@ -1,13 +1,4 @@
\section{计时模型与会话状态机}
\subsection{会话状态与合法动作}
题目接口只有 \texttt{/enter}、\texttt{/measure}、\texttt{/clear} 与 \texttt{/exit}
四条指令。会话状态依次为未进入、进入倒计时、接口开放与断连,
进入倒计时为 $5$ s,如图~\ref{fig:statemachine}。
只有 \texttt{accepted=true} 的响应推进虚拟时钟;被拒绝的请求返回的虚拟时刻为零,
不能当作当前时刻使用,也不改变位置与测向机频道。
一次合法 \texttt{/measure} 结束后,测向机频道更新为本次检测频道;
\texttt{/clear} 给出的是目标频道,既不改变测向机频道,也不产生换频耗时。
因此清除之后原地再测的耗时取决于上一次 \texttt{/measure} 的频道,而不是清除的频道。
\begin{figure}[htbp]
\centering