从纯方位无源定位到协同控制:无人机编队数学建模核心解析
1. 赛题回顾与核心难点定位
2022年的全国大学生数学建模竞赛B题,题目是“无人机遂行编队飞行中的纯方位无源定位”。这个题目一出来,当时就在参赛圈里引起了不小的讨论。它不像一些纯优化或者数据分析题那样有明确的套路可循,而是把一个非常前沿且硬核的工程问题——多无人机协同定位——抽象成了一个数学建模问题。很多同学第一眼看到“纯方位无源定位”这几个字可能就有点发怵,感觉涉及通信、信号处理、几何等多个领域,不知从何下手。
简单来说,这道题描述的场景是这样的:一组无人机(编号FY00-FY09,共10架)要保持一个特定的编队队形(一个圆心在FY00、半径为100米的圆形)飞行。其中,FY00作为“主机”,它装备了能够向其他无人机发射信号的装置;而其他9架无人机(FY01-FY09)作为“从机”,只装备了信号接收装置,它们只能测量接收到的信号方向(即方位角),而不知道信号源(即FY00或其他无人机)离自己有多远。更关键的是,题目假设这些方位角测量存在一定的误差。我们的核心任务就是:仅利用这些带有噪声的方位角测量信息,来估计出所有9架从机无人机相对于主机FY00的位置。
这里的“纯方位”和“无源”是两大核心约束。“纯方位”意味着只有角度信息,没有距离信息,这直接导致了问题的非线性特性非常强。“无源”意味着接收机本身不发射信号,只被动接收,这在实际中有利于隐蔽,但也增加了定位的难度。这两个词合在一起,就构成了本题最大的挑战:如何在信息严重不足(缺距离)且存在噪声的情况下,实现稳定、精确的相对定位?
这道题的价值在于,它完美地连接了理论数学(如几何、优化、估计理论)和实际工程应用(无人机集群、协同导航)。它考察的不仅仅是套用模型的能力,更是对问题本质的理解、将实际问题转化为数学语言的能力,以及针对特定约束设计求解策略的创新思维。接下来,我将抛开那些泛泛而谈的“思路”,深入到具体的建模策略、算法选择、求解细节以及那些容易踩坑的地方,为你还原一条清晰、可操作的解题路径。
2. 问题一:仅依赖FY00信号的静态定位模型构建
问题一是整个赛题的基础,它设定了一个相对简单的场景:所有从机无人机(FY01-FY09)的位置是固定但未知的,它们只接收来自主机FY00的信号,并测量方位角。我们需要根据这些方位角测量值来估计所有从机的位置。这是典型的“单站纯方位定位”问题,只不过有多个需要同时定位的目标。
2.1 坐标系建立与观测模型数学化
第一步永远是建立清晰的数学模型。我们以主机FY00为坐标原点建立平面直角坐标系。设第i架从机无人机(i=1,2,...,9)的真实位置为(x_i, y_i),这是一个我们要求解的二维未知向量。FY00位于原点(0,0)。
当FY00发射信号,被第i架无人机接收时,从FY00指向第i架无人机的真实方位角(与x轴正方向的夹角)θ_i_true可以通过几何关系直接给出:θ_i_true = arctan2(y_i, x_i)这里使用arctan2函数是为了得到(-π, π]范围内的完整角度,避免象限错误。
然而,我们得到的测量值θ_i_meas是带有噪声的。题目指出,方位角测量误差服从均值为0、标准差为2°的正态分布。因此,观测模型可以写为:θ_i_meas = arctan2(y_i, x_i) + ε_i, 其中ε_i ~ N(0, σ^2), σ = 2° (需要转化为弧度制进行计算,σ_rad = 2 * π / 180)。
至此,我们有了9个非线性观测方程,未知数是18个(9架无人机各自的x和y坐标)。显然,方程数量少于未知数数量,这是一个欠定问题,无法直接求解。我们必须引入额外的约束或信息。
2.2 核心约束:编队队形的巧妙利用
题目给出的关键额外信息是编队队形:所有无人机(包括FY00)应保持一个半径为100米的圆形编队。注意,这里说的是“应保持”,在问题一中,我们假设它们已经处在这个理想队形上,只是我们不知道具体哪个位置对应哪架无人机。
这个队形约束为我们提供了强有力的先验信息。它意味着所有无人机的真实位置都位于一个以FY00为圆心、半径为100米的圆上。对于从机FY01-FY09,我们有:x_i^2 + y_i^2 = 100^2, for i=1,2,...,9.
这个距离约束一下子将每个无人机的未知数从2个(x,y)降为1个(例如,角度)。我们可以用极坐标来重新参数化问题,令:x_i = 100 * cos(φ_i)y_i = 100 * sin(φ_i)其中,φ_i是第i架从机相对于坐标系的极角,现在它成为了我们的待求未知数(共9个)。
将极坐标表示代入观测方程:θ_i_meas = arctan2(100*sin(φ_i), 100*cos(φ_i)) + ε_i = arctan2(sin(φ_i), cos(φ_i)) + ε_i = φ_i + ε_i(在(-π, π]范围内,arctan2(sinφ, cosφ) = φ)。
我们得到了一个极其简洁的线性关系模型:θ_i_meas = φ_i + ε_i
这个简化是问题一建模的精髓。它意味着,在理想圆形编队的约束下,测量到的方位角直接就是该无人机极角的一个带噪声观测值。于是,问题从复杂的非线性定位,转化为了一个简单的参数估计问题:我们有一组对真实极角φ_i的带噪声观测值θ_i_meas,需要估计出φ_i。
2.3 估计模型构建与最大似然估计
由于噪声ε_i是独立同分布的高斯噪声,那么给定真实极角φ_i,观测到θ_i_meas的条件概率(似然函数)为:L(φ_i | θ_i_meas) ∝ exp(- (θ_i_meas - φ_i)^2 / (2σ^2))
对于所有9个独立观测,联合似然函数就是每个似然的乘积。最大化这个联合似然函数,就得到了最大似然估计(MLE)。对于高斯噪声下的线性模型,最大似然估计等价于最小二乘估计。
因此,我们的估计问题转化为最小化以下目标函数:J(φ_1, ..., φ_9) = Σ_{i=1}^{9} (θ_i_meas - φ_i)^2
这个目标函数对于每个φ_i是独立的,因此可以分解为9个独立的最小化问题:min_φ_i (θ_i_meas - φ_i)^2, for each i.
其解显而易见:φ_i_est = θ_i_meas。
也就是说,在圆形编队约束下,对于仅接收FY00信号的情况,每架从机无人机方位角测量值本身就是其极角的最大似然估计。有了极角估计值φ_i_est,利用极坐标公式(x_i, y_i) = (100*cos(φ_i_est), 100*sin(φ_i_est))即可得到位置估计。
注意:角度周期性与归一化处理这里有一个至关重要的细节:角度运算必须在统一的周期内进行,通常归一化到
(-π, π]或[0, 2π)。arctan2函数的结果在(-π, π],而我们的极角φ_i理论上可以在任意区间。但在最小二乘意义下,我们需要确保θ_i_meas和φ_i在数值上可比。例如,如果某个φ_i真实值是355°(-5°),而测量值是5°,直接相减会得到350°的差,这显然是错误的。正确的做法是计算角度差时,使用min(|a-b|, 2π-|a-b|)。在实际编程求解时,更稳妥的方法是始终将所有角度表示在(-π, π]区间,并在计算残差时进行周期调整。这是一个非常容易忽略但会导致结果严重偏差的坑。
2.4 结果分析与误差评估
得到位置估计后,我们需要计算估计误差。题目要求计算位置估计的均方根误差(RMSE)。对于第i架无人机,其位置估计误差为:error_i = sqrt( (x_i_est - x_i_true)^2 + (y_i_est - y_i_true)^2 )
然后对所有9架无人机求RMSE:RMSE = sqrt( (1/9) * Σ error_i^2 )
这里(x_i_true, y_i_true)是已知的(题目附件中给出),用于验证我们的模型和算法。在问题一中,由于模型被极大简化,理论上RMSE应该主要来源于方位角测量噪声的传播。根据误差传播定律,极角估计误差的标准差就是σ=2°,那么由此导致的位置误差(在半径为100米的圆上)约为:100 * σ_rad ≈ 100 * (2*π/180) ≈ 3.49米。这是理论上的下限。我们的计算结果应该接近这个值。
实操心得:在编程实现时,务必先进行角度单位转换(度转弧度),所有内部计算都在弧度制下进行,最后输出时再根据需要转换。使用numpy或math库的arctan2函数处理坐标到角度的转换。计算RMSE前,确保比较的是估计位置和真实位置,而不是极角。对于这种简单问题,可以手算几组数据验证程序逻辑是否正确。
3. 问题二:引入从机间观测的动态协同定位
问题二将场景复杂化,也更贴近实际:从机无人机(FY01-FY09)在初始时刻位置已知(即问题一估计出的位置,或附件给出的真实位置),但它们并非静止,而是以某个速度飞行。更重要的是,除了接收FY00的信号,它们还能接收来自其他部分从机的信号(观测方向)。我们需要建立模型,利用这些更丰富的观测信息,来“追踪”或“估计”这些动态无人机的位置。
3.1 状态空间模型与观测方程
这是一个典型的动态系统状态估计问题。我们需要为每架从机无人机定义其状态。在最简单的模型中,我们可以假设无人机在短时间内做匀速直线运动(CV模型)。那么,第i架无人机在时刻k的状态向量可以定义为:X_i(k) = [x_i(k), y_i(k), vx_i(k), vy_i(k)]^T即包含位置(x,y)和速度(vx, vy)。
系统的状态演化(运动模型)可以描述为:X_i(k+1) = F * X_i(k) + w_i(k)其中,F是状态转移矩阵。对于匀速模型:
F = [[1, 0, Δt, 0], [0, 1, 0, Δt], [0, 0, 1, 0], [0, 0, 0, 1]]Δt是离散时间步长(需要根据题目上下文设定,例如假设每秒一次观测)。w_i(k)是过程噪声,代表了模型的不精确性(如加速度扰动),通常假设为零均值高斯白噪声。
观测模型变得复杂。现在我们有两种观测:
- 对FY00的观测:与问题一类似,
z_i0(k) = arctan2(y_i(k), x_i(k)) + v_i0(k)。 - 对其他从机j的观测:如果无人机i能观测到无人机j,则观测值为从i指向j的方位角。
z_ij(k) = arctan2(y_j(k)-y_i(k), x_j(k)-x_i(k)) + v_ij(k)。
这里所有的v(k)都是观测噪声,假设服从均值为0、标准差为2°的高斯分布。
3.2 集中式与分布式滤波架构选择
面对这样一个多智能体、存在互观测的动态系统,我们有两种主流的滤波架构选择:
1. 集中式卡尔曼滤波(CKF):将所有9架无人机的状态向量拼接成一个全局状态向量X(k) = [X_1(k)^T, ..., X_9(k)^T]^T(维度为36)。同时,将所有观测(FY00对各自的观测,以及从机之间的互观测)拼接成一个全局观测向量Z(k)。然后设计一个巨大的全局状态转移矩阵F_global(块对角矩阵,每个块是单个无人机的F矩阵)和全局观测矩阵H_global(非线性,需要线性化)。
- 优点:理论上是最优的,因为它利用了所有观测信息进行联合估计。
- 缺点:计算复杂度极高(矩阵维度达36x36,且观测方程线性化复杂),不适合实时性要求高的场景;并且需要有一个中央处理器收集所有数据,不符合分布式系统的特点。
2. 分布式卡尔曼滤波/信息滤波:每架无人机只维护自身的状态估计,并通过通信与邻居无人机交换信息(如自身状态估计的均值和协方差)。常用算法有分布式信息滤波(DIF)或一致性卡尔曼滤波(CKF)。
- 优点:计算负载分散,通信量相对可控,具有更好的可扩展性和鲁棒性,更贴近实际无人机编队中每个个体自主运算的场景。
- 缺点:理论分析和实现比集中式复杂,性能通常略低于集中式最优估计。
对于数模竞赛的取舍:在72小时的比赛时间内,实现一个完整、稳定的分布式滤波算法挑战极大。一个更务实、也更能体现问题核心的思路是采用集中式扩展卡尔曼滤波(EKF)的框架,但进行合理的简化。我们可以强调采用了EKF的思想,但在具体求解时,由于观测方程非线性较强且耦合度高,直接求解EKF的更新方程可能困难。因此,可以退一步,在每个时刻k,将问题视为一个静态优化问题。
3.3 基于滑动窗口的批处理优化模型
这是一个非常有效且易于实现的策略。我们不再显式地估计速度状态,而是直接估计每个时刻的位置。
假设我们拥有从时刻k-T+1到当前时刻k的一个时间窗口内的所有观测数据(T是窗口长度)。我们的目标是找到这个窗口内所有无人机的位置序列,使得它们既符合一定的运动平滑性约束(代替动态模型),又使得所有观测的似然概率最大。
构建一个非线性最小二乘问题:
Minimize J = Σ_{t=k-T+1}^{k} Σ_{i=1}^{9} (观测残差)^2 + λ * Σ_{t=k-T+1}^{k-1} Σ_{i=1}^{9} (运动平滑项)^2其中:
- 观测残差:对于每一个方位角观测
z,计算其与根据估计位置计算出的理论方位角之差,并进行角度周期处理。例如,对于从机i观测FY00:residual = z_i0(t) - arctan2(y_i_est(t), x_i_est(t))。 - 运动平滑项:例如,可以用相邻时刻位置差的变化率(近似加速度)来惩罚不平滑的运动:
[ (x_i(t+1)-x_i(t)) - (x_i(t)-x_i(t-1)) ]^2,对x和y方向分别计算。参数λ是平滑项权重,用于平衡拟合观测数据和平滑轨迹。
这个优化问题的变量是所有无人机在T个时刻的位置,总变量数为9*2*T。我们可以使用非线性优化工具箱(如scipy.optimize.minimize, 选用L-BFGS-B或trust-constr算法)来求解。
这个方法的优势:
- 直观易懂:将动态估计问题转化为静态优化问题,避开了复杂的滤波递推公式。
- 易于实现:利用现成的优化库即可。
- 天然处理非线性:直接处理
arctan2非线性,无需线性化。 - 引入时间关联:通过平滑项,利用了历史信息,比单时刻独立定位更稳健。
3.4 观测链路缺失与定位图可观测性分析
题目中提到“无人机间相对方位角测量值缺失时(即观测链路不稳定)”,这引出了一个更深层的问题:在给定的观测拓扑下,系统是否可观测?也就是说,仅凭这些方位角测量,能否唯一确定所有无人机的位置?
这是一个关于“定位图”的可观测性问题。我们可以将无人机视为图的节点,将一次方位角测量(无论是来自FY00还是其他无人机)视为一条有向边。那么,整个观测系统构成一个图。
- 绝对定位的必要条件:要确定所有节点在全局坐标系中的绝对位置,至少需要一些“锚点”信息。在这个问题中,FY00(位置已知)和圆形编队约束(距离已知)共同提供了锚点信息。
- 相对定位的可观测性:即使有锚点,如果观测图不是“刚性”的,也可能无法唯一确定所有节点的位置。例如,如果所有无人机只观测FY00,而不观测彼此,那么每架无人机只能确定自己在以FY00为圆心的哪个角度上,但整个编队可以绕着FY00整体旋转而观测值不变。这就是问题一中我们实际上无法确定编队整体朝向的原因(但题目通过假设编队形状固定规避了这一点)。当引入部分无人机间的互观测时,这些“边”会约束编队内部的几何形状,从而可能实现唯一定位。
在建模时,如果考虑观测链路随机缺失,我们需要在优化模型中处理缺失数据。对应缺失的观测,在目标函数中直接忽略该项即可。同时,我们需要分析,在某种缺失模式下,优化问题是否可能陷入局部最优或出现解不唯一的情况。这可以通过在优化时使用多个不同的初始值进行尝试,或者分析优化结果协方差矩阵(近似Hessian矩阵的逆)的特征值来判断不确定性的大小。
实操心得与避坑指南:
- 初始值至关重要:非线性优化严重依赖初始值。对于时刻k的优化,可以使用时刻k-1的估计结果作为初始值,或者用简单的几何方法(如仅用FY00观测进行三角定位的粗略解)初始化。
- 角度差计算:这是最大的编程陷阱。必须编写一个专门的函数来计算两个角度之差(考虑2π周期),例如:
def angle_diff(a, b): return np.arctan2(np.sin(a-b), np.cos(a-b))。 - 平滑权重λ的选择:λ太大,轨迹会过于平滑,可能无法跟上真实的机动;λ太小,轨迹会噪声过大,甚至不稳定。需要通过实验(例如在部分有真值的数据上)来调整。
- 窗口长度T的选择:T越长,可利用信息越多,抗噪能力越强,但计算量越大,且对机动的适应性变差。T=3或5是一个不错的起点。
- 处理不可观测情况:如果优化结果对初始值极其敏感,或者不同初始值收敛到差异很大的解,很可能当前观测图下系统不可观测或弱可观测。这时需要在论文中明确指出这一现象,并讨论可能需要增加哪些观测链路来改善。
4. 问题三:编队队形动态调整的协同控制建模
问题三在问题二的基础上,增加了控制目标:在飞行过程中,需要将圆形编队变为椭圆形编队,并保持一段时间后再恢复。这要求我们的模型不仅要能估计状态,还要能生成控制指令(速度或加速度),驱使无人机到达期望的位置。问题从“状态估计”延伸到了“协同控制”。
4.1 基于虚拟结构法与一致性协议的控制框架
一种主流且适合建模的方法是虚拟结构法与一致性协议的结合。
1. 定义期望队形(虚拟结构):首先,数学化描述期望的队形。对于圆形编队,期望位置p_i_des_circle就是半径为100米圆上的等分点。 对于椭圆形编队,假设其中心在FY00,长轴a=200米,短轴b=100米(具体参数需根据题目)。那么FY01-FY09的期望位置p_i_des_ellipse可以定义为椭圆上的等分点,或者根据某种映射关系从圆形队形变换而来。
关键是要定义一个随时间平滑变化的期望位置轨迹p_i_des(t)。例如,在过渡阶段(从圆到椭圆),可以让期望位置在p_i_des_circle和p_i_des_ellipse之间进行线性或平滑插值(如使用五次多项式插值以保证速度和加速度连续)。
2. 设计分布式控制律:每架无人机根据自身当前位置的估计值p_i_est(t)和期望位置p_i_des(t),计算控制指令。最常用的是比例-微分(PD)控制律:u_i(t) = k_p * (p_i_des(t) - p_i_est(t)) + k_d * (v_i_des(t) - v_i_est(t))其中,u_i(t)是控制加速度(假设我们控制的是加速度)。v_i_des(t)是期望速度,可以通过对p_i_des(t)求导得到。v_i_est(t)是无人机自身速度的估计值,可以从问题二的状态估计中得到(如果估计了速度),或者用位置估计的差分来近似。
k_p和k_d是控制增益,需要调整以保证系统稳定(负反馈)且响应速度合适。
3. 引入一致性项以实现协同:纯PD控制会使每架无人机独立地飞向自己的目标点,但无法保证编队内部的相对几何形状在飞行过程中保持稳定,特别是在存在定位误差和干扰的情况下。因此,需要引入基于邻居观测的一致性项。
假设无人机i能获得邻居无人机j的相对方位角测量,进而可以估计出相对位置向量p_ij_est。我们可以增加一项控制量,使无人机i与邻居j保持期望的相对位置(p_j_des - p_i_des)。 一致性控制项可以设计为:u_i_consensus(t) = γ * Σ_{j∈N_i} [ (p_j_des(t) - p_i_des(t)) - (p_j_est(t) - p_i_est(t)) ]其中,N_i是无人机i的邻居集合,γ是耦合增益。
最终的总控制量为:u_i_total(t) = u_i_pd(t) + u_i_consensus(t)
4.2 将控制模型与估计模型耦合
现在,我们有一个耦合的“估计-控制”闭环系统:
- 估计模块:基于无人机的实际运动(受控制力影响)产生的方位角观测,来估计所有无人机的位置和速度。这里可以使用问题二中建立的优化模型或滤波模型。
- 控制模块:基于估计出的位置和速度,以及期望队形,计算控制加速度
u_i_total(t)。 - 运动模型:无人机的真实运动由控制加速度驱动。最简单的可以用二阶积分模型描述:
v_i_real(t+Δt) = v_i_real(t) + u_i_total(t) * Δtp_i_real(t+Δt) = p_i_real(t) + v_i_real(t) * Δt(更复杂的模型可以考虑动力学约束,如最大速度、加速度限制)。
在仿真中,我们需要同时迭代这三个部分。流程如下:
初始化:所有无人机真实位置、估计位置、期望队形。 for 每个时间步 t: # 1. 生成观测(带噪声) 根据真实位置 p_i_real(t),计算所有存在的方位角观测值 z(t),并添加高斯噪声。 # 2. 状态估计 基于历史观测数据(直到时刻t),利用问题二的模型,更新所有无人机的估计位置 p_i_est(t) 和速度 v_i_est(t)。 # 3. 计算控制量 根据当前估计值 (p_i_est, v_i_est) 和当前期望队形 (p_i_des(t), v_i_des(t)),计算控制加速度 u_i_total(t)。 # 4. 状态更新(真实世界) 根据控制量 u_i_total(t) 和当前真实状态,更新下一时刻的真实位置和速度 p_i_real(t+Δt), v_i_real(t+Δt)。 # 5. 更新期望队形(如果需要过渡) 根据任务时间线,更新 p_i_des 和 v_i_des。4.3 仿真实现与性能评估指标
实现这样一个闭环仿真,是问题三的核心。编程工作量较大,建议模块化设计:
observation_module(t): 输入真实位置,输出带噪声的观测数据。estimation_module(observations_up_to_t): 输入历史观测,输出当前时刻的状态估计。control_module(estimates, desired_formation): 输入估计值和期望队形,输出控制指令。dynamics_module(current_state, control): 输入当前状态和控制量,输出下一时刻状态。
性能评估需要设计合理的指标:
- 队形保持误差:所有无人机实际位置与期望位置之间的平均距离RMSE。这是最直接的控制性能指标。
- 控制能量消耗:所有无人机控制加速度的平方和或绝对值和,用于衡量控制效率。
- 收敛时间:从队形切换指令发出,到队形误差稳定在某个阈值内所需的时间。
- 鲁棒性分析:在观测噪声增大、部分观测链路持续丢失、或无人机存在个体动力学差异等情况下,重复仿真,观察上述指标的变化。
高级拓展考虑:在论文中,如果能进一步讨论以下点,会显著提升深度:
- 控制增益调参:讨论如何选择
k_p,k_d,γ等参数。可以提到基于李雅普诺夫稳定性理论设计参数,或者简单说明通过试凑法寻找使系统响应快且超调小的参数。 - 包容定位误差:分析状态估计误差对控制性能的影响。控制律是否对定位误差有一定的鲁棒性?可以尝试在控制模块中直接使用带噪声的估计值,观察队形能否依然保持。
- 通信拓扑的影响:对比不同的观测/通信拓扑(如全连接、环形、最近邻连接)对控制性能的影响。通常,连接度越高,一致性收敛越快,队形保持越稳健。
5. 模型泛化、灵敏度分析与论文写作要点
完成了三个问题的具体建模与求解后,我们需要跳出细节,从更高视角审视整个工作,这部分内容对于完成一篇优秀的数模论文至关重要。
5.1 模型的泛化能力探讨
一个好的数学模型不应只适用于题目给出的特定参数。我们需要思考模型在更一般情况下的适用性。
- 无人机数量:我们的模型是否容易扩展到更多(如100架)或更少(如3架)的无人机?集中式优化方法在数量大增时会遇到“维数灾难”,计算复杂度急剧上升。这时可以强调,分布式滤波和一致性控制架构(问题二、三中提到的分布式思路)在可扩展性方面的优势。
- 队形变化:从圆到椭圆的变换只是例子。我们的控制框架(虚拟结构+一致性)可以很容易地推广到任意指定的队形,只需重新定义
p_i_des(t)即可。 - 运动模型:我们使用了最简单的匀速(CV)或双积分模型。可以讨论如果无人机机动性更强(如频繁转弯),是否需要引入更复杂的模型(如恒定转弯率和速度模型CTRV)。同时指出,更复杂的模型需要更多参数,也可能需要更复杂的滤波算法(如无损卡尔曼滤波UKF)。
- 噪声特性:我们假设了高斯噪声。可以简要讨论如果噪声是非高斯的(如存在野值),模型该如何改进(例如,将最小二乘损失函数换成Huber损失函数以提高鲁棒性)。
5.2 灵敏度分析与参数研究
灵敏度分析是体现模型稳健性和论文深度的重要环节。它回答“如果某些条件变化,结果会怎样?”的问题。
- 观测噪声标准差σ:系统性地改变σ(例如从0.5°到5°),重新运行问题一和问题二的仿真,绘制定位误差RMSE随σ变化的曲线。分析误差的增长趋势,是否线性?这可以验证模型对噪声的敏感度。
- 观测链路缺失率:在问题二中,随机丢弃一定比例(如10%,30%,50%)的从机间观测,比较不同缺失率下的定位精度和收敛速度。可以得出“系统需要至少保持XX%的连通度才能有效定位”的结论。
- 控制增益参数:在问题三中,展示不同
k_p、k_d取值下,队形误差和收敛时间的变化。甚至可以绘制一个简单的稳定性区域图。 - 编队半径与无人机数量:改变圆形编队的半径,分析定位误差的变化(理论上,误差随半径线性增加)。改变无人机数量,分析协同控制的计算复杂度和通信负担。
进行灵敏度分析时,最好配合清晰的图表(如折线图、热力图)。在文中不仅要展示结果,更要解释其背后的原因。例如,“定位误差随噪声增大而线性增加,这与理论误差传播分析一致”。
5.3 论文写作的核心要点与避坑指南
数模竞赛论文是展示工作的唯一窗口,写作至关重要。
1. 摘要:
- 切忌空话:不要写“本文建立了模型…使用了算法…”,要用事实填充。直接写出你的核心方法、模型和关键结论。
- 推荐结构:第一句破题。第二句总述方法(如“针对问题一,在圆形编队约束下,将非线性定位问题转化为极角参数估计问题,给出了闭式解”)。第三、四句简述问题二、三的方法(如“针对问题二,构建了基于滑动窗口批处理优化的协同定位模型,有效利用了历史观测与运动平滑性”)。最后一句总结主要数值结果和结论(如“仿真表明,在2°测量误差下,问题一定位误差约为3.5米;问题二模型能有效跟踪动态目标;问题三控制律能实现队形平滑切换,稳态误差小于1米”)。
2. 模型建立部分:
- 公式规范:所有变量首次出现时必须说明其含义。公式编号连续。
- 逻辑递进:从简单到复杂,从问题一到问题三,清晰地展示模型的演进过程。强调后面模型对前面模型的继承与发展。
- 图示化:绘制清晰的示意图。例如,问题一的坐标系和观测几何图;问题二的观测拓扑图(用有向图表示);问题三的控制系统框图(估计-控制闭环)。
3. 模型求解与结果分析:
- 交代清楚工具:说明使用的编程语言(Python/MATLAB)和关键库(如SciPy, NumPy, CVXOPT等)。
- 算法描述:不仅要说“我们使用了非线性最小二乘优化”,还要简要说明使用的具体算法(如L-BFGS-B)、初始值如何设定、停止准则是什么。
- 结果展示:表格和图形是王道。问题一的结果可以是一个简单的RMSE值表格。问题二可以展示某架无人机的真实轨迹、估计轨迹和观测射线图。问题三可以展示编队从圆到椭圆变化的动态过程快照,以及队形误差随时间变化的曲线。
- 分析,而非罗列:对着图表,解释你看到了什么现象,为什么会出现这种现象。例如,“如图5所示,在过渡阶段初期误差出现峰值,这是因为期望队形的突变导致控制指令过大,而无人机加速度有限所致”。
4. 模型评价与推广:
- 诚实评价:客观说明模型的优点(如问题一模型简洁优美,问题二模型抗噪能力强,问题三模型易于实现)和缺点(如问题二集中式优化计算量大,问题三未考虑无人机动力学极限)。
- 提出改进:基于缺点,提出一两个可行的改进方向(如问题二可采用分布式滤波降低计算量,问题三可加入控制饱和约束)。
最后的时间管理建议:72小时非常紧张。建议:Day1上午理解题目、确定思路、完成问题一建模与求解;Day1下午至Day2全天,攻克问题二,这是最难的部分;Day3上午完成问题三建模与初步仿真;Day3下午集中进行灵敏度分析、整理结果、绘制图表;晚上和夜间全力写作论文。务必留出至少6-8小时进行论文撰写、修改和排版。
