This commit is contained in:
Horldsence
2026-09-10 21:13:45 +08:00
parent ccab9c87e2
commit 0dac40d348
13 changed files with 672 additions and 1 deletions
+596
View File
@@ -0,0 +1,596 @@
% ============================================================
% 2026 年高教社杯全国大学生数学建模竞赛论文(B 题)
% 编译:latexmk -xelatex -outdir=build main.tex
% (或 xelatex main.tex 连续编译两遍)
%
% 规范要点(附件3,2026 年修订稿):
% 1. A4 纸,上下左右页边距至少 2.5cm;
% 2. 纸质版第一页承诺书、第二页编号专用页;
% 3. 摘要专用页含标题与关键词,不超过一页;页码从摘要页起,
% 页脚中部阿拉伯数字从 1 连续编号;
% 4. 正文不要目录,不超过 30 页;之后为附录(页数不限);
% 5. 摘要页、正文、附录中不得出现参赛者身份、学校、赛区信息;
% 6. 电子版第一页必须为摘要专用页(不含承诺书与编号专用页)。
% ============================================================
\documentclass[zihao=-4,a4paper]{ctexart}
% ---------- 电子版 / 纸质版切换 ----------
% 电子版(默认):第一页即摘要专用页,不包含承诺书与编号专用页;
% 纸质版打印:将下面 \paperfalse 改为 \papertrue,会自动加入
% 承诺书(第 1 页)与编号专用页(第 2 页),页码仍从摘要页开始。
\newif\ifpaper
\paperfalse
% ---------- 页面与基础宏包 ----------
\usepackage[left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm]{geometry}
\usepackage{amsmath,amssymb,bm}
\usepackage{graphicx}
\usepackage{booktabs,array,multirow,longtable}
\usepackage[font=small,labelsep=quad]{caption}
\usepackage{xcolor}
\usepackage{listings}
\usepackage{enumitem}
\usepackage[hidelinks]{hyperref}
% ---------- 字体设置(使用本目录 fonts/ 下复制的字体,工程自包含) ----------
% 中文正文:宋体(Songti SC);标题/强调:黑体(Heiti SC)
% 西文与数字:Times New Roman
% 若在 Windows 下编译且未携带 fonts/ 目录,可改用中易宋体/黑体:
% \setCJKmainfont{SimSun} \setCJKsansfont{SimHei} \setmainfont{Times New Roman}
\setmainfont{Times New Roman}[
Path = fonts/, Extension = .ttf,
BoldFont = {Times New Roman Bold},
ItalicFont = {Times New Roman Italic},
BoldItalicFont = {Times New Roman Bold Italic},
]
\setCJKmainfont{SongtiSC}[
Path = fonts/, Extension = .ttf,
UprightFont = SongtiSC-Regular,
BoldFont = SongtiSC-Bold,
ItalicFont = SongtiSC-Regular,
BoldItalicFont = SongtiSC-Bold,
]
\setCJKsansfont{HeitiSC}[
Path = fonts/, Extension = .ttf,
UprightFont = HeitiSC-Light,
BoldFont = HeitiSC-Medium,
]
\setCJKmonofont{SongtiSC}[Path = fonts/, Extension = .ttf, UprightFont = SongtiSC-Regular]
\setCJKfamilyfont{zhsong}{SongtiSC}[Path = fonts/, Extension = .ttf, UprightFont = SongtiSC-Regular, BoldFont = SongtiSC-Bold]
\setCJKfamilyfont{zhei}{HeitiSC}[Path = fonts/, Extension = .ttf, UprightFont = HeitiSC-Light, BoldFont = HeitiSC-Medium]
\setCJKfamilyfont{zhkai}{SongtiSC}[Path = fonts/, Extension = .ttf, UprightFont = SongtiSC-Regular]
% ---------- 标题层级:一级四号黑体居中,二级小四黑体左对齐 ----------
\ctexset{
section = {
format = {\centering\heiti\zihao{4}},
aftername = {\quad},
beforeskip = {1.2ex plus 0.3ex},
afterskip = {1.0ex plus 0.2ex},
},
subsection = {
format = {\heiti\zihao{-4}},
aftername = {\quad},
beforeskip = {1.0ex plus 0.2ex},
afterskip = {0.8ex plus 0.2ex},
},
subsubsection = {
format = {\heiti\zihao{-4}},
aftername = {\quad},
},
}
\linespread{1.4}
\setlength{\parskip}{0.3ex}
\setlength{\emergencystretch}{3em}
% 规范:页码位于页脚中部,阿拉伯数字从摘要页 1 开始连续编号
\pagestyle{plain}
% ---------- 草稿批注宏(定稿前必须全部删除或落实) ----------
\newcommand{\todonote}[1]{\textcolor{red}{【#1】}}
% ---------- 代码排版设置(附录) ----------
\lstset{
language=Python,
basicstyle=\ttfamily\zihao{-5},
keywordstyle=\bfseries,
commentstyle=\color{black!60},
stringstyle=\color{black!60},
columns=fullflexible,
keepspaces=true,
breaklines=true,
breakatwhitespace=false,
showstringspaces=false,
numbers=left,
numberstyle=\tiny\color{black!50},
frame=single,
framerule=0.3pt,
rulecolor=\color{black!40},
tabsize=4,
}
% ---------- 常用数学简写 ----------
\newcommand{\R}{\mathbb{R}}
\newcommand{\diff}{\,\mathrm{d}}
\begin{document}
% ============================================================
% 纸质版专用页(电子版不编译)
% 注意:承诺书与编号专用页的正式文字以组委会当年发布的专用页为准,
% 此处为占位排版。电子版必须不含本部分。
% ============================================================
\ifpaper
\thispagestyle{empty}
\begin{center}
{\heiti\zihao{2} 承\ 诺\ 书}
\end{center}
\vspace{1em}
\todonote{纸质版承诺书:请将组委会当年发布的专用页原文粘贴于此(含编号、
队员信息表与全体队员签名、日期)。电子版论文不得包含本页。}
\vspace{2em}
\begin{center}
{\heiti\zihao{2} 编号专用页}
\end{center}
\vspace{2em}
\begin{center}
{\zihao{4} 报名号:\rule[-2pt]{8cm}{0.4pt}}
\end{center}
\todonote{纸质版编号专用页:仅填写报名号,不得出现姓名、学校、赛区等信息。}
\clearpage
\fi
% ============================================================
% 摘要专用页(电子版第一页;页码从此页开始编号)
% ============================================================
\setcounter{page}{1}
\begin{center}
{\heiti\zihao{3} 基于有界误差交会定位与覆盖证明搜索的\\[0.3em]
无线电干扰源快速定位与清除}
\end{center}
\vspace{0.8em}
\begin{center}
{\heiti\zihao{4} 摘\quad 要}
\end{center}
针对无线电干扰源的快速自动定位与清除问题,本文以测向观测的三值反馈
\texttt{no\_signal}、\texttt{near}、\texttt{direction} 为唯一信息来源,建立了
\textbf{有界误差交会定位—主动选点—覆盖证明搜索—动作耗时调度}的统一框架:四个问题
复用同一几何内核,以覆盖证明与严格停止条件保证“清除所有干扰源”这一硬约束,
在此之上再优化时间指标。
\textbf{针对问题~1},将 $\pm 1^{\circ}$ 有界误差下的测向观测建模为以检测点为顶点的
前向角域 $W_i$,交会定位区域即诸角域的半平面交 $P=\bigcap_i W_i$,给出定位区域直径
$D(P)=\max_{i,j}\|v_i-v_j\|$ 的顶点对枚举算法,并处理空集、单点、线段与无界区域等
退化情形。对“直径为 $D$ 的圆能否覆盖区域”,以等边三角形给出否定反例,进而给出
只需检查一组最远顶点对的覆盖判定算法;以最小包围圆半径 $\rho(K)\le 20$ 米作为
可保证清除的充分判据,采用 Welzl 随机增量算法求解并以枚举法对照。对官方演练的
三点观测离线复算,$\delta=1^{\circ}$ 时 $D=23.9967$ 米、$\rho=12.0686$ 米:
直径圆不覆盖定位区域,但存在一点可保证清除。
\textbf{针对问题~2},首次测向后取候选集合
$K_1=\Omega\cap W(s_1,\theta_1\pm\delta)\cap \overline{B}(s_1,1500)$,并给出安全
候选区域恒非空的解析证明:记 $a=R/(2\cos\delta)$、$c=s_1+a\bm{u}$,则
$K_1\subseteq B(c,a)$,从而 $B(c,1000-a)\subseteq\mathcal{Q}$($\delta=1^{\circ}$
时安全圆盘半径约 $249.88$ 米)。在安全区域内以“最坏后验包围圆半径”为主目标、
移动与检测成本为次目标主动选取第二检测点,交会角仅作同分筛选指标。
\textbf{针对问题~3},建立以虚拟时间
$T=L/5+N_{\mathrm{switch}}+5N_{\mathrm{measure}}+5N_{\mathrm{clear}}^{\mathrm{s}}
+3N_{\mathrm{clear}}^{\mathrm{f}}$
为目标的全向源搜索清除模型。构造间距 $700$ 米的 $7\times 7=49$ 点覆盖基线,由
$700\sqrt{2}\approx 989.95<1000$ 米证明任何位置的源均能被某格点发现,从而保证
不漏源;维护逐频道覆盖记录与“发现—定位—清除”闭环,给出严格停止条件与请求数
预算控制。\todonote{演练统计值待填入}
\textbf{针对问题~4},将定向源建模为位置—半径—朝向的联合假设:\texttt{no\_signal}
不单独删除空间候选点,避免误删真源;证明 $49$ 点覆盖基线对定向源仍然有效。对再次
失去信号的源,给出候选集合的 $20$ 米网格有限圆盘覆盖后备清除方法及请求次数上界
$N\le(\lceil w/20\rceil+2)(\lceil h/20\rceil+2)$,并纳入现实时间预算约束。
\todonote{演练统计值与正式测试结果(表~1)待填入}
最后对模型的保守性与效率进行评价:几何内核可复用、覆盖保证可验证;局限在于
主动选点为采样启发式、后备清除请求数较大,可通过共享测点与自适应覆盖加速。
\vspace{0.8em}
\noindent{\heiti 关键词:}交会定位;半平面交;最小包围圆;覆盖证明;主动选点;动作调度
\clearpage
% ============================================================
% 正文(不超过 30 页,不要目录)
% ============================================================
\section{问题重述}
\subsection{问题背景}
无线电干扰源的定位与清除是无线电频谱管理的重要任务。精准定位阶段需要携带便携式
测向机的人员(本题中为搭载测向机的机器狗)进入目标分布区域,通过逐点检测示向度
逐步定位干扰源并加以清除。目标区域为半径 $1800$ 米的圆形区域
$\Omega=\{(x,y):x^2+y^2\le 1800^2\}$,干扰源按覆盖角度范围分为全向与定向两类,
其有效接收半径在 $1000$ 至 $1500$ 米之间,频道位于 $1$ 至 $20$ 中且互不相同。
测向机同一地点的检测误差固定,全局误差在 $[-1^{\circ},1^{\circ}]$ 内;机器狗移动
速度为 $5$ 米/秒,检测耗时 $5$ 秒,频道切换耗时 $1$ 秒,光学精确定位与清除分别在
距离不超过 $20$ 米时进行,耗时 $3$ 秒与 $2$ 秒。
\subsection{待解决的问题}
\begin{enumerate}[label=(\arabic*),leftmargin=3em]
\item \textbf{问题~1}:已知若干检测点坐标及某干扰源在各点的示向度,给出交会定位法
计算多边形定位区域直径的算法,并回答“以定位区域直径为直径的圆能否覆盖此
定位区域”。
\item \textbf{问题~2}:已知某全向干扰源在一个检测点处测得的示向度,给出第二个
检测点的选择策略与候选区域,以获得较好的定位效果。
\item \textbf{问题~3}:目标区域中全向干扰源总数为 $10$--$16$ 个但具体个数未知,
制定机器狗自动搜索定位及清除策略并设计算法,确保全部清除的前提下时间最短,
通过模拟器演练并给出清除比例、平均定位清除时间等统计值与三次正式测试结果。
\item \textbf{问题~4}:目标区域中同时存在全向与定向干扰源,总数与定向方向均未知,
给出检测与清除策略及算法,并完成演练与三次正式测试。
\end{enumerate}
\section{问题分析}
四个问题构成一条递进的主线:问题~1 的交会定位几何是全部后续问题的基础;问题~2 在
单次观测下研究“下一步去哪里测”的主动测量设计;问题~3、问题~4 则是在数量未知的
条件下,把定位几何组织成“全域覆盖发现—逐个定位—清除—证明完成”的闭环调度问题。
因此不必为每问单独建模,而是复用同一几何内核与观测更新机制。
\textbf{问题~1 的分析}。误差有界意味着单次测向只能确定源位于以示向度方向为轴、
半角 $1^{\circ}$ 的前向角域内;多检测点角域的交集即为定位区域。求交即半平面交,
是经典计算几何问题;直径在凸多边形顶点上取得,可用顶点对枚举求得。“直径圆能否
覆盖区域”需要区分“直径”与“外接”两个概念,等边三角形说明直径圆一般不覆盖,
正确的保证清除工具是最小包围圆。
\textbf{问题~2 的分析}。第二检测点的选取是在目标位置未知条件下的主动测量设计:
无论真实源位于当前候选集合何处,新检测点都必须保证能接收到信号(距离不超过其有效
接收半径),否则该次检测将退化为无效动作。因此先构造保守候选集合,再解析证明存在
“任何情况下都接收到信号”的安全区域,在安全区域内按最坏情形的后验包围半径最小化
选取检测点。
\textbf{问题~3 的分析}。全清是硬约束:发现 $10$ 个源或连续多次无信号都不构成停止
依据。需要一组对任何源位置都能保证“至少一个检测点落在其有效接收范围内”的覆盖点集,
并对每个频道维护覆盖记录,使“未发现”严格等价于“已证明不存在”。在该保证之上,
用虚拟时间公式统一度量移动、切换、检测与清除成本,安排发现与处理的调度。
\textbf{问题~4 的分析}。定向源的发射半平面使得“无信号”不能单独否定位置假设:
源可能恰在检测点背后发射。把观测视为对“位置—半径—朝向”联合假设的约束即可保持
不漏源的保守性;同时证明覆盖基线对定向源依然成立,失去信号后的已定位源可用有限
圆盘覆盖逐点清除作为后备。
\section{模型假设}
\begin{enumerate}[label=\arabic*.,leftmargin=2.5em]
\item 示向度误差满足 $|\varepsilon|\le 1^{\circ}$,且同一检测点重复检测误差不变;
仅在不同地点误差才呈现统计规律(题设)。本文取有界误差模型,不假设误差的
分布形式。
\item 每个频道至多存在一个干扰源,源总数为 $10$--$16$,频道编号 $1$--$20$;
不同源信号互不影响(题设)。
\item 各源有效接收半径未知但属于 $[1000,1500]$ 米;信号场强仅随距离衰减,
与角度无关(题设)。
\item 定向源有效覆盖角度为定向方向两侧各 $90^{\circ}$(含边界);光学精确定位与
清除只依赖距离、不受覆盖角度限制(题设)。
\item 策略仅依赖接口返回的三值观测(\texttt{no\_signal}、\texttt{near}、
\texttt{direction} 及示向度读数),不引入场强、距离等接口未提供的观测量
(工程约定)。
\item 机器狗沿直线匀速行进、停机检测,虚拟时间按题设动作耗时累计;程序运行时间
与虚拟时间相互独立(题设)。
\end{enumerate}
\section{符号说明}
\begin{table}[htbp]
\centering
\caption{主要符号说明}
\label{tab:symbols}
\begin{tabular}{cl}
\toprule
符号 & 说明 \\
\midrule
$\Omega$ & 目标区域 $\{(x,y):x^2+y^2\le 1800^2\}$(米) \\
$R_c$ & 干扰源 $c$ 的有效接收半径,$R_c\in[1000,1500]$ 米 \\
$\delta$ & 示向度误差界,$\delta=1^{\circ}$ \\
$s_i,\ \theta_i$ & 第 $i$ 个检测点坐标及其测得的示向度读数 \\
$W_i$ & 检测点 $s_i$ 处的前向角域 $[\theta_i-\delta,\theta_i+\delta]$ \\
$P$ & 交会定位区域(诸角域的半平面交) \\
$D(P)$ & 定位区域 $P$ 的直径 \\
$K$ & 某频道源的可能位置候选集合 \\
$\rho(K)$ & $K$ 的最小包围圆半径 \\
$\mathcal{Q}$ & 第二检测点的安全候选区域 \\
$L$ & 机器狗移动总路程(米) \\
$N_{\mathrm{switch}},N_{\mathrm{measure}},N_{\mathrm{clear}}$ & 频道切换、检测、清除动作次数 \\
$T$ & 完成任务的虚拟总时间(秒) \\
\bottomrule
\end{tabular}
\end{table}
\section{问题~1:有界误差交会定位模型}
\subsection{测向误差的前向角域建模}
设第 $i$ 个检测点 $s_i$ 处测得示向度 $\theta_i$。由假设~1,真实方位角位于
$[\theta_i-\delta,\theta_i+\delta]$ 内,故源必然落在以 $s_i$ 为顶点、以该方向区间
为边界的前向角域
\begin{equation}
W_i=\bigl\{s_i+t\,(\cos\varphi,\sin\varphi):t\ge 0,\ \varphi\in[\theta_i-\delta,\theta_i+\delta]\bigr\}
\label{eq:wedge}
\end{equation}
内。$W_i$ 由两条过 $s_i$ 的线性不等式表示,实现时须正确处理 $0^{\circ}/360^{\circ}$
跨界。示向度读数保留两位小数时,可取 $\delta=1.005^{\circ}$ 作保守裕量;本文推导
对任意 $\delta\in(0,45^{\circ})$ 成立。
\subsection{定位区域:角域的半平面交}
交会定位区域为
\begin{equation}
P=\bigcap_i W_i .
\label{eq:polygon}
\end{equation}
求各边界直线交点并筛除不可行点,再按极角排序即得凸多边形 $P$。算法必须区分五种
情形:空集(观测矛盾,应核查频道与数据)、单点、线段、有界多边形与无界区域;
对无界区域不能截断后声称得到真实直径。
\subsection{定位区域直径的算法}
凸函数 $\|x-y\|$ 的最大值在紧凸集的极点处取得,故当 $P$ 为有界多边形
$P=\mathrm{conv}\{v_1,\dots,v_n\}$ 时
\begin{equation}
D(P)=\max_{1\le i<j\le n}\|v_i-v_j\| .
\label{eq:diameter}
\end{equation}
$n$ 很小(等于检测点数的常数倍),直接枚举顶点对即可,复杂度 $O(n^2)$,结果可靠;
规模确有需要时可换用旋转卡壳算法 $O(n)$\cite{preparata,toussaint,mcgill}。本文以
顶点对枚举为基准实现,旋转卡壳仅作对照。
\subsection{直径圆能否覆盖定位区域}
\textbf{结论:不一定。}反例:边长为 $D$ 的等边三角形,其直径为 $D$,但最小包围圆
半径为 $D/\sqrt{3}>D/2$,直径圆不能覆盖三角形区域。
直径圆覆盖判定可一次完成:设 $A,B$ 为 $P$ 的一对最远顶点,$\|A-B\|=D$。若存在直径
为 $D$ 的圆覆盖 $P$,其圆心必为 $(A+B)/2$(因该圆须同时包含相距 $D$ 的两点)。故
只需检查全部顶点到 $(A+B)/2$ 的距离是否不超过 $D/2$;若失败,换任何一组直径对也
不可能成功,同时输出最坏超出距离与圆外顶点作为反例证据。
\subsection{最小包围圆与可保证清除}
定位的最终目的是清除:清除半径为 $20$ 米,故正确判据是最小包围圆
\begin{equation}
\rho(K)=\min_{z}\max_{g\in K}\|g-z\|\le 20 .
\label{eq:mec}
\end{equation}
$\rho(K)\le 20$ 时,最小包围圆圆心即可作为清除点;更一般地,所有可保证清除的位置
组成 $C_{20}(K)=\bigcap_{g\in K}B(g,20)$,非空时可取其中距机器狗最近者以节省移动。
$D\le 40$ 只是必要条件。最小包围圆采用带固定随机种子的 Welzl 增量算法\cite{welzl}
计算,保留全支撑点枚举法作独立对照,并对 $20$ 米阈值保留数值余量。
\textbf{演练验证。}对官方演练的三点观测离线复算:$\delta=1^{\circ}$ 时
$D=23.996723$ 米、$\rho=12.068583$ 米;$\delta=1.005^{\circ}$ 时
$D=24.119088$ 米、$\rho=12.130377$ 米。两种口径下直径圆均不覆盖定位区域,
但最小包围圆半径均小于 $20$ 米,即一点可保证清除,与可视化结果一致
\todonote{此处可补充定位区域图(figures/)}。
\section{问题~2:第二检测点的主动选点模型}
\subsection{首次测向后的候选集合}
设在 $s_1$ 处首次测得 \texttt{direction},示向度 $\theta_1$。记
\begin{equation}
K_1=\Omega\cap W(s_1,\theta_1\pm\delta)\cap \overline{B}(s_1,1500),
\label{eq:k1}
\end{equation}
即目标区域、角域与最大可能接收圆盘的交。保留整个距离圆盘是保守处理:即使
\texttt{direction} 还隐含“距离超过 $5$ 米”的排除,忽略它也不会丢失真源。
\subsection{安全候选区域的解析非空证明}
第二个检测点 $q$ 必须保证:无论真实源位于 $K_1$ 内何处,$q$ 都落在其有效接收半径
内(任何 $R_c\ge 1000$)。故安全候选区域定义为
\begin{equation}
\mathcal{Q}=\Bigl\{q:\max_{g\in K_1}\|q-g\|\le 1000\Bigr\} .
\label{eq:Q}
\end{equation}
对一般的 $K_1$,$\mathcal{Q}$ 非空当且仅当 $\rho(K_1)\le 1000$。本题首次测向条件下
有更强的解析结论:取 $R=1500$、$\bm{u}$ 为示向度方向单位向量,
\begin{equation}
a=\frac{R}{2\cos\delta},\qquad c=s_1+a\,\bm{u},
\end{equation}
则 $K_1\subseteq B(c,a)$。事实上任意候选 $g=s_1+t\,\bm{u}_\varphi$
($0\le t\le R$,$|\varphi-\theta_1|\le\delta$)满足
\begin{equation}
\|g-c\|^2=t^2+a^2-2at\cos(\varphi-\theta_1),
\end{equation}
该式关于 $t$ 为凸函数,最大值在 $t=0$ 或 $t=R$ 取得;$t=0$ 处值为 $a^2$,
$t=R$ 处由 $a=R/(2\cos\delta)$ 知其不超过 $a^2$。于是
$B(c,1000-a)\subseteq\mathcal{Q}$。取 $\delta=1.005^{\circ}$ 时
$a\approx 750.115391$ 米,安全圆盘半径约 $249.884609$ 米,严格为正;题设
$\delta=1^{\circ}$ 时同样成立。即使 $c$ 位于 $\Omega$ 外也合法,因为机器狗不受
源位置圆域限制。
\subsection{选点目标与算法}
在安全圆盘内以“信息收益—成本”双指标选点:主目标为最坏情形后验包围圆半径
$\sup_{\theta'}\rho\bigl(K_1\cap W(q,\theta')\bigr)$,其中 $\theta'$ 取遍与 $K_1$
及误差界一致的读数;次目标为移动与检测成本。实现上对目标位置与误差区间端点采样
并加密检查,交会角只作同分筛选指标,不为改善交会角越出已证明安全的候选区域。
若返回 \texttt{near},则源位于当前点 $5$ 米以内,可直接在当前位置尝试清除。
\todonote{候选区域示意图与选点对比实验待补}
\section{问题~3:全向干扰源的搜索定位与清除调度}
\subsection{虚拟时间与动作成本模型}
依据题设动作耗时,完成任务所需虚拟时间
\begin{equation}
T=\frac{L}{5}+N_{\mathrm{switch}}+5N_{\mathrm{measure}}
+5N_{\mathrm{clear}}^{\mathrm{s}}+3N_{\mathrm{clear}}^{\mathrm{f}},
\label{eq:time}
\end{equation}
其中 $L$ 为移动总路程(含检测与清除引发的移动),频道切换次数只计被接受的检测
动作。优化顺序为:先保证全部清除,再减小 $T$;不能通过少清除源来改善平均时间。
虚拟活动时长上限为 $100$ 小时;程序运行时间另受 $20$ 分钟窗口约束,二者独立。
\subsection{全域覆盖发现基线}
在 $s$ 处对某频道测得 \texttt{no\_signal},只能排除以 $s$ 为中心、半径 $1000$ 米
圆盘内存在该频道源(有效接收半径可能只有 $1000$ 米),不能一律排除到 $1500$ 米。
据此构造覆盖点集
\begin{equation}
S=\{(700i,700j):i,j=-3,-2,\dots,3\},\qquad |S|=49,
\end{equation}
其覆盖范围 $[-2100,2100]^2$ 包含 $\Omega$。对任一单元内的源 $g$,其所在单元的
$4$ 个格点到 $g$ 的距离均不超过 $700\sqrt{2}\approx 989.95<1000$ 米,故必存在
合格检测点;又 $g$ 位于 $4$ 个格点的凸包内部,经过 $g$ 的任意发射半平面必包含
至少一个格点(否则全部格点落入相反开半平面,与 $g$ 在凸包内矛盾)。因此 $49$ 点
逐一检测可保证发现该频道的源;源恰在网格线上时按半开区间归入相邻单元处理。
$49$ 点 $\times\,20$ 频道至多 $980$ 次检测,虚拟耗时上界约 $1.32\times 10^4$ 秒,
在 $100$ 小时上限内有充分设计空间;实际执行中已清除频道跳过、同点共享多频道测量、
已发现频道转入定位队列。
\subsection{发现—定位—清除闭环}
机器狗维护逐频道状态:未知/已发现待定位/可清除/已清除/已证明不存在,以及候选
集合 $K_c$。闭环流程为:覆盖扫描发现源 $\to$ 用问题~2 的主动选点缩小 $K_c$ 直至
$\rho(K_c)\le 20$ $\to$ 移动到 $C_{20}(K_c)$ 内距当前点最近的点清除 $\to$ 更新覆盖
记录与队列。多个已发现源按“预期信息改善/增量虚拟耗时”排序处理;候选采样点恰
返回 \texttt{near} 时立即就地清除。
\subsection{停止条件与结果统计}
\textbf{停止成功的依据为以下之一}:(i)已成功清除 $16$ 个不同频道的源(数量
上界);(ii)每个频道都已有清除成功记录或经完整覆盖证明不存在。发现 $10$ 个源、
连续若干次无信号、候选采样为空均不是充分停止条件;程序运行时间或窗口不足而退出
记为未证明完成,不与成功混记。结果统计按题设给出
\begin{align}
\text{被清除干扰源个数的比例} &= \frac{\text{被清除干扰源的个数}}{\text{干扰源总数}} ,\\
\text{平均定位清除时间} &= \frac{\text{定位清除总时间}}{\text{被清除干扰源的个数}} .
\end{align}
\begin{table}[htbp]
\centering
\caption{问题~3 正式测试结果(按题目表~1 格式)}
\label{tab:q3formal}
\begin{tabular}{lcccc}
\toprule
& 测试案例编码 & 清除干扰源个数 & 平均定位清除时间 & 程序运行时间 \\
\midrule
测试~1 & \todonote{待填} & \todonote{待填} & \todonote{待填} & \todonote{待填} \\
测试~2 & \todonote{待填} & \todonote{待填} & \todonote{待填} & \todonote{待填} \\
测试~3 & \todonote{待填} & \todonote{待填} & \todonote{待填} & \todonote{待填} \\
\bottomrule
\end{tabular}
\end{table}
\todonote{演练测试统计值(清除比例、平均定位清除时间)待演练后填入}
\section{问题~4:含定向干扰源的检测与清除}
\subsection{定向源观测模型}
定向源的接收条件是“距离 $\le R_c$ 且检测点位于发射半平面内”。因此
\texttt{no\_signal} 约束的是位置—半径—朝向的\textbf{联合假设}:若不联合维护朝向
可行集合,就不能用它单独删除空间候选点。可靠基线是对 \texttt{no\_signal} 只记录
“该点覆盖检测已完成”,不做空间删除;加速版本再维护朝向可行集合,且必须验证
不误删真源。
\subsection{覆盖发现基线对定向源仍然有效}
由 7.2 节的凸包论证:源 $g$ 位于所在单元 $4$ 格点的凸包内部,故经过 $g$ 的任意
发射半平面必含至少一个格点;该格点同时满足距离不超过 $989.95<1000$ 米。因此
$49$ 点逐频道检测对全向与定向源统一保证发现,包括贴近 $\Omega$ 边界朝外发射的源
(格点允许越出 $\Omega$ 访问)。
\subsection{失去信号后的后备清除}
已发现的定向源在定位过程中可能再次失去信号。对已知有界候选集合 $K$,构造边长
$20$ 米的全局网格:格中心到格内任意点距离不超过 $10\sqrt{2}\approx 14.14<20$ 米,
保留与 $K$ 的外包框相交的格子即得无空洞的有限圆盘覆盖,逐点调用清除动作。请求
次数上界
\begin{equation}
N\le\Bigl(\lceil w/20\rceil+2\Bigr)\Bigl(\lceil h/20\rceil+2\Bigr),
\end{equation}
其中 $w,h$ 为候选集合外包框的宽与高;单源全失败清除耗时为 $L/5+3N$。若 $K$ 外包
尺寸较大(如半径 $1500$ 米圆盘的外包框达上万格点),盲扫不满足现实预算,应先继续
定位缩小候选集合。现实时间预算按“剩余请求数 $\times$ 实测单请求高分位耗时”估计,
不满足预算时转入其他任务或按预算退出。
\begin{table}[htbp]
\centering
\caption{问题~4 正式测试结果(按题目表~1 格式)}
\label{tab:q4formal}
\begin{tabular}{lcccc}
\toprule
& 测试案例编码 & 清除干扰源个数 & 平均定位清除时间 & 程序运行时间 \\
\midrule
测试~1 & \todonote{待填} & \todonote{待填} & \todonote{待填} & \todonote{待填} \\
测试~2 & \todonote{待填} & \todonote{待填} & \todonote{待填} & \todonote{待填} \\
测试~3 & \todonote{待填} & \todonote{待填} & \todonote{待填} & \todonote{待填} \\
\bottomrule
\end{tabular}
\end{table}
\section{模型评价与推广}
\textbf{优点}:(1)四个问题复用同一几何内核(角域半平面交—直径—最小包围圆),
模型一致、实现可复用;(2)全程坚持保守几何:有界误差不取平均、无信号只排除
$1000$ 米、\texttt{no\_signal} 对定向源不删位置、停止条件需覆盖证明,所有“清除
完毕”的结论都可验证;(3)虚拟时间公式把调度目标显式化,且区分了虚拟时间与程序
运行时间两类约束。
\textbf{缺点与改进}:(1)主动选点采用最坏情形采样,是启发式而非全局最优,可研究
对候选集合的更精细离散化;(2)$49$ 点覆盖基线存在冗余,自适应跳点须以保留逐频道
覆盖证据为前提;(3)后备清除请求数较大,宜结合朝向可行集合减小候选集合;(4)
当前演练验证限于问题~1 的几何内核,问题~3、4 的闭环策略与统计结果有待演练填充。
\begin{thebibliography}{9}
\zihao{5}
\bibitem{preparata} Preparata F P, Shamos M I. Computational Geometry: An
Introduction[M]. New York: Springer-Verlag, 1985.
\bibitem{welzl} Welzl E. Smallest enclosing disks (balls and ellipsoids)[C]//
Maurer H. New Results and New Trends in Computer Science. Lecture Notes in
Computer Science, vol 555. Berlin: Springer, 1991: 359--370.
\bibitem{toussaint} Toussaint G T. Solving geometric problems with the rotating
calipers[C]//Proceedings of IEEE MELECON. Athens: IEEE, 1983.
\bibitem{mcgill} CGAL Project. Bounding Volumes: Min\_circle\_2[EB/OL].
\url{https://doc.cgal.org/latest/Bounding_volumes/}, 2026.
\bibitem{cgrl} McGill School of Computer Science. Rotating Calipers[EB/OL].
\url{https://www-cgrl.cs.mcgill.ca/~godfried/research/calipers.html}, 2026.
\end{thebibliography}
\clearpage
% ============================================================
% 附录(页数不限;电子版与纸质版均须包含)
% ============================================================
\appendix
\section{支撑材料文件列表}
\todonote{提交前更新为实际支撑材料压缩包内容,须与附录~B 源码一致}
\begin{table}[htbp]
\centering
\caption{支撑材料文件列表}
\begin{tabular}{lll}
\toprule
文件/目录 & 内容 & 说明 \\
\midrule
\texttt{geometry/} & 几何内核源代码 & 角域交、直径、最小包围圆 \\
\texttt{planning.py} & 问题~2 安全候选盘计算 & \texttt{first\_bearing\_candidate\_disk} \\
\texttt{examples/q1/} & 问题~1 输入样例 & 含等边三角形反例 \\
\texttt{output/q1/} & 问题~1 输出与演练记录 & 优化报告、可视化 \\
\bottomrule
\end{tabular}
\end{table}
\section{程序源代码}
以下为支撑模型计算的核心源代码,完整可运行代码以支撑材料压缩包为准。
\subsection{\texttt{geometry/localization.py}:交会定位几何内核}
\lstinputlisting[language=Python]{../../../geometry/localization.py}
\subsection{\texttt{geometry/planning.py}:问题~2 安全候选区域}
\lstinputlisting[language=Python]{../../../geometry/planning.py}
\end{document}