天天看點

分布式電源對配電網故障定位的影響(Python代碼實作)

目錄

​​1 概述​​

​​2 目标​​

​​3 python代碼實作​​

​​3.1 結果展示​​

​​3.2 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] 一書,感覺器的工作原理是對其輸入進行權重求和,并根據其符号離散化該總和的值,如等式​​所示

分布式電源對配電網故障定位的影響(Python代碼實作)

作為補充,MLP 隻是一個函數 y = f(x; θ),它使用優化的 θ 參數将輸入 x 映射到輸出 y。可以說,感覺器的工作原理是對其輸入進行權重求和,并根據其符号離散化該總和的值,如等式所示:

分布式電源對配電網故障定位的影響(Python代碼實作)

其中 hw 是感覺器的輸出,x 是輸入值,w 是配置設定給每個輸入的權重,step 是和值的離散化函數,可以是 Heaviside 函數或信号函數。

調整 MLP 權重的方法之一是通過反向傳播技術。該機制包括,在确定神經網絡的正向權重及其總誤差後,反向計算每個權重的誤差貢獻,提出在每次疊代中總誤差較小的新權重。為了使這種方法可行,激活函數,即傳統感覺器結構中的階躍函數,必須用平滑函數代替,例如邏輯函數、雙曲正切函數或整流線性機關函數(ReLU ),如等式所示:

分布式電源對配電網故障定位的影響(Python代碼實作)

其中 hw,b(x) 是 ReLU 函數,b 是偏內插補點。此外,通過計算函數梯度的反向傳播方法可以使用随機梯度下降進行優化。

分布式電源對配電網故障定位的影響(Python代碼實作)

2 目标

本文旨在确定分布式光伏發電對徑向配電網絡故障定位的影響。光伏系統的尺寸針對該電路的穿透限制而定。在 OpenDSS 上執行故障模拟,以擷取變電站的電壓和電流值。這些結果記錄在資料庫中并用于訓練多層感覺器類的神經網絡,該網絡能夠以 90% 的平均成功率确定電路中存在或不存在分布式光伏發電的 6 個可能地理區域之間的故障位置。總體目标是驗證GDFV在配電系統故障定位中的影響。支援主要目标的次要目标是:為配電饋線在其穿透極限下設計不同的光伏系統,并評估其功率流;模拟負荷曲線不同點處配電饋線所有母線的故障。實施能夠檢測故障并将其分類為類型、電阻和地理位置的算法。

3 python代碼實作

3.1 結果展示

分布式電源對配電網故障定位的影響(Python代碼實作)
分布式電源對配電網故障定位的影響(Python代碼實作)
分布式電源對配電網故障定位的影響(Python代碼實作)

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()