APP下载

基于半定长滑动窗口数据的供水管网漏损检测

2022-11-03张英杰李佳林孙庆帅刘华亮罗立强廖杰

湖南大学学报(自然科学版) 2022年10期
关键词:供水管滑动聚类

张英杰,李佳林,孙庆帅,刘华亮,罗立强,廖杰

[1.湖南大学工业节能控制与评估研究所,湖南长沙 410013;2.湖南省水计量信息工程技术研究中心,湖南常德 415000;2.湖南常德牌水表制造有限公司,湖南常德415199]

水是居民日常生活中不可或缺的资源,在城镇供水系统中通过高度复杂的水管网络进行输送.管网漏损是供水过程中面临的主要挑战,引发漏损的原因有管道接口漏损、管道和配件老化以及外力破坏等[1].漏损分为明漏、暗漏和背景漏损,明漏即地表溢水或可见的水管网漏损,呈现出大流量现象;暗漏即在地表以下需要借助相关测漏设备检测的水管网漏损;背景漏损即现有技术手段和措施很难或无法检测到的水管网漏损[2].城镇供水系统中的漏损率普遍在15%~20%,其中有相当一部分城市水管网实际漏损率在20%以上[3].根据《城镇供水管网漏损控制及评定标准》(CJJ92—2016),漏损率划分为10%和12%两级,但是目前大部分城市未达到此标准,因此降低供水管网漏损率迫在眉睫.

针对供水管网漏损,国内外学者提出了多种检测方法.常见的漏损检测方法可分为三类:基于瞬态的方法、基于模型的方法和数据驱动的方法[4].基于瞬态的方法通常从管道网络内测量或者模拟的瞬态压力数据中提取漏损信息[5],但检测瞬态压力数据需要高频率传感器,且可能会受到背景噪声或水管网中其他事件的影响[6],因此基于瞬态信息检测的方法大多不能在实际应用中普及[5].基于模型的方法通常是针对供水管网系统建立数学模型[6],但是构建准确的水力模型具有较高的挑战,且模型参数受供水管道的运行情况影响具有较高的不确定性.

数据驱动方法在近十年来得到了充分研究和广泛应用,并逐渐占据主导地位[4].基于数据驱动的方法通常对供水管网中的流量或压力数据进行信息抓取和分析,当前大多数数据驱动的漏损检测方法包括预测和分类两步.首先,预测过程旨在根据管网的历史数据建立预测模型来生成预测数据.其中,神经网络具有能够逼近任意数据的特点,可以在不明确参数的情况下训练神经网络,有利于复杂网络管网数据预测[7-8].此外,非线性卡尔曼滤波、预测卡尔曼滤波、多项式回归、加权最小二乘期望最大化[9-12]也能够达到较好的效果.但是基于预测的方法对于小漏损的检测不敏感.分类则是将预测数据与实际数据对比来判断是否漏损.分类方法有集成卷积神经网络、关联神经网络和人工免疫网络等[13-15],利用漏损数据偏差于正常值来对比,但该类方法需要大量的历史数据且运算复杂度较高.不同于预测-分类法,聚类方法中多数不需要预测过程,如贝叶斯网络及K-近邻(KNN)算法[16-17],但该种方法假设压力传感器安装在管网内部来检测漏损,而该假设不适用于实际系统.Wu等[18]在2016年提出了一种基于聚类分析的漏损检测方法,该方法通过判断流量数据之间的相似性来进行聚类分析实现漏损检测.

基于数据驱动的方法通常对数据有较高的要求,但实际获取到的数据因为多种因素不一定保持稳定,存在许多无效的数据,如设备故障事件引发的错误数据、丢失的数据和冗余数据等情况,也可能改变供水管网的水利条件,这些因素都会增加数据建模难度,导致预测精确度下降[12].此外,不论是预测、分类还是聚类方法都需要大量历史数据,充足的数据可以使模型准确地捕捉到监测数据的变化,这可能需要长期的监测记录才能满足模型检测精度要求.

Wu等[4]在2018年提出改进的聚类方法,即依赖不同时刻下多个传感器数据的相关性,使用固定时间窗口内的数据来检测异常值.改进后的方法降低了模型对历史数据量的需求,但是对比改进前的方法在检出率上没有提升,且在阈值等参数上依旧有较多的人为干预.为了弥补该方法的不足,本文提出了基于半定长滑动窗口数据的供水管网漏损检测方法,旨在针对Wu 等[4]提出的方法进行两个方面的提升:1)减少聚类方法中参数设置的人为干预,根据数据域的分布特性自适应选择参数,提高方法的泛化性;2)改进定长滑动窗口,提出半定长窗口检测方法以提高漏损数据的检出率.

1 基于聚类的漏损检测方法

为了有效解决在具有多个出水口的独立计量区域(District Metering Area,DMA)中检测漏损的问题,Wu 等[4]提出了一种基于聚类的漏损检测方法.该方法基于Rodriguez 和Laio[19]的聚类算法理论,首先对获取到的供水管网流量计数据进行重构,然后进行聚类分析,算法认为如果在特定时间发生的异常事件对应的向量与重构矩阵中其他向量相似度较低,那么这些向量被判定为异常值[11].因此,异常向量检测被转化为聚类分析问题.

数据重构即从不同流量传感器获取到时序流量数据转换成矩阵X,如式(1)所示:

式中:Atn表示流量计n在t时刻的流量值,t值由流量计的采样频率和采样时长决定.矩阵中的每一行代表同一时刻不同流量计的流量数据,每一列代表不同时刻同一流量计的时序流量数据.

依据文献[19],若存在向量局部密度低且远离其他较高密度的向量,则该向量被视为异常向量.因此,针对重构矩阵中第i个向量需要计算相应的两个参数:局部密度ρi和第i个向量与高密度向量的最小距离δi,参数的计算均基于向量之间的余弦距离.每个向量的局部密度定义为式(2):

式中:当x<0 时,x(x)=1,反之x(x)=0;dc是截断距离.距离δi通过计算第i个向量和任何其他具有较高局部密度的向量之间的最小距离来测量,定义为式(3):

最高密度点的距离δi取其与其他向量之间距离的最大值,定义为式(4):

为了降低算法的数据量要求,文献[4]的漏损检测方法提出使用一天的时序数据进行重构并对模型进行训练.该方法首先将局部密度最低的向量根据距离降序排列,引入百分比参数来剔除历史数据矩阵中的异常向量,例如当α1为0.03,则将在降序排列后的前3%的历史数据向量认定为异常向量,剩余的向量构成检测矩阵.接着,将检测矩阵应用于检测流量计实时测量的流量值,并引入百分比参数来判断该时刻流量值是否为异常向量.检测矩阵随着漏损检测的过程不断更新,若当前时刻流量被识别为异常向量,则移除异常向量且窗口保持不变;否则将其添加在窗口末尾,摒弃窗口头部向量以保持检测矩阵长度不变.

值得注意的是,文献[19]提出的漏损检测算法的准确性很大程度上取决于阈值dc的选择.然而,依据经验选取的阈值dc没有充分考虑数据的分布特性,引入了较多的人为干预.同时,固定的时间窗口容易因为信息不足导致误判,对小漏损数据也不敏感.因此,本文将使用数据自适应的方式获取阈值dc来减少人为干预,并使用半定长滑动窗口策略来识别异常向量提高漏损检出率.

2 漏损检测算法

2.1 基于数据域的自适应阈值选择

供水管网漏损识别过程中,为了避免在参数阈值dc选取中过多引入人为干预,并且使该参数能充分匹配数据的分布特性,让选取结果更加客观、合理,依据文献[20],本文引入熵函数使阈值dc自适应地进行选取,为优化dc的取值提供了方法.信息熵是度量信息量的方式.矩阵中的向量越相似,信息熵越低;反之信息熵越高[21].已知矩阵中{A1,A2,…,At},则每个向量的信息量为:

根据向量的信息量,该矩阵中数据的熵值H可由如下公式求解:

如图1 所示,自左到右分别为给定数据的真实分布、利用文献[4]中算法的聚类结果和引入信息熵修正的聚类结果.图1 的结果表明,基于信息熵的改进聚类算法比之前的算法更接近原始数据的聚类结果,说明该算法根据数据分布特性自适应地选取阈值dc有助于提高异常向量检出率.

图1 数据聚类分布图Fig.1 Data clustering distribution map

2.2 半定长滑动窗口方法

2.2.1 半定长滑动窗口

文献[4]使用的窗口大小固定、时间较短,容易因为信息不足导致误判,而窗口越长信息越多,数据特征也越多,检测效果就越好.同时窗口越长,窗口中包含的冗余信息越多,对随机误差抑制效果越好[22].在基于动态可调衰减滑动窗口的变速数据流聚类算法中提到滑动窗口可以及时淘汰历史数据,该方法通过只关注近期数据来达到改善数据聚类效果的目的,在衰减滑动窗口方法中给不同数据赋予不同的权重,其取决于数据时间的远近,数据获取时间越早,则权重越小;反之,数据越晚即离检测数据越近,权重越大[23].

图2 展示了检测窗口相对小时(虚线框1),使用基于数据域的CFSFDP方法未能检测出异常向量,但是当检测矩阵相对大(虚线框2)时,异常向量检测成功(横划线表示)的情况.有多种因素导致此情况,如当窗口大小适宜且信息量足够时,能选定一个更适用的阈值dc检测异常向量,或候选异常向量的数量能够包括异常向量(虚线框2).但窗口适宜的大小是不确定的,根据不同数据的分布情况而不同,同时与数据冗余情况、时序数据的远近程度也有关联.

图2 不同检测窗口检测异常值示例图Fig.2 Examples of abnormal values detected by different detection windows

受上述启发,在时序流量数据漏损检测中需要寻找灵活变动且大小适宜的窗口来提升获取数据的信息质量,因此,本文提出了半定长滑动窗口,即在初始矩阵的基础上增长滑动窗口,引入变量天数K来衡量窗口增长的范围,窗口检测完K× 288(采样频率为5 min一次)长度的数据后剔除窗口中首天的数据,如此反复增长删除,使得窗口大小可变长但上限固定.K值的大小决定了半定长窗口中向量的数量以及窗口向最大长度.

2.2.2 初始矩阵

本文使用检测数据的前一天时序流量数据作为历史数据,将其按式(1)的进行重构作为历史数据矩阵.同时,对历史数据矩阵中的向量{A1,A2,…,At}进行滑动平均滤波处理,依次将向量注入缓冲区,缓冲区大小为m,缓冲区现有向量个数为j.若缓冲区的向量个数小于m,对缓冲区中保留的j个向量进行算数平均运算,如果缓冲区的向量数量不小于m,则剔除进入缓冲区的首个向量,保持缓冲区向量个数为m,再对缓冲区中保留的m个向量进行算术平均运算,最后得到处理后的向量[24].滑动平均滤波公式为:

式中:m=t/2.

滑动平均滤波将历史数据矩阵中的异常波动影响减小以保证正常管网数据的信息质量.滑动平均滤波后,本文基于数据域的CFSFDP算法剔除历史数据矩阵中的异常向量,该算法将低于局部密度边界的向量根据它们的距离δi降序排列.本文根据箱线图理论将向量密度从低到高排列,并取下四分位数为最低局部密度边界,则小于下四分位数的所有低密度向量为可疑漏损向量;再将可疑漏损向量根据距离δi降序排列,引入百分比参数θ1确定历史数据矩阵中异常向量的数量即认定降序排列之后前θ1的数据为异常向量并将它们剔除,获得初始检测矩阵.θ1应尽可能的大才能有效剔除异常向量,若历史数据矩阵中识别出s个异常向量,则初始检测矩阵中的向量个数为(288-s).

2.3 漏损检测流程与算法设计

基于半定长滑动窗口数据的漏损检测方法具体过程为在初始检测矩阵窗口大小为(288-s)的基础上逐步增长窗口,当检测完K×288长度的数据后删除窗口中首天的数据并继续增长窗口检测完成288 个新进数据,之后再次删除窗口中首天的数据,如此循环地进行异常向量检测.每个采样间隔从不同流量计获取的时序流量数据被视为一个待检向量.检测矩阵使用改进的聚类算法来确定待检向量与历史向量的相似性以识别漏损并不断更新矩阵向量.

图3 显示了异常向量循环检测过程.在检测时,当一个待检向量进入初始矩阵之后形成检测矩阵,对(288-s+1)个向量进行基于数据域的CFSFDP聚类分析.引入百分比参数θ2来识别待检向量是否为异常向量.若待检向量识别为异常向量则从检测窗口中移除;否则将保留在检测窗口中,此时,检测窗口长度增长变为(288-s+1),用于下一个待检数据.检测窗口的大小并不是无限制增长,滑动窗口可增长的检测窗口数量不大于K×288,若检测完K×288个时间序列数据,将剔除窗口中首天的数据.假设检测完K×288 个数据并剔除完数据的滑动窗口大小为l[l取决于检测窗口中首天需要删除的数据个数,该值处于(288-s)~(288+K×288)之间].接着使用窗口中的l个数据检测288 个时序数据,检测完之后依旧删除窗口首天的数据,使得当前滑动窗口大小为l,并继续循环检测新产生的待检数据.

图3 半定长滑动窗口检测方法示例图Fig.3 An example diagram of a semi-fixed-length sliding window detection method

本文所提算法如表1中的算法1所示.

表1 漏损检测算法流程Tab.1 Leakage detection algorithm flow

3 实验结果与分析

3.1 数据集

本文实验采用的供水管网为Any-town 管网,该管网有19 个用水节点和3 个水库,构成了包括40 个供水管段的供水管网,管网结构如图4所示[25].

图4 Any-town管网Fig.4 Any-town pipe network

为了有效测试算法性能,本文使用python 中的供水管网仿真工具包WNTR 在Any-town水管网模拟了四次随机场景的用水数据[26].四个场景所用的管网拓扑结构相同,但管网的长度、直径、粗糙系数和节点用水模式均不相同,通过引入随机参数实现管网差异化.所有场景模拟了共计182 天的用水情况,并随机在6~12 个用水节点模拟漏损,漏损情况包括小漏损(漏损孔直径处于0.01~0.08 m之间)和大漏损(漏损孔直径处于0.1~0.16 m 之间),漏损时间与时长随机分布各个时间段.根据模拟情况,表2 显示了四个场景的具体漏损个数.

表2 Any-town四个场景漏损数据统计Tab.2 Leakage data statistics of the Any-town four scenarios

3.2 半定长滑动窗口K值选择

为了提高算法对不同数据集的泛化性,K值应通过在相应数据集上的抽样实验自适应选取.实验方法为从四个场景中各随机选取5 天包含漏损数据的时序数据.选取5 天中的K×288 个数据(包含漏损数据)为测试数据,其前一天时序数据为历史数据.使用本文提出的基于半定长滑动窗口数据的聚类算法对K×288 个测试数据进行漏损检测,最后使用检出率(True Positive Rate,TPR)和误报率(False Positive Rate,FPR)评估选取最适宜的K值.根据文献[4]对不同窗口大小情况下进行多组实验得到的指导性数值,设置参数θ1=0.03,θ2=0.01,θ1较大是因为尽可能剔除历史矩阵中异常向量,θ2较小是为了降低FPR.本次实验在四个场景中随机选取的数据包含36 个漏损数据,使用TPR 和FPR 评估该方法性能时未区分四个场景.TPR和FPR随K值变化的结果如图3所示.

从图5 可以看出TPR 随K值上升至100 后开始下降,最后保持平稳,当K值为1时TPR 最低,而K值为2时漏损数据全部检测成功,K值继续增大时只有1 个漏损数据未成功检测.FPR 随K值的增加而增加,变化规律趋于直线,这是因为聚类算法的参数θ2没有发生变化,当检测窗口的数据增多时可供选取的异常候选向量增多,这增加了检测成功异常向量的可能性,同时增加了检测错误的可能性.追求小的FPR可能会降低对小流量漏损情况的敏感度[4],因此在可接受的FPR 值范围内选择最好的TPR 值结果,所以本文选取K=2 进行半定长滑动窗口的漏损检测.

图5 K值评估结果图Fig.5 K value evaluation result graph

3.3 漏损检测结果与分析

为了评估算法,本文将提出的算法与Wu 等[4]提出的聚类算法在Any-town 管网的四个模拟场景的数据进行了漏损检测对比.本文选取测试日期前一天的数据作为历史数据,四个场景的测试数据均为2天,漏损数据随机散布在各个时间点.

表3 展示了在四个不同场景下本文算法和对比算法的漏损识别结果.可以发现本文提出的基于半定长滑动窗口数据的漏损检测方法的TPR 相同,甚至大幅度优于对比算法,所有场景的TPR 值都超过50%,成功检测出场景二所有的漏损数据;FPR 略差于对比算法,但也在10%的可接受范围内.因四个场景的漏损数据较多,总体来说,本文算法在可接受的FPR范围内大幅提升了TPR.

表3 Any-town漏损检测结果对比Tab.3 Comparison of Any-town leak detection results

为了进一步评估两种算法识别大小漏损数据的性能,图6 显示了本文算法与对比算法在小漏损和大漏损的检测情况.在四个不同的场景中,每个场景都由四个柱状图描述.在大漏损数据检测方面,本文算法能够检测出100%的大漏损数据,而对比算法只检测出94%的大漏损数据;在小漏损数据检测方面,本文算法成功检测出41%的小漏损,对比算法检测出13%的小漏损,本文算法对小漏损具有更高的敏感度,而一些小漏损数据没有被检测出的原因是它们与正常数据相异不大导致算法没有成功识别.

图6 漏损检测结果图Fig.6 Leakage test results

为了减少误报率并使漏损检测更加可靠,多数数据驱动方法在漏损检测时并不会认定单个候选漏损数据为异常向量[27].因此,本文将对经过算法检测后选定的候选异常向量进一步判定,如果候选异常向量的邻近向量为候选异常向量即连续两个以上的向量被判定为异常,那么该候选异常向量为异常向量.表4 显示了本文算法和对比算法未使用该策略和使用该策略的TPR 和FPR,结果表明不管本文算法还是对比算法使用该判定策略能有效降低FPR.

表4 使用策略后的Any-town漏损检测结果对比Tab.4 Comparison of Any-town leak detection results after using the strategy

此外可以发现在使用判断策略后TPR 几乎不受影响,场景1-3 中使用策略后在维持检出率的同时误报率下降了1%~1.5%;在场景4 中检出率下降了6%,而误报率受影响下降了2%.其原因是在使用策略干预下有5 个小漏损数据被判定为正常,而造成该现象的原因是该数据邻近的漏损数据因过小而未被算法识别,最终没有通过策略漏损判定条件.

4 结论

本文提出基于半定长滑动窗口数据的供水管网漏损检测聚类方法.在多出入口的DMA 中,该方法使用较少的历史数据来检测漏损,具有良好的检测性能.研究结果表明,通过熵值自适应选择阈值dc减少了人为干预,根据数据域的分布特性能够获得更好的检测效果,以及选取适宜的半定长滑动窗口的K值,在可接受的FPR 范围内提高了TPR.该方法在四个场景中成功检测出100%的大漏损数据和41%的小漏损数据.本文提出的半定长滑动窗口在一天时间序列数据的基础上可在受限范围内进行长度可变滑动检测,这使得快速适应新的供水管网或者改造过的供水管网成为可能.

基于流量数据的漏损检测,数据信息来源单一,为此,结合压力和声音等多维信息来提升小漏损故障的检出率将是技术发展趋势.

猜你喜欢

供水管滑动聚类
用于弯管机的钢管自动上料装置
一种傅里叶域海量数据高速谱聚类方法
市政工程供水管网运行管理
基于BIM的供水管网智能运维管理系统设计
针对移动端设计的基于滑动响应方式的验证码研究
面向WSN的聚类头选举与维护协议的研究综述
CJJ 92—2016城镇供水管网漏损控制及评定标准
Big Little lies: No One Is Perfect
改进K均值聚类算法
基于Spark平台的K-means聚类算法改进及并行化实现