苟瑞欣, 刘小敏, 肖艳利, 王 铮
(国网宁夏电力有限公司经济技术研究院能源互联网技术经济研究中心, 银川 750001)
随着网络技术的发展,现代电网已经成为网络物理系统[1]。作为最关键的广域监视、保护和控制功能之一,系统完整性保护(system integrity protection,SIP)旨在通过采取诸如负荷卸载、发电拒绝等补救措施来防止系统范围内的稳定性问题[2-3]。当检测到某些预定和不期望的系统条件时,除了试图减少SIP的自然失效次数外,如何确保智能电网中的SIP方案在面对网络攻击时不会严重恶化同样重要。
SIP方案大多采用集中式主从架构,很少有方案综合考虑网络安全。为了保护SIP安全并增强其网络泛化能力,可以探索三种解决方案:①应用传统的IT安全措施,如通信网络隔离和加密,以保护SIP免受网络威胁[4];②部署多个保护模块作为彼此的备份[5];③重新设计SIP,使其能够及时检测到异常情况,并具有自适应性,以便在受到攻击时能够相应地调整其行为[6]。现主要研究第三种选择,寻求一种新的针对智能电网的抗攻击SIP设计方案。
对于抗攻击SIP设计方案,研究人员通常转向权力下放来解决集中职能的安全问题。文献[7]提出了一种基于多智能体系统(MAS)规则的入侵检测方案,该方法能检测继电器的严重跳闸,并能区分网络攻击和正常故障。然而。本文研究中主要集中在局部保护方面,而基于规则的异常检测的可扩展性可能成为应用过程中的一个瓶颈,因为对于复杂的函数,有效的规则并不总是显式的,也不容易总结。文献[8]提出了分布式特殊保护系统(SPS)的思想,利用置信度来统计地识别不可信的智能体,并利用“数据重传”机制来减少数据丢失的影响。然而,提出的解决方案需要同时提供大量冗余数据多个在线控制器。文献[9]讨论了一种通用的基于MAS的自适应负荷分配方法,参与负载分配算法的智能体基于平均一致性算法动态交换负载信息,每个代理在达成一致性后,根据系统范围内的供需差异和负载连接指标,计算出需要分配的本地负载。然而,这项工作没有考虑MAS受到恶意网络攻击的情况。
为了提升系统抗攻击能力以及泛化能力,现提出一种基于支持向量机嵌入分层决策树(SVMLDT)的多智能体电网抗攻击系统完整性保护方案;同时提出一种基于动态规划的自适应减载方案,该方案能够适应拒绝服务(denial of service,DoS)攻击。利用SVMDT以点对点的方式进行交互,使得每个智能体都具有数据处理和决策的能力制作。实验结果证明了提出方法的有效性。
传统的SIP通常包括一个主机(决策模块)和几个从机(传感器/执行器)。此类集中保护方案容易受到网络攻击,当SIP受到协同攻击时,失去主设备将导致隐藏故障。本节介绍一种基于多智能体系统(MAS)的分布式SIP,主要满足只有部分代理收到对方攻击,该SIP可以尽最大努力提供补救措施。MAS是由多个智能体组成的,这些智能体之间相互通信和交互,从而实现具有自治性的各种任务。每个智能体都有一组特定的资源(处理器、内存、传感器、执行器等)和操作行为(通知、请求、接受和拒绝等等)。通常,MAS采用分层或对等体系结构。由于具有层次结构的MAS仍然可以区分智能体的作用,因此主要研究对等体系结构。
许多现有研究工作倾向于在变电站内设计MAS。相反,本文研究中提出的第一个假设是一个智能体代表一个完整的变电站。MAS中的智能体之间需要进行数据和信息的交换,通信网络拓扑结构对MAS的性能有很大的影响。图1描绘了一种可能的拓扑结构,其中把网络映射到物理网格。下文提出的异常检测和自适应控制可以不考虑实际的通信拓扑结构,因此对拓扑的结构设计没有着重介绍。
图1 点对点MAS体系结构
MAS的总体运行流程图如图2所示,其中包括异常检测和自适应最佳减载(为内置应用程序)。每个智能体在本地检测异常,但是在进行任何保护操作之前,相互连接的智能体之间必须达成一致。此过程采用了平均一致性算法[10]。
图2 多智能体模型流程图
不同SIP方案对时序性能的要求各不相同,应充分考虑,以保证能够及时实施补救措施。通常,特定SIP方案不涉及多个节点(变电站)。虽然两个智能体之间的通信需要中间智能体的协助并不少见,但设计良好的通信网络拓扑结构可以消除通信瓶颈,减少路由跳数,从而降低通信延迟。尽管基于MAS的SIP可以替代传统的集中式方案,但更佳方案是保留集中式保护,将从属节点转换为智能代理,然后在他们之间进行对等通信。通过这种方式,其他研究可以充分利用现有研究方案,并且系统升级成本较低。
集中式SIP的一个现存问题是,当从机没有收到来自主机的任何命令时,并不知道是因为没有发生意外事件,还是因为特定命令被对方阻止或选择性地过滤掉。传统SIP从机无法区分这两种情况,但智能体提出的SIP具有这种能力。为了使分散式SIP能更好地感知状态信息,提出一种数据驱动的异常检测算法。
检测异常的任务是捕获信息物理系统(CPS)的任何异常操作状态,这些异常状态可以形成一个多分类问题,通过监督学习解决。标记训练数据是监督学习的前提条件,因此首先将电力系统的运行状态归为CPS。
根据平等和不平等的违反运算约束的次数,通常电力系统有5种不同的运行状态:正常、警报、紧急、极端和恢复。考虑到物理层和网络层之间的相互作用,得出了一个更全面的电网状态转换图,如图3所示。
图3 电力系统运行状态作为CPS
正常状态(N/0)——物理层和网络层均无异常。这种状态用“N”或“0”表示,在本文研究中没有区别,下文同样如此。
应急后状态(P/1)——当发生物理意外事件时,网络层中的SIP不会受到攻击,并按预期正常工作。
隐藏故障状态(H/2)——部分网络层已被破坏,但尚未发生物理层意外事件。
警报状态(A/3)——物理系统发生事故,同时,网络层一部分的保护方案也受到损害。
紧急状态(E/4)——物理系统处于由于执行保护方案而触发级联事件的状态。
在极端状态(I)——物理系统不稳定,需要隔离。
在图3中,每个模块表示电力系统的状态,并且是网络层中的状态(顶部蓝色文本)和物理层状态(底部红色文本)的组合。在定义了这些状态后,异常检测函数可以区分正常状态和由网络攻击(状态H、A或E)或自然突发事件(P)引起的异常状态。除了状态I以外的所有状态都将用于数据标记,因为当系统已处于极端状态时,异常检测并没有多大作用了。状态I的所有数据实例也被标记为状态E。
在CPS异常检测中,应利用网络和物理特征,从而可以揭示两层之间的潜在关联,以反映整个系统的运行状态。
决策树(DT)和支持向量机(SVM)是监督学习中常用的两种分类方法。DT以其分类效率而闻名,然而,当处理与线性决策边界不可分离的数据时,DT的分类精度可能不理想。相比之下,支持向量机可以更好地生成非线性边界,并对具有数值特征的数据进行分类,但与DT相比,它的计算量大,速度较慢。另外,支持向量机是进行二值分类的理想选择。当涉及多类分类时,使用支持向量机会导致出现未分类区域[11]。现提出支持向量机嵌入分层决策树(SVMLDT)方法,首先将训练数据集分离到所有名义特征下的子集合,降低了特征空间的维数。然后SVMLDT对每个子空间应用决策树支持向量机(decision tree support vector machine,DTSVM),这一步只需要考虑数值特征。
如上所述,SVMLDT首先利用所有名义特征,通过构建第一层决策树对超空间进行分层。其次,将DTSVM应用于第一层树的每个叶节点,使每一层树的叶节点成为第二层树的根节点。在构造第一层树中采用贪婪策略,利用信息增益进行特征选择。整个SVMLDT训练过程见算法1,主要包括以下三个步骤。
步骤1 形成具有标称特征的第一层树。
步骤2 对于第一层树的一个根节点,根据不同类质心之间的欧几里德距离,选择距离其他类“最远”的类Csep。
步骤3 训练支持向量机,将Csep与其他类分开。使用递归算法,直到第二层树的所有节点变为叶节点。
算法1 SVMLDT输入:数据集S输出:SVMLDT模型1:程序SVMLDT(S)2:Tree=NULL3:L1_ tree=DT(标称特性)4:Tree=L1_ tree5:for 每一个在L1树中的叶子结点Svdo6:ifSv是‘pure (度为0),then标记为叶结点7:else8:Sv为L2_tree的根节点9:类Csep=selectClass(Sv)10:在Csep和剩余数据之间执行SVM算法11:if(两个节点均为叶结点)不是真的,then12:对非叶节点重复步骤9~步骤10。13:end if14:将L2_tree嵌入Tree中15:end if16:end for17:Return Tree18:end
算法2 选择类别(S)输入:数据集S结果:类Csep1:程序—选择类别(S)2:for每一个类Cido3:找到质心距离{dij,j≠i}4:在类和其他类别之间5:end for6:i=argmaximinj(dij)7:Csep=C8:ReturnCsep9:end
在本节中提出的削减负载方案依赖于互联智能体之间的负载分配。对于一个相互连接的MAS,当每个智能体观察到显著的负载变化时,它将在全球范围内广播其负载特性。另外,智能体从所有其他智能体收集负载配置文件,根据收集的负载数据,智能体用动态规划的方法定期解决式(1)中提出的0-1背包问题。因此,当智能体需要削减负载时,可以很快完成此任务。优化问题的目标函数是在削减负荷后尽可能多地保留负荷值。
(1)
式(1)中:N为削减负荷方案涉及的变电站总数;Ki为变电站i的馈线数量;Pij(MW)和vij(美元/MWh)分别代表变电站i馈线j上的负荷量和相应的单位负荷值;PD(MW)为系统中的总负载;C(MW)为SIP触发时必须削减的负载量。对于削减负荷方案,通常通过分析权重来确定C,假设每个智能体都知道此值是一个常数,该优化问题中的决策变量为xij。当xij=0时,智能体将削减指定馈线的负载;当xij=1时,保持负载。单位负荷值vij的定义如式(2)所示:
vfeeder=LMP×(1+λfeeder)
(2)
式(2)中:LMP为节点边际电价;λfeeder为馈线的权重;vfeeder为反馈符合值。因此,馈线值是Pij和vij的乘积,单位为美元/h。
3.1节提出的削减负荷方案要求参与削减负荷的所有智能体相互关联。当MAS受到网络攻击时,情况可能并非如此。通过修改式(1)中提出的自适应策略,当某些通信信道被DoS攻击阻塞时,SIP仍能尽最大努力采取补救措施。当智能体之间的通信被阻塞时,原互连的MAS将被分成几个相互连接的小组。在一个小组中,实时负载文件仍然可以进行“全局”共享。因此,自适应策略可以描述如下。
(1)总削减负荷量仍由意外事故分析确定。
(4)每个智能体解决了式(3)中提出的动态规划问题,并在需要时相应地削减其部分。
(3)
用矩阵Pn×m表示所有n个代理和m次保护措施的历史削减负荷记录,如式(4)所示。式(5)~式(8)证明了当每一个智能体群按式(3)规定进行削减时,总的卸载量为C(MW)。假设历史削减负荷记录没有被攻击,此假设是合理的,因为紧急事件很少发生,而且在事后分析期间,攻击者输入的任何不良记录都可以被过滤掉。
(4)
(5)
(6)
(7)
(8)
另外,所提出的自适应削减负荷方案对DoS攻击诱导的信道或智能体失效具有很强的抗攻击能力,但不处理数据完整性攻击可能导致失败。
将文献[12]中提出的卸载负荷SIP被映射到国际电气工程师协会(IEEE)39总线系统作为研究案例,因为39总线系统在某些条件下表现出类似的卸载负荷保护需求。如图4所示,当39总线系统中的G8停止工作时,线路16~19和线路21~22将过载。这是因为图4右下角以蓝色虚线为界的子系统拥有整个系统37.9%的发电量,但该区域的负荷量只有15%,剩余的发电量主要通过16~19号线和21~22号线输送到系统的其余部分。如果两条线路因过载而跳闸,整个系统将变得不稳定。因此,选择G8表示电厂,G8附近的卸载负荷(包括25~28号总线)作为补救措施,防止两条线路跳闸。
图4 带负荷卸载保护方案的IEEE39总线
创建5个虚拟机(VM)作为智能体,分别代表工厂G8和总线25~28。在每个虚拟机中,与操作和削减负荷相关的智能体行为的编程语言为Java,并利用Java运行平台(JADE)实现了智能体之间的通信。所有智能体都通过一个虚拟的双向环连接。在此基础上,对智能体通信、一致性达成和负载削减进行了评估。对于异常检测评估,在Opal RT模拟器上进行实时模拟,从而合成数据,并由智能体通过Kepware OPC服务器进行收集[13]。在Simulink模型中对智能体间的同环互连进行仿真,传统的集中式保护仍然有效。通过R脚本对采集到的合成数据进行异常检测。
表1给出了每个智能体的特定作用,第2列状态包括每个智能体的相关断路器状态。例如,S25_26表示总线25附近线路25~26上断路器的状态。第3列包含与每个总线相关的特性,Vi和ai分别为总线i的电压幅值和相对相角,有功功率的输入Inj(发电和负载)如第4列所示,第5列是功率流,第6列是系统频率。相反,第7列Δt是经过处理的指标,表示两个连续频率骤降之间的时间间隔。每个智能体都记录该指标的最后两个值,表示最后三个频率下降的特征。Carm和Cshed是网络信息,表明存在从剩余的执行保护措施的主机收到的“Arm”和“Shed”命令。
表1 智能体参数
首先从以下场景收集合成数据,系统负载设为静态值。该数据集被分成训练子集和测试子集。注意,测试子集包含了来自训练数据集相同类型事件的信息。
目标意外事件(即G8跳闸)不会受到攻击,并且集中式的保护可以成削减负荷。配备集中式的保护时,不会发生不相关的自然突发事件。当传统的集中式保护受到环形网络上的单点或双点DoS攻击时(15种情况),G8会受到对方攻击。
用R语言实现SVMLDT,分别用“C50”和“e1071”工具包实现DT和SVM。作为比较,有4种不同的分类方法:①C50(决策树);②DTSVM;③SVMLDT;④K最近邻(KNN),这4种方法用相同的训练子集进行训练。表2、表3将上述测试子集分别作为智能体25和智能体26的混淆矩阵得出测试结果。可以发现,如果不区分状态N和P或A和E,C50和SVMLDT可以获得更好的检测精度。考虑到它们需要采取补救措施,对N和P或A和E状态进行忽视处理是可行的。N和P都不需要采取补救措施,相反,A和E两个阶段也需要相同的补救措施。
表2 代理25的算法比较
表3 基于智能体26的算法比较
为了进一步评估异常检测模块,又收集了两个合成数据集来进行“在线”测试。第一个是以下场景中收集的:在云主机G8的两侧都有DoS攻击时,遗留的集中式保护正在运行,然后触发G8。第二个是在系统正常运行期间收集的数据,包括自然线路故障和动态负载变化。也就是说,第二个测试数据集包含训练集没有的数据。智能体28的在线检测结果如图5所示,4个子槽的左纵轴代表系统频率,右轴代表CPS运行状态。例如,一个脉冲在值为2处结束,表示隐藏的故障状态H,通过子批次(a)、(b)以及子批次(c)、(d)的比较,可以看出DT和SVMLDT都能正确区分目标事件。但是通过比较子批次(a)、(b),发现DT在未观测到的测试数据上比SVMLDT在N和P之间的错误分类更多。
图5 A28在线异常检测评估
SVMLDT训练的时间性能取决于所考虑的SIP范围和训练数据集的大小。SIP越复杂,模型需要考虑的变量越多,因此机器学习相关问题就越复杂。对于本文讨论的负载抑制SIP,每个智能体大约包括15个特性。总共收集了150万个数据,训练数据集的下采样率设为0.002。由于所收集的数据不包括高频信息,所以可以执行下采样。表4总结了4个智能体训练SVMLDT(1级树和2级树)的平均中央处理器(CPU)时间消耗。一次检测所需的平均时间如图6所示。与DTSVM[14]、决策树(C50)[15]、K近邻算法(KNN)[16]和随机森林(RF)[17]等其他分类方法相比,SVMLDT的运行速度性能较差。检测时间大约需要2 ms,但仍能满足削减负荷时的保护要求,且具有较好的检测精度。
图6 异常检测时间成本
表4 SVMLDT训练时间
为了评估最佳自适应削减负荷算法,首先需要将IEEE39节点系统中25~28总线上的集中负载分配给多个馈线。因此,假设25~28变电站各有6、4、6和8条馈线,每条馈线在该总线上传输固定比例的总负荷。馈线的负荷曲线包括数量和价值两个指标,在一般情况下,应考虑负荷波动并将其加到负荷值中。
(1)动态负荷曲线:为了使削减负荷方案能更好地运用到实际中,利用中部独立系统运行机构(MISO)观测到的区域控制误差(ACE)来模拟IEEE 39节点模型中的随机负荷变化。从MISO网站收集的200个ACE用于通过核密度估计生成ACE概率密度函数(PDF)。然后可以从PDF中绘制ACE来模拟系统负载的变化。这些ACE按比例放大,从而适应IEEE 39总线模型,然后按比例分割并分配给每个馈线。对于每个馈线上的负荷“值”,利用了来自MISO实时市场的典型LMP。对总线的LMP进行随机抽样,然后按式(2)计算负荷值,用来表示负荷的真实值。这样,就可以在IEEE39节点模型中设定负载动态。
(2)自适应控制结果:首先模拟目标意外事件(即G8停运)10次,然后运行自适应减载算法,得到历史削减负荷记录,如式(4)所示。然后针对不同系统运行状态下出现的10种新的突发事件对该算法进行了测试。0-1背包问题的目标值如图7所示。“2-2子组”表示由于DoS攻击,变电站25、26、27和28被分为两个子组。类似地,“1-3子组”是变电站25与其他变电站隔离后得到的分组。可以看出,当多智能体划分为多个子组时,其削减负成本比当所有智能体相互关联时的要高。然而,为了保持系统的稳定性,仍然在削减同样数量的负载。这意味着分散智能体能够在受到DoS攻击时会尽最大努力提供补救措施。与集中式SIP相比,此改进措施较理性,当主节点受到DoS攻击时,不会减轻负载。
图7 减载结果
为了提升系统抗攻击能力以及泛化能力,提出了一种基于支持向量机嵌入分层决策树的多智能体电网抗攻击系统完整性保护方案。通过实验结果分析可以得出如下结论。
(1)该算法能够以较高的精度检测出CPS的异常工作状态,且分散式SIP在面对恶意攻击时具有更大的适应性和恢复能力。
(2)无论是异常检测还是自适应控制模块,都可以用其他算法代替,以适应不同的功能需求。证明了提出方法具有较好的使用性能。
(3)由于引入了最优自适应负荷卸载等功能,有效加快了提出的异常检测和自适应控制速度,减少了时间成本。