论文完成
This commit is contained in:
+47
-27
@@ -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. 把覆盖、定位、清除统一为一条开放路径并滚动重排,
|
||||
是压缩总虚拟时间的主要手段。
|
||||
|
||||
Reference in New Issue
Block a user