编译错误修复

This commit is contained in:
2026-09-10 23:44:13 +08:00
parent 83d2e24448
commit dbf4feec4e
5 changed files with 995 additions and 104 deletions
+2 -1
View File
@@ -35,7 +35,8 @@ xelatex main.tex && xelatex main.tex
- 摘要页含标题与关键词,不超过一页,无需英文。
- 摘要页、正文、附录中不得出现姓名、学校、赛区等信息。
- 附录含支撑材料文件列表与完整源码:源码以 `\lstinputlisting` 引用仓库内
`geometry/` 等模块(相对路径 `../../../`),提交前须确认与支撑材料压缩包一致。
`src/mcm26b/geometry/` 等模块(相对路径 `../../`),提交前须确认与支撑材料
压缩包一致。
## 待办(正文中红色【待填/待补】标记)
Binary file not shown.
+560 -103
View File
@@ -155,26 +155,27 @@
\end{center}
针对无线电干扰源的快速自动定位与清除问题,本文以测向观测的三值反馈
\texttt{no\_signal}、\texttt{near}、\texttt{direction} 为唯一信息来源,建立了
\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$ 米:
直径圆不覆盖定位区域,但存在一点可保证清除。
前向角域 $W_i$,交会定位区域即诸角域的半平面交 $P=\bigcap_i W_i$,给出直径
$D(P)=\max_{i,j}\|v_i-v_j\|$ 的顶点对枚举算法,并处理空集、无界区域等退化情形。
对“直径圆能否覆盖定位区域”,给出只需检查最远顶点对中点的充要判定,并以符合题设
测向条件的等边三角形反例给出否定回答;以最小包围圆半径 $\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{针对问题~2},首次测向后取保守候选集合
$K_1=\Omega\cap W(s_1,\theta_1\pm\delta)\cap B(s_1,1500)$,将接收保证写成一族闭
圆盘之交并给出非空判据;进而证明截断角域的最小包围圆恰为 $B(c,a)$
($a=R/(2\cos\delta)$、$c=s_1+a\bm{u}$),故安全候选圆盘
$B(c,1000-a)\subseteq\mathcal{Q}$ 严格非空($\delta=1^{\circ}$ 时半径约 $249.89$
米)。在安全区域内以“最坏保守后验包围半径”为主目标、移动与检测成本为次目标
主动选点,交会角仅作局部解释与同分筛选指标。
\textbf{针对问题~3},建立以虚拟时间
$T=L/5+N_{\mathrm{switch}}+5N_{\mathrm{measure}}+5N_{\mathrm{clear}}^{\mathrm{s}}
@@ -193,7 +194,7 @@ $N\le(\lceil w/20\rceil+2)(\lceil h/20\rceil+2)$,并纳入现实时间预算
最后对模型的保守性与效率进行评价:几何内核可复用、覆盖保证可验证;局限在于
主动选点为采样启发式、后备清除请求数较大,可通过共享测点与自适应覆盖加速。
\vspace{0.8em}
\vspace{0.4em}
\noindent{\heiti 关键词:}交会定位;半平面交;最小包围圆;覆盖证明;主动选点;动作调度
\clearpage
@@ -236,17 +237,27 @@ $\Omega=\{(x,y):x^2+y^2\le 1800^2\}$,干扰源按覆盖角度范围分为全
条件下,把定位几何组织成“全域覆盖发现—逐个定位—清除—证明完成”的闭环调度问题。
因此不必为每问单独建模,而是复用同一几何内核与观测更新机制。
\textbf{问题~1 的分析}。误差有界意味着单次测向只能确定源位于以示向度方向为轴、
半角 $1^{\circ}$ 的前向角域内;多检测点角域的交集即为定位区域。求交即半平面交,
是经典计算几何问题;直径在凸多边形顶点上取得,可用顶点对枚举求得。“直径圆能否
覆盖区域”需要区分“直径”与“外接”两个概念,等边三角形说明直径圆一般不覆盖,
正确的保证清除工具是最小包围圆。
\textbf{问题~1 的分析}。题面附录~2 第(1)项把测向误差限定在
$[-1^{\circ},1^{\circ}]$,且同一地点重复检测不改变误差:没有误差分布可利用、
原地重复测量不产生新信息,故采用有界误差的集合相交建模——单次测向只能确定源
位于以示向度方向为轴、半角 $1^{\circ}$ 的前向角域内,多检测点角域的交集即为
定位区域。题目要求“采用交会定位法”计算“多边形定位区域”的直径(附录~2 第(3)
项图~2),角域边界为直线,求交即半平面交这一经典计算几何问题;直径在凸多边形
顶点上取得,可用顶点对枚举精确求得。对“直径圆能否覆盖区域”的追问,需要区分
“直径”与“外接”两个概念:先给出只需检查最远顶点对中点的充要判定,再构造符合
题设测向条件的等边三角形反例说明一般不覆盖。最后,清除以 $20$ 米距离为判据
(附录~2 第(8)项),正确的保证清除工具是最小包围圆。
\textbf{问题~2 的分析}。第二检测点的选取是在目标位置未知条件下的主动测量设计:
无论真实源位于当前候选集合何处,新检测点都必须保证能接收到信号(距离不超过其有效
接收半径),否则该次检测将退化为无效动作。因此先构造保守候选集合,再解析证明存在
“任何情况下都接收到信号”的安全区域,在安全区域内按最坏情形的后验包围半径最小化
选取检测点。
\textbf{问题~2 的分析}。题目要求同时给出第二检测点的“选择策略”与“候选区域”,
这是在目标位置未知条件下的主动测量设计,方法取舍由两条题设决定。其一,有效接收
半径在 $1000$ 至 $1500$ 米之间且具体值未知(附录~2 第(2)项):无论真实源位于
当前候选集合何处,新检测点都必须保证落在其接收半径内,否则该次检测退化为无效
动作,故先构造保守候选集合,再解析证明存在“任何情况下都收到信号”的安全区域。
其二,题面只给有界误差而无误差分布与源位置分布(附录~2 第(1)项),概率类方法
没有严格依据,故在安全区域内以最坏情形的后验包围半径为主目标、移动与检测成本
(附录~2 第(5)、(6)项)为次目标选取检测点,交会角仅作局部几何解释与同分筛选。
此外,$1800$ 米圆域限制的是源位置而非机器狗(附录~3),安全选点允许越出圆域;
返回 \texttt{near} 的分支按附录~2 第(9)项就地清除,不视为策略失败。
\textbf{问题~3 的分析}。全清是硬约束:发现 $10$ 个源或连续多次无信号都不构成停止
依据。需要一组对任何源位置都能保证“至少一个检测点落在其有效接收范围内”的覆盖点集,
@@ -297,6 +308,10 @@ $\Omega=\{(x,y):x^2+y^2\le 1800^2\}$,干扰源按覆盖角度范围分为全
$K$ & 某频道源的可能位置候选集合 \\
$\rho(K)$ & $K$ 的最小包围圆半径 \\
$\mathcal{Q}$ & 第二检测点的安全候选区域 \\
$B(c,r)$ & 以 $c$ 为圆心、$r$ 为半径的闭圆盘(米) \\
$R_-,\ R_+$ & 有效接收半径的下、上限,$1000$、$1500$ 米 \\
$J(q)$ & 第二检测点 $q$ 的最坏保守后验包围半径(米) \\
$C(q)$ & 在 $q$ 处完成一次检测的虚拟时间增量(秒) \\
$L$ & 机器狗移动总路程(米) \\
$N_{\mathrm{switch}},N_{\mathrm{measure}},N_{\mathrm{clear}}$ & 频道切换、检测、清除动作次数 \\
$T$ & 完成任务的虚拟总时间(秒) \\
@@ -306,114 +321,554 @@ $\Omega=\{(x,y):x^2+y^2\le 1800^2\}$,干扰源按覆盖角度范围分为全
\section{问题~1:有界误差交会定位模型}
\subsection{测向误差的前向角域建模}
\subsection{建模思路来源}
设第 $i$ 个检测点 $s_i$ 处测得示向度 $\theta_i$。由假设~1,真实方位角位于
$[\theta_i-\delta,\theta_i+\delta]$ 内,故源必然落在以 $s_i$ 为顶点、以该方向区间
为边界的前向角域
本问每种方法的取舍都由题面描述直接确定,对应关系如下。
\textbf{由误差描述确定集合模型。}题面附录~2 第(1)项指出:示向度与真实方位角之间
的误差“在一段时间内,同一地点的电磁环境干扰是固定的,所以重复检测不会改变检测
误差”,且“从目标区域全局来看,所有这些误差在 $[-1^{\circ},1^{\circ}]$ 范围内”。
因此单次观测不能确定一条精确射线,却可以确定一个必含真实方向的角域;题面没有
给出误差的分布形式,原地重复测量又不产生新信息,故采用有界误差下的集合相交,
而非直线最小二乘或多次读数平均——后两者既不能保证真源不被排除,也与“同点误差
不变”的题设相悖。
\textbf{由交会定位的规定确定半平面交。}问题~1 要求“采用交会定位法(见附录~2)
计算多边形定位区域直径”,附录~2 第(3)项的图~2 把定位区域画成两个检测点示向度
实线两侧各 $1^{\circ}$ 虚线所夹的四边形。角域边界是直线,故定位区域是二维线性
不等式组的可行域,可用半平面交显式构造,问题随之成为凸几何问题\cite{boyd}。
\textbf{由直径的定义确定顶点枚举。}题目规定直径是“区域内任意两点之间距离的最大
值”。两点距离关于其变元是凸函数,在紧凸集上的最大值必在极点处取得,故只需在
顶点对上枚举,无需任何近似。
\textbf{由覆盖之问确定“先判定、后反例”。}题目追问“以定位区域直径为直径的圆能否
覆盖此定位区域”。“直径”是最长弦概念,与“外接”并非同一对象,因此先给出存在
覆盖圆的充要判定,再构造符合题设测向条件的反例,据此回答“不一定”。
\textbf{由清除条件确定最小包围圆。}附录~2 第(8)项规定光学精确定位与清除“在距离
干扰源不超过 $20$ 米”时进行,且成功与否仅与清除点到干扰源的距离有关。定位精度的
最终判据因而是“存在一点到所有可能源位置都不超过 $20$ 米”,即最小包围圆半径
$\rho\le 20$,而非直径不超过 $40$ 米。
\subsection{测向观测的前向角域与半平面约束}
设第 $i$ 个检测点 $s_i=(s_{ix},s_{iy})$ 处测得示向度 $\theta_i$(题面附录~2
第(1)项:示向度自 $x$ 轴正向逆时针计量,范围 $[0^{\circ},360^{\circ})$)。
由假设~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\}
W_i=\bigl\{s_i+t\,u(\varphi):t\ge 0,\ \varphi\in[\theta_i-\delta,\theta_i+\delta]\bigr\},
\qquad u(\varphi)=(\cos\varphi,\sin\varphi)
\label{eq:wedge}
\end{equation}
内。$W_i$ 由两条过 $s_i$ 的线性不等式表示,实现时须正确处理 $0^{\circ}/360^{\circ}$
跨界。示向度读数保留两位小数时,可取 $\delta=1.005^{\circ}$ 作保守裕量;本文推导
对任意 $\delta\in(0,45^{\circ})$ 成立。
\subsection{定位区域:角域的半平面交}
交会定位区域为
内。记二维叉积 $[a,b]=a_xb_y-a_yb_x$ 与 $u_i^{\pm}=u(\theta_i\pm\delta)$。当
$0<\delta<90^{\circ}$ 时,“位于两条边界射线之间”等价于
\begin{equation}
P=\bigcap_i W_i .
[\,u_i^-,\,g-s_i\,]\ge 0,\qquad [\,u_i^+,\,g-s_i\,]\le 0,
\label{eq:cross}
\end{equation}
即 $g-s_i$ 位于下边界射线的左侧、上边界射线的右侧。展开即标准线性约束
\begin{align}
\sin(\theta_i-\delta)\,x-\cos(\theta_i-\delta)\,y
&\le \sin(\theta_i-\delta)\,s_{ix}-\cos(\theta_i-\delta)\,s_{iy},\\
-\sin(\theta_i+\delta)\,x+\cos(\theta_i+\delta)\,y
&\le -\sin(\theta_i+\delta)\,s_{ix}+\cos(\theta_i+\delta)\,s_{iy}.
\end{align}
另保留前向约束 $u(\theta_i)\cdot(g-s_i)\ge0$:它在 $0<\delta<90^{\circ}$ 时冗余,
但 $\delta=0$ 时前两条约束只限定一条直线,加入它才得到正确的射线。角域顶点本身
包含在闭集合内,这是保守处理,并不表示在该点仍能获得示向度。采用向量不等式后,
$359^{\circ}$ 与 $0^{\circ}$ 跨界无需分段比较角度。示向度读数保留两位小数时,可
取 $\delta=1.005^{\circ}$ 作显式声明的保守裕量;本节推导对任意
$\delta\in(0,90^{\circ})$ 成立,本题算例始终取 $\delta=1^{\circ}$。
\subsection{定位区域的构造与分类}
交会定位区域为诸角域之交
\begin{equation}
P=\bigcap_i W_i=\{g:Ag\le b\}.
\label{eq:polygon}
\end{equation}
求各边界直线交点并筛除不可行点,再按极角排序即得凸多边形 $P$。算法必须区分五种
情形:空集(观测矛盾,应核查频道与数据)、单点、线段、有界多边形与无界区域;
对无界区域不能截断后声称得到真实直径。
每个 $W_i$ 都是闭凸集,故 $P$ 也是闭凸集;它可能为空、为单点、为线段、为有界凸
多边形,也可能无界,算法必须显式区分这五种情形,不得混同处理。
\subsection{定位区域直径的算法}
\textbf{边界交点枚举。}把约束统一写成 $a_jx+b_jy\le c_j$,两条边界的行列式
$\Delta_{jk}=a_jb_k-a_kb_j\ne0$ 时,交点为 $x=(c_jb_k-c_kb_j)/\Delta_{jk}$、
$y=(a_jc_k-a_kc_j)/\Delta_{jk}$。保留满足全部约束的交点,去重后构造凸包即得
$P$ 的顶点集。
凸函数 $\|x-y\|$ 的最大值在紧凸集的极点处取得,故当 $P$ 为有界多边形
$P=\mathrm{conv}\{v_1,\dots,v_n\}$ 时
\textbf{命题~1}(极点存在保证判空)\quad 至少有一次观测时,非空的角域交集一定存在
极点,因此可通过可行边界交点枚举判空。
\textbf{证明}\quad 取第一个角域的轴向 $u_1$,其中任意 $g$ 满足
$u_1\cdot(g-s_1)\ge\cos\delta_1\,\|g-s_1\|$,且 $\cos\delta_1>0$。在非空 $P$ 上
最小化线性函数 $u_1\cdot(g-s_1)$:由该不等式,以任一可行点的函数值截得的下水平
集有界,从而是非空紧集,最小值可达;最小化点集位于一条支撑直线上且有界,因而是
点或线段,取其点或端点即得 $P$ 的极点。二维线性约束的极点至少有两条法向量线性
无关的有效边界(否则沿所有有效边界的公共切向可作双向小扰动,与极点定义矛盾),
故必出现在上述交点枚举中。\hfill$\square$
无观测时 $P=\R^2$,应直接判为无界,不能用“没有交点”判为空集。
\textbf{有界性判定。}对非空 $P$ 定义衰退锥 $\mathcal{R}=\{d:Ad\le0\}$。若存在
$d\ne0$,则任取 $g_0\in P$ 都有 $g_0+td\in P$($t\ge0$),$P$ 无界;反之若 $P$
无界,取 $g_k\in P$ 使 $\|g_k-g_0\|\to\infty$,将 $Ag_k\le b$ 减去 $Ag_0\le b$、
除以 $\|g_k-g_0\|$ 并取极限,知单位向量 $(g_k-g_0)/\|g_k-g_0\|$ 的任一聚点 $d$
满足 $Ad\le0$。故 $P$ 有界当且仅当 $\mathcal{R}=\{0\}$。本模型的衰退锥被一个小于
$180^{\circ}$ 的闭角域约束,若含非零向量必含一条极射线,该射线平行于某条有效
约束边界,故只需检查每个法向量 $(a_j,b_j)$ 的两个切向方向 $(b_j,-a_j)$、
$(-b_j,a_j)$ 是否满足全部齐次不等式。
\textbf{分类约定。}可行交点为空时返回空集;存在非零衰退方向时返回无界;否则对
可行交点去重求凸包,按顶点数与仿射维数区分单点、线段和二维多边形。空集的直径
约定为无定义,无界区域的直径为 $+\infty$。显示窗口只用于绘图裁剪:任何大矩形都
不能取代衰退锥判定,更不能把截断图形的直径称为原无界区域的直径。
\subsection{定位区域直径的顶点定理}
\textbf{定理~1}(直径在顶点上取得)\quad 若 $P=\mathrm{conv}\{v_1,\dots,v_m\}$ 非空
且有界,则
\begin{equation}
D(P)=\max_{1\le i<j\le n}\|v_i-v_j\| .
D(P)=\max_{1\le i<j\le m}\|v_i-v_j\|.
\label{eq:diameter}
\end{equation}
$n$ 很小(等于检测点数的常数倍),直接枚举顶点对即可,复杂度 $O(n^2)$,结果可靠;
规模确有需要时可换用旋转卡壳算法 $O(n)$\cite{preparata,toussaint,mcgill}。本文以
顶点对枚举为基准实现,旋转卡壳仅作对照。
\subsection{直径圆能否覆盖定位区域}
\textbf{证明}\quad 任取 $x,y\in P$,写成凸组合 $x=\sum_i\lambda_iv_i$、
$y=\sum_j\mu_jv_j$(权重非负且各自求和为 $1$),则
$x-y=\sum_{i,j}\lambda_i\mu_j(v_i-v_j)$。由三角不等式,
$\|x-y\|\le\sum_{i,j}\lambda_i\mu_j\|v_i-v_j\|\le\max_{i,j}\|v_i-v_j\|$;最远顶点对
本身属于 $P$,上界可达。\hfill$\square$
\textbf{结论:不一定。}反例:边长为 $D$ 的等边三角形,其直径为 $D$,但最小包围圆
半径为 $D/\sqrt{3}>D/2$,直径圆不能覆盖三角形区域。
$m$ 很小(为检测点数的常数倍),直接枚举顶点对即可,复杂度 $O(m^2)$;这是精确
算法而非近似,缺点仅在于大规模时的计算量,确有需要时可换旋转卡壳算法
$O(m)$\cite{preparata,toussaint,cgrl}。本文以顶点对枚举为基准实现,旋转卡壳仅作
对照。单点的直径为 $0$,线段的直径为端点距离。
直径圆覆盖判定可一次完成:设 $A,B$ 为 $P$ 的一对最远顶点,$\|A-B\|=D$。若存在直径
为 $D$ 的圆覆盖 $P$,其圆心必为 $(A+B)/2$(因该圆须同时包含相距 $D$ 的两点)。故
只需检查全部顶点到 $(A+B)/2$ 的距离是否不超过 $D/2$;若失败,换任何一组直径对也
不可能成功,同时输出最坏超出距离与圆外顶点作为反例证据。
\subsection{直径圆覆盖的充要条件与反例}
\textbf{定理~2}(覆盖判定)\quad 取任意一组最远顶点 $a,b$,记 $D=\|a-b\|$、
$o=(a+b)/2$。存在直径为 $D$ 的圆覆盖 $P$,当且仅当所有顶点满足
$\|v_i-o\|\le D/2$。
\textbf{证明}\quad 若半径 $D/2$、圆心 $z$ 的圆同时包含 $a,b$,则
$D\le\|a-z\|+\|z-b\|\le D$,两处不等号必须同时取等,故 $z$ 在 $a,b$ 连线上且到
两点等距,只能是中点 $o$;$D=0$ 时结论直接成立。又圆盘是凸集,包含全部顶点等价
于包含其凸包,故只需在这唯一可能的圆心处检查全部顶点。\hfill$\square$
该判定同时回答“以某条直径线段为直径的圆能否覆盖”与“能否移动一个同样大小的圆
使其覆盖”:检查失败时,移动圆心或更换最远顶点对均不可能成功。定义最大超出量
$E=\max_i\|v_i-o\|-D/2$:精确算术下不会出现严格负值(最远顶点对就在圆周上),
$E>0$ 即覆盖失败,取达到最大值的顶点即得可独立复核的失败证据。
\textbf{结论:直径圆不一定覆盖定位区域。}反例如表~\ref{tab:counterexample} 所示
(误差半角均取 $1^{\circ}$,符合题设测向条件)。
\begin{table}[htbp]
\centering
\caption{符合题设测向条件的反例:三点观测}
\label{tab:counterexample}
\begin{tabular}{ccc}
\toprule
检测点 & 坐标(米) & 示向度 \\
\midrule
$s_1$ & $(-1000,0)$ & $1^{\circ}$ \\
$s_2$ & $(540,-500\sqrt{3})$ & $121^{\circ}$ \\
$s_3$ & $(520,520\sqrt{3})$ & $241^{\circ}$ \\
\bottomrule
\end{tabular}
\end{table}
三个角域的下边界方向分别为 $0^{\circ},120^{\circ},240^{\circ}$,对应左半平面
$y\ge0$、$\sqrt{3}\,x+y\le40\sqrt{3}$、$y\le\sqrt{3}\,x$,其交为顶点 $A=(0,0)$、
$B=(40,0)$、$C=(20,20\sqrt{3})$ 的等边三角形。以 $s_1$ 为例,它到三顶点的方向分别
为 $0^{\circ},0^{\circ},\arctan(20\sqrt{3}/1020)\approx1.945^{\circ}$,均在
$[0^{\circ},2^{\circ}]$ 内,故上边界不切去该三角形;其余两站由绕三角形中心旋转
$120^{\circ}$ 的对称性同理成立,三个完整前向角域之交恰为该三角形。取真实源为
三角形中心 $g_*=(20,20\sqrt{3}/3)$:以 $s_1$ 为例,真实方位约 $0.649^{\circ}$,与
读数 $1^{\circ}$ 的偏差不超过 $1^{\circ}$,检测距离约 $1020$ 米,不超过 $1500$ 米,
另两站同理,故该反例符合题设的误差界与有效接收半径范围。此时 $D=40$ 米,以 $AB$
为直径的圆中心为 $(20,0)$,到 $C$ 的距离为 $20\sqrt{3}>20$ 米,不能覆盖;换任何
最远顶点对亦然。该三角形的最小包围圆即其外接圆,半径
$40/\sqrt{3}\approx23.094011$ 米。这同时说明“直径不超过 $40$ 米”不足以保证一次
清除。
\subsection{最小包围圆与可保证清除}
定位的最终目的是清除:清除半径为 $20$ 米,故正确判据是最小包围圆
定位的最终目的是清除(附录~2 第(8)项的 $20$ 米距离判据),故正确工具是最小
包围圆
\begin{equation}
\rho(K)=\min_{z}\max_{g\in K}\|g-z\|\le 20 .
\rho(K)=\min_{z}\max_{g\in K}\|g-z\|.
\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$ 米阈值保留数值余量。
对有限顶点集 $V$,$f(z)=\max_{v\in V}\|v-z\|$ 连续且随 $\|z\|\to\infty$ 趋于无穷,
最小值存在;若两个不同中心 $c_1,c_2$ 都以半径 $r$ 覆盖 $V$,则中点 $c=(c_1+c_2)/2$
对每个顶点满足
$\|v-c\|^2=(\|v-c_1\|^2+\|v-c_2\|^2)/2-\|c_1-c_2\|^2/4<r^2$,
与最小性矛盾,故最小包围圆唯一。在最优中心处,圆周上的顶点集 $T$ 满足
$c\in\mathrm{conv}(T)$(否则沿严格分离方向小幅移动中心,可使所有圆周点的距离同时
减小,产生矛盾);二维凸组合经仿射相关权重消元至多保留 $3$ 个点,故最小包围圆由
至多 $3$ 个圆周顶点支撑。进而若 $c=\sum_j\lambda_jp_j$ 为支撑点凸组合,则对任意
$z$ 有 $\sum_j\lambda_j\|p_j-z\|^2=r^2+\|c-z\|^2\ge r^2$,给出任何覆盖圆半径不能
小于 $r$ 的直接证据。
\textbf{演练验证。}对官方演练的三点观测离线复算:$\delta=1^{\circ}$ 时
$D=23.996723$ 米、$\rho=12.068583$ 米;$\delta=1.005^{\circ}$ 时
$D=24.119088$ 米、$\rho=12.130377$ 米。两种口径下直径圆均不覆盖定位区域,
但最小包围圆半径均小于 $20$ 米,即一点可保证清除,与可视化结果一致
\todonote{此处可补充定位区域图(figures/)}。
求解采用带固定随机种子的 Welzl 随机增量算法\cite{welzl,mcgill}:打乱点序,若当前
圆不包含新点,则在该点成为边界点的约束下求解较小子问题,边界点至多 $3$ 个;实现
用显式栈避免递归深度限制,$3$ 个强制边界点必须用外接圆,不能替换成其无约束最小
圆。其期望线性复杂度依赖随机排列分析,不等于任意固定排列的最坏时间保证;另保留
支撑点枚举法(单点零半径圆、两点直径圆、三点外接圆,最坏 $O(m^4)$)作独立对照。
$\rho(K)\le20$ 时,最小包围圆圆心即可作为清除点;更一般地,所有可保证清除的位置
组成
\begin{equation}
C_{20}(K)=\bigcap_{g\in K}B(g,20)=\bigcap_{v\in V}B(v,20),
\label{eq:c20}
\end{equation}
第二个等号来自圆盘的凸性;该集合非空当且仅当 $\rho(K)\le20$,非空时可取其中距
机器狗最近者以节省移动。相比之下,$D\le40$ 只是必要条件(见上节反例)。
\subsection{算法流程与演练复算}
综合上述结果,问题~1 的完整算法如下。
\textbf{算法~1}(角域交、直径与覆盖证据)
\begin{enumerate}[label=\arabic*.,leftmargin=2.5em]
\item 校验观测并进行坐标平移、尺度归一化,保留原误差半角;
\item 按 \eqref{eq:cross} 生成每次观测的半平面约束(含前向约束);
\item 枚举非平行边界交点,保留满足全部约束的点;无观测与空集分别处理;
\item 检验非零衰退方向;存在时报告无界并停止有限圆计算;
\item 对可行点去重并求凸包,识别单点、线段或多边形;
\item 枚举顶点对求直径及任意一组最远顶点;
\item 检查其中点到全部顶点的距离,输出最大超出量 $E$ 与失败顶点;
\item 求最小包围圆,换回原坐标,重新检查顶点包含性,输出清除半径余量。
\end{enumerate}
设半平面数为 $k$(约为观测数的 $3$ 倍)、顶点数为 $m$:边界交点枚举及全约束检查
为 $O(k^3)$,衰退方向检查为 $O(k^2)$,交点排序上界为 $O(k^2\log k)$,直径计算为
$O(m^2)$,覆盖证据检查为 $O(m)$;随机增量最小圆在随机排列下期望为 $O(m)$。整体仍
由半平面交点枚举主导,不能称为总体线性算法。数值实现上,数学结论使用精确不等式,
浮点计算先平移、归一化,再以位置容差、平行判定阈值和衰退方向容差分别处理不同
问题;接近平行或退化的输入应作精度与容差敏感性检查,任意追加固定小数裕量不能
替代严格的误差传播分析。清除判断采用 $\rho+\varepsilon_m\le20$,其中
$\varepsilon_m$ 为工程数值裕量。
\textbf{演练复算。}对官方演练案例 \texttt{U5ZW-P9KN-TCAG-R7ST} 的三点观测离线复算,
结果如表~\ref{tab:q1practice}。两种口径下直径圆均不覆盖定位区域($E>0$),但最小
包围圆半径均小于 $20$ 米,即存在一点可保证清除,与可视化结果一致。该演练未公开
源坐标且未执行清除,故仅用于观测交会与计算一致性复核,不能据此声称实测定位误差
或清除成功率。\todonote{此处可补充定位区域图(figures/)}
\begin{table}[htbp]
\centering
\caption{官方演练三点观测的离线复算结果}
\label{tab:q1practice}
\begin{tabular}{cccc}
\toprule
误差半角 & 直径 $D$ / 米 & 最小包围半径 $\rho$ / 米 & 直径圆最大超出 $E$ / 米 \\
\midrule
$1^{\circ}$ & 23.996723 & 12.068583 & 0.604002 \\
$1.005^{\circ}$ & 24.119088 & 12.130377 & 0.608486 \\
\bottomrule
\end{tabular}
\end{table}
\section{问题~2:第二检测点的主动选点模型}
\subsection{首次测向后的候选集合}
\subsection{建模思路来源}
设在 $s_1$ 处首次测得 \texttt{direction},示向度 $\theta_1$。记
问题~2 给定“某全向干扰源在一个检测点处测得的示向度”,要求“给出第二个检测点的
选择策略,以获得关于该干扰源较好的定位效果,并给出第二个检测点的候选区域”。
注意源类型明确为全向,不能混入问题~4 的朝向可见性条件。本问方法的取舍同样由
题面描述逐项确定。
\textbf{先接收、后优化。}附录~2 第(2)项规定各源有效接收半径在 $1000$ 至 $1500$
米之间且具体值未知。真实源位置未知时,若第二检测点距真源超过其实际接收半径,
第二次检测将返回 \texttt{no\_signal},任何定位收益都无从谈起。因此把本问拆成
先后两个问题:先构造“无论真源在候选集合内何处都能收到信号”的安全候选区域,
再在其中优化定位效果。若只追求较大交会角而不控制到真实源的距离,预期几何收益
可能根本无法实现。
\textbf{由误差描述确定最坏情形指标。}题面只给出有界误差(附录~2 第(1)项),没有
给出源位置的概率分布,也不存在可独立重抽样的测向噪声模型(同一地点误差固定,
重复检测不产生新信息)。因此不能把卡尔曼滤波、协方差传播或费舍尔信息直接用作
严格保证,本文以最坏情形的后验包围半径作为选点主目标\cite{boyd};交会角仍有
明确的几何意义,但只作局部解释与候选筛选依据。
\textbf{由区域描述确定活动范围。}题面第~1 页的 $1800$ 米圆域限制的是干扰源位置;
附录~3 说明机器狗位置通常不构成约束(接口坐标分量绝对值上限仅为数值防护)。
故第二检测点允许位于 $\Omega$ 之外,安全候选区域不受源位置圆域限制。
\textbf{由 near 机制确定分支处理。}附录~2 第(9)项规定检测点距源不超过 $5$ 米时
“无法获得示向度信息,此时可直接进行光学精确定位并清除干扰源”。返回
\texttt{near} 不是策略失败,而是定位效果更好的分支(不确定半径不超过 $5$ 米),
应单独建模并就地清除。
\textbf{由动作耗时确定成本项。}附录~2 第(5)、(6)项规定检测耗时 $5$ 秒、移动
速度 $5$ 米/秒,故第二点的成本取移动与检测耗时之和,作为后验半径择优之后的次
目标,避免任意混合米与秒。
\subsection{首次观测后的候选集合}
设在 $s_1$ 处首次测得 \texttt{direction},示向度 $\theta_1$,记 $u=u(\theta_1)$。
由角域模型、题面第~1 页的源位置圆域与附录~2 第(2)项的接收半径上界,真实源
$g$ 满足
\begin{equation}
K_1=\Omega\cap W(s_1,\theta_1\pm\delta)\cap \overline{B}(s_1,1500),
g\in K_1=\Omega\cap W(s_1,\theta_1,\delta)\cap B(s_1,R_+),
\qquad R_+=1500,
\label{eq:k1}
\end{equation}
即目标区域、角域与最大可能接收圆盘的交。保留整个距离圆盘是保守处理:即使
\texttt{direction} 还隐含“距离超过 $5$ 米”的排除,忽略它也不会丢失真源。
即保守位置候选集合 $K_1$ 为闭凸紧集;观测一致时它必含真源,从而非空。首次返回
\texttt{direction} 还意味着 $\|g-s_1\|>5$(附录~2 第(9)项),但排除这个开圆盘
会破坏凸性,本文暂不使用该信息,保留包含真源的凸外包集合:由此得到的保证可能
更保守,但绝不误删真实位置。若计算得到 $K_1=\varnothing$,说明输入、频道、误差
界或数值处理与题设不一致,应返回不一致状态,不能继续给空集计算圆心。
\subsection{安全候选区域的解析非空证明}
\subsection{安全候选区域的定义与非空判据}
第二个检测点 $q$ 必须保证:无论真实源位于 $K_1$ 内何处,$q$ 都落在其有效接收半径
内(任何 $R_c\ge 1000$)。故安全候选区域定义为
第二个检测点 $q$ 必须保证:无论真源位于 $K_1$ 内何处,都有 $\|q-g\|\le R_-$
($R_-=1000$),从而对任何 $R_c\ge R_-$ 都能收到信号。定义
\begin{equation}
\mathcal{Q}=\Bigl\{q:\max_{g\in K_1}\|q-g\|\le 1000\Bigr\} .
F_K(q)=\max_{g\in K}\|q-g\|,\qquad
\mathcal{Q}(K)=\{q:F_K(q)\le R_-\}=\bigcap_{g\in K}B(g,R_-).
\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$ 外也合法,因为机器狗不受
源位置圆域限制。
保证接收不等于保证返回示向度:距离不超过 $5$ 米时可能返回 \texttt{near},该分支
定位效果更好(见 6.6 节),不能视为策略失败。
\subsection{选点目标与算法}
\textbf{命题~1}($F_K$ 的凸性与稳定性)\quad 对任意非空紧集 $K$,$F_K$ 为凸函数,
且 $|F_K(q_1)-F_K(q_2)|\le\|q_1-q_2\|$。
在安全圆盘内以“信息收益—成本”双指标选点:主目标为最坏情形后验包围圆半径
$\sup_{\theta'}\rho\bigl(K_1\cap W(q,\theta')\bigr)$,其中 $\theta'$ 取遍与 $K_1$
及误差界一致的读数;次目标为移动与检测成本。实现上对目标位置与误差区间端点采样
并加密检查,交会角只作同分筛选指标,不为改善交会角越出已证明安全的候选区域。
若返回 \texttt{near},则源位于当前点 $5$ 米以内,可直接在当前位置尝试清除。
\textbf{证明}\quad 对每个固定的 $g$,距离函数关于 $q$ 凸,逐点取最大值保持凸性;
由三角不等式 $\|q_1-g\|\le\|q_2-g\|+\|q_1-q_2\|$,对 $g$ 取最大得到一个方向的
不等式,再交换两点即得 Lipschitz 性。\hfill$\square$
故 $\mathcal{Q}(K)$ 为闭凸集;非空时它含于任一 $B(g_0,R_-)$ 内,因而有界。
\textbf{定理~1}(非空判据)\quad $\mathcal{Q}(K)\ne\varnothing$ 当且仅当
$\rho(K)\le R_-$。
\textbf{证明}\quad 由定义 $\rho(K)=\min_q F_K(q)$;$F_K$ 连续且随 $\|q\|\to\infty$
趋于无穷,最小值可达,故“存在 $q$ 使 $F_K(q)\le R_-$”与“该最小值不超过 $R_-$”
完全等价。\hfill$\square$
当 $\rho(K)=R_-$ 时,安全区域仅含最小包围圆中心这个单点(唯一性见 5.6 节),因此
判据必须使用不严格不等式,不能把等号情形误判为空。
\textbf{外包圆给出的充分区域。}若已知 $K\subseteq B(c,r)$ 且 $r\le R_-$,则对任意
$\|q-c\|\le R_--r$ 的点都有 $\|q-g\|\le\|q-c\|+\|c-g\|\le R_-$,故
\begin{equation}
B(c,R_--r)\subseteq\mathcal{Q}(K).
\label{eq:sufficient}
\end{equation}
这给出容易计算的充分候选区域;但一个满足 $r>R_-$ 的宽松外包圆只能说明该外包圆
不能提供证书,不能据此判定真实的 $\mathcal{Q}(K)$ 为空。
\subsection{截断角域的解析最小包围圆}
首次角域狭窄($\delta=1^{\circ}$)这一题设特征,使 \eqref{eq:sufficient} 所需的
外包圆可以解析地算到最小。暂时去掉只会缩小集合的 $\Omega$ 约束,考虑完整截断
角域 $S=W(s_1,\theta_1,\delta)\cap B(s_1,R_+)$,其点可写成
$g=s_1+t\,u(\theta_1+\varphi)$($0\le t\le R_+$,$|\varphi|\le\delta$)。令
\begin{equation}
a=\frac{R_+}{2\cos\delta},\qquad c=s_1+a\,u.
\label{eq:ac}
\end{equation}
\textbf{定理~2}(截断角域的最小包围圆)\quad 对 $0\le\delta\le45^{\circ}$,$S$ 的
最小包围圆恰为 $B(c,a)$。
\textbf{证明}\quad 先证包含。对 $g=s_1+t\,u(\theta_1+\varphi)\in S$,
\begin{equation}
\|g-c\|^2=t^2+a^2-2at\cos\varphi.
\label{eq:dist}
\end{equation}
固定 $\varphi$ 时右端关于 $t$ 为凸二次函数,区间最大值在端点取得:$t=0$ 时等于
$a^2$;$t=R_+$ 时由 $\cos\varphi\ge\cos\delta$ 得
$\|g-c\|^2\le R_+^2+a^2-2aR_+\cos\delta=a^2$,最后一步代入了
$a=R_+/(2\cos\delta)$。故 $S\subseteq B(c,a)$。
再证最小。取 $p_0=s_1$、$p_{\pm}=s_1+R_+u(\theta_1\pm\delta)$,三点都在 $B(c,a)$
的圆周上。令 $\lambda_+=\lambda_-=1/(4\cos^2\delta)$、
$\lambda_0=1-1/(2\cos^2\delta)$;$\delta\le45^{\circ}$ 时三权重非负且和为 $1$,
直接代入得 $c=\lambda_0p_0+\lambda_+p_++\lambda_-p_-$。于是对任意中心 $z$,由加权
距离恒等式
\begin{equation}
\sum_j\lambda_j\|p_j-z\|^2=a^2+\|c-z\|^2\ge a^2,
\end{equation}
故任何覆盖这三点的圆半径不小于 $a$;而覆盖 $S$ 的圆必须覆盖这三点,结合包含性
知最小半径恰为 $a$。$\delta=0$ 时两个远端点重合,结论退化为长度 $R_+$ 的线段
直径圆,仍成立。\hfill$\square$
该推导不依赖源位置先验与任何概率分布;它给出完整截断角域的精确最小圆,与
$\Omega$ 相交后,真实 $K_1$ 的最小圆可能更小。
\subsection{本题可直接采用的安全候选圆盘}
由 $K_1\subseteq S\subseteq B(c,a)$ 与 \eqref{eq:sufficient},取
\begin{equation}
\mathcal{Q}_0=B(c,b),\qquad b=R_--a=1000-\frac{1500}{2\cos\delta},
\label{eq:Q0}
\end{equation}
数值见表~\ref{tab:q2disk}。
\begin{table}[htbp]
\centering
\caption{安全候选圆盘的解析参数}
\label{tab:q2disk}
\begin{tabular}{ccc}
\toprule
误差半角 $\delta$ & 轴向中心距离 $a$ / 米 & 安全候选半径 $b$ / 米 \\
\midrule
$1^{\circ}$ & 750.114246 & 249.885754 \\
$1.005^{\circ}$ & 750.115391 & 249.884609 \\
\bottomrule
\end{tabular}
\end{table}
两种口径下 $b>0$,故本题首次有效测向后的安全候选区域由解析证明严格非空,无需把
“若安全区域为空就去最小包围圆圆心”作为保底步骤(对一般候选集合,$\rho(K)>R_-$
时根本不存在保证接收的点)。几何上 $\mathcal{Q}_0$ 位于首测示向方向前方约 $750$
米处、半径约 $250$ 米,与首测点相距至少约 $500$ 米,还天然避免了同点重复测量不
产生新信息的问题(附录~2 第(1)项)。机器狗不受源位置圆域限制,即使 $c$ 位于
$\Omega$ 外,选点也合法。为抵消坐标计算与动作提交中的工程舍入,可取缩小区域
$\mathcal{Q}_\eta=B(c,b-\eta)$($0<\eta<b$,如 $\eta=0.01$ 米):若圆心与提交位置
的合计偏差不超过 $\eta$,三角不等式保证仍有 $\|q-g\|\le1000$;这是可调工程选择,
不是题面要求。若有更精细的 $K_1$ 外包圆,可得更大的充分区域;这些扩展均属性能
优化,不影响 $\mathcal{Q}_0$ 的正确性。
\subsection{“较好的定位效果”的数学定义}
\textbf{保守后验集合。}对 $q\in\mathcal{Q}_0$,若返回 \texttt{direction} 及读数
$\beta$,定义 $K_d(q,\beta)=K_1\cap W(q,\beta,\delta)$(继续忽略距离超过 $5$ 米的
非凸排除信息),真源必在其中;若返回 \texttt{near},定义
$K_n(q)=K_1\cap B(q,5)$,故 $\rho(K_n)\le5$,可直接在当前位置光学定位并清除,满足
$20$ 米清除条件,不必强行再取一个角度。以 $d_{\mathbb{S}^1}$ 记圆周角距离,对
$\|g-q\|>5$ 的候选位置记真实方位 $h_q(g)=\operatorname{atan2}(g_y-q_y,g_x-q_x)$,
则可能读数集合为
$\mathcal{B}(q)=\{\beta:\exists\, g\in K_1,\ \|g-q\|>5,\ d_{\mathbb{S}^1}(\beta,h_q(g))
\le\delta\}$。这里用所有允许误差描述可能读数,而不是假设误差可以随机独立重抽样。
\textbf{最坏后验半径指标。}定义 $J(q)$ 为所有可能 \texttt{direction} 分支
$\rho(K_d(q,\beta))$ 与非空 \texttt{near} 分支 $\rho(K_n(q))$ 的上确界,即未来所有
允许观测下最坏的保守包围半径;不存在的观测分支不参与取最大。选点主目标即在安全
候选区域内降低 $J(q)$。该指标直接服务一次清除要求:$J(q)\le20$ 时每个可能分支都
有半径不超过 $20$ 米的保守定位圆;它比面积更贴合任务——面积较小的集合仍可能
十分狭长。注意后验总是 $K_1$ 的子集,故 $J(q)\le\rho(K_1)$,但不一定严格小于:
不能仅由“增加一次观测”推断精度必然严格改善,更不能保证两次测向即达 $20$ 米
阈值。
\textbf{移动成本与字典序。}连续测量同一频道时,本次动作的虚拟时间增量为
\begin{equation}
C(q)=\|q-s_1\|/5+5\ \text{秒}.
\label{eq:cost}
\end{equation}
以 $\widehat{J}(q)$ 表示实际计算的评估量(6.8 节取保守上界 $\overline{J}(q)$),
推荐先按后验半径择优,再保留满足 $\widehat{J}(q)\le J_{\min}+\tau$ 的近优点并取
其中 $C(q)$ 最小者,其中 $\tau\ge0$ 是显式声明的定位容忍量(米),$\tau=0$ 对应
严格字典序;本文不预设未经实验支持的最优 $\tau$。
\subsection{交会角的局部几何解释}
在假定真实位置 $g$ 附近,记两站距离为 $r_1,r_2$,真实视线单位向量为 $u_1,u_2$,
对应法向量为 $n_1,n_2$。角误差很小且位置扰动相对站距很小时,方位函数的一阶展开
给出 $n_i\cdot\Delta g\approx r_ie_i$($|e_i|\le\delta_{\mathrm{rad}}$,弧度),即
局部不确定区域近似由两条带状约束 $|n_i\cdot\Delta g|\le r_i\delta_{\mathrm{rad}}$
限定。若视线交会角为 $\phi$,法向量矩阵的行列式绝对值为 $|\sin\phi|$,对法向坐标
中的矩形作线性逆变换,得近似面积
\begin{equation}
A_{\mathrm{loc}}\approx\frac{4\,r_1r_2\,\delta_{\mathrm{rad}}^{2}}{|\sin\phi|}.
\label{eq:anglearea}
\end{equation}
这解释了两点:视线近于平行或反向时误差被显著放大;在距离不变的局部比较下,接近
直角的交会较有利。但真实源位置未知,$r_2$ 与 $\phi$ 随 $g$ 改变,且有限角域并非
无限带状区域,故不能由此推出“总应横移固定距离”或“对某个假定源位置成
$90^{\circ}$ 即全局最优”。本文仅用它优先考虑轴线两侧的候选点,最终仍以后验集合
指标评价,交会角只作同分筛选指标。
\subsection{圆弧先验的保守离散与读数区间评估}
\textbf{外包切线多边形。}直接连接圆周采样点得到的是内接多边形,会错误排除圆盘
边缘的真实位置。为复用问题~1 的半平面工具,取 $M\ge3$ 个均匀法向量
$v_j=u(2\pi j/M)$,定义
\begin{equation}
P_M(o,R)=\{x:v_j\cdot(x-o)\le R,\ j=0,\dots,M-1\}.
\end{equation}
由柯西不等式,$B(o,R)\subseteq P_M(o,R)$;相邻切线交点到圆心的距离为
$R\sec(\pi/M)$,故单个圆盘外包的最大径向超出不超过 $R[\sec(\pi/M)-1]$。令
$\widetilde{K}_1=P_M(0,1800)\cap W(s_1,\theta_1,\delta)\cap P_M(s_1,1500)$,则
$K_1\subseteq\widetilde{K}_1$,对任何第二读数再求半平面交仍保留真源。靠近切触或
退化情形须加密检查,不能把单圆径向误差未经论证直接当成最终定位半径的误差界。
安全选点仍使用解析的 $\mathcal{Q}_\eta$:即使粗糙外包多边形的最小圆偏大,也不能
据此推翻解析安全区域的非空结论。若改用任意有界凸外包多边形
$\widetilde{K}=\mathrm{conv}\{v_j\}$,则
$\max_{g\in\widetilde{K}}\|q-g\|=\max_j\|q-v_j\|$(与 5.4 节相同的凸组合论证),
其保证接收区域由有限个圆盘约束 $\|q-v_j\|\le1000$ 给出;离散区域为空时优先加密
或回到解析候选盘,不把离散失败误报为问题无解。
\textbf{读数区间的保守评估。}仅枚举少量假定源位置与误差端点,只得到被枚举情形的
最大值,可能漏掉真正最坏的读数。将整周按圆周意义划分为若干区间 $I_j$(中心
$\beta_j$、宽度 $h_j$,要求 $\delta+h_j/2<90^{\circ}$,跨 $0^{\circ}$ 的区间按
圆周距离处理)。
\textbf{命题~2}\quad 对任意 $\beta\in I_j$,有
$W(q,\beta,\delta)\subseteq W(q,\beta_j,\delta+h_j/2)$。
\textbf{证明}\quad 左侧角域内任意非顶点位置,其方向到 $\beta$ 的圆周距离不超过
$\delta$,而 $\beta$ 到区间中心的距离不超过 $h_j/2$,由圆周距离的三角不等式,其
方向到中心的距离不超过两者之和;顶点在两个闭角域中均被保留。\hfill$\square$
定义 $U_j(q)=\widetilde{K}_1\cap W(q,\beta_j,\delta+h_j/2)$,则落在该区间的任何
真实读数对应的保守后验都含于 $U_j(q)$,从而
$\rho(K_d(q,\beta))\le\rho(U_j(q))$;\texttt{near} 分支取统一上界
$\min\{5,\rho(\widetilde{K}_1)\}$。令 $\overline{J}(q)$ 为所有非空 $U_j(q)$ 的最小
包围半径与该上界的最大值,则 $J(q)\le\overline{J}(q)$(精确几何计算下成立;浮点
实现还须另行给出包含性与数值误差处理)。二分角区间或增加外包切线都使相应上界
单调不增,给出稳定的自适应加密方向。实际可先以少量读数采样粗筛,再对入围点使用
完整区间上界:粗筛只决定计算资源分配,最终报告的保守上界必须来自完整覆盖的
区间,不能来自粗筛样本最大值。
\subsection{选点算法与边界情形}
\textbf{算法~2}(安全区域内的有限候选主动测向)
\begin{enumerate}[label=\arabic*.,leftmargin=2.5em]
\item 核验首次观测为同一全向源的有效示向度,构造 $K_1$ 或其保守表示;
\item 按 \eqref{eq:ac} 计算 $a$、$c$ 与 $b=1000-a$,选取满足误差预算的缩小半径
$b-\eta$;
\item 构造有限候选集:圆心 $c$ 及
$q=c+r_\ell(\cos\psi_j\,u+\sin\psi_j\,u_\perp)$($0<r_\ell\le b-\eta$、
$\psi_j=2\pi j/N_\psi$、$u_\perp=(-\sin\theta_1,\cos\theta_1)$),全部候选
自动满足接收距离保证;
\item 对每个候选点构造外包后验并评估 $\overline{J}(q)$,保存最坏角区间及对应
包围圆作为评估依据;
\item 优先取 $\overline{J}$ 较小者,按预先声明的 $\tau$ 筛出近优点后比较移动
检测成本,必要时以固定顺序消除完全同分;
\item 在计算预算内对入围候选附近加密位置、细分最坏角区间并增加外包切线;预算
耗尽时返回当前已验证安全的最好点;
\item 在所选位置测量同一频道:若 \texttt{near} 则就地清除;若 \texttt{direction}
则用实际读数更新候选集合并复算最小包围圆,半径仍大于 $20$ 米时继续测向,
不宣称两次定位已经完成;
\item 若在距离保证条件下意外返回 \texttt{no\_signal},核查动作是否被接受、频道
是否正确、源是否仍存在及坐标模型是否一致;原因查明前不按正常
\texttt{direction} 分支更新候选。
\end{enumerate}
例如可取 $3$ 层半径、每层 $16$ 个方向加圆心共 $49$ 个候选点起步;这只是位置搜索
的数值分辨率示例,与问题~3 的 $49$ 点覆盖网格无关,也不是已优化参数。设候选数为
$N_q$、角区间数为 $N_\beta$、每个后验的半平面数为 $k$,复用问题~1 的边界枚举时
主计算量约为 $O(N_qN_\beta k^3)$,另加直径或最小圆计算;选点器自身的运行时间不能
忽略。算法输出保证的是:所选点位于已证明安全的区域内,并在给定有限候选与评估
精度下按既定规则择优;本文未证明 $q\mapsto J(q)$ 为凸函数,也未证明有限候选的
最优点就是整个 $\mathcal{Q}(K_1)$ 中的全局最优点。
\textbf{边界情形。}(i)$K_1$ 为空:报告模型或数据不一致,不构造虚假圆心;
(ii)首次结果已是 \texttt{near}:直接清除,不再套用本问流程;
(iii)一般集合满足 $\rho(K)=1000$:安全区域退化为最小包围圆中心这个单点;
(iv)$\rho(K)>1000$:不存在对该集合全部位置保证接收的点,圆心仅是最小化最坏
距离的探索选择,改善交会角若要求偏离该中心还会牺牲最坏距离最优性,两项冲突的
要求不能同时称为已保证;(v)外包圆半径大于 $1000$:只能说明该证书不足,不能
判真实安全区域为空;(vi)测量轴接近 $0^{\circ}/360^{\circ}$:使用向量约束与
圆周区间,避免角度断点错误;(vii)两次测向交会较差:保留完整后验并继续测量,
不把小面积当成小直径;(viii)源类型为定向:距离证书仍成立,但接收还受朝向
限制,不能直接沿用本问的接收保证(见问题~4)。
\todonote{候选区域示意图与选点对比实验待补}
\section{问题~3:全向干扰源的搜索定位与清除调度}
@@ -555,6 +1010,8 @@ $1000$ 米、\texttt{no\_signal} 对定向源不删位置、停止条件需覆
\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.
\bibitem{boyd} Boyd S, Vandenberghe L. Convex Optimization[M]. Cambridge:
Cambridge University Press, 2004.
\end{thebibliography}
\clearpage
@@ -585,12 +1042,12 @@ $1000$ 米、\texttt{no\_signal} 对定向源不删位置、停止条件需覆
以下为支撑模型计算的核心源代码,完整可运行代码以支撑材料压缩包为准。
\subsection{\texttt{geometry/localization.py}:交会定位几何内核}
\subsection{\texttt{src/mcm26b/geometry/localization.py}:交会定位几何内核}
\lstinputlisting[language=Python]{../../../geometry/localization.py}
\lstinputlisting[language=Python]{../../src/mcm26b/geometry/localization.py}
\subsection{\texttt{geometry/planning.py}:问题~2 安全候选区域}
\subsection{\texttt{src/mcm26b/geometry/planning.py}:问题~2 安全候选区域}
\lstinputlisting[language=Python]{../../../geometry/planning.py}
\lstinputlisting[language=Python]{../../src/mcm26b/geometry/planning.py}
\end{document}