Files
mcm-26-b/docs/paper/sections/q3.tex
T
2026-09-13 18:05:59 +08:00

211 lines
11 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
\section{问题三:全向多源的网格滤波与滚动调度}
\subsection{统一时间目标与任务状态}
问题一、二分别给出了"能否清除"与"下一点选在哪里"的判据,
问题三把它们放进一个连续运行的闭环:源的数量未知,机器人必须自己决定何时发现、何时定位、何时清除。
在这样的任务中,优化的最终标准不是某一步的精度,而是完成任务所花的虚拟时间,
因此第一步是把时间写成可优化的目标。
按式~\eqref{eq:time} 的计时记账,优化目标是在全部源清除的约束下最小化虚拟耗时 $T$。
题目统计的平均定位清除时间是 $\bar T=T/N_c^+$;
由于清除动作本身的 $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}
D_{\mathrm{cov}}(a)=
\max\left\{\frac a{\sqrt3},\
\sqrt{R^2+a^2-\sqrt3Ra}\right\}.
\label{eq:coveragebound}
\end{equation}
\end{proposition}
\begin{proof}
设 $g$ 距原点为 $r$,其方位与最近环站的夹角不超过 $\pi/6$。
若 $r\le a/\sqrt3$,选取原点即可。
若 $r\ge a/\sqrt3$,由余弦定理,距最近环站的平方不超过
$r^2+a^2-\sqrt3ar$。
该凸二次式在 $[a/\sqrt3,R]$ 上的最大值于端点取得,
分别为 $a^2/3$ 与 $R^2+a^2-\sqrt3aR$。
\end{proof}
命题给出了一个可调的覆盖半径。当前 \texttt{bayes} 策略取 $a=1159.7$ m,
由式~\eqref{eq:coveragebound} 得 $D_{\mathrm{cov}}=984.539136$ m,
比最小接收半径小约 $15.461$ m。
因此每个合法全向源至少在一站可被接收。
某频道在七站全部为无信号,就构成该频道不存在源的严格证据。
以"站点、频道"为索引建立检测状态矩阵,记录各站对各频道的检测结果。
该矩阵用于逐频道的严格缺席证明;实际执行不要求在每个站点重测所有频道,
可由网格幸存集证明必为无信号的(站,频道)对会被跳过。
顺次从原点访问六个环站的开放路径长为 $6a$;
任务总路径由覆盖站间移动以及定位、清除所需的局部移动共同构成。
\subsection{正负观测的双重候选表示}
覆盖证明只回答"源是否可能被听见",要把一次具体检测转化为位置信息,
还需要更新候选集合。每个已发现频道维护凸外包 $P_c^{\mathrm{out}}$。
$\direction$ 将候选集与 $\B(s,1500)$ 外切多边形及测向角域相交;
$\near$ 与 $\B(s,5)$ 外切多边形相交。
难点在于全向源的 $\sgnless$ 观测,它意味着
\begin{equation}
\norm{g-s}>r_{\mathrm{eff}}\ge1000,
\end{equation}
即排除一个圆盘。圆盘的补集不凸,直接与凸候选集求交会破坏凸性。
为此,采用网格幸存集 $\mathcal G_c$ 表示负观测带来的空间约束,
同时保留便于几何运算的凸外包:前者负责吸收负信息,后者负责快速判据与选点。
网格边长为 $\ell=14.65$ m,每格中心与格内点的最大距离为
$\epsilon_g=\ell/\sqrt2$。初始保留所有可能与 $\Omega$ 相交的格,
按以下充分排除条件更新格心 $z$:
\begin{equation}
\begin{array}{ll}
\sgnless: & \norm{z-s}\le1000-\epsilon_g\ \Rightarrow\ \text{删除};\\
\near: & \norm{z-s}>5+\epsilon_g\ \Rightarrow\ \text{删除};\\
\direction: & \norm{z-s}>1500+\epsilon_g\ \Rightarrow\ \text{删除}.
\end{array}
\label{eq:gridupdate}
\end{equation}
三式的裕量 $\epsilon_g$ 保证只有整格必然越界时才删除,故真源所在格永不被误删。
方向观测另外检查角差。若 $d=\norm{z-s}>\epsilon_g$,
源所在格引起的方位偏差可由 $\arcsin(\epsilon_g/d)$ 上界;
实现采用距离内缩后的角误差界,并在测点附近保留所有可能方位。
只有角差超过 $\delta_{\mathrm{eff}}$ 加格内角裕量时才删除。
上述排除条件保持真源所在网格的可行性。
因此网格幸存集为空时,该频道无源。
若全部候选格心均满足 $\norm{z-s}>1500+\epsilon_g$,
则在 $s$ 测量必无信号,且所有候选网格已在最小接收圆盘外,
其观测的信息增益为零,可在检测状态矩阵中标记该推断结果,
从而节省相应检测与换频时间。
\subsection{信息增益选点与清除判据}
候选集收窄之后,还需决定下一个测点。
问题二的算法2提供满足接收约束的检测点;
问题三的 \texttt{BayesLoop} 进一步采用网格幸存集上的信息增益,
即优先选择最能缩小候选集的测点。
存在保证接收圆盘时,在其内部生成环形候选并补充当前接近方向上的测点;
其余情况下,在网格最小包围圆附近生成环形采样点。
候选集合同时包含当前位置与探索点,分别根据预期信息增益和移动代价评分。
对候选 $q$ 计算
\begin{equation}
J_{\mathrm{IG}}(q)=
\widehat{\mathbb E}\!\left[
\log\frac{|\mathcal G_c^{\,\mathrm{post}}(q,Y)|}{|\mathcal G_c|}
\right]
+\lambda\left(\frac{\norm{p-q}}5+\frac{\norm{q-m_c}}5\right),
\label{eq:ig}
\end{equation}
其中 $\lambda=0.05$,空分支用正的小值截断。
较小的候选集基数比对应较大信息增益,移动项限制为测量而产生的绕行。
评分最多取 $800$ 个子样本及 $7$ 个代表假设,
并以均匀 $r_{\mathrm{eff}}\in[1000,1500]$ 估计接收概率。
该决策采用离散假设上的加权期望,接收半径的均匀分布作为选点先验。
清除判断使用完整候选集合。由于清除要求在 $20$ m 内完成,
判据必须同时计入几何半径与数值余量。凸候选集的清除判据为
\begin{equation}
\rho_c+b_c+0.5\le20,
\label{eq:clearpoly}
\end{equation}
其中 $b_c\ge0$ 为代码的累计附加余量。
凸多边形包含真源,$\rho_c$ 是其最小包围半径;
$b_c$ 与 $0.5$ m 共同提供附加数值裕量。
若负观测使网格更紧,也可使用
\begin{equation}
\rho_{\mathrm{grid}}+\epsilon_g+0.5\le20
\label{eq:cleargrid}
\end{equation}
的网格清除判据,其中 $\rho_{\mathrm{grid}}$ 为候选格心的最小包围半径。
满足任一充分条件即可选择清除点。
利用剩余距离裕量,可将圆心向当前位置平移 $\Delta$;
只要平移后的距离上界仍满足对应不等式,三角不等式便保证清除条件成立。
\subsection{开放路径上的滚动任务排序}
到这一步,每个频道都已知"是否需要检测、在哪里检测、何时清除",
剩下的问题是如何把这些动作排成一条省时的路线。
统一任务表包含三类任务:覆盖站的批量扫频、已发现源的定位测量、
满足半径条件的清除。站内检测优先使用测向机当前频道,减少换频次数。
对任务序列 $\pi$,排序代价为
\begin{equation}
C(\pi)=\frac{\norm{p-q_{\pi_1}}}{5}
+\sum_{j=1}^{k-1}\frac{\norm{q_{\pi_j}-q_{\pi_{j+1}}}}5
+\sum_{j=1}^{k}t_{\pi_j}(c_{j-1}),
\label{eq:route}
\end{equation}
其中服务时间 $t_{\pi_j}$ 依赖进入任务时的频道,清除不改变该频道。
从最近邻初序开始,默认最多进行 $4$ 轮开放路径 2-opt 改进;
每次只执行当前序列的首任务,得到新观测后重新生成和排序。
这样新发现的源、收缩后的清除点和已证无源的频道都能及时改变路线,
避免为一条已经失效的任务继续赶路。
已停靠位置可以顺带补测:要求此前未在该位置测过、距离保证成立、
尚处于定位阶段,且预测半径有足够收缩。追加测量的费用为检测与换频时间,
其收益来自节省额外移动。题设固定同地误差,因此优先选择新的检测位置。
\subsection{算法三与完成条件}
将上述模块串成闭环,即得问题三的求解算法。
\begin{algorithm}[htbp]
\caption{网格幸存集滤波、信息增益选点与滚动调度}
\label{alg:q3}
\begin{algorithmic}[1]
\Require 题设参数、七站计划与合法观测接口
\Ensure 逐频道处理状态与会话统计
\State 检验七点覆盖条件,初始化频道状态、凸候选集、网格幸存集和检测状态矩阵
\State 调用 $/enter$,记录位置、频道和剩余现实预算
\While{存在未处理频道且预算充足}
\State 构建覆盖、定位和清除三类任务
\State 用网格幸存集跳过必为无信号的检测
\State 按最近邻与开放路径 2-opt 排序任务表
\State 执行首任务,根据真实响应更新凸候选集与网格幸存集
\If{满足清除判据}
\State 执行清除;成功则更新状态,失败则追加观测
\EndIf
\If{已清除 $16$ 个源或所有频道均被清除或证明无源}
\State \Return 报告完成状态
\EndIf
\EndWhile
\State 预算不足或异常时退出并报告未解决频道
\end{algorithmic}
\end{algorithm}
"清除数达到 $16$"利用题设数量上界。
对任意已存在的 $16$ 个不同频道,也可提前排除其余未知频道,
但已发现而未清除的源仍必须继续处理。
覆盖条件用于判定搜索范围,清除充分条件用于确定操作位置。
当前每轮追加有效定位测量上限为 $8$;
停滞、协议异常或预算耗尽时,记录各频道状态并终止。
程序以接口返回的现实预算为准,并预留退出时间,
实际计时在整数微秒状态上累计,避免用实机运行秒数代替虚拟动作耗时。
综上,问题三得到三点结论:1. 七点计划在环半径 $1159.7$ m 时给出 $984.539$ m 的覆盖上界,
使"全站无信号"成为该频道缺席的严格证据;2. 网格幸存集把非凸的负观测纳入集合估计,
并使大量必然无信号的检测被跳过;3. 把覆盖、定位、清除统一为一条开放路径并滚动重排,
是压缩总虚拟时间的主要手段。