技术领域
[0001] 本
发明涉及
智能电网技术,具体地说是一种基于二叉检测树的智能电网邻居区域恶意电表检测方法。
背景技术
[0002] 智能电网,又称为“电网2.0”,它是在传统电网的
基础上集成最新的信息、通信及控制技术,实现双向的电
力流和信息流。智能电网可以提高
能源效率、减少对环境的影响、提高供电的安全性和可靠性、减少输电网的
电能损耗。目前,世界上有许多国家,如美国、中国、日本等,都在大力发展并推广智能电网技术。公开资料显示,2011年中国国家电网计划在“十二五”期间投入约1.6万亿元用于智能电网建设。然而,智能电网在提供可靠、安全、经济、高效的电力供应的同时,也带来了许多新的威胁。其中,用户篡改电表等窃电行为不仅给电网公司带来了巨大的经济损失,也损害了非窃电用户的利益,严重影响了供电
质量。本发明中,经用户篡改过的智能电表被称之为“恶意电表”。
[0003] 由于高级计量架构(Advanced Metering Infrastructure,AMI)使得智能电网具备双向通信功能,用户篡改电表的方式相对于传统电网中更多样化。篡改电表不仅可以通过物理方法,如改动
短路计量装置,调接零火线等,还可以通过网络攻击篡改用电数据。其中,网络攻击可以发生在任何时间、任何地点:(1)用电数据被记录时;(2)用电数据在智能电表中存储时;(3)用电数据在网络中传输时。这也导致了智能电网中的窃电现象比传统电网更加严重。据统计,全世界每年由于用户窃电所造成的经济损失达250亿美元。其中,美国、印度分别达60亿、45亿美元。
[0004] 近年来,面向智能电网的恶意电表检测问题受到了越来越多的学者关注。部分学者试图对现有的智能电表进行
硬件加强或者结构升级。但是这类方法成本太高,特别是考虑到近几年已有数百万的智能电表投入安装并使用。此外,该类方法也无法检测由于网络攻击造成的恶意电表。更多学者致力于设计高效的恶意电表检测
算法。其中,最常见的一类算法是利用
机器学习及
数据挖掘方法,如
支持向量机、
遗传算法、超限学习机等,分析智能电表周期性上传的用电数据并对电表进行分类,来检测与电表篡改高度相关的异常行为。但是,此类算法要求智能电表周期性地上报细粒度的用电数据,从而可能侵犯用户隐私。此外,计算复杂度较高、准确度相对较低等缺点也不容忽视。
发明内容
[0005] 针对现有的智能电网恶意电表检测方法布设成本高、计算复杂度较大、检测
精度较低及可能会侵犯电表隐私等问题,本发明提出了一种基于二叉检测树的智能电网邻居区域恶意电表检测方法。
[0006] 本发明为实现上述目的所采用的技术方案是:一种基于二叉检测树的智能电网邻居区域恶意电表检测方法,在邻居区域智能电网的配电室中,安装检测器来监控该区域中是否有恶意电表,包括以下步骤:
[0007] 二叉检测树建立阶段:随机选择用户作为叶子
节点,建立一棵完全的、满的二叉树;
[0008] 恶意电表检测阶段:检测器检测任意二叉树节点并计算以该节点为根节点的子树上的所有电表的窃电量。
[0009] 所述二叉检测树建立阶段包括以下步骤:
[0010] 计算二叉检测树的层数: 其中n为智能电网邻居区域的电表总数;
[0012] 计算第二层的叶子节点个数:
[0013] 随机选择用户电表{m1,m2,…,mn}作为叶子节点,自底向上建立二叉检测树。
[0014] 如果计算得到的第一层的叶子节点个数为0,则所有叶子节点,即用户电表,都分布在同一层,此时,所述第二层即为二叉检测树的第一层。
[0015] 所述二叉检测树具备以下特征:
[0016] 满二叉树;
[0017] 完全二叉树;
[0018] 只有第一层和第二层才有叶子节点;
[0019] 第一层的叶子节点靠左分布;
[0020] 第一层的叶子节点个数为偶数。
[0021] 所述恶意电表检测阶段包括以下步骤:
[0022] (1)对于二叉检测树上的任意节点i,检测器测量数据上报周期内电网公司输送给以节点i为根的子树下所有电表的总电量R(i);
[0023] (2)检测器接收以节点i为根的子树下所有电表上报的用电数据R(mj),mj∈CM(i),并计算其总量 其中,CM(i)表示以节点i为根的子树下所有电表的集合;
[0024] (3)检测器比较R(i)和S(i):若两者之差R(i)-S(i)≤△(i),则该子树下无恶意电表,检测器不再对该子树进一步检测,且令节点i的窃电量x(i)=0;若R(i)-S(i)>△(i),则该子树下有恶意电表,计算该子树恶意电表的总窃电量:x(i)=R(i)-[S(i)+△(i)];其中,为所有电表预先测得的技术性损失之和;
[0025] (4)若R(i)-S(i)>△(i),且节点i为叶子节点,则节点i为恶意电表;否则,若R(i)-S(i)>△(i),但节点i不是叶子节点,检测器检测节点i的左孩子i.lchild,重复步骤(1)到(3),得到节点i的左孩子的窃电量x(i.lchild);并根据x(i)以及x(i.lchild)的值推断节点i的右子树下是否含有恶意电表,具体步骤如下:
[0026] (5)若节点i.lchild不为叶子节点,且x(i.lchild)=0,更新节点i为节点i.rchild.lchild,重复步骤(1)到(4);若节点i.lchild不为叶子节点,且x(i)=x(i.lchild)>0,更新节点i为节点i.lchild.lchild,重复步骤(1)到(4);若节点i.lchild不为叶子节点,且x(i)>x(i.lchild)>0,先后更新节点i为节点i.lchild.lchild和i.rchild.lchild,重复步骤(1)到(4);其中,i.lchild.lchild和i.rchild.lchild分别表示节点i的左孩子i.lchild的左孩子以及节点i的右孩子i.rchild的左孩子;
[0027] (6)若判断完所有电表是否窃电,则程序终止。
[0028] 所述步骤(4)具体包括以下步骤:
[0029] (4.1)计算节点i的右孩子i.rchild的窃电量x(i.rchild)=x(i)-x(i.lchild);
[0030] (4.2)若x(i.rchild)=0,则节点i的右子树下无恶意电表;
[0031] (4.3)否则,节点i的右子树下有恶意电表;且若节点i.rchild为叶子节点,则i.rchild为恶意电表。
[0032] 所述恶意电表检测阶段采用前序遍历方式,若某节点为二叉检测树上的任意右孩子,则检测器无需对其进行检测。
[0033] 所述技术性损失包括:
[0034] 在电力传输和分配过程中由于线损、电力转换以及泄露所造成的损失;
[0035] 由于通信延迟或同步所造成的测量误差;
[0036] 环境中的随机因素。
[0037] 本发明提出的一种基于二叉检测树的智能电网邻居区域恶意电表检测方法,是在充分考虑降低检测器部署成本、提高检测精度的前提下提出的,该方法能够快速、准确地检测恶意电表,有效减少窃电损失。具体表现在:
[0038] (1)本发明提出建立以用户电表作为叶子节点的二叉检测树,辅助检测器检测智能电网邻居区域中的恶意电表。检测器检测二叉树上的任意节点时,不仅检测以该节点为根的子树下是否有恶意电表,而且计算该子树下所有用户的窃电量;
[0039] (2)本发明在分别得到以某节点及其左孩子为根的子树下所有用户的窃电量之后,根据这两个窃电量之间的差值,检测器判断下一个需要检测的二叉树节点,跳过二叉检测树上的大部分逻辑节点,从而提高检测速度,快速、准确地
定位智能电网邻居区域中的恶意电表。
附图说明
[0040] 图1为智能电网邻居区域结构示意图;
[0041] 图2为基于二叉检测树的智能电网邻居区域恶意电表检测方法示意图;
具体实施方式
[0043] 下面结合附图及
实施例对本发明做进一步的详细说明。
[0044] 本发明提出在邻居区域智能电网的配电室中,安装检测器(如图1所示),来监控该区域中是否有恶意电表。利用二叉检测树作为逻辑结构,辅助查找智能电网邻居区域中的恶意电表。在分别得到以某节点及其左孩子为根的子树下所有用户的窃电量之后,根据这两个窃电量之间的差值,检测器判断下一个需要检测的二叉树节点,跳过二叉检测树上的大部分逻辑节点,从而提高检测速度,快速、准确地定位智能电网邻居区域中的恶意电表。本发明方法包括二叉检测树建立阶段及恶意电表检测阶段。二叉检测树建立阶段随机选择用户作为叶子节点,建立一棵完全的、满的二叉树;在恶意电表检测阶段,检测器检测任意二叉树节点并计算以该节点为根节点的子树上的所有电表的窃电量。
[0045] 本发明提出的一种基于二叉检测树的智能电网邻居区域恶意电表检测方法,其主要思想在于:以用户电表为叶子节点,建立二叉检测树作为逻辑结构,辅助查找智能电网邻居区域中的恶意电表;当检测器检测二叉树上的任意节点时,不仅检测以该节点为根的子树下是否有恶意电表,而且计算该子树下所有用户的窃电量;在分别得到以某节点及其左孩子为根的子树下所有用户的窃电量之后,根据这两个窃电量之间的差值,检测器判断下一个需要检测的二叉树节点;若以某节点为根的子树下无恶意电表,检测器无需再对其进行检测;采用前序遍历方式,若某节点为二叉检测树上的右孩子,则检测器可跳过该节点而对其左孩子节点进一步检测。
[0046] 本发明方法包括二叉检测树建立与恶意电表检测两个阶段,下面结合图2、3进行说明:
[0047] 阶段(1)二叉检测树建立,具体包含以下步骤:
[0048] (1.1)计算二叉检测树的层数:
[0049] (1.2)计算第一层的叶子节点个数:
[0050] (1.3)计算第二层的叶子节点个数:
[0051] (1.4)由于计算所得的第一层的叶子节点个数为0,故而所有叶子节点,即用户电表,都分布在同一层,此时,所述第二层即为二叉检测树的第一层;
[0052] (1.5)随机选择用户电表{m1,m2,…,mn}作为叶子节点,自底向上建立二叉检测树;
[0053] 阶段(2)恶意电表检测,具体包括以下步骤:
[0054] (2)恶意电表检测
[0055] (2.1)检测器检测节点a:
[0056] (2.1.1)检测器测量数据上报周期内电网公司输送给以节点a为根的子树下所有电表的总电量R(a);
[0057] (2.1.2)检测器接收以节点a为根的子树下所有电表上报的用电数据R(mj),mj∈CM(a),并计算其总量 其中,CM(a)表示以节点a为根的子树下所有电表的集合,即CM(a)={m1,m2,m3,m4,m5,m6,m7,m8};
[0058] (2.1.3)检测器比较R(a)和S(a)。由于R(a)-S(a)>△(a),所以该子树下有恶意电表,计算该子树恶意电表的总窃电量:x(a)=R(a)-[S(a)+△(a)];
[0059] (2.1.4)由于节点a不是叶子节点,检测器接着检测节点a的左孩子b;
[0060] (2.2)检测器检测节点b:
[0061] (2.2.1)检测器测量数据上报周期内电网公司输送给以节点b为根的子树下所有电表的总电量R(b);
[0062] (2.2.2)检测器接收以节点b为根的子树下所有电表上报的用电数据R(mj),mj∈CM(b),并计算其总量 其中,CM(b)表示以节点b为根的子树下所有电表的集合,即CM(b)={m1,m2,m3,m4};
[0063] (2.2.3)检测器比较R(b)和S(b)。由于R(b)-S(b)>△(b),所以该子树下有恶意电表,计算该子树恶意电表的总窃电量:x(b)=R(b)-[S(b)+△(b)];‘
[0064] (2.2.4)计算节点c的窃电量x(c)=x(a)-x(b);
[0065] (2.2.5)由于x(c)=0,所以节点c为根的子树上的用户电表{m5,m6,m7,m8}不含恶意电表;
[0066] (2.2.6)由于节点b不是叶子节点,检测器接着检测节点b的左孩子d;
[0067] (2.3)检测器检测节点d:
[0068] (2.3.1)检测器测量数据上报周期内电网公司输送给以节点d为根的子树下所有电表的总电量R(d);
[0069] (2.3.2)检测器接收以节点d为根的子树下所有电表上报的用电数据R(mj),mj∈CM(d),并计算其总量 其中,CM(d)表示以节点d为根的子树下所有电表的集合,即CM(d)={m1,m2};
[0070] (2.3.3)检测器比较R(d)和S(d)。由于R(d)-S(d)>△(d),所以该子树下有恶意电表,计算该子树恶意电表的总窃电量:x(d)=R(d)-[S(d)+△(d)];
[0071] (2.3.4)计算节点e的窃电量x(e)=x(b)-x(d);
[0072] (2.3.5)由于x(e)=0,所以节点e为根的子树上的用户电表{m3,m4}不含恶意电表;
[0073] (2.3.6)由于节点d不是叶子节点,检测器接着检测节点d的左孩子m1;
[0074] (2.4)检测器检测节点m1:
[0075] (2.4.1)检测器测量数据上报周期内电网公司输送给以节点m1总电量R(m1);
[0076] (2.4.2)检测器接收以节点m1上报的用电数据S(m1);
[0077] (2.4.3)检测器比较R(m1)和S(m1)。由于R(m1)-S(m1)>△(m1),且节点m1为叶子节点,所以节点m1为恶意电表;
[0078] (2.4.4)计算节点m1的总窃电量:x(m1)=R(m1)-[S(m1)+△(m1)];
[0079] (2.4.5)计算右孩子m2的窃电量x(m2)=x(d)-x(m1);
[0080] (2.4.6)由于x(m2)>0,且m2为叶子节点,所以m2为恶意电表;
[0081] (2.5)由于已知所有电表{m1,m2,m3,m4,m5,m6,m7,m8}是否窃电,程序终止。