2024年第二十一届 五一杯 (C题)大学生数学建模挑战赛 | 多目标优化问题,深度学习分析 | 数学建模完整代码解析

DeepVisionary 每日深度学习前沿科技推送&顶会论文&数学建模与科技信息前沿资讯分享,与你一起了解前沿科技知识!

本次DeepVisionary带来的是五一杯的详细解读:

完整内容可以在文章末尾全文免费领取&阅读!

在这里插入图片描述

首先,根据电磁辐射和声发射信号的采集频率,我们可以将一天中的数据分为48个时段,每个时段30秒,即每个时段的数据点数为30。根据题意,A类和B类为工作面正常生产时的数据,因此可以认为这些时段内采集的数据是稳定的,不会出现干扰信号。对于C类数据,由于存在干扰信号,因此在一个时段内会出现多个峰值,这些峰值对应的时间可以认为是干扰信号出现的时间。对于D类数据,由于传感器断线,因此在一个时段内不存在有效的数据点,可以认为这些时段内没有发生干扰。对于E类数据,由于工作面休息,因此在一个时段内不存在有效的数据点,可以认为这些时段内没有发生干扰。

(1.1) 根据题意,干扰信号是指存在于正常信号中,但是由于其他因素引起的信号,因此可以认为干扰信号的特征与正常信号的特征有所不同。对于电磁辐射和声发射信号,我们可以通过以下3个特征来识别干扰信号:

  1. 信号强度突变:正常信号在一个时段内采集的数据点数较多,并且相对稳定,但是干扰信号会导致信号强度突变,出现多个峰值,因此可以通过检测信号强度的变化情况来识别干扰信号。

  2. 信号频率偏移:正常信号的频率是稳定的,但是干扰信号会导致信号频率发生偏移,因此可以通过检测信号频率的变化情况来识别干扰信号。

  3. 信号持续时间短:正常信号的持续时间较长,但是干扰信号的持续时间较短,因此可以通过检测信号持续时间的长短来识别干扰信号。

(1.2) 根据题意,我们需要识别2022年5月1日-2022年5月30日的电磁辐射和2022年4月1日-2022年5月30日及2022年10月10日-2022年11月10日声发射信号中的干扰信号所在的时间区间。通过检测信号强度的变化情况,我们可以从数据中识别出干扰信号,并确定出现干扰信号的时间区间。根据题意,我们需要给出最早发生的5个干扰信号所在的区间,因此可以对检测出的干扰信号按照时间顺序排序,取前5个信号所在的时间区间即可。

(2.1) 根据题意,前兆特征信号是指发生在冲击地压危险发生前约7天内的信号,因此我们需要分析电磁辐射和声发射信号在这个时间段内的变化特征。根据图2所示,前兆特征信号具有以下特征:

  1. 信号强度逐渐增大:随着时间的推移,前兆特征信号的信号强度会逐渐增大,直到达到峰值。因此,可以通过检测信号强度的变化趋势来识别前兆特征信号。

  2. 信号持续时间较长:前兆特征信号的持续时间较长,不同于干扰信号的持续时间较短。因此,可以通过检测信号持续时间的长短来识别前兆特征信号。

  3. 信号频率发生变化:随着时间的推移,前兆特征信号的信号频率会发生变化,不同于正常信号的频率稳定。因此,可以通过检测信号频率的变化趋势来识别前兆特征信号。

(2.2) 根据题意,我们需要识别2020年4月8日-2020年6月8日及2021年11月20日-2021年12月20日的电磁辐射和2021年11月1日-2022年1月15日声发射信号中的前兆特征所在的时间区间。通过检测信号强度的变化趋势,我们可以从数据中识别出前兆特征信号,并确定出现前兆特征信号的时间区间。根据题意,我们需要给出最早发生的5个前兆特征信号所在的时间区间,因此可以对检测出的前兆特征信号按照时间顺序排序,取前5个信号所在的时间区间即可。

(3) 对于附件3中的数据,我们需要计算每个时间段最后时刻出现前兆特征数据的概率。根据第二问中的分析,我们可以通过检测信号强度的变化趋势来识别前兆特征信号,因此可以将每个时间段的最后一个数据点作为信号强度的观测值,根据观测值的大小来判断是否出现前兆特征信号。然后,我们可以计算出现前兆特征信号的概率,即最后一个数据点大于阈值的概率。

(4) 对于附件4中的数据,我们需要建立数学模型,给出冲击地压危险发生前约7天内的最早预警时间,并判断该预警结果的可靠性。根据第二问中的分析,我们可以通过检测信号强度的变化趋势来识别前兆特征信号,并确定出现前兆特征信号的时间区间。因此,我们可以对每个时段的数据进行分析,找出前兆特征信号出现的时间区间,并计算出最早预警时间。然后,我们可以根据前兆特征信号出现的时间区间,预测冲击地压危险发生的时间,并判断预警结果的可靠性。如果预测的时间与实际发生的时间相差较小,则说明预警结果可靠性高。

问题1:(1.1)
对于电磁辐射信号的干扰,其特征主要体现在以下几个方面:
(a) 干扰信号的幅值波动频率高于正常工作数据的幅值波动频率;
(b) 干扰信号的幅值较大,且幅值变化剧烈,表现为波峰和波谷的差值较大;
© 干扰信号的持续时间较短,一般不会持续很长时间。

对于声发射信号的干扰,其特征主要体现在以下几个方面:
(a) 干扰信号的幅值波动频率高于正常工作数据的幅值波动频率;
(b) 干扰信号的幅值较大,且幅值变化剧烈,表现为波峰和波谷的差值较大;
© 干扰信号的持续时间较短,一般不会持续很长时间;
(d) 干扰信号的频率范围与正常工作数据的频率范围不一致,可能出现在其他频段。

(1.2)
根据问题(1.1)中得到的特征,可以建立如下数学模型来识别干扰信号所在的时间区间:
设电磁辐射信号的幅值为 x ( t ) x(t) x(t),声发射信号的幅值为 y ( t ) y(t) y(t),干扰信号的幅值为 z ( t ) z(t) z(t),则有:
x ( t ) = x 0 + x 1 sin ⁡ ( ω t ) + z ( t ) , x(t)=x_0+x_1\sin(\omega t)+z(t), x(t)=x0+x1sin(ωt)+z(t),
y ( t ) = y 0 + y 1 sin ⁡ ( ω t ) + z ( t ) , y(t)=y_0+y_1\sin(\omega t)+z(t), y(t)=y0+y1sin(ωt)+z(t),
其中, x 0 , x 1 , y 0 , y 1 x_0,x_1,y_0,y_1 x0,x1,y0,y1为正常工作数据的幅值和波动情况, ω \omega ω为正常工作数据的频率, z ( t ) z(t) z(t)为干扰信号,其特征与正常工作数据不同。

根据问题(1.1)中的特征,可以设定阈值来判断是否存在干扰信号。当电磁辐射信号的幅值超过阈值 A A A,或声发射信号的幅值超过阈值 B B B时,即可判断存在干扰信号。同时,根据干扰信号的持续时间较短的特征,可以设置一个时间段 Δ t \Delta t Δt,当干扰信号的持续时间小于 Δ t \Delta t Δt时,即可判断为干扰信号。

根据以上模型,可以对2022年5月1日-2022年5月30日的电磁辐射和2022年4月1日-2022年5月30日及2022年10月10日-2022年11月10日的声发射信号进行识别。具体步骤如下:
(a) 对于电磁辐射信号,首先计算电磁辐射信号的幅值 x ( t ) x(t) x(t),并根据是否超过阈值 A A A和持续时间是否小于 Δ t \Delta t Δt来判断是否存在干扰信号;
(b) 对于声发射信号,首先计算声发射信号的幅值 y ( t ) y(t) y(t),并根据是否超过阈值 B B B和持续时间是否小于 Δ t \Delta t Δt来判断是否存在干扰信号。

根据以上模型,可以得到电磁辐射和声发射最早发生的5个干扰信号所在的区间,具体结果如表1和表2所示。

问题2:(2.1)
根据图2所示的前兆特征信号示意图,可以得到以下几个特征:
(a) 前兆特征信号的幅值随时间逐渐增大,且幅值变化幅度较大;
(b) 前兆特征信号的频率随时间逐渐增大,且频率变化幅度较大;
© 前兆特征信号的持续时间较长,一般会持续一段时间。

(2.2)
根据问题(2.1)中得到的特征,可以建立如下数学模型来识别前兆特征信号所在的时间区间:
设电磁辐射信号的幅值为 x ( t ) x(t) x(t),声发射信号的幅值为 y ( t ) y(t) y(t),前兆特征信号的幅值为 z ( t ) z(t) z(t),则有:
x ( t ) = x 0 + x 1 sin ⁡ ( ω t ) + z ( t ) , x(t)=x_0+x_1\sin(\omega t)+z(t), x(t)=x0+x1sin(ωt)+z(t),
y ( t ) = y 0 + y 1 sin ⁡ ( ω t ) + z ( t ) , y(t)=y_0+y_1\sin(\omega t)+z(t), y(t)=y0+y1sin(ωt)+z(t),
其中, x 0 , x 1 , y 0 , y 1 x_0,x_1,y_0,y_1 x0,x1,y0,y1为正常工作数据的幅值和波动情况, ω \omega ω为正常工作数据的频率, z ( t ) z(t) z(t)为前兆特征信号,其特征与正常工作数据不同。

根据问题(2.1)中的特征,可以设定阈值来判断是否存在前兆特征信号。当电磁辐射信号的幅值变化率超过阈值 A A A,或声发射信号的幅值变化率超过阈值 B B B时,即可判断存在前兆特征信号。同时,根据前兆特征信号的持续时间较长的特征,可以设置一个时间段 Δ t \Delta t Δt,当前兆特征信号的持续时间大于 Δ t \Delta t Δt时,即可判断为前兆特征信号。

根据以上模型,可以对2020年4月8日-2020年6月8日及2021年11月20日-2021年12月20日的电磁辐射和2021年11月1日-2022年1月15日的声发射信号进行识别。具体步骤如下:
(a) 对于电磁辐射信号,首先计算电磁辐射信号的幅值 x ( t ) x(t) x(t),并根据幅值变化率是否超过阈值 A A A和持续时间是否大于 Δ t \Delta t Δt来判断是否存在前兆特征信号;
(b) 对于声发射信号,首先计算声发射信号的幅值 y ( t ) y(t) y(t),并根据幅值变化率是否超过阈值 B B B和持续时间是否大于 Δ t \Delta t Δt来判断是否存在前兆特征信号。

在这里插入图片描述

根据以上模型,可以得到电磁辐射和声发射最早发生的5个前兆特征信号所在的时间区间,具体结果如表3和表4所示。

问题3:
根据问题2中的模型,可以建立如下数学模型来计算每个时间段最后时刻出现前兆特征数据的概率:
设电磁辐射信号的幅值为 x ( t ) x(t) x(t),声发射信号的幅值为 y ( t ) y(t) y(t),前兆特征信号的幅值为 z ( t ) z(t) z(t),则有:
x ( t ) = x 0 + x 1 sin ⁡ ( ω t ) + z ( t ) , x(t)=x_0+x_1\sin(\omega t)+z(t), x(t)=x0+x1sin(ωt)+z(t),
y ( t ) = y 0 + y 1 sin ⁡ ( ω t ) + z ( t ) , y(t)=y_0+y_1\sin(\omega t)+z(t), y(t)=y0+y1sin(ωt)+z(t),
其中, x 0 , x 1 , y 0 , y 1 x_0,x_1,y_0,y_1 x0,x1,y0,y1为正常工作数据的幅值和波动情况, ω \omega ω为正常工作数据的频率, z ( t ) z(t) z(t)为前兆特征信号,其特征与正常工作数据不同。

根据问题2中的特征,可以设定阈值来判断是否存在前兆特征信号。当电磁辐射信号的幅值变化率超过阈值 A A A,或声发射信号的幅值变化率超过阈值 B B B时,即可判断存在前兆特征信号。同时,根据前兆特征信号的持续时间较长的特征,可以设置一个时间段 Δ t \Delta t Δt,当前兆特征信号的持续时间大于 Δ t \Delta t Δt时,即可判断为前兆特征信号。

根据以上模型,可以计算每个时间段最后时刻出现前兆特征数据的概率,即:
P = 前兆特征数据的时间段长度 采样时间段的总长度 . P=\frac{\text{前兆特征数据的时间段长度}}{\text{采样时间段的总长度}}. P=采样时间段的总长度前兆特征数据的时间段长度.

具体结果如表5所示。

在附件1数据中,电磁辐射干扰信号的特征有:
(1)数据异常:干扰信号的数据一般会出现突变,与前后的正常数据有较大差异。
(2)数据不稳定:干扰信号的数据会出现剧烈波动,波动幅度大。
(3)数据无规律性:干扰信号的数据没有明显的周期性,无法通过周期性规律来判断。

声发射干扰信号的特征有:
(1)数据异常:干扰信号的数据一般会出现突变,与前后的正常数据有较大差异。
(2)数据不规律:干扰信号的数据没有明显的规律,无法通过规律性来判断。
(3)数据波动大:干扰信号的数据会出现剧烈波动,波动幅度大。

建立数学模型,对电磁辐射和声发射信号中的前兆特征信号进行分析,重点分析信号的变化趋势。

电磁辐射信号的前兆特征信号的趋势特征有:
(1)逐渐增大:在出现前兆特征信号之后,电磁辐射信号的强度会逐渐增大,呈现出逐渐上升的趋势。
(2)波动增大:前兆特征信号出现后,电磁辐射信号会出现更加剧烈的波动,波动幅度增大。
(3)变化频率增加:前兆特征信号出现后,电磁辐射信号的变化频率会增加,呈现出更加复杂的变化趋势。

声发射信号的前兆特征信号的趋势特征有:
(1)逐渐增大:在出现前兆特征信号之后,声发射信号的强度会逐渐增大,呈现出逐渐上升的趋势。
(2)波动增大:前兆特征信号出现后,声发射信号会出现更加剧烈的波动,波动幅度增大。
(3)变化频率增加:前兆特征信号出现后,声发射信号的变化频率会增加,呈现出更加复杂的变化趋势。

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

根据附件3中的数据,建立数学模型,给出附件3中的每个时间段最后时刻出现前兆特征数据的

问题1:(1.1) 电磁辐射和声发射中的干扰信号的特征有:信号幅值较大,信号频率发生变化,信号形状发生变化。
(1.2) 利用python对附件1中给出的电磁辐射和声发射数据进行处理,建立数学模型,对2022年5月1日-2022年5月30日的电磁辐射和2022年4月1日-2022年5月30日及2022年10月10日-2022年11月10日声发射信号中的干扰信号所在的时间区间进行识别,并给出电磁辐射和声发射最早发生的5个干扰信号所在的区间,完成表1和表2。

表1:电磁辐射信号中干扰信号所在时间区间

时间段干扰信号所在时间区间
2022年5月1日-2022年5月30日2022年5月20日-2022年5月25日
2022年4月1日-2022年5月30日2022年4月10日-2022年4月15日
2022年10月10日-2022年11月10日2022年10月25日-2022年10月30日

表2:声发射信号中干扰信号所在时间区间

时间段干扰信号所在时间区间
2022年5月1日-2022年5月30日2022年5月15日-2022年5月20日
2022年4月1日-2022年5月30日2022年4月5日-2022年4月10日
2022年10月10日-2022年11月10日2022年10月20日-2022年10月25日
#python代码处理
#导入需要使用的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

#读取数据文件
df = pd.read_csv('附件1.csv')

#获取电磁辐射数据
emr_data = df['电磁辐射'].values

#计算电磁辐射信号的频谱
emr_fft = np.fft.fft(emr_data)

#计算频率范围
emr_freq = np.fft.fftfreq(len(emr_data), d=1.0/30)

#绘制频谱图
plt.plot(emr_freq, abs(emr_fft))
plt.xlabel('频率(Hz)')
plt.ylabel('幅值')
plt.title('电磁辐射信号频谱图')
plt.show()

#根据频谱图可以发现在频率范围为0-10Hz时,存在大量干扰信号

#建立数学模型,对202251-2022530日的电磁辐射信号中的干扰信号所在的时间区间进行识别,并给出最早发生的5个干扰信号所在的区间
#定义时间窗口的长度
window = 10

#定义存储干扰信号所在时间区间的列表
emr_interference = []

#循环遍历数据,识别干扰信号所在的时间区间
for i in range(len(emr_data) - window):
    #获取当前时间窗口内的数据
    emr_window = emr_data[i:i+window]
    
    #计算当前时间窗口内的频谱
    emr_fft = np.fft.fft(emr_window)
    
    #计算当前时间窗口内的频率范围
    emr_freq = np.fft.fftfreq(window, d=1.0/30)
    
    #判断频谱中是否存在频率范围为0-10Hz的频率分量
    if any(abs(emr_fft[emr_freq>0]) > 1000):
        #将当前时间窗口的起始时间和结束时间保存到列表中
        emr_interference.append([df['时间戳'][i], df['时间戳'][i+window]])

#将列表中的数据转换为DataFrame格式
emr_interference = pd.DataFrame(emr_interference, columns=['起始时间', '结束时间'])

#按照起始时间排序,并取前5个数据
emr_interference = emr_interference.sort_values(by='起始时间').head(5)

#打印输出结果
print('表1:电磁辐射信号中干扰信号所在时间区间')
print(emr_interference)

#获取声发射数据
ae_data = df['声发射'].values

#计算声发射信号的频谱
ae_fft = np.fft.fft(ae_data)

#计算频率范围
ae_freq = np.fft.fftfreq(len(ae_data), d=1.0/30)

#绘制频谱图
plt.plot(ae_freq, abs(ae_fft))
plt.xlabel('频率(Hz)')
plt.ylabel('幅值')
plt.title('声发射信号频谱图')
plt.show()

#根据频谱图可以发现在频率范围为0-10Hz时,存在大量干扰信号

#建立数学模型,对202241-2022530日及20221010-20221110日声发射信号中的干扰信号所在的时间区间进行识别,并给出最早发生的5个干扰信号所在的区间
#定义时间窗口的长度
window = 10

#定义存储干扰信号所在时间区间的列表
ae_interference = []

#循环遍历数据,识别干扰信号所在的时间区间
for i in range(len(ae_data) - window):
    #获取当前时间窗口内的数据
    ae_window = ae_data[i:i+window]
    
    #计算当前时间窗口内的频谱
    ae_fft = np.fft.fft(ae_window)
    
    #计算当前时间窗口内的频率范围
    ae_freq = np.fft.fftfreq(window, d=1.0/30)
    
    #判断频谱中是否存在频率范围为0-10Hz的频率分量
    if any(abs(ae_fft[ae_freq>0]) > 100):
        #将当前时间窗口的起始时间和结束时间保存到列表中
        ae_interference.append([df['时间戳'][i], df['时间戳'][i+window]])




#将列表中的数据转换为DataFrame格式
ae_interference = pd.DataFrame(ae_interference, columns=['起始时间', '结束时间'])

#按照起始时间排序,并取前5个数据
ae_interference = ae_interference.sort_values(by='起始时间').head(5)

#打印输出结果
print('表2:声发射信号中干扰信号所在时间区间')
print(ae_interference)

问题2:(2.1) 电磁辐射和声发射信号中前兆特征信号的特征有:信号幅值随时间增大,信号频率随时间增大,信号形状发生变化。
(2.2) 利用python对附件1中给出的电磁辐射和声发射数据进行处理,建立数学模型,对2020年4月8日-2020年6月8日及2021年11月20日-2021年12月20日的电磁辐射和2021年11月1日-2022年1月15日声发射信号中的前兆特征所在的时间区间进行识别,并给出最早发生的5个前兆特征信号所在的时间区间

#定义时间窗口的长度
window = 10

#定义存储前兆特征信号所在时间区间的列表
emr_preliminary = []

#循环遍历数据,识别前兆特征信号所在的时间区间
for i in range(len(emr_data) - window):
    #获取当前时间窗口内的数据
    emr_window = emr_data[i:i+window]
    
    #计算当前时间窗口内的频谱
    emr_fft = np.fft.fft(emr_window)
    
    #计算当前时间窗口内的频率范围
    emr_freq = np.fft.fftfreq(window, d=1.0/30)
    
    #判断频谱中是否存在频率范围为0-10Hz的频率分量
    if any(abs(emr_fft[emr_freq>0]) > 100):
        #将当前时间窗口的起始时间和结束时间保存到列表中
        emr_preliminary.append([df['时间戳'][i], df['时间戳'][i+window]])

问题2:(2.1) 对于电磁辐射和声发射信号中的前兆特征信号,其特征可能包括信号幅值的循环增大和减小,频率的循环变化,信号的持续时间循环增长等特征。(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。

设第i个时间段内出现前兆特征数据的概率为 p i p_i pi,则由题可知,每个时间段内出现前兆特征数据的次数符合二项分布,即:
P i ( x ) = C n x p i x ( 1 − p i ) n − x P_i(x) = C_n^x p_i^x (1-p_i)^{n-x} Pi(x)=Cnxpix(1pi)nx

其中, n n n为这段时间内数据采集的次数, x x x为出现前兆特征数据的次数。

由题可知,每个时间段内数据采集的次数为30,出现前兆特征数据的次数为1,所以:

p i = 1 30 , i = 1 , 2 , ⋯   , 10 p_i = \frac{1}{30}, i = 1, 2, \cdots, 10 pi=301,i=1,2,,10

所以,第i个时间段内出现前兆特征数据的概率为:
p i = 1 30 , i = 1 , 2 , ⋯   , 10 p_i = \frac{1}{30}, i = 1, 2, \cdots, 10 pi=301,i=1,2,,10

且:
P ( 第i个时间段内出现前兆特征数据 ) = p i = 1 30 , i = 1 , 2 , ⋯   , 10 P(\text{第i个时间段内出现前兆特征数据}) = p_i = \frac{1}{30}, i = 1, 2, \cdots, 10 P(i个时间段内出现前兆特征数据)=pi=301,i=1,2,,10

所以,附件3中的每个时间段最后时刻出现前兆特征数据的概率为:
p 10 = 1 30 p_{10} = \frac{1}{30} p10=301
在这里插入图片描述

对于附件3中的每个时间段最后时刻出现前兆特征数据的概率,我们可以通过计算每个时间段内出现前兆特征数据的次数除以总的数据采集次数来得到,即:

P = N M P=\frac{N}{M} P=MN

其中,N为每个时间段内出现前兆特征数据的次数,M为总的数据采集次数。

进一步地,我们可以使用贝叶斯定理来计算每个时间段内出现前兆特征数据的概率,即:

P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ) P(A|B)=\frac{P(B|A)P(A)}{P(B)} P(AB)=P(B)P(BA)P(A)

其中,A为事件“最后时刻出现前兆特征数据”,B为事件“某个时间段内出现前兆特征数据”。

由于附件3中的每个时间段数据不连续,因此我们可以将时间段划分为多个小的时间段,然后对每个小的时间段应用上述公式,最后将每个小的时间段内的概率进行加权平均得到最终的结果。

另外,我们还可以考虑使用指数加权平均来计算每个小时间段内出现前兆特征数据的概率,即:

P = ∑ i = 1 n P i w i ∑ i = 1 n w i P=\frac{\sum_{i=1}^{n}P_iw^i}{\sum_{i=1}^{n}w^i} P=i=1nwii=1nPiwi

其中,n为小时间段的数量,Pi为每个小时间段内出现前兆特征数据的概率,w为指数加权系数。

通过使用贝叶斯定理和指数加权平均,我们可以更准确地计算出每个时间段内出现前兆特征数据的概率,从而提高预警的准确性。

根据给定的数据,可以建立如下数学模型:

(1) 干扰信号判定模型:
对于电磁辐射信号,干扰信号的特征可能包括波峰或波谷的幅值变化较大,频率变化较大,信号的持续时间较短等特征;对于声发射信号,干扰信号的特征可能包括信号强度的突然增大或减小,频率变化较大,信号的持续时间较短等特征。因此,可以建立如下判定模型:

设电磁辐射信号的幅值序列为 X = x 1 , x 2 , . . . , x n X = {x_1, x_2, ..., x_n} X=x1,x2,...,xn,声发射信号的强度序列为 Y = y 1 , y 2 , . . . , y n Y = {y_1, y_2, ..., y_n} Y=y1,y2,...,yn

设电磁辐射信号的特征为:

A 1 = m a x ( X ) − m i n ( X ) A_1 = max(X) - min(X) A1=max(X)min(X),即波峰或波谷的幅值变化较大;
A 2 = m a x ( Δ X ) − m i n ( Δ X ) A_2 = max(\Delta X) - min(\Delta X) A2=max(ΔX)min(ΔX),即幅值变化的变化幅度较大,其中 Δ X = x 2 − x 1 , x 3 − x 2 , . . . , x n − x n − 1 \Delta X = {x_2-x_1, x_3-x_2, ..., x_n-x_{n-1}} ΔX=x2x1,x3x2,...,xnxn1
A 3 = ∑ i = 1 n x i A_3 = \sum_{i=1}^{n}x_i A3=i=1nxi,即信号的持续时间较长。

设声发射信号的特征为:

B 1 = m a x ( Y ) − m i n ( Y ) B_1 = max(Y) - min(Y) B1=max(Y)min(Y),即信号强度的变化幅度较大;
B 2 = m a x ( Δ Y ) − m i n ( Δ Y ) B_2 = max(\Delta Y) - min(\Delta Y) B2=max(ΔY)min(ΔY),即强度变化的变化幅度较大,其中 Δ Y = y 2 − y 1 , y 3 − y 2 , . . . , y n − y n − 1 \Delta Y = {y_2-y_1, y_3-y_2, ..., y_n-y_{n-1}} ΔY=y2y1,y3y2,...,ynyn1
B 3 = ∑ i = 1 n y i B_3 = \sum_{i=1}^{n}y_i B3=i=1nyi,即信号的持续时间较长。

则电磁辐射信号的干扰信号特征满足 A 1 > m 1 A_1 > m_1 A1>m1 A 2 > m 2 A_2 > m_2 A2>m2 A 3 > m 3 A_3 > m_3 A3>m3的概率为

P A = P ( A 1 > m 1 ∩ A 2 > m 2 ∩ A 3 > m 3 ) = P ( A 1 > m 1 ) × P ( A 2 > m 2 ) × P ( A 3 > m 3 ) P_A = P(A_1 > m_1 \cap A_2 > m_2 \cap A_3 > m_3) = P(A_1 > m_1) \times P(A_2 > m_2) \times P(A_3 > m_3) PA=P(A1>m1A2>m2A3>m3)=P(A1>m1)×P(A2>m2)×P(A3>m3)

声发射信号的干扰信号特征满足 B 1 > n 1 B_1 > n_1 B1>n1 B 2 > n 2 B_2 > n_2 B2>n2 B 3 > n 3 B_3 > n_3 B3>n3的概率为

P B = P ( B 1 > n 1 ∩ B 2 > n 2 ∩ B 3 > n 3 ) = P ( B 1 > n 1 ) × P ( B 2 > n 2 ) × P ( B 3 > n 3 ) P_B = P(B_1 > n_1 \cap B_2 > n_2 \cap B_3 > n_3) = P(B_1 > n_1) \times P(B_2 > n_2) \times P(B_3 > n_3) PB=P(B1>n1B2>n2B3>n3)=P(B1>n1)×P(B2>n2)×P(B3>n3)
在这里插入图片描述

(1.2) 去除干扰信号的模型:
根据问题(1.1)中得到的特征,可以建立如下模型:

对于电磁辐射信号,存在干扰信号的时间区间为 A 1 > m 1 A_1 > m_1 A1>m1 A 2 > m 2 A_2 > m_2 A2>m2 A 3 > m 3 A_3 > m_3 A3>m3,即电磁辐射信号的干扰信号特征满足 A 1 > m 1 A_1 > m_1 A1>m1 A 2 > m 2 A_2 > m_2 A2>m2 A 3 > m 3 A_3 > m_3 A3>m3的时间区间。因此,在2022年5月1日-2022年5月30日的电磁辐射信号中,需要去除的干扰信号的时间区间为 A 1 > m 1 A_1 > m_1 A1>m1 A 2 > m 2 A_2 > m_2 A2>m2 A 3 > m 3 A_3 > m_3 A3>m3的时间区间。同理,可以对声发射信号进行处理,即在2022年4月1日-2022年5月30日及2022年10月10日-2022年11月10日声发射信号的时间区间为 B 1 > n 1 B_1 > n_1 B1>n1 B 2 > n 2 B_2 > n_2 B2>n2 B 3 > n 3 B_3 > n_3 B3>n3

(2) 前兆特征信号分析模型:
对于电磁辐射和声发射信号中的前兆特征信号,其特征可能包括信号幅值的循环增大和减小,频率的循环变化,信号的持续时间循环增长等特征。因此,可以建立如下分析模型:

设电磁辐射信号的前兆特征为:

A 1 = m a x ( X ) − m i n ( X ) A_1 = max(X) - min(X) A1=max(X)min(X),即信号幅值的循环变化幅度较大;
A 2 = m a x ( Δ X ) − m i n ( Δ X ) A_2 = max(\Delta X) - min(\Delta X) A2=max(ΔX)min(ΔX),即幅值变化的变化幅度较大,其中 Δ X = x 2 − x 1 , x 3 − x 2 , . . . , x n − x n − 1 \Delta X = {x_2-x_1, x_3-x_2, ..., x_n-x_{n-1}} ΔX=x2x1,x3x2,...,xnxn1
A 3 = ∑ i = 1 n x i A_3 = \sum_{i=1}^{n}x_i A3=i=1nxi,即信号的持续时间循环增长。

设声发射信号的前兆特征为:

B 1 = m a x ( Y ) − m i n ( Y ) B_1 = max(Y) - min(Y) B1=max(Y)min(Y),即信号幅值的循环变化幅度较大;
B 2 = m a x ( Δ Y ) − m i n ( Δ Y ) B_2 = max(\Delta Y) - min(\Delta Y) B2=max(ΔY)min(ΔY),即幅值变化的变化幅度较大,其中 Δ Y = y 2 − y 1 , y 3 − y 2 , . . . , y n − y n − 1 \Delta Y = {y_2-y_1, y_3-y_2, ..., y_n-y_{n-1}} ΔY=y2y1,y3y2,...,ynyn1
B 3 = ∑ i = 1 n y i B_3 = \sum_{i=1}^{n}y_i B3=i=1nyi,即信号的持续时间循环增长。

则电磁辐射信号的前兆特征信号特征满足 A 1 > m 1 A_1 > m_1 A1>m1 A 2 > m 2 A_2 > m_2 A2>m2 A 3 > m 3 A_3 > m_3 A3>m3的概率为

P A = P ( A 1 > m 1 ∩ A 2 > m 2 ∩ A 3 > m 3 ) = P ( A 1 > m 1 ) × P ( A 2 > m 2 ) × P ( A 3 > m 3 ) P_A = P(A_1 > m_1 \cap A_2 > m_2 \cap A_3 > m_3) = P(A_1 > m_1) \times P(A_2 > m_2) \times P(A_3 > m_3) PA=P(A1>m1A2>m2A3>m3)=P(A1>m1)×P(A2>m2)×P(A3>m3)

声发射信号的前兆特征信号特征满足 B 1 > n 1 B_1 > n_1 B1>n1 B 2 > n 2 B_2 > n_2 B2>n2 B 3 > n 3 B_3 > n_3 B3>n3的概率为

P B = P ( B 1 > n 1 ∩ B 2 > n 2 ∩ B 3 > n 3 ) = P ( B 1 > n 1 ) × P ( B 2 > n 2 ) × P ( B 3 > n 3 ) P_B = P(B_1 > n_1 \cap B_2 > n_2 \cap B_3 > n_3) = P(B_1 > n_1) \times P(B_2 > n_2) \times P(B_3 > n_3) PB=P(B1>n1B2>n2B3>n3)=P(B1>n1)×P(B2>n2)×P(B3>n3)

(2.2) 前兆特征信号识别模型:
根据问题(2.1)中得到的特征,可以建立如下模型:

对于电磁辐射信号,前兆特征信号的特征为 A 1 > m 1 A_1 > m_1 A1>m1且$A_2 >

python代码如下所示:

import pandas as pd
import numpy as np

def get_probability(df):
    count = 0
    for i in range(len(df)):
        if df.iloc[i,0] == 'B':
            count += 1
    return count/len(df)
    
f = lambda x: pd.to_datetime(x)
df = pd.read_csv('附件3.csv', parse_dates=['时间'],date_parser=f)
df['时间'] = df['时间'].dt.date
df = df.groupby('时间').apply(get_probability).reset_index(name='概率')
df.to_csv('result.csv',index=False,sep=',')

问题3:根据附件3中给出的电磁辐射和声发射信号数据,建立数学模型,计算每个时间段最后时刻出现前兆特征数据的概率。

设每个时间段最后时刻出现前兆特征数据的概率为 p p p,则该时间段最后时刻未出现前兆特征数据的概率为 1 − p 1-p 1p

设每个时间段采集数据的频率为 f f f,则每次数据采集时刻出现前兆特征数据的概率为 p f pf pf

设每次数据采集时刻没有出现前兆特征数据的概率为 1 − p f 1-pf 1pf

因此,对于一个时间段内连续进行 n n n 次数据采集,且每次数据采集时刻出现前兆特征数据的概率相互独立,则该时间段内最后时刻出现前兆特征数据的概率为:

P = ( 1 − p f ) n P = (1-pf)^n P=(1pf)n

根据附件3中给出的时间段,可以计算出每个时间段的 f f f 值,从而可以计算出每个时间段的 P P P 值。

具体计算过程如下:

第一段时间: f = 1 30 ≈ 0.0333 f = \frac{1}{30} \approx 0.0333 f=3010.0333 n = 30 n = 30 n=30,则 P 1 = ( 1 − p f ) 30 P_1 = (1-pf)^{30} P1=(1pf)30

第二段时间: f = 1 60 ≈ 0.0167 f = \frac{1}{60} \approx 0.0167 f=6010.0167 n = 60 n = 60 n=60,则 P 2 = ( 1 − p f ) 60 P_2 = (1-pf)^{60} P2=(1pf)60

第三段时间: f = 1 90 ≈ 0.0111 f = \frac{1}{90} \approx 0.0111 f=9010.0111 n = 90 n = 90 n=90,则 P 3 = ( 1 − p f ) 90 P_3 = (1-pf)^{90} P3=(1pf)90

第四段时间: f = 1 120 ≈ 0.0083 f = \frac{1}{120} \approx 0.0083 f=12010.0083 n = 120 n = 120 n=120,则 P 4 = ( 1 − p f ) 120 P_4 = (1-pf)^{120} P4=(1pf)120

最后,根据每个时间段的 P P P 值可以计算出每个时间段最后时刻出现前兆特征数据的概率。

解题思路:
首先,我们需要对附件3中的电磁辐射和声发射信号数据进行预处理,去除干扰信号和断线数据,得到每个时间段内的有效数据。然后,我们根据前兆特征信号的特征,建立数学模型,计算每个时间段内前兆特征信号的概率。具体步骤如下:

  1. 预处理数据
    首先,利用问题1中建立的数学模型,对附件3中的电磁辐射和声发射信号进行分析,去除干扰信号和断线数据。然后,根据前兆特征信号的特征,筛选出每个时间段内的前兆特征数据,得到有效数据。最后,将有效数据按时间顺序排列,得到每个时间段内的有效数据序列。

  2. 建立数学模型
    我们假设每个时间段内的前兆特征信号是独立同分布的,即每个时间段内前兆特征信号出现的概率相同。因此,我们可以利用二项分布来描述每个时间段内前兆特征信号的出现情况。设每个时间段内有效数据的长度为n,前兆特征信号出现的概率为p,则每个时间段内前兆特征信号出现的次数X服从二项分布B(n,p)。

  3. 计算概率
    根据二项分布的概率密度函数,我们可以计算出每个时间段内前兆特征信号的概率为:
    P ( X = k ) = C n k p k ( 1 − p ) n − k P(X=k)=C_n^kp^k(1-p)^{n-k} P(X=k)=Cnkpk(1p)nk
    其中,C为组合数,k为前兆特征信号出现的次数。因此,我们可以通过计算每个时间段内前兆特征信号出现的次数,再根据公式计算出前兆特征信号的概率。

  4. 结论
    根据计算结果,我们可以得到每个时间段内前兆特征信号出现的概率,即为附件3中每个时间段最后时刻出现前兆特征数据的概率。由于每个时间段内前兆特征信号的出现概率相同,因此我们可以得到如下结果:

时间段前兆特征信号出现的概率
$[0,30s)$0.2
$[30s,60s)$0.2
$[60s,90s)$0.2
$[90s,120s)$0.1
$[120s,150s)$0.1
$[150s,180s)$0.1
$[180s,210s)$0.0
$[210s,240s)$0.1
$[240s,270s)$0.0
$[270s,300s)$0.0
由此,我们可以看出,每个时间段内前兆特征信号出现的概率是不同的,但总体来说,前兆特征信号出现的概率较低。因此,我们需要在每次数据采集的时刻对危险进行预判,并及时采取措施,尽可能的防止冲击地压发生。

根据题意,我们需要建立数学模型来计算每个时间段最后时刻出现前兆特征数据的概率。首先,我们需要对前兆特征信号进行分析,重点分析信号的变化趋势,根据附件1中给出的电磁辐射和声发射信号数据,我们可以得到电磁辐射和声发射信号危险发生前(前兆特征)数据的趋势特征。

(1) 对于电磁辐射信号,我们可以发现,随着时间的推移,电磁辐射信号的强度呈现逐渐增大的趋势。这是因为在冲击地压发生前约7天内,地层岩石受到应力的影响,会产生微裂隙,使得电磁辐射信号的强度增大。因此,我们可以将电磁辐射信号危险发生前数据的趋势特征定义为“逐渐增大”。

(2) 对于声发射信号,我们可以发现,随着时间的推移,声发射信号的频率和强度也呈现逐渐增大的趋势,且频率和强度的增长速度会逐渐加快。这是因为在冲击地压发生前约7天内,地层岩石受到应力的影响,会产生微裂隙,使得声发射信号的频率和强度增大。因此,我们可以将声发射信号危险发生前数据的趋势特征定义为“逐渐增大并加速增长”。

根据上述分析,我们可以建立数学模型来计算每个时间段最后时刻出现前兆特征数据的概率。

假设某一时间段的电磁辐射数据为 E = { e 1 , e 2 , … , e n } E=\{e_1,e_2,\dots,e_n\} E={e1,e2,,en},声发射数据为 S = { s 1 , s 2 , … , s n } S=\{s_1,s_2,\dots,s_n\} S={s1,s2,,sn},其中 e i e_i ei s i s_i si分别表示第 i i i个时刻的电磁辐射和声发射数据。

对于电磁辐射信号,我们可以定义一个增长函数 F E ( t ) F_E(t) FE(t)来描述电磁辐射信号的变化趋势,其中 t t t表示时间。根据题意,我们可以假设增长函数为指数函数,即

F E ( t ) = a e b t F_E(t)=ae^{bt} FE(t)=aebt

其中 a a a b b b为待定参数,可以通过拟合电磁辐射信号数据得到。设 t 1 t_1 t1为该时间段的起始时刻, t 2 t_2 t2为该时间段的最后时刻,那么该时间段最后时刻出现前兆特征数据的概率可以表示为

P E = ∫ t 1 t 2 F E ( t ) d t P_E=\int_{t_1}^{t_2}F_E(t)dt PE=t1t2FE(t)dt

对于声发射信号,我们可以定义一个增长函数 F S ( t ) F_S(t) FS(t)来描述声发射信号的变化趋势,其中 t t t表示时间。根据题意,我们可以假设增长函数为幂函数,即

F S ( t ) = c t d F_S(t)=ct^d FS(t)=ctd

其中 c c c d d d为待定参数,可以通过拟合声发射信号数据得到。设 t 1 t_1 t1为该时间段的起始时刻, t 2 t_2 t2为该时间段的最后时刻,那么该时间段最后时刻出现前兆特征数据的概率可以表示为

P S = ∫ t 1 t 2 F S ( t ) d t P_S=\int_{t_1}^{t_2}F_S(t)dt PS=t1t2FS(t)dt

综上,根据电磁辐射和声发射信号的变化趋势,我们可以得到该时间段最后时刻出现前兆特征数据的概率为

P = P E × P S P=P_E\times P_S P=PE×PS

根据上述模型,我们可以计算出附件3中每个时间段最后时刻出现前兆特征数据的概率,如表5所示。

首先,根据问题2中给出的特征,可以确定前兆特征信号的变化趋势为递增,因此可以考虑使用线性回归模型来预测前兆特征信号的变化趋势。

其次,为了计算每个时间段最后时刻出现前兆特征数据的概率,需要对每个时间段的数据进行预处理,使其符合线性回归模型的输入要求。具体的步骤如下:

  1. 对每个时间段的数据进行归一化处理,即将每个数据减去该时间段的最小值,再除以该时间段的最大值和最小值之差。这样做的目的是为了使每个时间段的数据在同一尺度上,方便后续的数据处理。
  2. 将处理后的数据按照时间顺序排列,作为线性回归模型的输入。
  3. 对线性回归模型进行训练,得到模型的参数。
  4. 使用训练好的模型来预测每个时间段最后时刻的前兆特征信号值。
  5. 将预测值与一个阈值进行比较,如果大于阈值,则判断该时间段存在前兆特征信号,否则不存在。
  6. 计算出现前兆特征信号的概率,即在所有时间段中出现前兆特征信号的时间段数除以总时间段数。
    在这里插入图片描述

具体的python代码如下:

# 导入需要的库
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression

# 定义线性回归模型的训练函数
def train_linear_model(X, y):
    # 创建线性回归模型
    model = LinearRegression()
    # 训练模型
    model.fit(X, y)
    # 返回模型的参数
    return model.coef_, model.intercept_

# 定义预测函数
def predict(X, w, b):
    # 使用模型参数进行预测
    y_pred = np.dot(X, w) + b
    # 返回预测结果
    return y_pred

# 定义计算概率函数
def calculate_probability(y_pred, threshold):
    # 初始化计数器
    count = 0
    # 遍历预测结果
    for i in range(len(y_pred)):
        # 如果预测值大于阈值,则计数器加1
        if y_pred[i] > threshold:
            count += 1
    # 计算概率,即出现前兆特征信号的时间段数除以总时间段数
    probability = count / len(y_pred)
    # 返回概率值
    return probability

# 读取数据
data = pd.read_excel('附件3.xlsx')
# 初始化阈值
threshold = 10
# 初始化概率值列表
probability_list = []

# 对每个时间段的数据进行处理
for i in range(len(data)):
    # 获取每个时间段的数据
    x = data.iloc[i, :]
    # 进行归一化处理
    x = (x - x.min()) / (x.max() - x.min())
    # 转换成二维数组
    x = np.array(x).reshape(-1, 1)
    # 获取预测结果
    y_pred = predict(x, w, b)
    # 计算概率
    probability = calculate_probability(y_pred, threshold)
    # 将概率值添加到列表中
    probability_list.append(probability)

# 输出每个时间段最后时刻出现前兆特征数据的概率
print('每个时间段最后时刻出现前兆特征数据的概率为:')
for i in range(len(probability_list)):
    print('第{}个时间段:{:.2f}%'.format(i+1, probability_list[i]*100))

更多内容具体可以点击下方名片了解DeepVisionary!深度解析五一杯前沿与数学建模,深度学习算法分析!

关注DeepVisionary 获取更多数模细节资讯,了解更多深度学习前沿科技信息&顶会论文分享!

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2023 第八届数维杯大学生数学建模挑战赛b要求我们通过建立数学模型来解决问题。在解答这道之前,我们首先需要理解目的要求和条件。 经过分析目内容,我们可以得知该要求我们确定三幅相互切线连接的圆的半径和切点位置。首先,我们可以通过计算出三个切点的坐标来确定切点位置。可以利用已知条件,使用平行四边形法则,得到切点的坐标。然后,我们可以根据切点坐标计算出三个圆之间的距离,从而求出圆的半径。 为了建立数学模型解决问题,我们可以做如下步骤: 第一步,确定切点坐标:根据已知条件,计算出三个切点的坐标。假设三个切点坐标分别为A(x1, y1),B(x2, y2),C(x3, y3)。 第二步,计算圆心坐标:利用平行四边形法则,根据已知的切点坐标可以求得三个圆心的坐标。令圆心坐标分别为O1(xo1, yo1),O2(xo2, yo2),O3(xo3, yo3)。 第三步,计算半径:利用已知的切点和圆心坐标,可以计算出三幅圆之间的距离。令圆的半径分别为r1,r2,r3。 最后,我们可以将以上三步整合在一起,建立数学模型来解决问题。运用相关的几何原理和计算方法,可以计算出目要求的圆的半径和切点位置。 总的来说,通过建立数学模型,可以解决2023 第八届数维杯大学生数学建模挑战赛b。我们可以分步骤确定切点坐标和圆心坐标,进而计算出圆的半径。这样,我们就能够满足目的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值