更新完整代码和成品完整论文
《2024深圳杯&东三省数学建模思路代码成品论文》↓↓↓(浏览器打开)
https://www.yuque.com/u42168770/qv6z0d/zx70edxvbv7rheu7?singleDoc#
2024深圳杯数学建模竞赛A题(东三省数学建模竞赛A题):建立火箭残骸音爆多源定位模型
本文文章较长,建议先目录。经过多天的奋战,目前我们已经完成了2024深圳杯数学建模竞赛A题的30+页完整论文和代码,相关完整内容可见文末参考,文章较长,建议可以先看目录,部分图片如下:
火箭残骸音爆多源定位
部分摘要如下:本文针对火箭发射场景下的多个火箭残骸音爆精确定位问题,进行了深入的研究和分析。通过对问题的理论分析和建模,提出了一系列定位模型和算法,并通过算例验证了其有效性和可行性。在问题1中,建立了基于非线性方程组求解的多点定位音爆源模型,采用牛顿迭代法和遗传算法进行了求解,取得了较高的定位精度。问题2针对多个残骸同时发生音爆的情况,提出了基于震动波识别和分步定位的多残骸定位模型,通过聚类算法实现了复杂场景下的残骸定位。问题3通过构建多残骸定位的非线性最小二乘模型,利用穷举法和Levenberg-Marquardt算法,实现了四个残骸的同时定位,定位误差控制在1km以内。问题4研究了测量误差对定位精度的影响,提出了基于加权最小二乘和RANSAC算法的鲁棒定位方法,并通过GDOP准则和MMI准则对监测设备布设进行了优化,进一步提高了定位精度。最后,文中对各定位模型的优缺点进行了分析,并提出了相应的改进策略和推广方向。
问题1的多点定位音爆源模型,通过将音爆源的空间坐标和时间作为未知量,建立了以监测设备位置和音爆信号到达时间为已知量的非线性方程组,并引入了Jacobi矩阵,将问题转化为非线性最小二乘问题。首先,采用了牛顿迭代法进行求解,通过不断迭代更新未知量的估计值,直到满足收敛条件,得到了音爆源的位置和时间。算例结果表明,该方法能够以较高的精度实现单个残骸的定位。其次,为了克服牛顿法可能收敛到局部最优解的缺陷,进一步采用了遗传算法进行全局搜索,通过自然选择、交叉变异等操作,在更大的解空间内寻找最优解,提高了模型的鲁棒性。最终,两种算法的结果进行了对比分析,验证了模型和算法的有效性。
问题2针对多个残骸同时发生音爆的情况,提出了多残骸音爆定位模型。首先,通过对监测数据进行时间差异聚类,实现了对多组震动波信号的分离和识别,将复杂的多残骸定位问题简化为多个单残骸定位问题。(后略)
问题3进一步探讨了四个残骸同时发生音爆时的定位问题。通过对7个监测站的实测数据进行分析,构建了一个多残骸定位的非线性最小二乘模型,以4个残骸的空间坐标和音爆时刻为决策变量,以所有监测站的定位误差平方和为目标函数。求解该模型面临的主要挑战是决策变量维度高、非线性强,全局最优解难以确定。为此,首先采用(后略)
问题4主要研究测量误差对定位结果的影响,并提出了相应的鲁棒定位算法和监测设备布设优化方法。首先,通过对比分析含有随机误差和不含误差情况下的定位结果,发现测量误差会显著降低定位精度。为此,引入了加权最小二乘法,通过迭代修正残差的权重,削弱异常值的影响,提高定位模型的鲁棒性。其次,采用RANSAC算法,(后略)
通过对四个问题的研究,本文构建了一套较为完善的火箭残骸音爆精确定位模型和算法体系,能够有效解决单残骸定位、多残骸同时定位、复杂场景下的残骸识别、测量误差干扰等实际工程问题。
问题重述
下面是2024年深圳杯东三省数学建模竞赛A题的一个问题重述:多个火箭残骸的准确定位
绝大多数火箭为多级火箭,下面级火箭或助推器完成既定任务后,通过级间分离装置分离后坠落。在坠落至地面过程中,残骸会产生跨音速音爆。为了快速回收火箭残骸,在残骸理论落区内布置多台震动波监测设备,以接收不同火箭残骸从空中传来的跨音速音爆,然后根据音爆抵达的时间,定位空中残骸发生音爆时的位置,再采用弹道外推实现残骸落地点的快速精准定位 。
问题1 建立数学模型,分析如果要精准确定空中单个残骸发生音爆时的位置坐标(经度、纬度、高程)和时间,至少需要布置几台监测设备?假设某火箭一级残骸分离后,在落点附近布置了7台监测设备,各台设备三维坐标(经度、纬度、高程)、音爆抵达时间(相对于观测系统时钟0时)如下表所示:
从上表中选取合适的数据,计算残骸发生音爆时的位置和时间。
问题2火箭残骸除了一级残骸,还有两个或者四个助推器。在多个残骸发生音爆时,监测设备在监测范围内可能会采集到几组音爆数据。假设空中有4个残骸,每个设备按照时间先后顺序收到4组震动波。建立数学模型,分析如何确定监测设备接收到的震动波是来自哪一个残骸?如果要确定4个残骸在空中发生音爆时的位置和时间,至少需要布置多少台监测设备?
问题3 假设各台监测设备布置的坐标和4个音爆抵达时间分别如下表所示:
利用问题2所建立的数学模型,从上表中选取合适的数据,确定4个残骸在空中发生音爆时的位置和时间(4个残骸产生音爆的时间可能不同,但互相差别不超过5 s)。
问题4 假设设备记录时间存在0.5 s的随机误差,请修正问题2所建立的模型以较精确地确定4个残骸在空中发生音爆时的位置和时间。通过对问题3表中数据叠加随机误差,给出修正模型的算例,并分析结果误差。如果时间误差无法降低,提供一种解决方案实现残骸空中的精准定位(误差<1 km),并自行根据问题3所计算得到的定位结果模拟所需的监测设备位置和音爆抵达时间数据,验证相关模型。
附 震动波的传播速度为340 m/s,计算两点间距离时可忽略地面曲率,纬度间每度距离值近似为111.263 km,经度间每度距离值近似为97.304 km。
问题分析
问题1分析
问题1:要精确定位空中单个残骸发生音爆的位置和时间,可以使用三角测量法或多点定位法。通过分析可知,在三维空间中确定一个点的位置需要至少4个已知点的距离信息。因此,这里需要布置至少4台监测设备。对于给出的7台设备的数据,我们可以任意选取其中4台,用它们的位置坐标(x,y,z)和接收到音爆信号的时间t,列出以音速为参数的方程组,求解该方程组即可得到残骸发生音爆时的三维坐标(x,y,z)和具体时间t。如果选多于4台设备,可以通过最小二乘法等方法处理,提高定位精度。
问题2分析
问题2:当有多个残骸同时发生音爆时,每台监测设备会在不同时刻接收到多组音爆信号。如果能够区分各组信号分别来自哪个残骸,就可以将问题简化为多个单残骸定位问题。这里可以使用聚类算法,如k-means、DBSCAN等,对每台设备接收到的多组信号的到达时间进行聚类,使得同一残骸发出的信号在所有设备上的到达时间聚为一类。聚类过程中可以设置时间阈值,大于该阈值的signals必然来自不同残骸。为了既能区分各残骸,又能准确定位,需要布置更多的设备。理论上,定位n个残骸需要的设备数量为5。因此对于4个残骸,需要布置至少5台设备。
问题3分析
问题3:根据上述思路,首先对给出的7台监测设备的数据按时间先后进行聚类。这里每台设备接收到4组信号,聚类的目标是把属于同一残骸的信号聚为一类。我们可以假设4个残骸的音爆发生时间相差不超过5秒,据此设置聚类的时间阈值。聚类后,每类数据包含7组位置和时间信息,分别对应7台设备接收到的来自同一残骸的信号。对每一类数据,选取其中的5组(确保选取的5台设备geometrically diverse),套用单残骸定位的方法(如问题1),即可求出该残骸发生音爆的位置坐标和时间。对4个残骸依次求解,即可得到完整的定位结果。
问题4分析
问题4:在实际测量中,由于设备精度、同步等原因,测量时间难免存在误差。为此,需要在定位模型中引入误差项。假设测得的时间为真实时间与一个随机误差的和,其中误差服从均值为0、方差为0.5^2的正态分布。将含随机误差项的测量时间代入定位方程组,再用最小二乘法或其他参数估计方法求解,可以在一定程度上消除随机误差的影响,使定位结果更加准确。除了改进算法,还可以通过增加监测设备的数量来提高冗余度,减小误差。理论上,要将残骸的定位误差控制在1km以内,需要将时间测量误差降到0.1s量级。如果时间误差无法降低,另一种思路是在一个较大区域内密集布设监测设备阵列,通过空间上的冗余度来弥补时间误差,用探测到的音爆信号强度分布反演残骸轨迹。
模型假设
根据论文中2024深圳杯A题问题1到问题4的模型建立与求解过程,使用了以下几点模型假设:(略,见完整版)
符号说明
本文使用的符号及其说明如下:(部分)
问题一模型的建立与求解
问题1的详细分析与求解如下:
多点定位音爆源模型建立
确定空中单个残骸发生音爆时的位置坐标(经度、纬度、高程)和时间,本质上是求解一个非线性方程组。设音爆点坐标为 (𝑥0,𝑦0,𝑧0) ,音爆时刻为 𝑡0 ,音速为 𝑐 ,则音爆信号到达第 𝑖 个监测设备的时刻 𝑡𝑖 满足:
(𝑥𝑖−𝑥0)2+(𝑦𝑖−𝑦0)2+(𝑧𝑖−𝑧0)2=𝑐(𝑡𝑖−𝑡0),𝑖=1,2,⋯,𝑛
其中 (𝑥𝑖,𝑦𝑖,𝑧𝑖) 为第 𝑖 个监测设备的坐标, 𝑛 为监测设备数量。这是一个含有4个未知数 (𝑥0,𝑦0,𝑧0,𝑡0) 的非线性方程组,至少需要4个方程才能确定唯一解,即至少需要布置4台监测设备。当监测设备多于4台时,方程组为超定方程组。
![问题1 3D_plot](./论文1.0.assets/问题1 3D_plot.png)
为方便求解,将经纬度坐标转化为笛卡尔坐标。设第 𝑖 个设备的经纬度、高程分别为 (𝜆𝑖,𝜑𝑖,ℎ𝑖) ,转化公式为: 𝑥𝑖=97.304∗1000∗(𝜆𝑖−𝜆0)𝑦𝑖=111.263∗1000∗(𝜑𝑖−𝜑0)𝑧𝑖=ℎ𝑖
其中 (𝜆0,𝜑0) 为坐标原点的经纬度,单位为千米。不妨取 𝜆0=110∘,𝜑0=27∘ 。
记 𝑠=(𝑥0,𝑦0,𝑧0,𝑡0) , 𝑑𝑖=(𝑥𝑖,𝑦𝑖,𝑧𝑖,𝑡𝑖) , 𝑖=1,2,⋯,𝑛 ,则上述非线性方程组可写为:
𝑓𝑖(𝑠)≜(𝑥𝑖−𝑥0)2+(𝑦𝑖−𝑦0)2+(𝑧𝑖−𝑧0)2−𝑐(𝑡𝑖−𝑡0)=0,𝑖=1,2,⋯,𝑛
记 𝑓(𝑠)=(𝑓1(𝑠),𝑓2(𝑠),⋯,𝑓𝑛(𝑠))𝑇 ,求解非线性方程组 𝑓(𝑠)=0 即可得到音爆点的位置和时间。当 𝑛>4 时,可构造如下最小二乘问题求其最优解:
min𝑠‖𝑓(𝑠)‖22=∑𝑖=1𝑛𝑓𝑖2(𝑠)
该模型称为"多点定位音爆源模型"(Multi-point Audio Positioning Model,MAP)。
超定多点定位算法设计
求解上述最小二乘问题,可采用多种优化算法,如牛顿法、高斯-牛顿法、Levenberg-Marquardt算法等。
牛顿法求解非线性超定多点定位问题
这里以牛顿法为例,算法步骤如下:
输入:监测数据 𝑑𝑖=(𝑥𝑖,𝑦𝑖,𝑧𝑖,𝑡𝑖),𝑖=1,2,⋯,𝑛 ,音速 𝑐 ,迭代初值 𝑠(0) ,迭代次数上限 𝐾 ,停机准则 𝜀 输出:音爆点位置和时间 𝑠∗=(𝑥0∗,𝑦0∗,𝑧0∗,𝑡0∗) 𝑘=0 while 𝑘<𝐾 计算 𝑓(𝑠(𝑘)) 及其Jacobi矩阵 𝐽(𝑠(𝑘)) 求解线性方程组 𝐽(𝑠(𝑘))Δ𝑠(𝑘)=−𝑓(𝑠(𝑘)) 得 Δ𝑠(𝑘) 𝑠(𝑘+1)=𝑠(𝑘)+Δ𝑠(𝑘) if ‖Δ𝑠(𝑘)‖2<𝜀 break 𝑘=𝑘+1 end while 𝑠∗=𝑠(𝑘)
(后略,见完整版)
当监测设备数 𝑛>4 时,可通过求解超定非线性方程组得到更准确的定位结果。常用方法有:(后略,见完整版)
以上方法可称为"超定多点定位算法"(Overdetermined Multi-point Positioning Algorithm, OMPA)。
遗传算法求解非线性超定多点定位问题
除了牛顿迭代和超定方程组求解等传统优化方法外,遗传算法作为一种启发式搜索算法,也可用于求解该多点定位问题。相比牛顿法等局部搜索算法,遗传算法是一种全局优化算法,通过模拟生物进化过程中的选择、交叉、变异等操作,在全局范围内搜索最优解,不易陷入局部最优。下面给出使用遗传算法求解问题1的详细步骤。
- 编码方式
音爆点的位置坐标 (𝑥0,𝑦0,𝑧0) 和时间 𝑡0 可编码为一个四维向量,作为遗传算法的个体。为方便后续遗传操作,对四个分量分别进行归一化,将其映射到 [0,1] 区间内,即:
𝑠=(𝑠𝑥,𝑠𝑦,𝑠𝑧,𝑠𝑡),𝑠𝑥=𝑥0−𝑥min𝑥max−𝑥min,𝑠𝑦=𝑦0−𝑦min𝑦max−𝑦min,𝑠𝑧=𝑧0−𝑧min𝑧max−𝑧min,𝑠𝑡=𝑡0−𝑡min𝑡max−𝑡min
其中 𝑥min,𝑥max,𝑦min,𝑦max,𝑧min,𝑧max,𝑡min,𝑡max 分别为四个分量的取值范围,可根据先验知识设定,如残骸的飞行高度和落区范围等。这样每个个体就对应一个潜在的音爆点。
- 初始种群生成
随机生成 𝑁 个个体作为初始种群 𝑆(0)={𝑠1(0),𝑠2(0),⋯,𝑠𝑁(0)} ,每个个体的四个分量在 [0,1] 内随机取值。 𝑁 为种群大小,是一个超参数,需根据问题规模和计算资源等因素设定。
(后略,见完整版)
算例分析
利用题目提供的7组监测数据,转化为笛卡尔坐标后,初值 𝑠(0) 取7组数据的几何中心及平均接收时刻:
𝑠(0)=(𝑥¯,𝑦¯,𝑧¯,𝑡¯),𝑥¯=17∑𝑖=17𝑥𝑖,𝑦¯=17∑𝑖=17𝑦𝑖,𝑧¯=17∑𝑖=17𝑧𝑖,𝑡¯=17∑𝑖=17𝑡𝑖
利用题目所给的7组监测数据,取音爆点的经纬度范围为 [109∘,111∘]×[26∘,28∘] ,高度范围为 [1,10] km,时间范围为 [0,300] s。种群大小取 𝑁=100 ,交叉概率 𝑝𝑐=0.8 ,变异概率 𝑝𝑚=0.1 ,变异步长 𝛿=0.05 ,最大进化代数为200。
部分代码如下:
% 三维音爆定位数学模型(TAPS)
% 输入参数
y3 = (y3 - 27) * 111.263 * 1000;
% 初始猜测值
x0 = 110.5; y0 = 27.5; z0 = 750; t0 = 50;
x0 = (x0 - 110) * 97.304 * 1000;
y0 = (y0 - 27) * 111.263 * 1000;
% 迭代参数
tol = 1e-6; % 收敛精度
maxIter = 100; % 最大迭代次数
% 迭代求解
x = x0; y = y0; z = z0; t = t0;
iter = 0;
while true
% 计算残差
f1 = sqrt((x-x1)^2 + (y-y1)^2 + (z-z1)^2) - c*(t-t1);
f2 = sqrt((x-x2)^2 + (y-y2)^2 + (z-z2)^2) - c*(t-t2);
F = [f1; f2; f3];
% 计算雅可比矩阵
J11 = (x-x1)/sqrt((x-x1)^2 + (y-y1)^2 + (z-z1)^2);
J12 = (y-y1)/sqrt((x-x1)^2 + (y-y1)^2 + (z-z1)^2);
J13 = (z-z1)/sqrt((x-x1)^2 + (y-y1)^2 + (z-z1)^2);
J14 = -c;
J = [J11 J12 J13 J14;
J21 J22 J23 J24;
J31 J32 J33 J34];
% 求解线性方程组
dx = -J\F;
% 更新迭代变量
x = x + dx(1);
y = y + dx(2);
z = z + dx(3);
t = t + dx(4);
% 检查收敛条件
if norm(F) < tol || iter >= maxIter
break;
end
iter = iter + 1;
end
% 结果输出
fprintf('残骸位置坐标: (%.3f, %.3f, %.3f)\n', x, y, z);
fprintf('残骸发生音爆时间: %.3f s\n', t);
% 可视化
% 1. 三维坐标系
figure;
plot3(x1, y1, z1, 'ro', 'MarkerSize', 10, 'MarkerFaceColor', 'r');
hold on;
plot3(x2, y2, z2, 'go', 'MarkerSize', 10, 'MarkerFaceColor', 'g');
plot3(x3, y3, z3, 'bo', 'MarkerSize', 10, 'MarkerFaceColor', 'b');
title('问题1三维坐标系');
view(3);
grid on;
exportgraphics(gcf, '问题1 3D_plot.png', 'Resolution', 300);
% 2. 平面投影
figure;
plot(x1, y1, 'ro', 'MarkerSize', 10, 'MarkerFaceColor', 'r');
hold on;
plot(x2, y2, 'go', 'MarkerSize', 10, 'MarkerFaceColor', 'g');
plot(x3, y3, 'bo', 'MarkerSize', 10, 'MarkerFaceColor', 'b');
plot(x, y, 'k*', 'MarkerSize', 15, 'MarkerFaceColor', 'k');
(后略,见完整版)
综上,至少需要布置4台监测设备,在7台监测设备的情况下,可通过求解超定非线性方程组进一步提高定位精度,常用方法包括多组合平均、加权最小二乘、正则化以及鲁棒估计等,本文给出了牛顿迭代和遗传算法两种求解算法,均能得到较为理想的定位结果。
问题四模型的建立与求解
问题4涉及到了测量误差对定位精度的影响,以及如何通过算法改进和设备布设优化来提高定位精度。下面我将从误差分析、鲁棒定位算法设计和监测设备优化布设三个方面对该问题进行详细讨论。
测量误差分析与建模
在实际的监测系统中,测量数据往往会受到各种误差源的影响,如设备噪声、时钟漂移、环境干扰等,导致测量值与真实值之间存在一定的偏差。对于飞行器音爆定位这一应用场景,主要考虑监测设备记录音爆到达时间的误差。
假设第 𝑖 个监测设备记录的第 𝑗 个残骸音爆到达时间为 𝑇~𝑖𝑗 ,它与真实到达时间 𝑇𝑖𝑗 之间存在一个加性误差 𝜀𝑖𝑗 ,即:
𝑇~𝑖𝑗=𝑇𝑖𝑗+𝜀𝑖𝑗,𝑖=1,2,⋯,𝑛;𝑗=1,2,⋯,𝑚
其中 𝑛 为监测设备数量, 𝑚 为残骸数量。根据题目信息,可以假设误差 𝜀𝑖𝑗 服从区间 [−0.5,0.5] 上的均匀分布,即 𝜀𝑖𝑗∼𝑈(−0.5,0.5) 。
将上述误差模型代入到问题1和问题2中的定位方程组,可以得到包含测量误差的多残骸定位模型:
(𝑥𝑗−𝑋𝑖)2+(𝑦𝑗−𝑌𝑖)2+(𝑧𝑗−𝑍𝑖)2=𝑐(𝑇~𝑖𝑗−𝑡𝑗−𝜀𝑖𝑗),𝑖=1,2,⋯,𝑛;𝑗=1,2,⋯,𝑚
其中 (𝑥𝑗,𝑦𝑗,𝑧𝑗) 和 𝑡𝑗 分别为第 𝑗 个残骸的空间坐标和音爆时刻, (𝑋𝑖,𝑌𝑖,𝑍𝑖) 为第 𝑖 个监测设备的坐标, 𝑐 为声速。
上述模型表明,测量误差会直接影响定位方程组的残差,进而影响定位精度。为了量化误差对定位精度的影响,可以引入均方根定位误差(Root Mean Square Localization Error, RMSLE)指标:
RMSLE=1𝑚∑𝑗=1𝑚[(𝑥𝑗−𝑥^𝑗)2+(𝑦𝑗−𝑦^𝑗)2+(𝑧𝑗−𝑧^𝑗)2+𝑐2(𝑡𝑗−𝑡^𝑗)2]
其中 (𝑥^𝑗,𝑦^𝑗,𝑧^𝑗) 和 𝑡^𝑗 为第 𝑗 个残骸的估计坐标和音爆时刻。RMSLE衡量了估计值与真实值之间的整体偏差,数值越小说明定位精度越高。
鲁棒定位算法设计
为了减小测量误差对定位结果的影响,提高定位精度,可以考虑从算法层面入手,设计鲁棒性更强的定位算法。以下介绍两种常用的鲁棒定位算法。
加权最小二乘法(Weighted Least Squares, WLS)
在传统的最小二乘定位方法中,所有测量值的权重都是相等的。而在存在测量误差的情况下,不同测量值的可信度是不同的。直观地,误差较小的测量值应该赋予较大的权重,而误差较大的测量值应该赋予较小的权重。加权最小二乘法就是基于这一思想,对不同测量值引入权重因子(后略,见完整版)
模型的评价与推广(部分)
问题4的鲁棒定位算法设计评价与推广
优点: 1. 加权最小二乘法通过迭代修正残差的权重,自适应地削弱异常值的影响,提高了定位模型的鲁棒性。 2. RANSAC算法通过一致性样本集的投票机制,有效克服了测量误差和野值的干扰,具有较强的鲁棒性。 3. 基于GDOP准则和MMI准则的监测设备优化布设方法,能够在测量误差无法降低的情况下,通过合理布设提高定位精度,具有实用价值。
缺点: 1. 加权最小二乘法和RANSAC算法的性能依赖于初值选取和迭代次数,在某些情况下可能收敛到局部最优解。 2. GDOP准则和MMI准则都是基于一些假设条件推导得到的,在实际复杂环境下可能存在一定的局限性。 3. 设备布设优化属于组合优化问题,求解难度较大,启发式搜索算法的全局收敛性难以严格保证。
推广: 1. 可以引入更加鲁棒的估计准则,如Huber准则、Hampel准则等,进一步提高模型的抗干扰能力。 2. 可以综合多种优化准则,如融合GDOP、MMI、测量误差统计特性等信息,构建多目标优化模型,得到更加全面合理的布设方案。 3. 可以结合模型预测控制、序贯优化等方法,实现监测设备布设的动态在线调整,适应残骸落区的变化。 4. 可以考虑测量误差的时空相关性,引入时空统计模型,如克里金插值、高斯过程回归等,提高定位精度。
更新完整代码和成品完整论文
《2024深圳杯&东三省数学建模思路代码成品论文》↓↓↓(浏览器打开)
https://www.yuque.com/u42168770/qv6z0d/zx70edxvbv7rheu7?singleDoc#