新聞中心

        EEPW首頁 > 電源與新能源 > 設計應用 > 基于C++的電力潮流計算牛-拉法與P-Q法的分析比較

        基于C++的電力潮流計算牛-拉法與P-Q法的分析比較

        作者: 時間:2012-06-29 來源:網絡 收藏

        1. 引言

        本文引用地址:http://www.104case.com/article/176813.htm

        是研究系統穩態問題的基礎,在應用系統分布以來,先后出現過以節點導納矩陣為基礎的逐次迭代法,即導納法,和以阻抗矩陣為基礎的逐次代入法,即阻抗法。針對阻抗法占用計算機內存大的問題,又出現了分塊阻抗法及牛頓-拉夫遜法(Newton-Raphson),而NR法也解決了導納法收斂性差的問題。PQ分解法是使用極坐標表示時的NR法,既可用于離線計算,更能夠應用于在線潮流計算。

        本文針對NR法和PQ法,在Windows環境下,使用C++語言開發出了相應的計算工具,對同一個算例分別使用不同工具,將得到的兩種結果進行,發現對不同復雜度(本文以節點數目多少來定義網絡復雜度高低)的算例,應當選擇合適的算法程序以使收斂性和計算速度能同時滿足要求。

        2. 潮流計算的基本原理

        潮流計算時對每個節點給出兩個運行參數作為已知條件,另外兩個作為待求量。由原始數據的給出方式,節點一般分3類:

        (1)PQ節點:已知節點有功功率及無功功率(P,Q),待求量為電壓幅值和電壓相量角度(V, )。

        (2)PV節點:已知節點有功功率及電壓幅值(P,V),待求量為無功功率及電壓相量角度(Q, )。

        (3)平衡節點:此類節點一般在系統中只設一個。給定該節點電壓的幅值V及電壓向量角度 = ,待求量為該點有功功率P及無功功率Q。本論文中所用算例均只有一個平衡節點。

        2.1 NR法的基本原理

        牛頓-拉夫遜法通過逐次線性化把非線性方程式的求解過程變成對相應的線性方程式的求解過程。其修正方程式為:

        基于C++的電力潮流計算牛-拉法與P-Q法的分析比較

        (1)

        2.2 PQ法的基本原理

        PQ分解法是在對采用極坐標表示的NR法進行有效簡化的基礎上發展而來,NR法的核心是求解修正方程式。高壓系統中有功功率潮流主要與各節點電壓向量角度有關,無功功率潮流則主要受各節點電壓幅值的影響。忽略可以不計入在內的因素,其修正方程式采用極坐標表達為:

        基于C++的電力潮流計算牛-拉法與P-Q法的分析比較

        (2)、(3)與功率誤差方程式

        基于C++的電力潮流計算牛-拉法與P-Q法的分析比較

        (4)和

        (5)

        共同構成PQ分解法迭代過程中的計算公式。

        3. NR算法和PQ算法的C++編程方案設計

        考慮到計算工具的通用性和可擴展性,設計時應將各部分功能進行模塊化處理,以利于縮短開發周期,并實現不同算法中功能相同模塊的重復使用,提高程序代碼使用率。因而選擇VC++6.0中STL所提供的常用容器類模板Vector,Complex和String編寫程序代碼:Vector模板類用于對向量類型數組進行操作,且Vector對象運行時可以動態改變自身大小以便容納任何數目的元素;Complex模板類用于復數存儲和操作;String模板類用于字符串操作。正是C++通用庫STL模板類功能便于實現模塊化,而無論采用哪種算法都須對電壓,電流及功率復數向量進行處理。此外,還要適應不同規模的算例,因此利用STL通用庫模板類進行編程成為本論文的首選。其次,網絡參數的輸入統一采用電氣和電子工程師協會推薦使用的標準數據格式:IEEE通用數據文件格式(Common Data Format),CDF作為電網的拓撲結構輸入文件,另外每個算法程序還要給出各自運行耗時,方便計算結果對比。

        3.1 文件輸入輸出模塊

        文件輸入模塊完成對電力系統網絡的拓撲結構以及各個節點和各條支路的參數信息的讀取和存儲,供計算使用。首先建立一組輸入文件,以5節點網絡為例,按照CDF格式建立輸入文件,包含各節點參數和各支路參數,以“005IEEE.dat”作為文件名存檔。編程時定義節點信息結構體(BusData)和支路信息結構體(BranchData)。母線節點信息(BUS DATA FOLLOWS)包含:節點編號number、節點名稱name、負荷區編號LoadFlowAreaNumber、損耗區編號LossZoneNumber、節點類型Type、迭代后的電壓值FinalVoltage、迭代后的電壓向量角度(此處為弧度制)FinalAngle、負荷有功LoadMW、負荷無功LoadMVAR、發電機有功GenerationMW、發電機無功GenerationMVAR、基準電壓BaseKV。支路信息(BRANCH DATA FOLLOWS)包含:支路起始節點TapBusNumber、支路終端節點ZBusnumber、負荷區LoadFlowArea、損耗區LossZone、支路類型Type、支路電阻值BranchR、支路電抗值BranchX、支路對地導納值LineChargingB、變壓器變比TransformerFinalTurnsRatio。通過ifstream DataFile(filename.c_str())語句打開數據輸入文件,對輸入文件數據流操作,將相應信息導入與之對應的結構體變量,完成輸入文件模塊化。

        文件輸出模塊用來輸出并保存潮流計算結果,利用outputfile語句對NR算法和PQ算法每次迭代時各個變量的初值和計算后的終值輸出,并將最終結果存入“xxxieee_NR_Result.dat”和“xxxieee_PQ_Result.dat”文檔。

        3.2 NR算法模塊化函數編程及流程圖

        (1)導納矩陣生成模塊:根據網絡拓撲結構計算出導納矩陣;

        (2)節點功率誤差模塊:根據功率誤差公式計算出各節點功率誤差;

        (3)雅可比矩陣生成模塊:由NR法修正方程式系數矩陣公式計算出雅可比矩陣;

        (4)修正方程式求解模塊:解修正方程式得到修正量;

        (5)節點電壓修正模塊:用修正量去修正各節點電壓值。

        流程圖見圖1。

        基于C++的電力潮流計算牛-拉法與P-Q法的分析比較

        圖1 NR算法模塊化函數編程及流程圖 圖2 PQ算法模塊化函數編程及流程圖

        3.3 PQ算法模塊化函數編程及流程圖

        (1)導納矩陣生成模塊:根據網絡拓撲結構計算出導納矩陣;

        (2)根據功率誤差公式計算出各節點功率誤差的模塊;

        (3)生成修正方程系數矩陣的模塊;

        (4)高斯消去法解 修正方程式的模塊;

        (5)高斯消去法解Q-V修正方程式的模塊;

        (6)修正各節點電壓值的模塊。

        流程圖見圖2。

        3.4 算法編程細節問題說明

        初始電壓用“平啟動”方式,即e=1.0,f=0.0給出;用高斯消去法解修正方程式;NR法雅可比矩陣的形成與迭代同步進行,即每次迭代時系數矩陣都將不同。對高壓電力系統,雅可比矩陣中各行的最大元素是有功功率誤差量對電壓的橫分量e的偏導數與無功功率誤差量對電壓的縱分量f的偏導數,它們都不在對角元素位置。為減少計算過程舍入誤差,程序通過對調雅可比矩陣中奇數行和偶數行的位置來實現最大元素放在對角元素位置上,以提高計算精度;對PQ分解法將BX法應用于程序編寫。修正方程式的系數矩陣在每次迭代計算時都將固定不變,在電網拓撲結構數學模型的建立之初就已確定,與每次電壓相量迭代結果無直接關系;由于Vector只能對一維向量進行存儲,而矩陣相當于一個二維數組,就出現了如何將二維數組轉化成一維向量的問題。對于一個i行j列的二維數組,可通過下面語句將其轉變為一維向量:

        vector Matrix;

        for(i=0;i MatrixSize;i++)

        for(j=0;j MatrixSize;j++)

        Matrix[i* MatrixSize+j]=X[i][j];

        其中,一維向量的大小即MatrixSize*MatrixSize,它等于二維數組X[i][j]中所有元素的個數(也就是矩陣的大小)。由此解決矩陣存儲的問題;收斂條件可根據需要輸入,當滿足收斂性要求時計算結束。

        4. C++的兩種不同算法的實驗驗證

        基于C++的電力潮流計算牛-拉法與P-Q法的分析比較

        圖3 包含5節點的網絡模型算例 圖4 斂代特性對數坐標

        以圖3的網絡模型為算例,以 為收斂條件。用C++編程,使用NR算法的輸出結果(直角坐標系)如表1,使用PQ算法程序的輸出結果(極坐標系)如表2。

        迭代次數

        e 1

        f1

        e 2

        f 2

        e 3

        f 3

        e 4

        f 4

        1

        0.96643

        -0.033481

        1.10538

        0.36074

        1.05881

        -0.06900

        1.05000

        0.45748

        2

        0.87365

        -0.07006

        1.03350

        0.32886

        1.03564

        -0.07694

        0.97694

        0.38919

        3

        0.85947

        -0.07176

        1.02608

        0.33047

        1.03355

        -0.07737

        0.97464

        0.39061

        4

        0.85915

        -0.07182

        1.02600

        0.33047

        1.03351

        -0.07738

        0.97461

        0.39067

        5

        0.85915

        -0.07182

        1.02600

        0.33047

        1.03351

        -0.07738

        0.97461

        0.39067

        1NR算法程序的輸出結果

        迭代次數

        Θ1

        V1

        Θ2

        V2

        Θ3

        V3

        Θ4

        1

        -0.09455

        0.89507

        0.30580

        1.07779

        -0.07995

        1.03793

        0.38080

        2

        -0.08227

        0.87158

        030728

        1.07857

        -0.07405

        1.03743

        0.37652

        3

        -0.08239

        0.86512

        0.31048

        1.07813

        -0.07448

        1.03673

        0.38010

        4

        -0.08316

        0.86309

        0.31117

        1.07798

        -0.07468

        1.03652

        0.38079

        5

        -0.08332

        0.86244

        0.31152

        1.07794

        -0.07471

        1.03644

        0.38115

        6

        -0.08339

        0.86222

        0.31162

        1.07792

        -0.07473

        1.03642

        0.38126

        7

        -0.08341

        0.86215

        0.31166

        1.07791

        -0.07473

        1.03741

        0.38129

        8

        -0.08342

        0.86213

        0.31167

        1.07791

        -0.07474

        1.03740

        0.38131

        9

        -0.08342

        0.86212

        0.31167

        1.07791

        -0.07474

        1.03740

        0.38131

        10

        -0.08342

        0.86212

        0.31168

        1.07791

        -0.07474

        1.03741

        0.38131

        2PQ算法程序的輸出結果

        算法

        IEEE05

        迭代次數

        IEEE14

        迭代次數

        IEEE30

        迭代次數

        IEEE05

        運行時間

        IEEE14

        運行時間

        IEEE30

        運行時間

        NR法

        5

        5

        5

        0.100000s

        0.291000s

        0.911000s

        PQ法

        5

        34

        46

        0.171000s

        0.751000s

        2.654000s


        3:兩種算法

        由表1和表2的比較可以看出,無論NR法還是PQ法得到的計算結果一致。另外使用IEEE14和IEEE30的算例繼續用這兩種算法程序計算,匯總結果可得到如下結論(如表3):

        對于相同的收斂條件,PQ法比NR法計算時所需要的迭代次數隨著復雜度的增加而增加,相應的運行時間也較長;但對于迭代一次所需的時間,PQ法要比NR法少很多。另外對于不同的收斂條件繼續使用NR算法程序和PQ算法程序計算,根據試驗數據可繪制斂代特性比較圖大致如圖4所示,以A點為界,在A點之左,PQ法比NR法收斂的快,而在A點之右,NR法比PQ法收斂的快。

        5.結論

        綜上可見,偏重于滿足數據精度要求時,可采用NR算法來計算網絡潮流的分布情況,而偏重于滿足計算速度要求時應當選擇PQ法,這就是PQ法也應用于電力網絡潮流在線計算的原因之一。本文通過C++平臺分別用NR法和PQ法對算例一進行了,有力論證了上述結論,有一定的實際應用價值。

        參考文獻

        [1] 王錫凡.現代電力系統.北京:科學出版社,2003.

        [2] C++ STL中文版. P. J. Plauger ... [等] 著 王昕譯.北京-中國電力出版社 2002.5.

        [3] 郭志忠, 柳 卓. 兩種潮流算法的比較研究. 中國電機工程學報, 1987,7 (6) :78-82.

        [4] 陳穎,沈沉,梅生偉,盧強.改進Jacobian-Free Newton-GMRES(m)的電力系統分布式潮流計算. 電力系統自動化, 2006,(09) .

        [5] Micheli G D, Newton A R, Sangiovanni-Vincentelli A L. Symmetric Displacement Algorithm for the Timing Analysis of MO S VL S I Circuits. IEEE Trans. CAD, 1983, 2: 167-180.

        dc相關文章:dc是什么


        c++相關文章:c++教程


        汽車防盜機相關文章:汽車防盜機原理


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 蛟河市| 宕昌县| 磐安县| 汶川县| 黔西| 云安县| 阜阳市| 庆阳市| 浦江县| 博白县| 辽阳市| 海林市| 石狮市| 彝良县| 上思县| 镇坪县| 德令哈市| 禹城市| 泸西县| 云梦县| 磐安县| 屏东市| 武功县| 浏阳市| 多伦县| 佛冈县| 保德县| 柞水县| 漳平市| 墨竹工卡县| 始兴县| 塘沽区| 汉川市| 鄂温| 永康市| 广昌县| 沾益县| 白水县| 且末县| 彭阳县| 兴隆县|