Graham Ducdon,Mathworks
PatriCe Brunelle,Hydro-Quebec
MathWorks和Hydro-Québec探索如何使用系统仿真和机器学习来开发算法,这些算法可以使用电压SAG测量来检测电网上的电网上的故障位置。系统仿真用于生成覆盖比单独测量数据的更广泛的操作包络的合成故障数据。然后使用合成数据来训练机器学习分类算法。您将了解如何使用分类算法的性能来提供进一步了解系统的物理行为以及与训练数据相关的任何限制。您还可以了解如何从这种洞察力提升建议,以增强系统测量和培训数据集,以提高整体分类准确性。
大家好。我的名字是Graham Dudgeon,我是Mathworks的电气技术主要产品经理。我今天加入了Patride Brunelle,他是Hydro-Quebec研究所IREQ的主要科学家。嗨,帕特里斯。我的朋友你好吗?
我很好。谢谢,格雷厄姆。我今天很乐意和你谈谈。
在此演示文稿中,帕特里德和我将谈论如何使用系统仿真和机器学习如何使用电压SAG测量来检测电网上故障位置的算法。Patrice将通过提供一些背景来踢到故障位置检测,并我们将讨论一些Hydro-Quebec在该领域的举措。然后,Patrice将描述正在研究的系统并讨论配置模拟模型以在多个位置生成故障数据。
然后Patrice树会传给我,我会讨论分类学习器的使用,这是统计学和机器学习工具箱的一部分,用来训练和评估机器学习算法。接下来,我将看一看分类算法的结果,它可以帮助指导我们就可能需要哪些额外度量来改进总体结果提出建议。然后,我将探讨精简数据集如何影响分类算法的准确性。这有助于指导需要多少数据才能提供准确的分类,以及如果我们使用精简数据集进行训练可能存在哪些限制。我们将以总结结束。
我想首先在故障位置检测后面设置一些上下文。显然,能够精确地确定故障的位置是高运行值。通过精确的位置,系统运营商可以采取明确的动作,维护人员可以更有效地派遣。Hydro-Quebec具有开发先进的故障位置和基于条件的维护功能的悠久历史。
MILES项目就是一个例子。MILES,代表对线路的维护和调查。利用MILES,可以在关键位置进行电压测量,并开发了一种对数,仅根据这些测量值就可以对故障位置进行三角测量。我们在右边看到的图像是MILES故障定位器的一个例子,用来估计实际的故障。
里程算法基于电力系统工程理论。与世界各地的许多公用事业一样,Hydro-Quebec正在探索机器学习可以提供互补能力和可操作监测的增强。这就是为什么我们很高兴能够在代表性问题上探索Mathworks的这种能力。
所研究的系统为辐射状配电网,是MILES项目中具有代表性的系统。仿真结果在实际系统中得到了验证。所以我们有很高的信心模拟的故障响应将代表实际的响应。
对于本研究,这里有五个电压测量位置。我们选择了38个不同的位置,用于应用故障。对于每个伏特位置,我们使用288个相位和中性电阻组合。这是为了生成超过10,000个故障场景,特别是38个故障位置,每个位置288场景 - 出现在超过10,000个方案。
为什么我们瞄准这么大的情景?嗯,对于机器学习,通常是数据越多,更好。10,000似乎是一个合理的目标。虽然我们当然可以在需要时生成更多。
我还应该注意到我们生成了正常数据,这意味着来自模拟的数据,其中没有应用故障。并且我们只使用每个负载上的正常分发配置文件更改了负载值。我现在将切换到Matlab以向您展示模型和我们正在使用的脚本来生成模拟数据。
让我们首先看一下我们在Simscape Electrical的专业电力系统中开发的仿真模型。分配网络通过网格连接到分配变压器。并且有一个三相线在15公里处,我分裂在每次五公里的三个部分,也有一个两阶段的分支。
所以我标记所有块,L1,L2,L3和L4。还有一些连接到网络的单相分配馈线。我有六个。我标记为L1阶段1.我们还有一个汇流条测量模型中五个位置的电压和电流。它们标记为B1,B2,B3,B4。我们在此处收集所有信号。对于每个折叠,我们正在测量它的正,阴性和零序列。我们在一个输出中收集所有信号。
让我们快速浏览一下三相系统。你看,我用这个木块把它分成1公里的部分。这是我们指定直线参数的地方。这让我可以接触到直线上的5到6个点。所以我可以在这里放一个错误。
目的是拥有我可以为各种故障类型和故障阻抗编程的故障块。所以我将能够设置这个街区,然后脚本将沿着我们刚刚看到的所有位置沿线移动这一点。因此,它将允许我在提前提到的38个位置应用故障。并且,M课程,同样适用于单相线。
现在,让我们看看用来生成模拟数据的脚本。全屏显示。开始了。
这是我指定了通用常规参数的地方,其中我定义了故障类型。目前,我将仅通过专用参数编程到接地故障。在这里,我列出了我在模型中的所有10行,我将使用我们稍后可以使用的特殊标签应用故障。
在这里,这是我们可以指定行的地方。所以现在为此模拟,让我们说我们只将1和五。所以单相线和两相线,只是为了向你展示原则。之后,这是列表中每一行的地方,我们将为它添加完整块。我会通过它做一些秘密,取决于我们做了三相向前还是单相错,我必须相应地设置块,然后如果我们向每个部分下降,每个插入点我会做一个艰难的线条因此我将完整的块连接到我想要做默认的位置,以及每个照片位置I错误r相位和r中性值。
所以这会给我很多错误 - 典型的错 - 到这个脱位。所以在下一步,让我们看看。在这里,让我们只是模拟一个,只是为了向你展示原则。我们将更快地进行模拟。然后下一步是启动模拟。并在模拟后,保存模拟,表中的数据,因此它将在模拟后可用。
现在,让我们开始。哎呀,有一站。让我们继续。您应该看到此子系统中出现的完整块。这是L1线。开始了。它连接到第一点,我想从折叠配对。该模型正在编译,模拟,然后我将要将相同的设置,申请折叠,收集提交数据等,执行相同的设置。我会让它在剩下的行中运行。
我们现在开始第4次提交。一旦我们完成L1线,就会自动关闭它,然后打开单相线。同样的事情在这里。我在做add block,我在第一个位置应用错误,然后模拟,得到结果,然后去下一个。
将有两个模拟,这个,然后是最后一个。行。所以让我们现在转到Matlab命令。您可以在此处查看,故障位置和生成的数据表。
让我们快速忽略模拟结果。例如,我做的第一个,总线B1上的第一个故障,idabc相位大小,只是为了给你们展示我正在计算和得到的序列参数。再看看我上次在同一辆巴士上做的模拟。
我现在将通过讨论使用机器学习工具讨论的格雷厄姆。
谢谢你,帕特里斯。因此,一旦产生故障数据,我们就将其组织到MATLAB表中。该表包括每个母线电压测量的顺序数据和故障分类。为了便于说明,我们在这里看到的示例仅显示了几个数据点。我们有一个地震震级和角度的序列数据,还有断层分类。
对于此示例,我们生成了超过10,000个方案的数据。分类学习者是一个用户界面,它在机器学习工具箱中附带的统计信息。所以我会在一瞬间开辟分类学习者,我可以向你展示一些功能。我会注意到,我不会全面概述,所以跟随我展示的,如果你想要更多信息,我会鼓励你参考文件。
我要做的第一件事就是加载数据集并调用分类学习者。我在这里使用项目,所以我可以组织我的文件并创建快捷方式来帮助我更好地管理我的工作流程。所以我要点击GET ORIG训练数据。这将是加载数据,然后调用分类学习者。
如果您想了解更多关于项目的信息,请参阅文档。我将把分类学习器扩展到全屏。
在分类学习者中,我首先从工作区开始新的会话并加载数据。在这种情况下,我的数据位于Matlab表单中。现在,它是工作区中唯一的变量,因此它会自动挑选一个。如果在工作区中有多个数据集变量,则会选择。在这种情况下,我没有必要这样做。您将看到数据已自动传递,默认列基本上是分类的,具有39个唯一的分类。我会提醒我们的38个故障位置以及一个正常分类。
因此,因为它基本上是分类的,分类学习者已自动拾取故障作为响应数据。数据表T中的其他变量被选为预测器。现在,当然,您可以控制。如果分类否不会拾取正确的信息,则可以选择适当的选择,但在这种情况下,他确切地知道我想做什么。
我们现在所做的就是选择我们想要做的验证。有两个选项 - 交叉验证将数据与统计方法或保持验证分开到培训和测试集中,该验证将抛开某个百分比的测试数据,然后使用剩余的数据进行修剪。
我们将坚持使用默认设置,即使用带有5个错误的交叉验证。然后单击Start Session。你可以看到,我们已经默认为散点图,在这种情况下显示总线1的电压大小为正序列。这实际上是负序列的母线1电压值。
我想在这里做几个观察结果。首先,正常运行,在没有发生故障的情况下,但是我们正在变化负载值,似乎非常干净。它实际上是这个小区域在这里右下方。如果我只是滚动我们的课程到正常。这是红色的。如果我徘徊在。然后我们实际上会在选择的数据点上获取一些信息。所以你可以在这里看到,班级正常。
所以我们可以看到正常的行为是非常干净的,因为我们有一个紧密的分布,我们没有看到任何重叠的错误,条件。在这种情况下,我们预计正常操作很容易归类。第二个观察结果是,虽然我们可以看到故障数据的模式,但我们也看到数据点的重叠,这意味着通过传统工程分析进行分类将具有挑战性。
让我们现在将此数据呈现给机器学习算法,看看我们可以实现的目标。我总是开始的地方是选择全部快速训练。这将是什么,它将选择许多机器学习算法,因为数据说我呈现,将在相对速度的时间内训练。如果我选择火车,如果安装了并行计算工具箱,则会自动调用并行池,这将允许培训算法从多个核心中受益。
我们现在可以看到我们有许多不同的算法经历培训过程。所以我们只会让那些少数人经历。正如您所看到的,因为他们正在完成,那么准确性即将到来。最好的模型将在白色框中突出显示。现在我们的准确性为67.9%。我们会让这有点跑得一点点,我们可以做得更好。细knn是介质KNN的75.9%,80.6。所以这很好。所以我们可以做些什么,而另一个只是想完成训练,这是我们到目前为止最好的训练。
那么80.6%的意思是什么?要获得更多关于此号码的洞察力,我们可以查看混淆矩阵。所以我们去这里选择混乱的矩阵。混淆矩阵向我们展示训练数据如何在训练的分类器上执行。我们看到我们有真正的课程与预测课程。如果我们有一个完美的分类器,我们只会看到这个矩阵上的对角线条目,我们也会有点怀疑结果。
完美的分类训练数据,命名你的开销分类算法或你有一些数据质量问题。在这种情况下,我们可以看到,我们有一些地方我们有一个独特的非对角的模式,分类,观察与培训相关的数据集,我们可以看到,这里有大量相关的L1 PH3和L1 PH2,这里也和L1 PH5 L1 PH5。因此,分类器很难区分L1 PH2和L1 PH3上的错误,也很难区分L1 PH4和L1 PH5上的默认错误。
这个问题迫使我们回到物理系统,并确定是否有物理特性导致了这个结果。让我们考虑一下系统发生了什么。我们所测量的电压都来自于分叉线的上游。叉线具有等效的电气特性。
这意味着如果在叉子上发生故障,请在此说明性中在位置F1处表示例子。然后通过恶魔指示的电压测量,而它可以检测到故障,它无法区分故障是否在位置。F1或F2。
让我们再次查看系统模型,所以我可以向您展示叉路线。行。因此,我们具有L1 PH2和L1 PH3的问题。如果我只是在l1 ph2下,请看看我们这里有四个部分。如果我们去L1 PH3,我们有两个细分。但是11,NN的线条,这里。所以我们确实有一个叉子,具有相同的电气特性。因此,这就是为什么我们在L1 PH2和L1 PH3上进行分类困难。
L1 pH4和L1 pH5相同。在这种情况下,我们具有相同的设置。所以我们只是在那些我们有困难的混乱矩阵的那些领域更放大了一点。所以我们看到我们具有显着的非对角线分类,这是由于叉路线而错误的。那么我们可以做些什么来改善这种情况?
一种解决方案是在叉的末端进行额外的电压测量。请注意,通常,我们需要y减1额外测量,其中y是叉子的数量。所以用两个叉子,这是我们在我们的系统中的情况,我们只需要一个额外的测量。因此,我们更新了模拟模型以包括额外的测量,在这种情况下,在这种情况下,L1 PH2测量以帮助区分L1 PH2和L1 PH3故障,并在L1 PH4上测量以帮助区分L1 PH4和L1 PH5折叠。
因此,我们现在将加载具有额外测量的新数据集并重新培训分类算法。我们没有关于新数据集的培训。现在,记得,最后一次,当我们没有这些额外的测量时,分叉线是一个问题,我们在全部训练的最佳结果是80.6%。所以让我们让它通过,我们会看到我们可以实现的目标。
到目前为止,75%在细树上。我们只需要给它几秒钟让一两个训练。91.9%。所以我们已经得到了更好的回应,但证明在布丁。我们必须查看混淆矩阵,看看我们是否有助于解决我们拥有的特定问题。
我选择一个好的kNN或者cos kNN。它们的精确度相等。它们的结果可能略有不同,但我在这里只选择一个来看一下。我们来看看混淆矩阵。
让我再试一次。我们实际上有三个结果相同。现在它选择了加权kNN。我选择它,然后看看混淆矩阵。
所以我们无法看到 - 当我们看L1 PH2和L1 PH3时,我们可能会记得在这里,我们在这里有一个明显更大的非对角线组件。所以我们的分类明显比我们以前更好。因此,在L1 PH2和L1 PH4上引入额外的测量有助于我们实现更大的精度。这也有助于建立我们的信心,即我们看到的效果确实由分叉线引起。
所以我会在这里做几点。我只用全部努力训练。但是通过分类学习者,您可以访问更广泛的型号。这可能是你想看看支持向量机。万博1manbetx我通常使用二次支持向量机,因为我发现它们更准确。万博1manbetx但他们需要更长时间才能训练。所以我没有在这个演示文稿中训练一个,因为它确实需要更长的时间。但通常你会看到更多的准确性。
另一点是,当你有一个训练有素的模型时,你可以按Export model,然后你可以为你的模型选择一个名称,然后点击OK。然后进入MATLAB工作区。你可以看到,我们在工作空间中训练了模型,它也显示了你必须在MATLAB工作空间中调用它。
所以在随后的结果中,我将在这个演示中展示我正在使用matlab脚本能够做到这一点。我不会向您展示Matlab脚本,因为它们只是代码行。我宁愿关注这个演示的结果。但我们可以向那些想要仔细研究这些工作流的人提供脚本。
我们知道只考虑使用边缘情况进行训练。我们这样做的原因是为了让我们对成功训练分类算法所需的数据类型有一些了解。特别是,我们能否在简化的数据集上得到准确的结果?
我们将考虑三种情况。首先,对仅从第一行段收集的故障数据进行训练。第二,对仅在最后一节收集的故障数据进行训练。第三,对第一部分和最后一部分收集的故障数据进行训练。我们可以从这里显示的混淆矩阵中看到,根据所提供的数据,我们得到了非常准确的分类结果。这是预料之中的。
问题是,分类器如何在来自其他部分的故障数据通过这些模型时响应?我们会看看几条线路来探索这种特定系统会发生什么。让我先定向你在你看到的混乱矩阵上。因此,让我们专注于右侧的结果,在第一部分培训。这意味着我们没有针对第1节以外的任何内容的预测类。这就是为什么,如果您查看此处的列,您将看到第2节,第3节和第4节 - 这些是空的。这是预期的,因为我们没有训练那些。
所以给出了这一点,对角线上的结果是最好的,因为我们具有该方案的数据。如果我们在绿色框中分类,这意味着我们已经确定了正确的长度。因此,例如,我们将查看L1 PH4第2节2.这是在第一部分数据上未培训的真实类。它已被识别为L1 PH4第1节。因此该线是相同的,因此为绿色框。这是我们可以为我们没有接受过培训的部分可以做的最好的事情,并且至少有他们在正确的行中分类。
在绿盒外的任何东西都意味着我们尚未确定正确的线路。所以我们可以通过观察那些三种不同的边缘案件来看看,我们没有得到满意的结果。例如,L1 PH4第1节的故障的行为不包含足够的信息来推断可用的另一部分的故障L1 PH4可以被识别为属于该线。
这是另一个例子,L1 PH6。这一行只有两个部分,我们看到,在对最后一部分进行训练时,这里的中间响应产生了准确的结果,以识别正确的行。第一部分的训练不准确。所以当我们看这些结果和其他的结果,我没有在这里展示,我们得出结论,我们需要一个广泛的错误的场景,跨越每条线的部分,以便准确地分类故障位置。这可能并不奇怪,但剩下的问题是,我们需要在线段上的粒度级别达到可接受的精确度级别。
这个问题超出了本演示的范围,但是可以通过从仿真模型生成合成数据来探索。总之,这项研究的结果是令人鼓舞的。我们已经证明,分类机器学习算法可以以相对较高的精度对故障位置进行分类。我们看到分叉线对于上游测量是有问题的。因此,在这种情况下,我们建议在叉子的末端进行额外的测量。
通过进行这些额外的测量,我们能够在故障位置分类上获得更好的准确性。我们还看看对减少数据集进行治疗。在此示例中,我们发现,仅在第一个和最后一节上的训练不足以以可接受的准确度定位正确的线路。这意味着有效地训练机器学习算法是必要的。
您还可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。