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

news2024/11/17 1:57:53

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 获取更多数模细节资讯,了解更多深度学习前沿科技信息&顶会论文分享!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mac M2 本地下载 Xinference

想要在Mac M2 上部署一个本地的模型。看到了Xinference 这个工具 一、Xorbits Inference 是什么 Xorbits Inference(Xinference)是一个性能强大且功能全面的分布式推理框架。可用于大语言模型(LLM),语音识别模型&…

【已解决】pandas读excel中长数字变成科学计数法的问题

pandas 读excel中的长数字时,即使excel中已经设置为文本,读进df后也会自动变成科学计数法。 在日常的数据分析和处理工作中,Excel和pandas是数据分析师们不可或缺的得力助手。然而,在使用pandas读取Excel文件时,我们有…

基于残差神经网络的汉字识别系统+pyqt前段界面设计

研究内容: 中文汉字识别是一项具有挑战性的任务,涉及到对中文字符的准确分类。在这个项目中,目标是构建一个能够准确识别中文汉字的系统。这个任务涉及到数据集的收集、预处理、模型训练和评估等步骤。尝试了使用残差神经网络(ResNet&#x…

Rust Rocket创建第一个hello world的Web程序 Rust Rocket开发常用网址和Rust常用命令

一、Rust Rocket简介 Rust Rocket 是一个用 Rust 语言编写的 Web 应用框架,它结合了 Rust 的安全性和性能优势,以及 Web 开发的便利性。以下是 Rust Rocket 框架的一些优点: 安全性:Rust 是一种注重安全性的编程语言,…

【前端探索者:从零到精通的Web前端实战专栏】

🚀 在这个代码编织梦想的时代,Web前端作为互联网的颜值担当,正以日新月异的速度重塑数字世界。想要在前端江湖里游刃有余,你需要的不仅仅是一把锋利的剑,更是一套完整的武功秘籍!今天,我们就为你揭开【Web前端】专栏的神秘面纱,带你从菜鸟到大神,一飞冲天! 📚 专栏…

Text-to-SQL小白入门(12)Awesome-Text2SQL开源项目star破1000

项目介绍 项目地址 23年9月份刚开源这个项目,大半年过去了,star数终于破1000啦,决定在知乎更新一下内容,看看内容变化,知乎有上当时项目介绍的链接:追光者:Text-to-SQL小白入门(六&…

【Qt QML】Frame组件

Frame(框架)包含在: import QtQuick.Controls继承自Pane控件。用于在可视框架内布局一组逻辑控件。简单来说就是用来包裹和突出显示其他可视元素。Frame不提供自己的布局,但需要自己对元素位置进行设置和定位,例如通过…

Spring Boot Admin

概述 Spirng Boot Admin 登录页面 Spring Boot Admin是一个用于管理Spring Boot应用的监控工具,它允许你查看和管理多个Spring Boot应用实例。用于应用信息进行界面化的展示,常常辅助我们开发人员快速查看服务运行状态在微服务架构中,Spring Boot Admin通…

【linux】进程(深入理解linux进程状态)

开始之前先说一个与本文无关的小知识,chdir命令可以更改当前进程的工作目录哦。 目录 linux具体进程状态:R && S:T && t:D:僵尸进程 && 孤儿进程: OS的理论线:运行&…

JMeter性能压测脚本录制

第一步:电脑打开控制面板设置代理服务器 第二步:jmeter的测试计划添加一个HTTP(S)脚本记录器 在脚本记录器里配置好信息,然后保存为脚本文件(.*表示限定) 此方框内容为项目地址(可改…

如何安装cuda版本的torch-sparse和torch-scatter

安装对应cuda版本的torch,确保cuda可用 使用nvidia-smi查看cuda版本,我的是11.4,然后就找到pytorch历史版本,页面搜索cuda 11.4,没搜到,继续往小版本搜,搜到cuda 11.3,果断安装&…

日拱一卒,月进一步(10)

303. 区域和检索 - 数组不可变 - 力扣(LeetCode) 动态规划~ 前缀和 最朴素的思想是存储数组nums的值,每次调用sumRange时,通过循环的方法计算数组nums从下标i到下标j的元素和,需要计算j-i1个元素的和。由于每次检索…

Sobel算法:边缘提取的原理与实践【基于python、C++基于opencv的代码实现!!】

Sobel算法:深入解析边缘检测的原理与实现 在图像处理领域,边缘检测是一项至关重要的任务。其中,Sobel算法以其高效和稳定的性能,成为边缘检测中的常用方法之一。本文将深入解析Sobel算法的原理与实现,带您了解如何通过…

02_机器学习算法_基于XGBoost的分类预测

1. XGBoost 算法 1.1 XGBoost 的介绍 XGBoost是2016年由华盛顿大学陈天奇老师带领开发的一个可扩展机器学习系统。严格意义上讲XGBoost并不是一种模型,而是一个可供用户轻松解决分类、回归或排序问题的软件包。它内部实现了梯度提升树(GBDT)模型,并对模型中的算法进行了诸多…

通过先序和中序求后序(通过后序和中序求先序)

一、通过先序和中序求后序 二、通过后序和中序求后序 1、利用后序和中序的特点来求出二叉树 2、后序输出二叉树 如图,先给了一个后序和中序,后序的最后一个为根节点 然后在中序中查找相同的元素,在这个元素左边的为左子树,右…

最简方式安装oracle 23c free

简介 我一直认为,最靠谱的文档就是原厂官网的文档,阅读再次加工的文档都有可能把你带偏。 oracle官网提供了大量的文档,一个好的oracle使用者,应该首先是好的oracle官网阅读者。 oracle数据库作为收费颇贵的商业数据库软件&#…

C++ 优先级队列priority_queue

1、常用接口 底层使用的是堆实现,默认为大堆 2、理解: 优先级队列就是即使插入的是一个乱序的,但是依旧会按照有序的顺序出队列 优先级队列就是会根据大小来出队列,而不是谁在队头就出谁。 优先级队列底层是使用堆实现&#x…

Android Studio Jellyfish | 2023.3.1,快来看看有什么更新吧

大家节日快乐,在这个快乐的节日里,Android Studio 又迎来了它新一轮更新,虽然本次更新里有一大份和我们“没什么关系”,但是也许你的“网络”支持呢?一起来感受下全新的 Jellyfish (水母) 给我们…

使用Python及R语言绘制简易数据分析报告

Pytohn实现 在python中有很多包可以实现绘制数据分析报告的功能,推荐两个较为方便的包:pandas-profiling 和 sweetviz 。 使用 pandas-profiling 包(功能全面) 这个包的个别依赖包与机器学习的 sklearn 包的依赖包存在版本冲突&a…

Upload-labs 靶场通关解析(上)

前言 文件上传漏洞是一种常见的网络安全漏洞,存在于许多Web应用程序中。攻击者利用这个漏洞可以上传恶意文件到目标服务器,从而执行各种恶意操作,如执行恶意代码、获取敏感信息、控制服务器等。 文件上传漏洞的原理是,Web应用程…