分布式电源对配电网故障定位的影响(Python代码实现)

简介: 分布式电源对配电网故障定位的影响(Python代码实现)

1 概述

人类在日常生活中越来越依赖电力,使用需要电力的设备不再是奢侈品,而是成为必需品。负责向民众提供这种资源的各方必须处理电力的生产、传输和分配问题。尽管过去几十年在电力系统保护方面取得了许多进展,但在提高能源供应服务的连续性方面仍有很大的空间。在配电的背景下,以巴西为例,可以通过配电服务的连续性指标来量化消费者的电力供应质量。国家电能署 (Aneel) 在 [PRODIST 2012] 中提供了其中两个指标,即每用电单位的等效中断持续时间 (DEC) 和每用电单位的等效中断频率 (FEC)。 DEC 是通过在计算期间内,相关用电单位的电能分配服务中断的平均值获得的时间间隔。 FEC 是在所考虑的单位中发生这种不连续性的平均频率。


本文旨在确定分布式光伏发电对径向配电网络故障定位的影响。光伏系统的尺寸针对该电路的穿透限制而定。在 OpenDSS 上执行故障模拟,以获取变电站的电压和电流值。这些结果记录在数据库中并用于训练多层感知器类的神经网络,该网络能够以 90% 的平均成功率确定电路中存在或不存在分布式光伏发电的 6 个可能地理区域之间的故障位置。


1.1 MLP

MLP 是一种分层工作的神经网络。输入层接收问题输入,中间隐藏层执行映射操作,输出层提供输出,如图 1.1 所示。模拟神经元的基本层单元称为感知器。除了感知器,输入层和中间层还有一个偏置节点,用于处理等于 0 的输入。


   作为补充,基于 [Goodfellow et al. 2016],MLP 只是一个函数 y = f(x; θ),它使用优化的 θ 参数将输入 x 映射到输出 y。可以说,根据 [Géron 2017] 一书,感知器的工作原理是对其输入进行加权求和,并根据其符号离散化该总和的值,如等式所示


作为补充,MLP 只是一个函数 y = f(x; θ),它使用优化的 θ 参数将输入 x 映射到输出 y。可以说,感知器的工作原理是对其输入进行加权求和,并根据其符号离散化该总和的值,如等式所示:

其中 hw 是感知器的输出,x 是输入值,w 是分配给每个输入的权重,step 是和值的离散化函数,可以是 Heaviside 函数或信号函数。


调整 MLP 权重的方法之一是通过反向传播技术。该机制包括,在确定神经网络的正向权重及其总误差后,反向计算每个权重的误差贡献,提出在每次迭代中总误差较小的新权重。为了使这种方法可行,激活函数,即传统感知器结构中的阶跃函数,必须用平滑函数代替,例如逻辑函数、双曲正切函数或整流线性单位函数(ReLU ),如等式所示:


其中 hw,b(x) 是 ReLU 函数,b 是偏差值。此外,通过计算函数梯度的反向传播方法可以使用随机梯度下降进行优化。

                     

2 目标

本文旨在确定分布式光伏发电对径向配电网络故障定位的影响。光伏系统的尺寸针对该电路的穿透限制而定。在 OpenDSS 上执行故障模拟,以获取变电站的电压和电流值。这些结果记录在数据库中并用于训练多层感知器类的神经网络,该网络能够以 90% 的平均成功率确定电路中存在或不存在分布式光伏发电的 6 个可能地理区域之间的故障位置。总体目标是验证GDFV在配电系统故障定位中的影响。支持主要目标的次要目标是:为配电馈线在其穿透极限下设计不同的光伏系统,并评估其功率流;模拟负荷曲线不同点处配电馈线所有母线的故障。实施能够检测故障并将其分类为类型、电阻和地理位置的算法。

3 python代码实现

3.1 结果展示

                 

                     

                         

                           



3.2 python代码

部分代码:

def plot_5_pv():
    ckt24_plot()
    substation, = pylab.plot([11735514.42],[3709460.816],'k^',
    markersize=10, label='Substation')
    pvsyst, = pylab.plot(
    [11740361.09,11745683.27,11740622.95,11740594.66,11735219.81],
    [3709237.782,3712746.259,3714771.12,3718243.191,3718067.52],
    color='orange', marker='s', markersize=10, linestyle='None',
    label='PV System')
    blue_patch = mpatches.Patch(color='blue', label='Three-phase lines')
    green_patch = mpatches.Patch(color='green', label='Two-phase lines')
    red_patch = mpatches.Patch(color='red', label='One-phase lines')
    pylab.legend(handles=[substation, pvsyst, blue_patch, green_patch,
    red_patch])
    pylab.title("5 PV systems")
    pylab.show()
def plot_5_pv():
    ckt24_plot()
    substation, = pylab.plot([11735514.42],[3709460.816],'k^',
    markersize=10, label='Substation')
    pvsyst, = pylab.plot(
    [11740361.09,11745683.27,11740622.95,11740594.66,11735219.81],
    [3709237.782,3712746.259,3714771.12,3718243.191,3718067.52],
    color='orange', marker='s', markersize=10, linestyle='None',
    label='PV System')
    blue_patch = mpatches.Patch(color='blue', label='Three-phase lines')
    green_patch = mpatches.Patch(color='green', label='Two-phase lines')
    red_patch = mpatches.Patch(color='red', label='One-phase lines')
    pylab.legend(handles=[substation, pvsyst, blue_patch, green_patch,
    red_patch])
    pylab.title("5 PV systems")
    pylab.show()


相关文章
|
22天前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
58 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
2月前
|
Python
课程设计项目之基于Python实现围棋游戏代码
游戏进去默认为九路玩法,当然也可以选择十三路或是十九路玩法 使用pycharam打开项目,pip安装模块并引用,然后运行即可, 代码每行都有详细的注释,可以做课程设计或者毕业设计项目参考
78 33
|
2月前
|
JavaScript API C#
【Azure Developer】Python代码调用Graph API将外部用户添加到组,结果无效,也无错误信息
根据Graph API文档,在单个请求中将多个成员添加到组时,Python代码示例中的`members@odata.bind`被错误写为`members@odata_bind`,导致用户未成功添加。
51 10
|
2月前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
103 8
|
2月前
|
Python
探索Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器就像是给函数穿上了一件神奇的外套,让它们拥有了超能力。本文将通过浅显易懂的语言和生动的比喻,带你了解装饰器的基本概念、使用方法以及它们如何让你的代码变得更加简洁高效。让我们一起揭开装饰器的神秘面纱,看看它是如何在不改变函数核心逻辑的情况下,为函数增添新功能的吧!
|
2月前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
2月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
2月前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
126 80
|
2月前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
51 14

热门文章

最新文章