基于优化模型的多个火箭残骸的准确定位
【无水印可视化结果】2024深圳杯数学建模A题22页成品论文+4小问代码全解析https://www.jdmm.cc/file/2710565
无水印可视化结果图
在现代航天技术中,火箭是实现空间探索的关键工具。由于火箭发射过程中的高成本和复杂性,对火箭残骸的回收与重用变得越来越重要。本文将基于题目给出数据构建优化模型对火箭残骸进行准确定位。
问题一,单个残骸音爆定位分析。首先需要将设备的地理坐标(经度、纬度)转换为一个更适合计算的坐标系统,残骸发生音爆的位置(x,y,z) 和时间t,使用多边测量技术建立方程组。为了提高计算精度构建一个优化模型进行求解,以预测时间和实际时间差的平方和为目标函数。应用 BFGS 方法进行最小化,找到最小化 objective_function 的变量值,这些值代表了音爆源的最佳估计位置和时间。
mtlab+py双版本代码
问题二、三,多残骸音爆的监测和定位,确定每个监测设备接收到的不同音爆数据属于哪个具体的残骸。涉及到了最优值的求解,属于优化模型。建立一个数学模型来解决多源定位问题。设置一个优化问题,以确定该残骸的位置和音爆时间。目标是最小化预测的音爆抵达时间和实际记录时间之间的误差。以时间差约束、速度约束、高度约束、声速随高度变化、考虑风速和风向的影响作为约束条件,使用非线性最优化方法差分进化进行求解。通过三维可视化验证了模型的有效性,并展示了监测设备和残骸的空间分布。
问题四,误差修正和精准定位,考虑到设备记录时间可能存在高达0.5秒的随机误差。首先,为每个设备记录的时间添加一个随机误差,模拟实际条件中可能的测量不准确性。这个误差可以通过添加一个均值为0,标准差为0.5秒的高斯(正态)噪声来模拟。优化目标函数为计算了预测的音爆抵达时间和观测时间之间的加权平方差之和。模型生成的结果通过三维可视化和时间分析进行了展示和验证,表明模型能够在存在随机测量误差时有效地估计残骸位置。
整体而言,通过建立数学模型并利用差分进化算法的全局优化能力,解决了复杂的火箭残骸定位问题,即便在存在测量误差的挑战下也能给出准确的位置估计。这为类似问题提供了一个强大的求解框架和验证方法。
关键词优化模型,火箭残骸准确定位,坐标转化,模型修正
成品论文:
- 问题分析
- 问题一分析
对于问题一,单个残骸定位问题,首先需要将设备的地理坐标(经度、纬度)转换为一个更适合计算的坐标系统,如笛卡尔坐标系。残骸发生音爆的位置(x,y,z) 和时间t。给定7台设备的三维坐标和音爆抵达时间,可以使用多边测量技术建立以下方程组,对建立的模型进行求解即可。
-
- 问题二三分析
对于问题二三,多个残骸定位问题,确定每个监测设备接收到的不同音爆数据属于哪个具体的残骸。此外,还需要确定这些残骸的精确位置和音爆时间。涉及到了最优值的求解,属于优化模型。建立一个数学模型来解决多源定位问题。可以设置一个优化问题,目标是最小化预测的音爆位置和实际接收时间之间的误差。这可能涉及到非线性最优化或者迭代重定位技术。
将设备的经纬度坐标转换为笛卡尔坐标系统,以便进行空间计算。由于每个设备记录了多个音爆时间,需要首先确定哪些时间点是由同一个残骸引起的。这可以通过比较不同设备间音爆抵达时间的相对差异来实现。例如,如果两个设备对同一残骸的音爆抵达时间的差异与它们之间的距离和声速计算得出的传播时间差匹配,则可以假定它们是由同一音爆引起的。对于每组关联的音爆时间(即认为来自同一残骸的音爆时间),设置一个优化问题,以确定该残骸的位置和音爆时间。目标是最小化预测的音爆抵达时间和实际记录时间之间的误差。
使用非线性最优化方法(如梯度下降、牛顿法等)求解每个残骸的位置和音爆时间。考虑到问题的非线性和多解性,可能需要适当的初始值和约束来确保收敛到合理的解。
-
- 问题四分析
对于问题四,首先,为每个设备记录的时间添加一个随机误差,模拟实际条件中可能的测量不准确性。这个误差可以通过添加一个均值为0,标准差为0.5秒的高斯(正态)噪声来模拟。对于包含随机误差的数据,需要使用一种更加健壮的定位技术,比如加权最小二乘法(WLS),其中权重可以是与设备的测量精度相关的逆方差。利用改进后的模型进行参数优化,求解残骸的位置和时间。由于噪声的引入,可能需要更多的迭代次数或更高级的优化算法以确保找到全局最优解。
模型假设
为了方便模型的建立与模型的可行性,这里首先对模型提出一些假设,使得模型更加完备,预测的结果更加合理。
- 假设给出的数据均为真实数据,真实有效。
- 假设给出的脱敏数据没有造成数据的损坏。
3.震动波的传播速度为340 m/s。
4.计算两点间距离时可忽略地面曲率纬度间每度距离值近似为111.263 km,经度间每度距离值近似为97.304 km。
为了方便模型的建立与求解过程 ,这里对使用到的关键符号进行以下说明
符号 | 符号说明 |
简单相关系数 | |
偏相关系数 | |
第i个评价对象 | |
第j个指标的样本均值 | |
第j个指标的样本标准差 | |
特征值 | |
累积贡献率 | |
表示第i个样本第j个指标的数据 | |
原始样本数据 | |
原始样本数据的最小值 | |
样本数据的最大值 |
(注这里只列出论文各部分通用符号,个别模型单独使用的符号在首次引用时会进行说明。)
% Define device data
device_data_viz = struct('A', struct('lon', 110.241, 'lat', 27.204, 'alt', 824, 'times', [100.767, 164.229, 214.850, 270.065]), ...
'B', struct('lon', 110.783, 'lat', 27.456, 'alt', 727, 'times', [92.453, 112.220, 169.362, 196.583]), ...
'C', struct('lon', 110.762, 'lat', 27.785, 'alt', 742, 'times', [75.560, 110.696, 156.936, 188.020]), ...
'D', struct('lon', 110.251, 'lat', 28.025, 'alt', 850, 'times', [94.653, 141.409, 196.517, 258.985]), ...
'E', struct('lon', 110.524, 'lat', 27.617, 'alt', 786, 'times', [78.600, 86.216, 118.443, 126.669]), ...
'F', struct('lon', 110.467, 'lat', 28.081, 'alt', 678, 'times', [67.274, 166.270, 175.482, 266.871]), ...
'G', struct('lon', 110.047, 'lat', 27.521, 'alt', 575, 'times', [103.738, 163.024, 206.789, 210.306]));
% Open new figure
figure;
hold on;
grid on;
% Colors and markers for each device
colors = {'blue', 'green', 'red', 'purple', 'orange', 'brown', 'pink'};
markers = {'o', 's', '^', 'd', 'x', '+', '*'};
% Plot each device location and shockwave arrival time
devices = fieldnames(device_data_viz);
for i = 1:numel(devices)
device = devices{i};
data = device_data_viz.(device);
scatter(data.lon, data.lat, 80, 'filled', 'Marker', markers{i}, 'DisplayName', sprintf('%s', device));
text(data.lon, data.lat, sprintf('%.2fs', data.times), 'VerticalAlignment', 'bottom', 'HorizontalAlignment', 'right');
end
xlabel('Longitude (°)');
ylabel('Latitude (°)');
title('Monitoring Devices and Shockwave Arrival Times');
legend('show');
hold off;
% Define device data
device_data_viz = struct('A', struct('lon', 110.241, 'lat', 27.204, 'alt', 824, 'times', [100.767, 164.229, 214.850, 270.065]), ...
'B', struct('lon', 110.783, 'lat', 27.456, 'alt', 727, 'times', [92.453, 112.220, 169.362, 196.583]), ...
'C', struct('lon', 110.762, 'lat', 27.785, 'alt', 742, 'times', [75.560, 110.696, 156.936, 188.020]), ...
'D', struct('lon', 110.251, 'lat', 28.025, 'alt', 850, 'times', [94.653, 141.409, 196.517, 258.985]), ...
'E', struct('lon', 110.524, 'lat', 27.617, 'alt', 786, 'times', [78.600, 86.216, 118.443, 126.669]), ...
'F', struct('lon', 110.467, 'lat', 28.081, 'alt', 678, 'times', [67.274, 166.270, 175.482, 266.871]), ...
'G', struct('lon', 110.047, 'lat', 27.521, 'alt', 575, 'times', [103.738, 163.024, 206.789, 210.306]));
% Open new figure
figure;
hold on;
grid on;
% Colors and markers for each device
colors = {'blue', 'green', 'red', 'purple', 'orange', 'brown', 'pink'};
markers = {'o', 's', '^', 'd', 'x', '+', '*'};
% Plot each device location and shockwave arrival time
devices = fieldnames(device_data_viz);
for i = 1:numel(devices)
device = devices{i};
data = device_data_viz.(device);
scatter(data.lon, data.lat, 80, 'filled', 'Marker', markers{i}, 'DisplayName', sprintf('%s', device));
text(data.lon, data.lat, sprintf('%.2fs', data.times), 'VerticalAlignment', 'bottom', 'HorizontalAlignment', 'right');
end
xlabel('Longitude (°)');
ylabel('Latitude (°)');
title('Monitoring Devices and Shockwave Arrival Times');
legend('show');
hold off;
% Define a sound speed
sound_speed = 340;
% Plot circles for Device A
figure;
hold on;
grid on;
a_data = device_data_viz.A;
theta = linspace(0, 2*pi, 100);
for i = 1:length(a_data.times)
radius = sound_speed * a_data.times(i);
x = a_data.lon + (radius / 111263) * cos(theta); % Convert meters to degrees roughly
y = a_data.lat + (radius / 111263) * sin(theta);
plot(x, y, 'DisplayName', sprintf('Time %.2fs', a_data.times(i)));
end
scatter(a_data.lon, a_data.lat, 'filled');
xlabel('Longitude (degrees)');
ylabel('Latitude (degrees)');
title('Sound Propagation from Device A');
legend('show');
hold off;
5.1 问题一模型的建立与求解
5.1.1 数据分析
为了更加直观地展示原始位置,利用python以及题目给出的数据,绘制了可视化如下所示
表1问题一给出数据
设备 | 经度(°) | 纬度(°) | 高程(m) | 音爆抵达时间(s) |
A | 110.241 | 27.204 | 824 | 100.767 |
B | 110.780 | 27.456 | 727 | 112.220 |
C | 110.712 | 27.785 | 742 | 188.020 |
D | 110.251 | 27.825 | 850 | 258.985 |
E | 110.524 | 27.617 | 786 | 118.443 |
F | 110.467 | 27.921 | 678 | 266.871 |
G | 110.047 | 27.121 | 575 | 163.024 |