《融合SCADA系统数据的天然气管道泄漏多源感知技术研究》误报数据识别模型开发

数据处理不作表述。因为我用的是处理后的数据,数据点这。

文章目录

  • 工作内容1
    • CC040
      • VFD电流
      • VFD转速
      • 压缩机转速反馈
      • 进出口差压
    • 紧急截断阀开到位
    • 进出电动阀开到位
    • 发球筒电筒阀开到位
    • 收球筒电动阀开到位
    • 电动阀2005开到位
    • 越站阀开到位
  • 工作内容2
  • 工作内容3

工作内容1

任务描述:简单观察时序数据

CC040

VFD电流

在这里插入图片描述

VFD转速

在这里插入图片描述
这两观察一个就好。

压缩机转速反馈

在这里插入图片描述

蚌埠住了。

进出口差压

在这里插入图片描述
似乎我看不出什么。
不用看了以上数据无法用作时序分析。我们之后特征工程看看它们是否有用。现在简单处理一下,小0.1换0大0.1换1。只需选择一段就好,这几段的本质一样。那就进出口差压了。同时只有两台能用。

紧急截断阀开到位

在这里插入图片描述
开了29560的单位时间。
在这里插入图片描述
开了29554的单位时间。
唐山这里前开后关。
在这里插入图片描述
在这里插入图片描述
宝坻全都没有开启。
这些数据十分显然只能用于特征工程无法用于时序分析。

进出电动阀开到位

在这里插入图片描述
进站:开了0的单位时间。
出站:开了12869的单位时间。
这些数据十分显然只能用于特征工程无法用于时序分析。

发球筒电筒阀开到位

在这里插入图片描述
开了0的单位时间。
这些数据十分显然只能用于特征工程无法用于时序分析。

收球筒电动阀开到位

在这里插入图片描述
开了12874的单位时间。
这些数据十分显然只能用于特征工程无法用于时序分析。

电动阀2005开到位

在这里插入图片描述
开了2405的单位时间。
这些数据十分显然只能用于特征工程无法用于时序分析。

越站阀开到位

在这里插入图片描述
唐山:开了30082的单位时间。
宝坻:开了42946的单位时间。
这些数据十分显然只能用于特征工程无法用于时序分析。

代码忽略

工作内容2

任务描述:判断数据之中是否有天然气大量泄漏。理论概述:基于上面工作内容,显而易见不能判断天然气体是否泄漏。为什么呢??同一时间,各种阀门开关状态组合过少。按理来说,应该有 2 3 + 4 + 2 + 1 + 1 + 1 + 2 = 2 14 2^{3+4+2+1+1+1+2}=2^{14} 23+4+2+1+1+1+2=214种的状态,但是实际不是这样。例如:有的阀门一直关闭,有的阀门一直开启,有的阀门开启之时另一阀门必然关闭,有的阀门关闭之时另一阀门必然开启。这个情况在这数据尤为严重,所以不能。个人观点:压力波形作为输入才是更加合理选择。 但是显然不是上述这些简单分类变量。我们可以使用模态分解技术,奇异谱分析等进行曲线分析。我们可以使用循环神经网络,多层感知机等进行模型建立。关键就是我们需要使用哪些波形曲线。 还有就是标签问题,工作内容1中表明,所有阀门关不代表气体泄漏。根据统计学习原理,如果数据之中没有泄漏数据,那么模型就不可能能学习到泄漏特征。 特征我们都知道是多段波形,但是具体应该是什么呢?一定不是上面那些。标签我们都知道是是否泄漏,但是数据之中没有。在没有的情况之下,更偏向非统计建模。
曲线分析框架

from PyEMD import CEEMDAN
from vmdpy import VMD
import pandas as pd
import numpy as npclass Decomposition:def EMD(data):ceemdan=CEEMDAN()ceemdan.ceemdan([i for i in data])IMFS,RES=ceemdan.get_imfs_and_residue()f=pd.ExcelWriter("data/EMD.xlsx")pd.DataFrame(IMFS.T).to_excel(f,sheet_name="IMFS",index=None,columns=None,header=None)pd.DataFrame(RES.T).to_excel(f,sheet_name="RES",index=None,columns=None,header=None)f.save()return IMFS.shape[0]+1def VMD(data,x):alpha,tau,K,DC,init,tol=5000,0,x,0,1,1e-6U,u_hat,omega=VMD(data,alpha,tau,K,DC,init,tol)f=pd.ExcelWriter("data/VMD.xlsx")pd.DataFrame(U.T).to_excel(f,index=None,columns=None,header=None)f.save()def SSA(data,x):windowlen=x;datalen=data.shape[0]K=datalen-windowlen+1;X=np.zeros((windowlen,K))for i in range(K):X[:,i]=data[i:i+windowlen]U,sigma,VT=np.linalg.svd(X,full_matrices=False)for i in range(VT.shape[0]):VT[i,:]*=sigma[i]A=VTREC=np.zeros((windowlen,datalen))for i in range(windowlen):for j in range(windowlen-1):for m in range(j+1):REC[i,j]+=A[i,j-m]*U[m,i]REC[i,j]/=(j+1)for j in range(windowlen-1,datalen-windowlen+1):for m in range(windowlen):REC[i,j]+=A[i,j-m]*U[m,i]REC[i,j]/=windowlenfor j in range(datalen-windowlen+1,datalen):for m in range(j-datalen+windowlen,windowlen):REC[i,j]+=A[i,j-m]*U[m,i]REC[i,j]/=(datalen-j)f=pd.ExcelWriter("data/SSA.xlsx")pd.DataFrame(REC.T).to_excel(f,index=None,columns=None,header=None)f.save()

神经网络框架(tensorflow版)

from sklearn.neural_network import MLPRegressor
import matplotlib.pyplot as plt
from Function import Function
import tensorflow as tf
import numpy as npclass Neural_network():def BPNN(X_train,Y_train,X_test,Y_test,scaled_tool,step_size,batch_size,epochs,Boolean1,Boolean2):inputs=tf.keras.Input(shape=(step_size,))x=tf.keras.layers.Dense(step_size//4*3,activation='relu',name='dense_1')(inputs)x=tf.keras.layers.Dense(step_size//4*2,activation='relu',name='dense_2')(x)x=tf.keras.layers.Dense(step_size//4*1,activation='relu',name='dense_3')(x)x=tf.keras.layers.Dense(1,activation='relu',name='dense_4')(x)model=tf.keras.Model(inputs=inputs,outputs=x)model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=1e-4),loss='mean_squared_error')history=model.fit(X_train,Y_train,batch_size=batch_size,epochs=epochs)loss=history.history['loss']if Boolean1==True:plt.plot(loss,label='BPNN '+'Training Loss')return Function.Function2(model,X_train,X_test,scaled_tool,Y_test,Boolean2)def RNN(X_train,Y_train,X_test,Y_test,scaled_tool,step_size,batch_size,epochs,Boolean1,Boolean2):X_train=np.reshape(X_train,(X_train.shape[0],X_train.shape[1],1))model=tf.keras.models.Sequential()model.add(tf.keras.layers.SimpleRNN(step_size,input_shape=(step_size,1)))model.add(tf.keras.layers.Dense(1))model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=1e-4),loss='mean_squared_error')history=model.fit(X_train,Y_train,batch_size=batch_size,epochs=epochs)loss=history.history['loss']if Boolean1==True:plt.plot(loss,label="RNN "+'Training Loss')X_test=np.reshape(X_test,(X_test.shape[0],X_test.shape[1],1))return Function.Function2(model,X_train,X_test,scaled_tool,Y_test,Boolean2)def LSTM(X_train,Y_train,X_test,Y_test,scaled_tool,step_size,batch_size,epochs,Boolean1,Boolean2):X_train=np.reshape(X_train,(X_train.shape[0],X_train.shape[1],1))model=tf.keras.models.Sequential()model.add(tf.keras.layers.LSTM(step_size,input_shape=(step_size,1)))model.add(tf.keras.layers.Dense(1))model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=1e-4),loss='mean_squared_error')history=model.fit(X_train,Y_train,batch_size=batch_size,epochs=epochs)loss=history.history['loss']if Boolean1==True:plt.plot(loss,label="LSTM "+'Training Loss')X_test=np.reshape(X_test,(X_test.shape[0],X_test.shape[1],1))return Function.Function2(model,X_train,X_test,scaled_tool,Y_test,Boolean2)def GRU(X_train,Y_train,X_test,Y_test,scaled_tool,step_size,batch_size,epochs,Boolean1,Boolean2):X_train=np.reshape(X_train,(X_train.shape[0],X_train.shape[1],1))model=tf.keras.models.Sequential()model.add(tf.keras.layers.GRU(step_size,input_shape=(step_size,1)))model.add(tf.keras.layers.Dense(1))model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=1e-4),loss='mean_squared_error')history=model.fit(X_train,Y_train,batch_size=batch_size,epochs=epochs)loss=history.history['loss']if Boolean1==True:plt.plot(loss,label="GRU "+'Training Loss')X_test=np.reshape(X_test,(X_test.shape[0],X_test.shape[1],1))return Function.Function2(model,X_train,X_test,scaled_tool,Y_test,Boolean2)def MLP(X_train,Y_train,X_test,Y_test,scaled_tool,Boolean):model=MLPRegressor(max_iter=50,hidden_layer_sizes=(200),random_state=0)model.fit(X_train,Y_train)return Function.Function2(model,X_train,X_test,scaled_tool,Y_test,Boolean)

工作内容3

之前的word。据word中的那些工作,温度压强同阀门的开关有强作用。也许温度也在考虑范围。温度直接影响压强从而影响模型效果。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

08-学成在线项目中统一异常处理的规范

项目中的异常处理 规范异常类型 在Service类的业务方法中有很多的参数合法性校验,当请求参数不合法的时候会抛出异常,但此时异常信息只会在控制台输出,前端界面并不会提示用户 实际开发中前端和后端需要做一些约定: 一般将错误提示信息统一以json格式返回给前端,以HTTP状态码…

easyExcel自定义导出,指定列,设置请求头背景色,加入合计行,设置合计行字体,背景色等等

效果图 1.引入easyExcel pom <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.1</version></dependency> 2.工具类-自定义样式handler-CustomCellWriteHandler import java.util…

[学习记录]Node event loop 总结流程图

文章目录 文章来源根据内容输出的流程图待处理遗留的问题参考 文章来源 详解JavaScript中的Event Loop&#xff08;事件循环&#xff09;机制 根据内容输出的流程图 待处理 这里从polling阶段开始 好像有些问题 遗留的问题 为什么“在I/O事件的回调中&#xff0c;setImmediate…

ARM Cortex-M核的内核态,用户态

首先&#xff0c;用户态和内核态是从操作系统层面上来划分的&#xff0c;如果没有操作系统&#xff0c;我可以直接运行在特权模式下&#xff0c;并使用特权指令。在这种情况下&#xff0c;我将负责管理和控制系统资源&#xff0c;执行关键操作&#xff0c;以及确保系统的安全性…

【算法萌新闯力扣】:旋转链表

力扣题目&#xff1a;旋转链表 开篇 今天是备战蓝桥杯的第25天和算法村开营第3天&#xff01;经过这3天的学习&#xff0c;感觉自己对链表的掌握程度大大地提升&#xff0c;尤其是在帮村里的同学讨论相关问题时。本篇文章&#xff0c;给大家带来一道旋转链表的题目&#xff0c…

软著项目推荐 深度学习二维码识别

文章目录 0 前言2 二维码基础概念2.1 二维码介绍2.2 QRCode2.3 QRCode 特点 3 机器视觉二维码识别技术3.1 二维码的识别流程3.2 二维码定位3.3 常用的扫描方法 4 深度学习二维码识别4.1 部分关键代码 5 测试结果6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天…

手写promise A+、catch、finally、all、allsettled、any、race

目录 手写promise 同步版 1.Promise的构造方法接收一个executor()&#xff0c;在new Promise()时就立刻执行executor回调 2.executor()内部的异步任务被放入宏/微任务队列&#xff0c;等待执行 3.状态与结果的管理 状态只能变更一次 4.then()调用成功/失败回调 catch是…

mysql 命令行导入sql 数据,windows导入,强制导入

线上用了polarDB&#xff0c; 本地导入的时候&#xff0c;通过navicat 的备份导入和执行sql文件的方式导入都失败了 用命令行的方式可以导入sql 当我用windows 的cmd 导入的时候&#xff0c;会报一些命令行的错误。 那其实我检查了这个命令是没有问题的。 mysql -uroot -p hu…

JOSEF 双可调漏电继电器 ZLR-T81 ZCT-80 面板嵌入式安装

ZLR-T系列漏电继电器&#xff08;以下简称继电器&#xff09;适用于交流电压为380.660V.至1140V系统中源率为50HZ电流为15~4000A线路中做有无中性点漏电保护. 系列型号 ZLR-T81漏电继电器 ZLR-T81ZCT-35漏电继电器 ZLR-T81ZCT-80漏电继电器 ZLR-T81ZCT-120漏电继电器 一、…

微服务--03--OpenFeign 实现远程调用 (负载均衡组件SpringCloudLoadBalancer)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 OpenFeign其作用就是基于SpringMVC的常见注解&#xff0c;帮我们优雅的实现http请求的发送。 RestTemplate实现了服务的远程调用 OpenFeign快速入门负载均衡组件Spr…

FFmpeg介绍

官方网站&#xff1a;http://www.ffmpeg.org/ 项目组成 libavformat 封装模块&#xff0c;封装了Protocol层和Demuxer、Muxer层&#xff0c;使得协议和格式对于开发者来说是透明的。FFmpeg能否支持一种封装格式的视频的封装与解封装&#xff0c;完全取决于这个库&#xff0c…

智能优化算法应用:基于人工蜂群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于人工蜂群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于人工蜂群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.人工蜂群算法4.实验参数设定5.算法结果6.参考…