2024年五一赛数学建模C题(物流网络分拣)助攻论文&支撑材料.doc

本博客下载链接包含修改的word版本, 可免费下载阅览学习, 也可作为数学建模相关课程作业修改上交:

链接:https://pan.baidu.com/s/1HxzDk3q0p6y2xpuJyxPgvw?pwd=qtnc

提取码:qtnc

       尽管近年来煤矿安全形势有所改善,但随着煤炭开采向深部推进,冲击地压风险仍显著上升,特别是冲击地压已成为威胁煤矿安全生产的关键因素,因此监测声发射和电磁辐射信号,以识别和预测冲击地压前兆特征,对提前预警和防控冲击地压具有重要意义。本文通过对冲压地压信号进行时频域特征进行提取并建立决策树、LSTM模型完成了对冲压地压危险信号的识别和预测。

       针对问题1,本文首先筛选附件1的干扰信号,并进行可视化。然后提取干扰信号的时域特征:均值、方差、峰度和脉冲计数,频域指标:频谱能量、主要频谱成分、频谱峰值和谱密度,然后采取滑动窗口分别提取附件2中3个时间段的时频域特征,窗口大小为50。最后建立干扰信号识别模型,设置误差率为0.1,找到相似度与附件1中干扰信号较高的信号识别为干扰信号。

       针对问题2,首先采用滑动窗口特征提取,对附件1当中的两种信号数据的前兆特征数据(B类),采取滑动窗口进行时频域特征的提取构成训练集并进行可视化,窗口大小为50,步长为20,对附件2数据同样采取特征提取构成测试集。然后基于附件1和附件2构建好模型需要的训练集和测试集数据,接下来进行随机样本过采样和数据标准化,然后选取决策树模型进行分类预测,结果是EMR分类准确率为99.35%,精确率为0.99,召回率为1,F1分数为0.99,AUC为0.99;AE分类准确率为98.43%,精确率为0.97,召回率为1,F1分数为0.98,AUC为0.98。最后给出了决策树模型的混淆矩阵、ROC曲线以及结构图。

       针对问题3,首先针对附件3的10个时间段的数据进行小波变换降噪,然后进行滑动窗口均值化处理,窗口大小为50,步长为1,接着建立10个LSTM模型分别预测10个时间段未来,100个时间戳上的信号数据,然后针对预测得出的10组数据利用问题2相同的方法提取特征并做差分后代入问题2训练好的决策树模型进行预测,然后将未来100个时间戳的识别为前兆信号的概率取平均最后得到结果:EMR信号5个时间段的最后发生前兆信号的概率分别为0.1667、0.7140、0.5992、0.8571、0.7495;AE信号5个时间段的最后发生前兆信号的概率分别为0.1667、0.2854、0.6、0.1429、0.4995。

       最后,对模型进行优缺点评价和推广,本文建立的模型可以为煤矿开采的冲压地压检测工作提供量化保障。

关键词: 冲击地压;滑动窗口;特征提取;决策树;LSTM

问题重述

问题1:如图1,已知现场工作面的部分电磁辐射和声发射信号中存在大量干扰信号,有可能是工作面的其他作业或设备干扰等因素引起,这对后期的电磁辐射和声发射信号处理造成了一定的影响。应用附件1和2中的数据,完成以下问题。

(1.1) 建立数学模型,对存在干扰的电磁辐射和声发射信号进行分析,分别给出电磁辐射和声发射中的干扰信号数据的特征(不少于3个)。

(1.2) 利用问题(1.1)中得到的特征,建立数学模型,对2022年5月1日-2022年5月30日的电磁辐射和2022年4月1日-2022年5月30日及2022年10月10日-2022年11月10日声发射信号中的干扰信号所在的时间区间进行识别,分别给出电磁辐射和声发射最早发生的5个干扰信号所在的区间,完成表1和表2。

      这里要求我们对附件1当中的电磁辐射和声发射信号中的干扰信号进行分析,并进行特征提取,首先我们需要筛选出两种信号的干扰信号数据(即类型为C的数据),首先将其可视化大概观察其变化趋势,然后对于信号数据的特征提取方法就比较多了,首先可以考虑进行时域特征提取,相关的特征包括:平均值(反映信号的基本水平)、方差(表征信号的波动程度)、峰峰值(最大值与最小值之差表示信号的振幅范围)、脉冲计数(信号中的脉冲数量用于分析事件发生的频率)、自相关函数(用于分析信号的周期性和重复性)。其次可以考虑进行频域特征提取,相关的特征包括:傅里叶变换(将信号转换到频域,可以得到信号的频谱信息,包括主要频率成分和能量分布)、频谱特征(如主要频率、频谱带宽、频谱峰值等)、谱密度(频谱的能量分布密度)、频率特征(信号的频率成分可以提供关于信号来源或特性的信息)。最后可以考虑进行时频域特征提取:小波变换(用于同时分析信号的时域和频域特征,可以提取信号的局部特征)、短时傅里叶变换(STFT,将信号分成短时段并对每个时段进行傅里叶变换,得到时频域信息)。

       接着, 要求我们对附件2当中的电磁辐射和声发射信号中的干扰信号区间进行识别,并给出最早发生的5个干扰信号所在的区间,这里我们需要基于第一小问提取的特征进行识别,然后对于附件2当中的数据,我们可以选择一个滑动窗口,比如窗口大小为100,那我就以100个数据为1组,以第一小问同样的特征提取方法去计算这1组数据的相同特征,然后将第一小问提取到的特征与计算得到的特征进行对比,如果特征相似度较高则可以判断这1组数据为干扰信号。

clc
clear
close all
load mytreemodel
load DATA3
%%
x=AE1
% 小波变换降噪
level = 5; % 小波分解的层数
wname = 'db4'; % 选择小波基函数
% 对信号进行小波变换
[c, l] = wavedec(x, level, wname);
% 设置阈值,可通过试验确定
sigma = mad(c, 1); % 绝对中位数去噪参数
threshold = sigma * sqrt(2*log(length(x))); % 使用经验阈值估计
% 对小波系数进行软阈值去噪
c_denoised = wthresh(c, 's', threshold);
% 重构信号
x_denoised = waverec(c_denoised, l, wname);
% 绘图比较
figure;
subplot(2,1,1);
plot( x);
title('原始信号');
xlabel('时间');
ylabel('幅度');
subplot(2,1,2);
plot(x_denoised);
title('降噪后信号');
xlabel('时间');
ylabel('幅度');
%% LSTM时间序列预测EMR未来50个时间点的信号
% 原始数据
data = x_denoised; % 5628*1的数据列
window_size = 50;
step_size = 1;
% 计算滑动窗口的数量
num_windows = floor((length(data) - window_size) / step_size) + 1;
 
% 初始化存储均值的向量
mean_values = zeros(num_windows, 1);
 
% 循环计算每个窗口的均值
for i = 1:num_windows
    % 计算当前窗口的起始和结束索引
    start_idx = 1 + (i - 1) * step_size;
    end_idx = start_idx + window_size - 1;
    
    % 获取当前窗口的数据
    window_data = data(start_idx:end_idx);
    
    % 计算当前窗口的均值
    mean_values(i) = mean(window_data);
end
% 输出均值向量
disp(mean_values);
%% 序列的前485个用于训练,后10个用于验证神经网络,然后往后预测10个数据。
data=mean_values
dataTrain = data(1:5400)';    %定义训练集
dataTest = data(5401:end)';    %该数据是用来在最后与预测值进行对比的
%% 数据预处理
mu = mean(dataTrain);    %求均值 
sig = std(dataTrain);      %求均差 
dataTrainStandardized = (dataTrain - mu) / sig;    
%% 输入的每个时间步,LSTM网络学习预测下一个时间步,这里交错一个时间步效果最好。
XTrain = dataTrainStandardized(1:end-1);  
YTrain = dataTrainStandardized(2:end);  
%% 一维特征lstm网络训练
numFeatures = 1;   %特征为一维
numResponses = 1;  %输出也是一维
numHiddenUnits = 200;   %创建LSTM回归网络,指定LSTM层的隐含单元个数200。可调
 
layers = [ ...
    sequenceInputLayer(numFeatures)    %输入层
    lstmLayer(numHiddenUnits)  % lstm层,如果是构建多层的LSTM模型,可以修改。
    fullyConnectedLayer(numResponses)    %为全连接层,是输出的维数。
    regressionLayer];      %其计算回归问题的半均方误差模块 。即说明这不是在进行分类问题。
 
%指定训练选项,求解器设置为adam, 1000轮训练。
%梯度阈值设置为 1。指定初始学习率 0.01,在 125 轮训练后通过乘以因子 0.2 来降低学习率。
options = trainingOptions('adam', ...
    'MaxEpochs',100, ...
    'GradientThreshold',1, ...
    'InitialLearnRate',0.01, ...      
    'LearnRateSchedule','piecewise', ...%每当经过一定数量的时期时,学习率就会乘以一个系数。
    'LearnRateDropPeriod',400, ...      %乘法之间的纪元数由“ LearnRateDropPeriod”控制。可调
    'LearnRateDropFactor',0.15, ...      %乘法因子由参“ LearnRateDropFactor”控制,可调
    'Verbose',0,  ...  %如果将其设置为true,则有关训练进度的信息将被打印到命令窗口中。默认值为true。
    'Plots','training-progress');    %构建曲线图 将'training-progress'替换为none
net = trainNetwork(XTrain,YTrain,layers,options); 
net = predictAndUpdateState(net,XTrain);  %将新的XTrain数据用在网络上进行初始化网络状态
[net,YPred] = predictAndUpdateState(net,YTrain(end));  %用训练的最后一步来进行预测第一个预测值,给定一个初始值。这是用预测值更新网络状态特有的。
%% 进行用于验证神经网络的数据预测(用预测值更新网络状态)
mm=100
nn=length(mean_values)-5400
for i = 2:mm+nn  %从第二步开始,这里进行20次单步预测(10为用于验证的预测值,10为往后预测的值。一共20个)
    [net,YPred(:,i)] = predictAndUpdateState(net,YPred(:,i-1),'ExecutionEnvironment','cpu');  %predictAndUpdateState函数是一次预测一个值并更新网络状态
end
%% 验证神经网络
YPred1 = sig*YPred + mu;      %使用先前计算的参数对预测去标准化。
rmse = sqrt(mean((YPred1(1:nn)-dataTest).^2)) ;     %计算均方根误差 (RMSE)。
subplot(2,1,1)
plot(data(1:end))   %先画出前面485个数据,是训练数据。
hold on
idx = length(mean_values):(length(mean_values)-1+mm+nn);   %为横坐标
plot(idx,YPred1(1:mm+nn),'.-')  %显示预测值
hold off
xlabel("Time")
ylabel("Case")
title("Forecast")
legend(["Observed" "Forecast"])
subplot(2,1,2)
plot(data)
xlabel("Time")
ylabel("Case")
title("Dataset")
results_AE1=YPred1

问题2:已知在发生冲击地压危险前约7天内,电磁辐射和声发射信号存在随时间循环增大的趋势(如图2所示),这类信号我们称为前兆特征信号。在出现前兆特征信号之后的约7天内,有可能发生冲击地压,所以一般情况下出现前兆特征信号之后,会采取一定措施尽可能的防止冲击地压发生。应用附件1和2中的数据,完成以下问题。

(2.1) 建立数学模型,对电磁辐射和声发射信号中的前兆特征信号进行分析,重点分析信号的变化趋势,分别给出电磁辐射和声发射信号危险发生前(前兆特征)数据的趋势特征(不少于3个)。

(2.2) 利用问题(2.1)中得到的特征,建立数学模型,对2020年4月8日-2020年6月8日及2021年11月20日-2021年12月20日的电磁辐射和2021年11月1日-2022年1月15日声发射信号中的前兆特征所在的时间区间进行识别,分别给出电磁辐射和声发射信号最早发生的5个前兆特征信号所在的时间区间,完成表3和表4。

      这一问要求我们基于附件1分析两种信号前兆特征信号的趋势特征,这里可以考虑使用和问题1当中相同的特征提取方法,只不过这里我们需要分区间提取,因为既然要看出趋势变化,那么我们就需要观察每个区间段内的特征变化,比如我以100个数据为一组即窗口大小为100,那么我每隔100个数据计算一次特征,然后观察这计算完成后的特征变化情况就可以。

      接着, 需要我们基于2.1小问的特征进行前兆特征所在区间的识别,我们可以基于2.1小问提取的特征数据构建训练集数据,然后通过机器学习或者深度学习模型进行识别,例如随机森林、决策树、SVM、LSTM、CNN等。比如我们基于附件1当中的前兆特征数据我每隔100组数据计算了四个不同的特征,然后将这个特征作为X,然后将这些数据标记为1,其余的不是前兆特征数据我同样每隔100组计算四个不同特征,将这些数据标记为0,这样我就构建了一个训练集,对于附件2当中的数据我采用同样的处理方法构建一个测试集,只需要根据附件1当中训练后的模型去预测附件2的数据即可,如果预测为1则为前兆特征,反之不是前兆特征。

问题3:为了尽早的识别前兆特征信号,在前兆特征信号出现的第一时间发出预警,需要在每次数据采集的时刻对危险进行预判。附件3给出了一些非连续时间段采集的电磁辐射和声发射信号数据。请建立数学模型,给出附件3中的每个时间段最后时刻出现前兆特征数据的概率,完成表5。

      本问其实就不是一个识别问题而是一个预测问题了,这里我们可以考虑使用一些常见的预测模型去预测未来时刻的两种信号大小,然后根据问题2相同的特征去识别未来时刻信号的类型,因为最后要输出一个概率所以这里最后一步的识别可以考虑使用朴素贝叶斯、逻辑回归、线性判别等模型。

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值