Compare commits

..
2 Commits
Author SHA1 Message Date
Horldsence c57865edf5 Merge branch 'gpt' of https://git.simba-robotics.com/HelixCopex/mcm-26-b into gpt 2026-09-10 21:14:46 +08:00
Horldsence 0dac40d348 paper 2026-09-10 21:13:45 +08:00
13 changed files with 672 additions and 1 deletions
+10 -1
View File
@@ -11,4 +11,13 @@ wheels/
# Sim
Jammers*/
tmp/
tmp/
# LaTeX build artifacts
docs/paper/build/
docs/paper/*.aux
docs/paper/*.log
docs/paper/*.out
docs/paper/*.fls
docs/paper/*.fdb_latexmk
docs/paper/*.xdv
docs/paper/*.synctex.gz
+58
View File
@@ -0,0 +1,58 @@
# 论文(docs/paper)
2026 年高教社杯全国大学生数学建模竞赛 B 题论文 LaTeX 工程,格式依据
`issue/论文格式/附件3. 全国大学生数学建模竞赛论文格式规范.pdf`(2026 年修订稿)。
## 编译
需要 TeX Live(含 XeLaTeX 与 ctex)。在本目录执行:
```bash
latexmk -xelatex -outdir=build main.tex
# 或
xelatex main.tex && xelatex main.tex
```
输出 PDF:`build/main.pdf`(用第二种方式则为 `main.pdf`)。
## 目录结构
| 路径 | 内容 |
| --- | --- |
| `main.tex` | 论文主文件(全部内容在一个文件中,便于协作合并) |
| `fonts/` | 从本机提取的中文字体(宋体 SC 常规/加粗、黑体 SC Light/Medium)与 Times New Roman 四体,约 150 MB,编译自包含 |
| `figures/` | 插图目录 |
| `build/` | 编译产物(已 gitignore) |
## 规范要点与工程实现
- A4、四边距 2.5cm:`geometry` 宏包。
- 页码从摘要专用页起、页脚中部、从 1 连续编号:摘要页 `\setcounter{page}{1}`。
- 正文不要目录、不超过 30 页:未生成目录,正文当前远少于 30 页。
- **电子版第一页必须是摘要专用页**(不含承诺书与编号专用页):默认
`\paperfalse`。打印纸质版时改为 `\papertrue`,自动加入承诺书与编号专用页
(占位文字,须替换为组委会当年发布的专用页原文)。
- 摘要页含标题与关键词,不超过一页,无需英文。
- 摘要页、正文、附录中不得出现姓名、学校、赛区等信息。
- 附录含支撑材料文件列表与完整源码:源码以 `\lstinputlisting` 引用仓库内
`geometry/` 等模块(相对路径 `../../../`),提交前须确认与支撑材料压缩包一致。
## 待办(正文中红色【待填/待补】标记)
- 问题 3、4 演练统计值与正式测试结果(表 1 两张表)。
- 问题 1 定位区域图、问题 2 候选区域示意图与选点对比实验。
- 支撑材料文件列表更新;定稿前删除全部红色批注(`\todonote`)。
## 字体说明
`fonts/` 下中文 字体自 macOS 系统字体(Songti.ttc、STHeiti)提取简体字面而来,
授权仅限本队参赛使用。若在 Windows/Overleaf 编译,可改用系统自带中易宋体/黑体,
将导言区字体设置替换为:
```latex
\setCJKmainfont{SimSun}
\setCJKsansfont{SimHei}
\setmainfont{Times New Roman}
```
若仓库体积敏感,可将 `fonts/` 加入 `.gitignore`(此时每位队员需自备字体)。
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+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}
Generated
+8
View File
@@ -0,0 +1,8 @@
version = 1
revision = 3
requires-python = ">=3.10"
[[package]]
name = "math"
version = "0.1.0"
source = { virtual = "." }