2024数维杯数学建模A题完整代码和成品论文获取↓↓↓↓↓
https://www.yuque.com/u42168770/qv6z0d/bgic2nbxs2h41pvt?singleDoc#
2024数维杯数学建模竞赛A题完整思路代码论文分析如下:
问题分析
对A题4个小问题的分析如下:
第一个小问题的分析:
这一问题要求建立每一类机会信号的数学表达式,并讨论唯一确定飞行器位置所需的最少信号个数。对于TOA、TDOA、DFD、AOA和RSSI这五类机会信号,需要根据它们的物理含义和测量原理,利用相关的测量模型和几何关系,构建出合理的数学表达式。同时,还需要分析每一类信号所蕴含的位置信息,探讨仅利用该类信号无法唯一确定飞行器三维位置的原因,进而讨论利用该类信号与其他类信号的组合,能够唯一确定飞行器位置的最少个数要求。
第二个小问题的分析:
这一问题要求设计飞行器实时位置估计方法,给出无噪声情况下0-10秒的导航定位结果。需要基于第一问题建立的各类机会信号数学模型,设计合适的状态估计算法,如卡尔曼滤波或其他无迹卡尔曼滤波方法等,将各类机会信号进行有效融合,从而获得飞行器在0-10秒内的实时位置估计值序列。算法需要能够很好地处理非线性和非高斯情况,同时保证实时性和计算效率。这种情况下由于假设没有噪声,因此估计的精度较高。
第三个小问题的分析:
在实际应用中,机会信号的测量数据往往会受到各种噪声的影响,因此需要设计合理的机会信号实时筛选方法,剔除偏差较大的噪声数据。可以考虑构建基于统计理论的筛选判据,如利用数据的均值、方差、峰度、偏度等统计量对数据进行分析,确定噪声数据的阈值并将其剔除。也可以结合机会信号本身的物理特性,如TOA信息的单调性等,构建相应的约束条件进行数据检测和筛选。基于噪声数据筛选后的有效机会信号,重新进行实时位置估计并给出0-10秒的导航定位结果。
第四个小问题的分析:
这一问题考虑了更加复杂的机会信号噪声情况,包括随机性偏差和常值飘移两种。需要首先建立合理的评价模型,对接收情况2中的机会信号数据进行分析,判断各类信号的随机偏差程度和常值飘移量,可以考虑均值、方差等统计量的估计,或者构建基于最小二乘等的评价指标。然后针对评估结果,设计更加鲁棒的数据筛选和融合算法,如自适应卡尔曼滤波、粗大数据处理等,从而给出这种情况下0-10秒的最终导航定位结果。可靠的噪声评估和有效的信号处理对最终精度影响显著。
模型的建立与求解
问题一模型的建立与求解
根据您的要求,我将对A题第一个小问题进行更加详细的分析和建模:
一、思路分析
第一个小问题要求建立每一类机会信号的数学表达式,并讨论唯一确定飞行器位置所需的最少信号个数。我们首先需要理解每一类机会信号所包含的信息,以及这些信息与飞行器位置之间的关系。
-
TOA(Time of Arrival,到达时间)信号包含了信号从发射源发出到到达接收端所经历的传播时间,根据已知的信号传播速度,可以计算出发射源到接收端的距离。
-
TDOA(Time Difference of Arrival,到达时间差)信号包含了同一信号从两个不同发射源发出后,到达接收端的时间差,根据已知的信号传播速度,可以计算出接收端到两个发射源的距离差。
-
DFD(Doppler Frequency Difference,多普勒频率差)信号包含了同一信号从两个不同发射源发出后,由于发射源与接收端之间存在相对运动,从而导致接收端接收到的频率会发生变化,这种变化量的差值就是DFD信号所携带的信息。
-
AOA(Angle of Arrival,到达角度)信号直接给出了发射源相对于接收端的方位角信息,包括水平方向和垂直方向的角度。
-
RSSI(Received Signal Strength Indicator,接收信号强度指标)信号是根据已知的标称距离下的标称信号强度,结合信号传播过程中的衰减模型,可以反解出发射源到接收端的距离。
我们可以看到,每一类信号都在一定程度上反映了发射源到接收端的距离或方位角信息。因此,要唯一确定飞行器的三维位置,就需要利用不同类型信号所携带的位置信息进行融合。
二、模型建立
基于上述分析,我们可以构建如下数学模型,用于描述每一类机会信号与飞行器位置之间的关系:
- TOA模型
设发射源 i i i 的位置为 ( x i , y i , z i ) (x_i, y_i, z_i) (xi,yi,zi) ,飞行器位置为 ( x , y , z ) (x, y, z) (x,y,z) ,发射时刻为 t 0 t_0 t0 ,接收时刻为 t 1 t_1 t1 ,则TOA可表示为:
TOA i = t 1 − t 0 = ( x − x i ) 2 + ( y − y i ) 2 + ( z − z i ) 2 c \text{TOA}_i = t_1 - t_0 = \frac{\sqrt{(x-x_i)^2 + (y-y_i)^2 + (z-z_i)^2}}{c} TOAi=t1−t0=c(x−xi)2+(y−yi)2+(z−zi)2
其中 c c c 为信号的传播速度(光速)。
- TDOA模型
设发射源 i i i 和发射源 j j j 同时发出信号,接收端接收到的时间差为 TDOA i j \text{TDOA}_{ij} TDOAij ,则有:
TDOA i j = ( x − x i ) 2 + ( y − y i ) 2 + ( z − z i ) 2 c − ( x − x j ) 2 + ( y − y j ) 2 + ( z − z j ) 2 c \text{TDOA}_{ij} = \frac{\sqrt{(x-x_i)^2 + (y-y_i)^2 + (z-z_i)^2}}{c} - \frac{\sqrt{(x-x_j)^2 + (y-y_j)^2 + (z-z_j)^2}}{c} TDOAij=c(x−xi)2+(y−yi)2+(z−zi)2 −c(x−xj)2+(y−yj)2+(z−zj)2
- DFD模型
设发射源 i i i 相对于接收端的相对速度为 v ⃗ i = ( v i x , v i y , v i z ) \vec{v}i = (v{ix}, v_{iy}, v_{iz}) v i=(vix,viy,viz) ,发射源 j j j 相对于接收端的相对速度为 v ⃗ j = ( v j x , v j y , v j z ) \vec{v}j = (v{jx}, v_{jy}, v_{jz}) v j=(vjx,vjy,vjz) ,发射频率为 f 0 f_0 f0 ,则DFD可表示为:
DFD i j = f 0 c ( v ⃗ i ⋅ r ⃗ i r i − v ⃗ j ⋅ r ⃗ j r j ) \text{DFD}_{ij} = \frac{f_0}{c}\left(\frac{\vec{v}_i \cdot \vec{r}_i}{r_i} - \frac{\vec{v}_j \cdot \vec{r}_j}{r_j}\right) DFDij=cf0(riv i⋅r i−rjv j⋅r j)
其中 r ⃗ i = ( x − x i , y − y i , z − z i ) \vec{r}_i = (x-x_i, y-y_i, z-z_i) r i=(x−xi,y−yi,z−zi) , r ⃗ j = ( x − x j , y − y j , z − z j ) \vec{r}_j = (x-x_j, y-y_j, z-z_j) r j=(x−xj,y−yj,z−zj) , r i = ∥ r ⃗ i ∥ r_i = \|\vec{r}_i\| ri=∥r i∥ , r j = ∥ r ⃗ j ∥ r_j = \|\vec{r}_j\| rj=∥r j∥ 。
- AOA模型
设发射源 i i i 与接收端的连线在 x O y xOy xOy 平面的投影与 x x x 轴正向的夹角为 α i \alpha_i αi ,与 z z z 轴负向的夹角为 β i \beta_i βi ,则有:
tan α i = y − y i x − x i tan β i = z i − z ( x − x i ) 2 + ( y − y i ) 2 \begin{align*} \tan\alpha_i &= \frac{y-y_i}{x-x_i} \\ \tan\beta_i &= \frac{z_i-z}{\sqrt{(x-x_i)^2 + (y-y_i)^2}} \end{align*} tanαitanβi=x−xiy−yi=(x−xi)2+(y−yi)2 zi−z
- RSSI模型
设发射源 i i i 到接收端的距离为 r i r_i ri ,标称距离为 r 0 r_0 r0 ,标称信号强度为 P 0 P_0 P0 ,信道衰减系数为 γ \gamma γ ,则RSSI可表示为:
RSSI i = P 0 − 10 γ log ( r i r 0 ) \text{RSSI}_i = P_0 - 10\gamma\log\left(\frac{r_i}{r_0}\right) RSSIi=P0−10γlog(r0ri)
其中 r i = ( x − x i ) 2 + ( y − y i ) 2 + ( z − z i ) 2 r_i = \sqrt{(x-x_i)^2 + (y-y_i)^2 + (z-z_i)^2} ri=(x−xi)2+(y−yi)2+(z−zi)2 。
通过上述模型,我们可以将每一类机会信号所携带的位置信息用数学表达式的形式表示出来,为后续的位置估计算法奠定基础。
三、算法步骤
在建立了每一类机会信号的数学模型之后,我们需要设计合适的算法来融合这些异构信号,从而获得飞行器的三维位置估计值。这里介绍一种常用的无迹卡尔曼滤波(Unscented Kalman Filter, UKF)算法,它可以很好地处理非线性、非高斯的估计问题。算法具体步骤如下:
- 状态空间模型
令飞行器的三维位置为 x = ( x , y , z ) T \boldsymbol{x} = (x, y, z)^T x=(x,y,z)T ,速度为 v = ( v x , v y , v z ) T \boldsymbol{v} = (v_x, v_y, v_z)^T v=(vx,vy,vz)T ,则状态向量可表示为 s = ( x T , v T ) T \boldsymbol{s} = (\boldsymbol{x}^T, \boldsymbol{v}^T)^T s=(xT,vT)T 。系统的过程方程和观测方程分别为:
s k + 1 = f ( s k ) + w k \boldsymbol{s}_{k+1} = f(\boldsymbol{s}_k) + \boldsymbol{w}_k sk+1=f(sk)+wk
z k = h ( s k ) + v k \boldsymbol{z}_k = h(\boldsymbol{s}_k) + \boldsymbol{v}_k zk=h(sk)+vk
其中 f ( ⋅ ) f(\cdot) f(⋅) 是过程方程,描述了状态向量 s \boldsymbol{s} s 的动态演化; h ( ⋅ ) h(\cdot) h(⋅) 是观测方程,描述了状态向量 s \boldsymbol{s} s 与观测量 z \boldsymbol{z} z (即各类机会信号)之间的关系; w k \boldsymbol{w}_k wk 和 v k \boldsymbol{v}_k vk 分别为过程噪声和观测噪声。
-
初始化
设置初始状态估计值 s ^ 0 \hat{\boldsymbol{s}}_0 s^0 及其协方差矩阵 P 0 \boldsymbol{P}_0 P0 。
-
计算Sigma点
对于 k k k 时刻,根据当前状态估计值 s ^ k − 1 \hat{\boldsymbol{s}}{k-1} s^k−1 及其协方差 P k − 1 \boldsymbol{P}{k-1} Pk−1 ,计算一组Sigma点 χ i ( i = 0 , 1 , ... , 2 n ) \chi_i(i=0,1,\ldots,2n) χi(i=0,1,...,2n) ,用于描述状态分布的均值和协方差。计算方式为:
χ 0 = s ^ k − 1 \chi_0 = \hat{\boldsymbol{s}}{k-1} χ0=s^k−1
χ i = s ^ k − 1 + ( ( n + λ ) P k − 1 ) i , i = 1 , ... , n \chi_i = \hat{\boldsymbol{s}}{k-1} + (\sqrt{(n+\lambda)\boldsymbol{P}{k-1}})i,\quad i=1,\ldots,n χi=s^k−1+((n+λ)Pk−1 )i,i=1,...,n
χ i = s ^ k − 1 − ( ( n + λ ) P k − 1 ) i − n , i = n + 1 , ... , 2 n \chi_i = \hat{\boldsymbol{s}}{k-1} - (\sqrt{(n+\lambda)\boldsymbol{P}{k-1}})_{i-n},\quad i=n+1,\ldots,2n χi=s^k−1−((n+λ)Pk−1 )i−n,i=n+1,...,2n
其中 n n n 为状态向量的维数, λ \lambda λ 为一个缩放参数,用于调节Sigma点的分布范围。
- 时间更新
将上一步得到的Sigma点通过过程方程 f ( ⋅ ) f(\cdot) f(⋅) 进行传播,得到一组加权Sigma点:
χ i , k ∣ k − 1 = f ( χ i , k − 1 ) , i = 0 , 1 , ... , 2 n \chi_{i,k|k-1} = f(\chi_{i,k-1}),\quad i=0,1,\ldots,2n χi,k∣k−1=f(χi,k−1),i=0,1,...,2n
然后计算一步预测状态 s ^ k ∣ k − 1 \hat{\boldsymbol{s}}{k|k-1} s^k∣k−1 和预测协方差 P k ∣ k − 1 \boldsymbol{P}{k|k-1} Pk∣k−1 :
s ^ k ∣ k − 1 = ∑ i = 0 2 n W i ( m ) χ i , k ∣ k − 1 \hat{\boldsymbol{s}}{k|k-1} = \sum{i=0}^{2n}W_i^{(m)}\chi_{i,k|k-1} s^k∣k−1=i=0∑2nWi(m)χi,k∣k−1
P k ∣ k − 1 = ∑ i = 0 2 n W i ( c ) [ χ i , k ∣ k − 1 − s ^ k ∣ k − 1 ] [ χ i , k ∣ k − 1 − s ^ k ∣ k − 1 ] T + Q k \boldsymbol{P}{k|k-1} = \sum{i=0}^{2n}W_i^{(c)}[\chi_{i,k|k-1}-\hat{\boldsymbol{s}}{k|k-1}][\chi{i,k|k-1}-\hat{\boldsymbol{s}}_{k|k-1}]^T + \boldsymbol{Q}_k Pk∣k−1=i=0∑2nWi(c)[χi,k∣k−1−s^k∣k−1][χi,k∣k−1−s^k∣k−1]T+Qk
其中 W i ( m ) W_i^{(m)} Wi(m) 和 W i ( c ) W_i^{(c)} Wi(c) 为相应的加权系数, Q k \boldsymbol{Q}_k Qk 为过程噪声协方差矩阵。
- 观测更新
将预测Sigma点代入观测方程 h ( ⋅ ) h(\cdot) h(⋅) ,得到预测观测值:
γ i , k ∣ k − 1 = h ( χ i , k ∣ k − 1 ) , i = 0 , 1 , ... , 2 n \gamma_{i,k|k-1} = h(\chi_{i,k|k-1}),\quad i=0,1,\ldots,2n γi,k∣k−1=h(χi,k∣k−1),i=0,1,...,2n
进而计算预测观测均值 z ^ k ∣ k − 1 \hat{\boldsymbol{z}}{k|k-1} z^k∣k−1 和协方差 P z , k ∣ k − 1 \boldsymbol{P}{\boldsymbol{z},k|k-1} Pz,k∣k−1 :
z ^ k ∣ k − 1 = ∑ i = 0 2 n W i ( m ) γ i , k ∣ k − 1 \hat{\boldsymbol{z}}{k|k-1} = \sum{i=0}^{2n}W_i^{(m)}\gamma_{i,k|k-1} z^k∣k−1=i=0∑2nWi(m)γi,k∣k−1
P z , k ∣ k − 1 = ∑ i = 0 2 n W i ( c ) [ γ i , k ∣ k − 1 − z ^ k ∣ k − 1 ] [ γ i , k ∣ k − 1 − z ^ k ∣ k − 1 ] T + R k \boldsymbol{P}{\boldsymbol{z},k|k-1} = \sum{i=0}^{2n}W_i^{(c)}[\gamma_{i,k|k-1} - \hat{\boldsymbol{z}}{k|k-1}][\gamma{i,k|k-1} - \hat{\boldsymbol{z}}_{k|k-1}]^T + \boldsymbol{R}_k Pz,k∣k−1=i=0∑2nWi(c)[γi,k∣k−1−z^k∣k−1][γi,k∣k−1−z^k∣k−1]T+Rk
其中 R k \boldsymbol{R}_k Rk 为观测噪声协方差矩阵。
计算状态与观测量之间的交叉协方差:
P x z , k ∣ k − 1 = ∑ i = 0 2 n W i ( c ) [ χ i , k ∣ k − 1 − s ^ k ∣ k − 1 ] [ γ i , k ∣ k − 1 − z ^ k ∣ k − 1 ] T \boldsymbol{P}{\boldsymbol{x}\boldsymbol{z},k|k-1} = \sum{i=0}^{2n}W_i^{(c)}[\chi_{i,k|k-1}-\hat{\boldsymbol{s}}{k|k-1}][\gamma{i,k|k-1}-\hat{\boldsymbol{z}}_{k|k-1}]^T Pxz,k∣k−1=i=0∑2nWi(c)[χi,k∣k−1−s^k∣k−1][γi,k∣k−1−z^k∣k−1]T
根据上述统计量,计算卡尔曼增益:
K k = P x z , k ∣ k − 1 P z , k ∣ k − 1 − 1 \boldsymbol{K}k = \boldsymbol{P}{\boldsymbol{x}\boldsymbol{z},k|k-1}\boldsymbol{P}_{\boldsymbol{z},k|k-1}^{-1} Kk=Pxz,k∣k−1Pz,k∣k−1−1
最后,利用实际观测量 z k \boldsymbol{z}_k zk 以及增益 K k \boldsymbol{K}_k Kk ,更新状态估计值与协方差:
s ^ k = s ^ k ∣ k − 1 + K k ( z k − z ^ k ∣ k − 1 ) \hat{\boldsymbol{s}}k = \hat{\boldsymbol{s}}{k|k-1} + \boldsymbol{K}_k(\boldsymbol{z}k - \hat{\boldsymbol{z}}{k|k-1}) s^k=s^k∣k−1+Kk(zk−z^k∣k−1)
P k = P k ∣ k − 1 − K k P z , k ∣ k − 1 K k T \boldsymbol{P}k = \boldsymbol{P}{k|k-1} - \boldsymbol{K}k\boldsymbol{P}{\boldsymbol{z},k|k-1}\boldsymbol{K}_k^T Pk=Pk∣k−1−KkPz,k∣k−1KkT
- 迭代
将 k k k 替换为 k + 1 k+1 k+1 ,重复上述4)-5)步,直至滤波结束。
通过UKF算法,我们可以融合各类机会信号,获得飞行器的最优状态估计值,包括三维位置和速度信息。算法的关键在于利用一组确定性采样点(Sigma点)对非线性系统进行局部线性化处理,避免了对系统进行显式求解的需求,从而能够很好地应对非线性、非高斯情况。在实现过程中,需要根据具体情况对初始状态、噪声统计量等参数进行合理设置。
四、最少信号个数讨论
最后,我们讨论一下利用每一类机会信号单独情况下,确定飞行器三维位置所需的最少信号个数。
-
TOA
根据TOA模型,每个TOA观测量仅提供了发射源到接收端的距离信息,因此单个TOA观测无法确定接收端的准确位置,最少需要4个TOA观测(对应4个不共面的发射源),才能利用多球面交点的方式解出接收端的三维坐标。
-
TDOA
TDOA观测给出的是接收端到两个发射源距离差的信息,单个TDOA观测无法确定接收端的位置,需要至少5个TDOA观测(对应5对不共面的发射源组合)才能解出接收端坐标。
-
DFD
DFD观测反映了由于发射源与接收端之间的相对运动导致的多普勒频移差异,包括了发射源速度、接收端速度以及发射源到接收端的相对位置等多个未知量。单个DFD观测无法解出接收端的位置和速度,需要至少6个DFD观测(对应6对不共面的发射源组合)才能解出接收端的三维位置和三维速度。
-
AOA
AOA观测直接给出了发射源相对于接收端的方位角信息,包括水平角和垂直角。单个AOA观测无法唯一确定接收端的位置,需要至少3个AOA观测(对应3个不共线的发射源)才能利用交会法解出接收端的三维坐标。
-
RSSI
RSSI观测反映了接收信号的功率强度,可以根据已知的传播损耗模型求解出发射源到接收端的距离。类似于TOA情况,单个RSSI观测无法确定接收端的精确位置,最少需要4个RSSI观测(对应4个不共面的发射源)才能解出三维坐标。
综上所述,若只利用单一类型的机会信号,要唯一确定飞行器的三维位置,所需的最少观测个数分别为:TOA需4个,TDOA需5个,DFD需6个,AOA需3个,RSSI需4个。在实际应用中,我们通常会融合多种类型的机会信号,从而提高位置估计的可观测性和鲁棒性。不同信号类型的组合能够降低所需的观测个数,例如同时利用TOA和AOA,只需4个组合观测即可解出三维位置和三维速度。
2024数维杯数学建模A题完整代码和成品论文获取↓↓↓↓↓
https://www.yuque.com/u42168770/qv6z0d/bgic2nbxs2h41pvt?singleDoc#