2024年第二十一届 五一杯 (C题)大学生数学建模挑战赛|数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2022年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题。

CS团队倾注了大量时间和心血,深入挖掘解决方案。通过时间序列,二阶偏微分方程等算法,设计了明晰的项目,团队努力体现在每个步骤,确保方案既创新又可行,为大家提供了全面而深入的洞见噢~

让我们来看看五一杯 (C题)

完整内容可以在文章末尾领取!

在这里插入图片描述

第一个问题是建立数学模型,对存在干扰的电磁辐射和声发射信号进行分析,分别给出电磁辐射和声发射中的干扰信号数据的特征。

设电磁辐射数据为 X ( t ) X(t) X(t),声发射数据为 Y ( t ) Y(t) Y(t),其中 t t t为时间。假设电磁辐射数据受到干扰信号 Z ( t ) Z(t) Z(t)的影响,即 X ( t ) = X ′ ( t ) + Z ( t ) X(t) = X'(t) + Z(t) X(t)=X(t)+Z(t),其中 X ′ ( t ) X'(t) X(t)为原始的电磁辐射数据。同理,假设声发射数据受到干扰信号 W ( t ) W(t) W(t)的影响,即 Y ( t ) = Y ′ ( t ) + W ( t ) Y(t) = Y'(t) + W(t) Y(t)=Y(t)+W(t),其中 Y ′ ( t ) Y'(t) Y(t)为原始的声发射数据。

根据题目要求,我们需要分析电磁辐射和声发射中的干扰信号数据的特征,即分析 Z ( t ) Z(t) Z(t) W ( t ) W(t) W(t)的特征。

首先,我们可以通过观察原始数据 X ′ ( t ) X'(t) X(t) Y ′ ( t ) Y'(t) Y(t)的时间序列图来初步判断是否存在干扰信号。如果在某个时间段内出现了异常的波动或噪声,就可以初步判断该时间段内可能存在干扰信号。具体来说,可以计算数据的方差或标准差,若方差或标准差较大,则说明该时间段内数据的波动较大,可能存在干扰信号。

其次,我们可以通过计算数据的频谱分布来进一步判断是否存在干扰信号。对于时间序列数据,可以使用傅里叶变换将其转换为频域数据,然后观察频谱图。如果在某个频率处出现异常的峰值,就可以初步判断该频率处可能存在干扰信号。

最后,我们可以通过对数据进行滤波来去除干扰信号,从而得到更加纯净的原始数据。滤波的方法可以选择卷积滤波、中值滤波或小波滤波等,具体的选择还需根据数据的特点和实际情况来决定。

综上所述,我们可以建立如下数学模型来分析电磁辐射和声发射中的干扰信号:

  1. 对于电磁辐射数据,计算方差或标准差,若方差或标准差较大,则初步判断该时间段内可能存在干扰信号。

  2. 对于声发射数据,计算方差或标准差,若方差或标准差较大,则初步判断该时间段内可能存在干扰信号。

  3. 对于电磁辐射数据,计算频谱分布,观察频谱图,若在某个频率处出现异常的峰值,则初步判断该频率处可能存在干扰信号。

  4. 对于声发射数据,计算频谱分布,观察频谱图,若在某个频率处出现异常的峰值,则初步判断该频率处可能存在干扰信号。

  5. 对于电磁辐射数据,选择合适的滤波方法,去除干扰信号,得到更加纯净的原始数据。

  6. 对于声发射数据,选择合适的滤波方法,去除干扰信号,得到更加纯净的原始数据。

综上所述,我们建立了一个数学模型来分析存在干扰的电磁辐射和声发射信号,其中关键步骤为计算方差或标准差、计算频谱分布和滤波处理。通过这一模型,我们可以初步判断出干扰信号的存在,并且通过滤波处理可以得到更加纯净的原始数据,为后续的分析和处理提供基础。

由于附件1和2中的电磁辐射和声发射信号数据都是以30秒为间隔采集的,因此可以将每30秒的数据作为一个数据点,进行分析。在现场工作面,可能存在多种干扰因素,如其他作业设备的电磁辐射、声波干扰等,这些干扰信号会影响到电磁辐射和声发射信号的原始数据,使其变得杂乱无章。因此,可以通过分析信号的变化趋势,来识别出干扰信号。

电磁辐射信号的变化趋势可以通过计算信号的一阶和二阶导数来得到。一阶导数反映信号的变化速率,二阶导数反映信号的变化加速度。在出现干扰信号时,一阶导数和二阶导数都会出现突变,因此可以通过检测导数的突变来识别干扰信号。同时,干扰信号往往具有较高的频率,因此可以通过对信号进行滤波,去除高频部分,进一步消除干扰信号。

声发射信号的特征可以通过信号的能量和频谱来分析。在干扰信号出现时,信号的能量会突然增大,频谱也会发生变化。因此,可以通过监测信号的能量和频谱的变化来识别干扰信号。此外,干扰信号往往具有不同于正常信号的频率和振幅,因此可以通过对信号进行频谱分析,检测出频率和振幅的异常值来识别干扰信号。

综上所述,可以通过对电磁辐射和声发射信号的一阶和二阶导数、滤波、能量和频谱进行分析,来识别出干扰信号。
在这里插入图片描述

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

电磁辐射和声发射信号的干扰特征可以通过以下公式表示:
干扰信号特征 = 干扰信号的峰值 信号的峰值 \begin{equation} 干扰信号特征 = \frac{干扰信号的峰值}{信号的峰值} \end{equation} 干扰信号特征=信号的峰值干扰信号的峰值

其中,干扰信号的峰值可以通过计算信号的最大值和最小值的差值得到。信号的峰值可以通过计算信号的平均值和标准差得到。

因此,可以通过计算信号的峰值和信号的峰值来判断信号是否存在干扰。如果干扰信号特征值越大,则表示信号中存在较大的干扰。

除此之外,还可以通过以下公式计算信号的频率特征:
频率特征 = 干扰信号的频率 信号的频率 \begin{equation} 频率特征 = \frac{干扰信号的频率}{信号的频率} \end{equation} 频率特征=信号的频率干扰信号的频率
如果干扰信号的频率比信号的频率高,说明信号中存在频率较高的干扰。

#导入所需要的

库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

#读取附件1和附件2中的数据
data1 = pd.read_excel('附件1:电磁辐射和声发射数据.xlsx')
data2 = pd.read_excel('附件2:电磁辐射和声发射数据.xlsx')

#电磁辐射数据中的干扰信号特征分析
#计算数据的均值和标准差
mean1 = data1['电磁辐射'].mean()
std1 = data1['电磁辐射'].std()

#根据3倍标准差法则,设定阈值,超出阈值的数据为干扰信号
threshold1 = mean1 + 3 * std1

#根据阈值选择干扰信号数据
noise_data1 = data1[data1['电磁辐射'] > threshold1]

#绘制干扰信号数据的散点图
plt.scatter(noise_data1['采集时间'], noise_data1['电磁辐射'], s=10, c='r', marker='o')
plt.xlabel('采集时间')
plt.ylabel('电磁辐射')
plt.title('电磁辐射数据中的干扰信号分布图')
plt.show()

#声发射数据中的干扰信号特征分析
#计算数据的均值和标准差
mean2 = data2['声发射'].mean()
std2 = data2['声发射'].std()

#根据3倍标准差法则,设定阈值,超出阈值的数据为干扰信号
threshold2 = mean2 + 3 * std2

#根据阈值选择干扰信号数据
noise_data2 = data2[data2['声发射'] > threshold2]

#绘制干扰信号数据的散点图
plt.scatter(noise_data2['采集时间'], noise_data2['声发射'], s=10, c='r', marker='o')
plt.xlabel('采集时间')
plt.ylabel('声发射')
plt.title('声发射数据中的干扰信号分布图')
plt.show()

#从图中可以看出,干扰信号数据的特征为:数据波动较大,且超过了数据的平均值和标准差的阈值。

第二个问题是如何利用已知的信号特征,建立数学模型,对电磁辐射和声发射信号中的前兆特征进行识别和预测。

在这里插入图片描述

假设时间段为 t t t,信号为 S ( t ) S(t) S(t),前兆特征信号为 F ( t ) F(t) F(t)

1.首先,我们可以根据信号的变化趋势来判断是否存在前兆特征信号,即在每个时间段 t t t,计算信号的一阶导数 S ′ ( t ) S'(t) S(t)。如果 S ′ ( t ) S'(t) S(t)大于某一阈值,就可以判断存在前兆特征信号,即 F ( t ) = 1 F(t)=1 F(t)=1;否则, F ( t ) = 0 F(t)=0 F(t)=0

2.然后,我们可以计算信号的二阶导数 S ′ ′ ( t ) S''(t) S′′(t)。如果 S ′ ′ ( t ) S''(t) S′′(t)大于某一阈值,说明信号的变化趋势在加速,即前兆特征信号越来越明显,此时 F ( t ) F(t) F(t)可以设置为一个较大的值,如 F ( t ) = 10 F(t)=10 F(t)=10

3.为了更准确地判断前兆特征信号,我们可以进一步计算信号的三阶导数 S ′ ′ ′ ( t ) S'''(t) S′′′(t),如果 S ′ ′ ′ ( t ) S'''(t) S′′′(t)大于某一阈值,说明信号的变化趋势在加速,此时 F ( t ) F(t) F(t)可以设置为一个更大的值,如 F ( t ) = 100 F(t)=100 F(t)=100

4.最后,我们可以将前面三个步骤得到的F(t)进行加权求和,得到最终的前兆特征信号指标,即 F ( t ) = a S ′ ( t ) + b S ′ ′ ( t ) + c S ′ ′ ′ ( t ) F(t)=aS'(t)+bS''(t)+cS'''(t) F(t)=aS(t)+bS′′(t)+cS′′′(t),其中a、b、c为权重系数,可以根据实际情况进行调整。

5.根据F(t)的值,我们就可以判断每个时间段t是否存在前兆特征信号。如果F(t)大于某一阈值,说明存在前兆特征信号,即F(t)=1;否则,F(t)=0。

6.为了更好地预测前兆特征信号,我们可以根据历史数据建立一个预测模型,利用机器学习、神经网络等方法来预测未来一段时间内是否会出现前兆特征信号。

综上所述,建立的数学模型为:

F ( t ) = a S ′ ( t ) + b S ′ ′ ( t ) + c S ′ ′ ′ ( t ) F(t)=aS'(t)+bS''(t)+cS'''(t) F(t)=aS(t)+bS′′(t)+cS′′′(t),其中a、b、c为权重系数,可以根据实际情况进行调整。

针对电磁辐射和声发射信号中的前兆特征,可以建立如下的数学模型来进行识别和预测:

首先,对于电磁辐射信号,可以利用时间序列分析的方法,通过对信号的变化趋势进行建模来识别前兆特征。具体来说,可以采用ARIMA模型,即自回归移动平均模型,来对信号的时间序列进行建模。ARIMA模型包括三个部分:自回归部分(AR),差分部分(I),移动平均部分(MA)。通过对信号的自相关函数和偏自相关函数进行分析,可以确定ARIMA模型的阶数,从而得到建模所需的参数。然后,可以利用建立的ARIMA模型来预测未来一段时间内的信号变化趋势,从而判断是否存在前兆特征信号。

对于声发射信号,可以利用相关系数分析的方法,通过对信号的相关性进行分析来识别前兆特征。具体来说,可以计算信号与自身滞后时间的相关系数,从而确定信号的相关性。当信号的相关系数超过一定阈值时,可以判断信号存在前兆特征。

此外,还可以利用机器学习算法来对信号进行分类和预测。例如,可以利用支持向量机(SVM)算法来对信号进行分类,从而识别前兆特征。另外,可以利用循环神经网络(RNN)来对信号的时间序列进行建模,从而预测未来一段时间内的信号变化趋势。

总的来说,对于电磁辐射和声发射信号中的前兆特征,可以通过建立数学模型来识别和预测。这些模型可以结合多种方法,如时间序列分析、相关系数分析以及机器学习算法,从而提高识别和预测的准确性。同时,也可以结合实际情况,通过不断更新和优化模型,来提高识别和预测的效果。

对于前兆特征信号的识别和预测,可以建立如下数学模型:

  1. 首先,对电磁辐射和声发射信号中的前兆特征进行特征提取,得到信号的变化趋势特征。比如可以选取前兆特征信号的极值点、波峰和波谷等作为特征点,然后通过差值、斜率等手段计算信号的变化趋势特征。

  2. 根据特征提取的结果,建立数学模型对前兆特征信号进行识别。以电磁辐射信号为例,可以设立一个阈值判断模型,当信号变化趋势超过阈值时,判定为前兆特征信号。即:
    f ( t ) = { 1 , if  d d t A ( t ) ⩾ T h r e s h o l d 0 , if  d d t A ( t ) < T h r e s h o l d f(t)= \begin{cases} 1, & \text{if } \frac{d}{dt} A(t) \geqslant Threshold\\ 0, & \text{if } \frac{d}{dt} A(t) < Threshold \\ \end{cases} f(t)={1,0,if dtdA(t)Thresholdif dtdA(t)<Threshold
    其中, A ( t ) A(t) A(t)为信号的幅度, t t t为时间, T h r e s h o l d Threshold Threshold为设定的阈值。

  3. 对于预测问题,可以根据已知的前兆特征信号,建立数学模型对未来一段时间内是否会出现前兆特征信号进行预测。以声发射信号为例,可以建立一个时间序列预测模型,如ARIMA模型。即:
    A ( t ) = f ( A ( t − 1 ) , A ( t − 2 ) , . . . , A ( t − n ) ) A(t)=f(A(t-1),A(t-2),...,A(t-n)) A(t)=f(A(t1),A(t2),...,A(tn))
    其中, A ( t ) A(t) A(t)为信号的幅度, n n n为时间序列的长度,可以根据历史数据确定。

  4. 最后,根据预测结果,提前发出预警。当预测出未来一段时间内会出现前兆特征信号时,可以提前采取措施,如增加支护、减少采煤量等,以降低冲击地压的风险。
    在这里插入图片描述

综上所述,建立数学模型对电磁辐射和声发射信号中的前兆特征进行识别和预测,可以有效地提高冲击地压的预警能力,保障煤矿的安全生产。

import numpy as np
import pandas as pd

# 读取数据
df_emr = pd.read_csv('data_emr.csv', parse_dates=True, index_col='time')
df_ae = pd.read_csv('data_ae.csv', parse_dates=True, index_col='time')

# 定义函数,判断信号是否存在前兆特征
def is_premonition(df):
    # 计算一天内的平均值
    df_day = df.resample('D').mean()
    # 计算每日变化率
    df_diff = df_day.diff()
    # 判断是否存在连续三天变化率大于0的情况
    if len(df_diff[df_diff>0]) >= 3:
        return True
    else:
        return False

# 对电磁辐射信号进行处理
# 选择需要分析的时间段
start_date = '2020-04-08'
end_date = '2020-06-08'
df_emr_period = df_emr[start_date:end_date]
# 生成新的一列,判断每日是否存在前兆特征
df_emr_period['premonition'] = df_emr_period.apply(is_premonition, axis=1)
# 提取存在前兆特征的时间段
df_emr_premonition = df_emr_period[df_emr_period['premonition']==True]
# 输出前兆特征发生的时间区间
print(df_emr_premonition.index.min(), df_emr_premonition.index.max())

# 对声发射信号进行处理
# 选择需要分析的时间段
start_date = '2021-11-01'
end_date = '2022-01-15'
df_ae_period = df_ae[start_date:end_date]
# 生成新的一列,判断每日是否存在前兆特征
df_ae_period['premonition'] = df_ae_period.apply(is_premonition, axis=1)
# 提取存在前兆特征的时间段
df_ae_premonition = df_ae_period[df_ae_period['premonition']==True]
# 输出前兆特征发生的时间区间
print(df_ae_premonition.index.min(), df_ae_premonition.index.max())

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

假设每次数据采集的时间间隔为t,每次采集的数据为一个n维向量,表示为 x i = ( x 1 i , x 2 i , . . . , x n i ) x_i=(x_{1i},x_{2i},...,x_{ni}) xi=(x1i,x2i,...,xni),其中 x j i x_{ji} xji表示第j个传感器采集的第i次数据。

根据题目所给的信息,我们可以得到电磁辐射和声发射数据的5类情况,分别为:A、B、C、D、E。其中,A、B、C类为工作面正常生产时的数据,D类为监测系统不正常时的数据,E类为停产期间的数据。

我们可以将附件3中的数据按照每个时间段进行划分,假设共有m个时间段,则第i个时间段的数据可以表示为一个m维向量,表示为 X i = ( x 1 i , x 2 i , . . . , x m i ) X_i=(x_{1i},x_{2i},...,x_{mi}) Xi=(x1i,x2i,...,xmi)

对于每个时间段的最后时刻,我们可以将其表示为 X i T = ( x 1 i T , x 2 i T , . . . , x m i T ) X_i^T=(x_{1i}^T,x_{2i}^T,...,x_{mi}^T) XiT=(x1iT,x2iT,...,xmiT),其中 x j i T x_{ji}^T xjiT表示第j个传感器采集的最后一次数据。

在这里插入图片描述

根据题目所给的信息,我们可以得到前兆特征数据出现的概率为 P ( X i T ∈ B ) P(X_i^T\in B) P(XiTB),即在第i个时间段的最后时刻出现前兆特征数据的概率。

我们可以假设前兆特征数据出现的概率与前一次数据的变化趋势相关,即如果前一次数据变化越大,那么出现前兆特征数据的概率就越大。因此,我们可以建立如下数学模型:

P ( X i T ∈ B ) = ∑ j = 1 m w j ⋅ ∣ x j i T − x j i T − 1 ∣ P(X_i^T\in B)=\sum_{j=1}^{m}w_j\cdot|x_{ji}^T-x_{ji}^{T-1}| P(XiTB)=j=1mwjxjiTxjiT1

其中, w j w_j wj表示第j个传感器对应的权重,权重越大,说明该传感器的数据变化对于判断前兆特征数据的重要性越大。根据题目所给的情况,我们可以对权重进行如下设置:

w j = { 0 ( j ∈ D ) 1 ( j ∈ A ) 2 ( j ∈ B ) 3 ( j ∈ C ) 4 ( j ∈ E ) w_j=\begin{cases} 0 & (j\in D)\\ 1 & (j\in A)\\ 2 & (j\in B)\\ 3 & (j\in C)\\ 4 & (j\in E) \end{cases} wj= 01234(jD)(jA)(jB)(jC)(jE)

即对于D类数据,我们认为其对于判断前兆特征数据没有任何帮助,所以权重为0;对于A类数据,我们认为其对于判断前兆特征数据是最基础的数据,所以权重为1;对于B、C、E类数据,我们认为其对于判断前兆特征数据的重要性依次递增,所以权重分别为2、3、4。

通过计算得到的概率,我们可以对附件3中的每个时间段进行排序,选取概率最大的前5个时间段,即为最早出现前兆特征数据的时间段。

因此,我们建立的数学模型为:

P ( X i T ∈ B ) = ∑ j = 1 m w j ⋅ ∣ x j i T − x j i T − 1 ∣ , w j = { 0 ( j ∈ D ) 1 ( j ∈ A ) 2 ( j ∈ B ) 3 ( j ∈ C ) 4 ( j ∈ E ) P(X_i^T\in B)=\sum_{j=1}^{m}w_j\cdot|x_{ji}^T-x_{ji}^{T-1}|,\quad w_j=\begin{cases} 0 & (j\in D)\\ 1 & (j\in A)\\ 2 & (j\in B)\\ 3 & (j\in C)\\ 4 & (j\in E) \end{cases} P(XiTB)=j=1mwjxjiTxjiT1,wj= 01234(jD)(jA)(jB)(jC)(jE)

其中, x j i T x_{ji}^T xjiT表示第j个传感器在第i个时间段的最后时刻的数据, w j w_j wj表示第j个传感器对应的权重。通过计算得到的概率,我们可以对附件3中的每个时间段进行排序,选取概率最大的前5个时间段,即为最早出现前兆特征数据的时间段。

假设前兆特征信号的出现是一个随机事件,且每次采集的数据都是独立同分布的。因此,可以使用二项分布来表示前兆特征信号的出现概率。

设每次采集的数据量为n,成功采集到前兆特征信号的数量为k,前兆特征信号的出现概率为p,则在一个时间段内,最终时刻出现前兆特征信号的概率可以表示为:

P = ∑ k = 1 n C n k p k ( 1 − p ) n − k P=\sum_{k=1}^{n}C_{n}^{k}p^{k}(1-p)^{n-k} P=k=1nCnkpk(1p)nk

其中, C n k C_{n}^{k} Cnk为组合数。

根据附件3中给出的数据,可以计算得到每个时间段内前兆特征信号出现的频率为:

p = k n p=\frac{k}{n} p=nk

因此,最终时刻出现前兆特征信号的概率可以表示为:

P = ∑ k = 1 n C n k ( k n ) k ( 1 − k n ) n − k P=\sum_{k=1}^{n}C_{n}^{k}\left(\frac{k}{n}\right)^{k}\left(1-\frac{k}{n}\right)^{n-k} P=k=1nCnk(nk)k(1nk)nk

根据二项分布的性质,可以得到:

P = ( 1 − ( 1 − 1 n ) n ) n P=\left(1-\left(1-\frac{1}{n}\right)^{n}\right)^{n} P=(1(1n1)n)n

n n n趋近于无穷大时,可以得到:

P = lim ⁡ n → ∞ ( 1 − ( 1 − 1 n ) n ) n = lim ⁡ n → ∞ e − 1 = 0.3679 P=\lim_{n\to\infty}\left(1-\left(1-\frac{1}{n}\right)^{n}\right)^{n}=\lim_{n\to\infty}e^{-1}=0.3679 P=nlim(1(1n1)n)n=nlime1=0.3679

因此,每个时间段最后时刻出现前兆特征数据的概率为0.3679。

设t为每次数据采集的时间, t 1 t_1 t1为第一次采集的时间, t n t_n tn为最后一次采集的时间, t n − t 1 t_n-t_1 tnt1为总时间, t e t_e te为前兆特征信号出现的时间, t e − t 1 t_e-t_1 tet1为前兆特征信号出现的时间差,n为总采集次数。

设p为前兆特征数据的概率,则有:

p = ( t e − t 1 ) / ( t n − t 1 ) p = (t_e-t_1)/(t_n-t_1) p=(tet1)/(tnt1)

其中, t e t_e te为每次数据采集的时间, t n t_n tn为最后一次采集的时间, t 1 t_1 t1为第一次采集的时间,n为总采集次数。

因此,每个时间段最后时刻出现前兆特征数据的概率为:

p = ( t e − t 1 ) / ( t n − t 1 ) = ( t n − t 1 ) / ( n ∗ ( t n − t 1 ) ) = 1 / n p = (t_e-t_1)/(t_n-t_1) = (t_n-t_1)/(n*(t_n-t_1)) = 1/n p=(tet1)/(tnt1)=(tnt1)/(n(tnt1))=1/n

其中,n为每个时间段的采集次数。

因此,附件3中每个时间段最后时刻出现前兆特征数据的概率为1/n。

import numpy as np
import pandas as pd

# 读取数据
data = pd.read_excel("附件3.xlsx")

# 判断每个时间段最后时刻是否出现前兆特征数据
def isPrecursor(data):
    # 获取最后时刻的数据
    lastData = data.iloc[-1]
    # 判断是否存在前兆特征数据
    if (lastData["前兆特征"] == 1):
        return 1
    else:
        return 0

# 计算每个时间段最后时刻出现前兆特征数据的概率
def calculatePrecursorProbability(data):
    # 计算总的时间段数
    total = len(data)
    # 计算前兆特征数据出现次数
    precursorCount = 0
    for i in range(total):
        precursorCount += isPrecursor(data[i:i+1])
    # 计算概率
    return precursorCount / total

# 输出结果
print(calculatePrecursorProbability(data)) 

根据附件3中的数据,建立数学模型,分析电磁辐射和声发射信号的变化趋势,进一步预测未来一段时间内可能出现前兆特征信号的时间段,并给出相应的预警措施。

假设电磁辐射和声发射信号的变化趋势可以用线性回归模型表示,即:

y = α + β x y = \alpha + \beta x y=α+βx

其中, y y y表示信号值, α \alpha α β \beta β为模型参数, x x x表示时间。

由于信号值的变化受到多种因素的影响,我们可以将模型修改为多元线性回归模型,即:

y = α + ∑ i = 1 n β i x i y = \alpha + \sum_{i=1}^n \beta_i x_i y=α+i=1nβixi

其中, n n n为影响因素的个数, x i x_i xi为第 i i i个影响因素的值。

根据附件3中的数据,我们可以选择影响因素为时间和前一时刻的信号值,即:

y = α + β 1 x 1 + β 2 x 2 y = \alpha + \beta_1 x_1 + \beta_2 x_2 y=α+β1x1+β2x2

其中, x 1 x_1 x1表示时间, x 2 x_2 x2表示前一时刻的信号值。

通过对附件3中的数据进行拟合,得到模型参数 α \alpha α β 1 \beta_1 β1 β 2 \beta_2 β2的估计值,进而可以预测未来一段时间内信号值的变化趋势,从而判断是否可能出现前兆特征信号。

根据预测结果,我们可以采取相应的预警措施,如加强巡检、采取加固措施等,来防止冲击地压事故的发生。

根据附件3中的数据,我们可以使用时间序列分析的方法来建立数学模型,分析电磁辐射和声发射信号的变化趋势。具体来说,可以采用ARIMA模型(自回归移动平均模型)来对信号的变化进行预测。

ARIMA模型是一种常用的时间序列分析方法,它能够捕捉数据中的长期趋势、周期性变化和随机性。ARIMA模型可以分为三个部分,分别为自回归(AR)部分、差分(I)部分和移动平均(MA)部分。自回归部分表示当前时刻的数值与前几个时刻的数值相关,差分部分表示对原始数据进行平稳化处理,移动平均部分表示当前时刻的数值与前几个时刻的误差相关。

对于附件3中的电磁辐射和声发射信号,我们可以分别建立ARIMA模型,得到其参数,然后使用这些参数来预测未来一段时间内信号的变化情况。根据预测结果,我们可以判断出未来一段时间内是否有可能出现前兆特征信号。如果预测结果显示有可能出现前兆特征信号,我们可以根据预警模型来提前采取措施,如提前安排停产、加强监测等措施,从而降低冲击地压事故的发生概率。

同时,我们也可以根据ARIMA模型的参数来判断信号的变化趋势。如果参数显示信号有向前兆特征信号的趋势发展,我们也可以提前采取相应的措施来防止事故的发生。

综上所述,通过使用ARIMA模型来分析电磁辐射和声发射信号的变化趋势,可以有效地预测未来一段时间内是否会出现前兆特征信号,并采取相应的措施来降低冲击地压事故的发生概率,保障煤矿安全生产。

建立数学模型,分析电磁辐射和声发射信号的变化趋势,预测未来一段时间内可能出现前兆特征信号的时间段,并给出相应的预警措施,具体步骤如下:

Step 1:建立数学模型
根据题目所给的电磁辐射和声发射信号数据,可以建立如下数学模型:
设电磁辐射信号数据为 E = E ( t 1 ) , E ( t 2 ) , . . . , E ( t n ) E={E(t1),E(t2),...,E(tn)} E=E(t1),E(t2),...,E(tn),声发射信号数据为 S = S ( t 1 ) , S ( t 2 ) , . . . , S ( t n ) S={S(t1),S(t2),...,S(tn)} S=S(t1),S(t2),...,S(tn),其中 t i t_i ti为第i次数据采集的时刻,n为总的数据采集次数。
假设在时间段 [ t i , t i + 1 ] [t_i,t_{i+1}] [ti,ti+1]内,电磁辐射和声发射信号数据分别服从正态分布,即:
E ( t )   N ( μ e ( t ) , σ e ( t ) ) E(t)~N(μe(t),σe(t)) E(t) N(μe(t),σe(t))
S ( t )   N ( μ s ( t ) , σ s ( t ) ) S(t)~N(μs(t),σs(t)) S(t) N(μs(t),σs(t))
其中μe(t)和μs(t)为电磁辐射和声发射信号的平均值,σe(t)和σs(t)为电磁辐射和声发射信号的标准差。
在这里插入图片描述

Step 2:分析信号变化趋势
根据题目中提到的,前兆特征信号在出现前会有一定的变化趋势。因此,可以通过对电磁辐射和声发射信号的变化趋势进行分析,来判断是否存在前兆特征信号。
具体来说,可以通过计算每次数据采集时刻的信号值与前一次数据采集时刻的信号值之差的绝对值,来获取信号的变化量。若信号变化量在一定时间段内持续增大,即可认为存在前兆特征信号。此外,还可以通过计算信号变化量的平均值和标准差,来获取信号的变化趋势特征。

Step 3:预测未来时间段内可能出现前兆特征信号的时间段
根据信号的变化趋势特征,可以预测未来一段时间内是否会出现前兆特征信号。具体来说,可以通过计算未来一段时间内信号变化量的平均值和标准差,来判断信号是否会有较大的波动。若信号变化量的平均值和标准差都较大,则可能会出现前兆特征信号。

Step 4:给出相应的预警措施
根据预测的结果,可以给出相应的预警措施。如果预测未来一段时间内有可能出现前兆特征信号,则可以采取一些措施来尽可能地防止冲击地压事故的发生。例如,可以提前排空周围的巷道,减轻地应力,或者提前采取支护措施来增强工作面的稳定性。

数学公式:
设E(t)为电磁辐射信号的变化量,S(t)为声发射信号的变化量,有:
E ( t ) = ∣ E ( t ) − E ( t − 1 ) ∣ E(t)=|E(t)-E(t-1)| E(t)=E(t)E(t1)
S ( t ) = ∣ S ( t ) − S ( t − 1 ) ∣ S(t)=|S(t)-S(t-1)| S(t)=S(t)S(t1)
若E(t)和S(t)在一段时间内持续增大,则有可能存在前兆特征信号。

设μe(t)为电磁辐射信号的平均值,σe(t)为电磁辐射信号的标准差,μs(t)为声发射信号的平均值,σs(t)为声发射信号的标准差,有:
μ e ( t ) = E ( t ) μe(t)=E(t) μe(t)=E(t)
σ e ( t ) = √ ( E ( t ) 2 ) σe(t)=√(E(t)^2) σe(t)=(E(t)2)
μ s ( t ) = S ( t ) μs(t)=S(t) μs(t)=S(t)
σ s ( t ) = √ ( S ( t ) 2 ) σs(t)=√(S(t)^2) σs(t)=(S(t)2)
若σe(t)和σs(t)均较大,则有可能存在前兆特征信号。

根据以上分析,可以得出预测未来一段时间内可能出现前兆特征信号的数学模型。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 读取数据
df = pd.read_excel('附件3.xlsx')

# 将数据按时间排序
df = df.sort_values(by=['时间'])

# 将时间列转换为datetime类型
df['时间'] = pd.to_datetime(df['时间'])

# 将时间列设置为索引
df.set_index('时间', inplace=True)

# 计算每个时间段的前兆特征数据的概率
prob = []
for i in range(0, len(df), 5):
    temp_df = df.iloc[i:i+5] # 每5行为一个时间段
    features = temp_df['前兆特征'].sum() # 统计前兆特征数据的数量
    prob.append(features/5) # 计算概率

# 将概率添加到数据框中
df['前兆特征概率'] = prob

# 绘制电磁辐射和声发射信号趋势图
fig, ax = plt.subplots()
ax.plot(df['前兆特征概率'])
ax.set_xticklabels(df.index.strftime('%Y-%m-%d %H:%M:%S'), rotation=90)
ax.set_xlabel('时间')
ax.set_ylabel('前兆特征概率')
ax.set_title('电磁辐射和声发射信号趋势图')
plt.show()

# 预测未来一段时间内可能出现前兆特征信号的时间段
future_df = df.tail(10) # 取最后10个时间段的数据
future_prob = []
for i in range(len(future_df)):
    temp_df = future_df.iloc[i:i+5] # 每5行为一个时间段
    features = temp_df['前兆特征'].sum() # 统计前兆特征数据的数量
    future_prob.append(features/5) # 计算概率

# 将概率添加到数据框中
future_df['前兆特征概率'] = future_prob

# 找出未来可能出现前兆特征信号的时间段
future_df = future_df[future_df['前兆特征概率'] > 0]

# 绘制预测图
fig, ax = plt.subplots()
ax.plot(df['前兆特征概率'], label='历史数据')
ax.plot(future_df['前兆特征概率'], label='预测数据')
ax.set_xticklabels(df.index.strftime('%Y-%m-%d %H:%M:%S'), rotation=90)
ax.set_xlabel('时间')
ax.set_ylabel('前兆特征概率')
ax.set_title('电磁辐射和声发射信号趋势图')
ax.legend()
plt.show()

# 给出相应的预警措施
if len(future_df) > 0:
    print('预测未来一段时间内可能出现前兆特征信号,建议采取一定措施尽可能的防止冲击地压发生。')
else:
    print('未来一段时间内不太可能出现前兆特征信号,可以继续正常工作。') 

更多内容具体可以看看我的下方名片!里面包含有华中杯一手资料与分析!
另外在赛中,我们也会陪大家一起解析华中杯的一些方向
关注 CS数模 团队,数模不迷路~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/587590.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

pyinstaller打包pytorch和transformers程序

记录使用pyinstaller打包含有pytorch和transformers库的程序时遇到的问题和解决方法。 环境和版本信息 操作系统&#xff1a;Windows 11 Python&#xff1a;3.10.12 pyinstaller&#xff1a;5.13.0 torch&#xff1a;2.2.2 transformers&#xff1a;4.40.1 打包过程和问…

【进收藏夹吃灰系列】算法学习指南

文章目录 [toc]分治算法 个人主页&#xff1a;丷从心 系列专栏&#xff1a;进收藏夹吃灰系列 分治算法 博客标题博客url【分治算法】【Python实现】Hanoi塔问题https://blog.csdn.net/from__2024_04_11/article/details/138093461?spm1001.2014.3001.5502

Mysql-黑马

Mysql-黑马 编写规范&#xff1a;## 一级1. 二级三级 1.Mysql概述 数据库概念mysql数据仓库 cmd启动和停止 net start mysql180 net stop mysql180备注&#xff1a;其中的mysql180是服务名 客户端连接 远程连接数据仓库 -h 主机号 -P端口号 mysql [-h 127.0.0.1] [-P 33…

CSDN如何在个人主页开启自定义模块|微信公众号

目前只有下面三种身份才具有这个功能。 VIP博客专家企业博客 栏目内容不知道怎么写HTML的&#xff0c;可以联系我帮你添加

15.Blender Eevee和Cycles渲染引擎对比

初步介绍 Eevee是实时渲染的引擎&#xff0c;会省略一些解算方式&#xff0c;尤其对光线和阴影 Cycles会考虑这些因素&#xff0c;所以会对光线和阴影的表达更加真实&#xff0c;有一个实时光线追踪的功能 Cycles渲染完之后&#xff0c;每移动一次画面&#xff0c;都会重新渲染…

【工程记录】Python爬虫入门记录(Requests BeautifulSoup)

目录 写在前面1. 环境配置2. 获取网页数据3. 解析网页数据4. 提取所需数据4.1 简单提取4.2 多级索引提取 5. 常见问题 写在前面 仅作个人学习与记录用。主要整理使用Requests和BeautifulSoup库的简单爬虫方法。在进行数据爬取时&#xff0c;请确保遵守相关法律法规和网站的服务…

git revert的使用

由于某种原因我们需要撤销掉之前某一次的修改&#xff0c;但是这个修改已经提交&#xff0c;并且后面又经历了好几轮的提交。可能如下这种情况&#xff1a; 那么此时使用git revert再合适不过啦。git revert ${commit_id}就可以将指定commit id的修改撤销&#xff0c;然后提交…

Java从菜鸟到高手①

目录 1.数据类型 2.定义变量 2.1.编码方式 2.2.布尔型变量boolean 2.3.隐式类型转化和强制类型转化 2.4类型提升 3.字符串类型 4.运算符 4.1.取余 4.2. &#xff0c;- 4.3逻辑运算&& || &#xff01; 4.4.位运算 4.5.条件运算符 1.数据类型 Java中&#…

Linux:使用匿名管道对进程池的模拟实现

目录 一、Makefile 二、processpool.cc 2.1创建通信管道和子进程 2.2控制子进程 2.3回收进程 三、task.hpp 四、完整代码 接下来我们将模拟实现一个进程池&#xff0c;进程池广泛应用与各个领域和方向&#xff0c;比如我们打开电脑后同时打开很多个进程&#xff08;也就是软…

SpringBoot对接前端传递的base64编码的图片信息,转成图片以Get请求进行浏览器文件下载,不下载到本地。

一、问题描述 1.1需求描述。 前端将浏览器展示的图片以base64编码的形式传递给后端&#xff0c;以此实现文件下载的功能&#xff0c;在浏览器弹出文件下载框。效果如下 1.2实现思路 将前端传递的base64进行解码&#xff0c;设置响应头返回响应体&#xff0c;代码如下。 pu…

如何安全的使用密码登录账号(在不知道密码的情况下)

首先&#xff0c;需要用到的这个工具&#xff1a; 度娘网盘 提取码&#xff1a;qwu2 蓝奏云 提取码&#xff1a;2r1z 1、打开工具&#xff0c;进入账号密码模块&#xff0c;如图 2、看到鼠标移动到密码那一栏有提示&#xff0c;按住Ctrl或者Alt点击或者双击就能复制内容&…

【大前端】ECharts 绘制立体柱状图

立体柱状图分为&#xff1a; 纯色立体柱状图渐变立体柱状图 常用实现方式 纯色立体柱状图 纯色立体柱状图&#xff0c;使用MarkPoint和颜色渐变就实现&#xff0c;如下代码 import * as echarts from "echarts";var chartDom document.getElementById("main&…

Window(Qt/Vs)软件添加版本信息

Window&#xff08;Qt/Vs&#xff09;软件添加版本信息 文章目录 Window&#xff08;Qt/Vs&#xff09;软件添加版本信息VS添加版本信息添加资源文件添加版本定义头自动更新版本添加批处理脚本设置生成事件 Qt添加版本信息添加资源文件文件信息修改自动更新版本 CMake添加版本信…

rust疑难杂症

rust疑难杂症解决 边碰到边记录&#xff0c;后续可能会逐步增加&#xff0c;备查 cargo build时碰到 Blocking waiting for file lock on package cache 原因是Cargo 无法获取对包缓存的文件锁&#xff0c; 有时vscode中项目比较多&#xff0c;如果其中某些库应用有问题&…

环形链表的经典问题

环形链表 环形链表的介绍链表中是否带环返回链表开始入环的第一个节点 本文主要介绍如何判断一个链表是否是环形链表&#xff0c;以及如何得到环形链表中的第一个节点。 环形链表的介绍 环形链表是一种链表数据结构&#xff0c;环形链表是某个节点的next指针指向前面的节点或指…

【linux学习指南】linux 环境搭建

文章目录 &#x1f4dd;前言&#x1f320; 云服务器的选择&#x1f320;阿里云&#x1f320;腾讯云&#x1f320;华为云 &#x1f320;使用 XShell 远程登陆到 Linux&#x1f309;下载 XShell &#x1f320;查看 Linux 主机 ip&#x1f309; XShell 下的复制粘贴&#x1f309; …

大数据信用花了,一般多久能正常?

在当今数字化时代&#xff0c;大数据技术被广泛应用于各个领域&#xff0c;包括金融、电商、社交等。然而&#xff0c;随着大数据技术的普及&#xff0c;个人信用问题也日益凸显&#xff0c;其中“大数据信用花”现象尤为引人关注。那么&#xff0c;大数据信用花究竟是什么?一…

【linuxC语言】exec函数族

文章目录 前言一、exec函数族二、示例代码2.1 代码12.2 代码22.3 代码3 总结 前言 在Linux环境下&#xff0c;C语言提供了一组强大的函数族&#xff0c;即exec函数族&#xff0c;用于执行其他程序。这些函数允许程序在运行时加载并执行不同的程序&#xff0c;从而实现了程序之…

Android(Java)项目支持Kotlin语言开发

Android&#xff08;Java&#xff09;项目通过相关Kotlin设置后&#xff0c;允许同时使用Java语言和Kotlin语言进行开发代码的。 示例环境&#xff1a; Android Studio Giraffe | 2022.3.1 Patch 3 Java 8 Kotlin 1.9.20 设置Kotlin选项&#xff1a; 第一步&#xff1a;在项…

AI大模型探索之路-训练篇9:大语言模型Transformer库-Pipeline组件实践

系列篇章&#x1f4a5; AI大模型探索之路-训练篇1&#xff1a;大语言模型微调基础认知 AI大模型探索之路-训练篇2&#xff1a;大语言模型预训练基础认知 AI大模型探索之路-训练篇3&#xff1a;大语言模型全景解读 AI大模型探索之路-训练篇4&#xff1a;大语言模型训练数据集概…