《融合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 np

class 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]+1

    def VMD(data,x):
        alpha,tau,K,DC,init,tol=5000,0,x,0,1,1e-6
        U,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=VT
        REC=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]/=windowlen
            for 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 np

class 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中的那些工作,温度压强同阀门的开关有强作用。也许温度也在考虑范围。温度直接影响压强从而影响模型效果。

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

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

相关文章

金字塔原理 读书笔记

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言第1篇 表达的逻辑第1章 为什么要用金字塔结构归类分组,将思想组织成金字塔自上而下表达,结论先行自下而上思考,总结概括 第2…

Spark---资源、任务调度

一、Spark资源调度源码 1、Spark资源调度源码过程 Spark资源调度源码是在Driver启动之后注册Application完成后开始的。Spark资源调度主要就是Spark集群如何给当前提交的Spark application在Worker资源节点上划分资源。Spark资源调度源码在Master.scala类中的schedule()中进行…

基于SSM的云鑫曦科技办公自动化管理系统设计与实现

基于SSM的云鑫曦科技办公自动化管理系统设计与实现 摘 要: 随着时代的发展,单位办公方式逐渐从传统的线下纸张办公转向了使用个人pc的线上办公,办公效率低下的传统纸质化办公时代的淘汰,转型到信息化办公时代,面对当今数据逐渐膨…

奇数求和(C++)

系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…

Keil5 debug

目录 debug调试功能 基本功能: 程序复位:Reset 运行:Run 停止:Stop 断点调试(Breakpoint Debugging) 单步调试: 单步调试:Step 单步跳过调试:Step Over: 单步返…

vue项目中使用jsonp跨域请求百度联想接口

一. 内容简介 vue项目中使用jsonp跨域请求百度联想接口 二. 软件环境 2.1 Visual Studio Code 1.75.0 2.2 chrome浏览器 2.3 node v18.14.0 三.主要流程 3.1 代码 核心代码 // 这个是请求函数doLeno() {// 挂载回调函数,不挂载,会报不存在window…

算法中的时间复杂度,空间复杂度

一、前言 算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别 衡量不同算法之间的优劣主要是通过时…

【动态规划】求最长递增子序列问题

目录 问题描述递推关系建立递推关系的思路约束条件:以 s [ k ] s[k] s[k] 结尾约束条件:以 s [ k ] s[k] s[k] 开头约束条件:增加子问题参数(前缀)约束条件:增加子问题参数(后缀)约束条件:LIS长度为k且末尾元素最小 运行实例 问…

MySQL -DDL 及表类型

DDL 创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] create_specification:[DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name 1.CHARACTER SET&#xff1a…

Java后端开发——MVC商品管理程序

Java后端开发——MVC商品管理程序 本篇文章内容主要有下面几个部分: MVC架构介绍项目环境搭建商品管理模块Servlet代码重构BaseServlet文件上传 MVC 是模型-视图-控制器(Model-View-Controller),它是一种设计模式,也…

.net7.0中把exe和dll分开打包

之前写过 C#把dll分别放在指定的文件夹_wpf core dll 放文件夹-CSDN博客 C#把dll打包到exe_c# 打包exe_故里2130的博客-CSDN博客 这都是老技术了,可以进行参考。 现在的.netcore系列有单独支持把exe和dll分开打包的功能了,当然也支持.net7.0和.net8.…

开源堡垒机Jumpserver

文章目录 开源堡垒机JumpserverJumpserver介绍安装环境部署安装jumpserver访问jumpserver的web界面 开源堡垒机Jumpserver Jumpserver介绍 Jumpserver 是全球首款完全开源的堡垒机,使用 GNU GPL v2.0 开源协议,是符合 4A 的运维安全审计系统。 Jumpse…

AIGC-文生视频

stable diffusion: stable diffusion原理解读通俗易懂,史诗级万字爆肝长文,喂到你嘴里 - 知乎个人网站一、前言(可跳过)hello,大家好我是 Tian-Feng,今天介绍一些stable diffusion的原理&#…

js小技巧|如何提取经过Function函数混淆了的代码

关注它,不迷路。 本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除! 1.需求 星友发过来一个混淆代码,打开一看,长这…

(三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言Q1:卷积网络和传统网络的区别Q2:卷积神经网络的架构Q3:卷积神经网络中的参数共享,也是比传统网络的优势所在4、 具体的实现代码网络搭建…

C++二分查找、离线算法:最近的房间

作者推荐 利用广度优先或模拟解决米诺骨牌 本文涉及的基础知识点 二分查找算法合集 题目 一个酒店里有 n 个房间,这些房间用二维整数数组 rooms 表示,其中 rooms[i] [roomIdi, sizei] 表示有一个房间号为 roomIdi 的房间且它的面积为 sizei 。每一…

linux设置主机名

查看主机名:hostname 临时修改主机名:hostname 新主机名 [rootlocalhost ~]#hostname centos [rootlocalhost ~]#hostname centos 永久修改主机名: [rootlocalhost ~]#cat /etc/hostname localhost.localdomain

ArrayList 和 HashMap 源码解析

1、ArrayList 1.1、ArrayList 构造方法 无参创建一个 ArrayList 数组默认为空数组 transient Object[] elementData; private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA {}; private int size; // 数组容量大小public ArrayList() {this.elementData DEFA…

基于springboot校园车辆管理系统

背景 伴随着社会经济的快速发展,机动车保有量不断增加。不断提高的大众生活水平以及人们不断增长的自主出行需求,人们对汽车的 依赖性在不断增强。汽车已经发展成为公众日常出行的一种重要的交通工具。在如此形势下,高校校园内的机动车数量也…

java设计模式学习之【原型模式】

文章目录 引言原型模式简介定义与用途实现方式UML 使用场景优势与劣势原型模式在spring中的应用员工记录示例代码地址 引言 原型模式是一种创建型设计模式,它允许对象能够复制自身,以此来创建一个新的对象。这种模式在需要重复地创建相似对象时非常有用…