Files
mcm-26-b/docs/paper/sections/q3.tex
T
2026-09-13 10:52:28 +08:00

194 lines
9.9 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$ 即确立该频道存在源。
几何证书仅决定能否清除,成功响应才将状态改为已清除。
无源频道必须有覆盖或候选集排空的证据,不能由连续几次无信号直接推断。
\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。
因此每个合法全向源至少在一站可被接收。
某频道在七站全部为无信号,就构成该频道不存在源的严格证据。
覆盖账本以“站点、频道”为索引,路过站点并不等于已检测该频道。
\begin{figure}[htbp]
\centering
\includegraphics[width=0.42\linewidth]{geo-q3-seven-point-coverage.png}
\caption{七点全向覆盖构造。站点取自配置参数 $a=1159.7$ m,
圆圈为 $1000$ m 接收盘,最差点位于 $(0,-1825)$ 附近,最坏距离 $\le984.539$ m。}
\label{fig:seven}
\end{figure}
顺次从原点访问六个环站的简单开放路线长为 $6a$,
但实际路线还包含定位与清除偏移,不能将 $6a/5$ 当作任务总耗时。
历史 $49$ 点方格与半径 $1200$ m 的七点批量策略仍保留在代码中作为对照;
本文不引用它们在自建场景中的性能数字,以保持实验数据来源一致。
\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}
方向观测另外检查角差。若 $d=\norm{z-s}>\epsilon_g$,
源所在格引起的方位偏差可由
$\arcsin(\epsilon_g/d)$ 上界;
实现使用更保守的距离内缩版本,并在测点附近不作方位删格。
只有角差超过 $\delta_{\mathrm{eff}}$ 加格内角裕量时才删除。
在上述整格排除条件下,真源所在格不会被合法观测删除。
因此幸存集为空可证明该频道不存在源。
若全部幸存格心均满足 $\norm{z-s}>1500+\epsilon_g$,
则在 $s$ 测量必无信号,且所有幸存格已在最小接收圆盘外,
该观测不能带来进一步排除,可跳过并在账本中记录推断依据。
这避免了为已知无信息的“站点、频道”对重复支付检测与换频时间。
\subsection{信息增益选点与清除证书}
问题二的算法2用于基线定位和安全后备;
默认 \texttt{BayesLoop} 采用幸存网格上的信息评分。
有安全盘时在其中生成环形候选,并增加与当前接近方向相关的候选;
无安全盘时在网格最小圆附近生成探索环。
当前位置也可参与评分,因而并非所有候选均具有算法2的接收保证。
对候选 $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]$ 估计接收概率。
这里的“贝叶斯”体现对假设分支的加权决策,不等同于已知官方先验下的精确后验推断。
安全判断使用完整候选集合,而非上述评分样本。
凸候选集的清除判据为
\begin{equation}
\rho_c+b_c+0.5\le20,
\label{eq:clearpoly}
\end{equation}
其中 $b_c\ge0$ 为代码的累计附加余量。
凸多边形本身已外包真源,$\rho_c$ 是该实际多边形的包围半径;
$b_c$ 的具体记账近似不作为外包正确性的必要依据。
若负观测使网格更紧,也可使用
\begin{equation}
\rho_{\mathrm{grid}}+\epsilon_g+0.5\le20
\label{eq:cleargrid}
\end{equation}
的网格证书,其中 $\rho_{\mathrm{grid}}$ 为幸存格心的最小包围半径。
满足任一证书即可选择清除点。
若证书尚有余量,可将圆心向当前位置平移 $\Delta$,
只要 $\rho+\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{algorithmblock}{算法3:七点覆盖、网格更新与滚动调度(对应 algo-3)}
\textbf{输入:}题设参数、七站计划、合法观测接口。\quad
\textbf{输出:}逐频道处理状态与会话统计。
\begin{enumerate}[leftmargin=2em,itemsep=1pt,topsep=4pt]
\item 检验七点解析覆盖界,初始化频道状态、覆盖账本和网格幸存集。
\item 进入后同步记录位置、频道及剩余现实预算,必要时执行有信息的机会测量。
\item 构建覆盖、定位和清除任务;跳过能够证明无信息的检测。
\item 按最近邻与开放路径 2-opt 排序,执行首任务,更新候选集和频道状态。
\item 若出现清除证书,安排清除;清除失败后先补充观测,不直接宣称完成。
\item 若已清除 $16$ 个源,或每个频道均已清除或有严格无源证据,则退出。
否则返回步骤2;预算不足或异常时退出并报告未解决频道。
\end{enumerate}
\end{algorithmblock}
“清除数达到 $16$”利用题设数量上界;
“发现并清除 $10$ 个”只达到数量下界,不能作为完成证明。
对任意已存在的 $16$ 个不同频道,也可提前排除其余未知频道,
但已发现而未清除的源仍必须继续处理。
覆盖证明保障发现,清除证书保障单次动作的正确性,
两者均不自动保证在有限预算内完成全部定位。
当前每轮追加有效定位测量上限为 $8$;
停滞、协议异常或预算耗尽时应如实报告未完成。
程序以接口返回的现实预算为准,并预留退出时间,
实际计时在整数微秒状态上累计,避免用实机运行秒数代替虚拟动作耗时。
\subsection{运行过程示例}
图~\ref{fig:replay3} 回放一局全向演练(案例 \texttt{BBM9-HZG2-77N5-NKKC},$10$ 个源):
左图为移动轨迹、检测示向度与已清除频道,右上方为事件流水,
下方为虚拟时间轴上的检测与清除时刻。
该局说明覆盖扫描、定位测量与清除三类任务的交替关系,
以及为接收向外发射的源而短时越出 $\Omega$ 边界的路径形态;它属于演练留档,不计入正式成绩。
\begin{figure}[htbp]
\centering
\includegraphics[width=0.85\linewidth]{replay-webui-q3-omnidirectional.png}
\caption{全向源演练局(\texttt{BBM9-HZG2-77N5-NKKC})的运行回放。
该局为演练案例,非正式测试记录。}
\label{fig:replay3}
\end{figure}