<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

          作者: 時間:2012-06-29 來源:網(wǎng)絡(luò) 收藏

          1. 引言

          本文引用地址:http://www.ex-cimer.com/article/176813.htm

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

          本文針對NR法和PQ法,在Windows環(huán)境下,使用C++語言開發(fā)出了相應(yīng)的計算工具,對同一個算例分別使用不同工具,將得到的兩種結(jié)果進(jìn)行,發(fā)現(xiàn)對不同復(fù)雜度(本文以節(jié)點(diǎn)數(shù)目多少來定義網(wǎng)絡(luò)復(fù)雜度高低)的算例,應(yīng)當(dāng)選擇合適的算法程序以使收斂性和計算速度能同時滿足要求。

          2. 潮流計算的基本原理

          潮流計算時對每個節(jié)點(diǎn)給出兩個運(yùn)行參數(shù)作為已知條件,另外兩個作為待求量。由原始數(shù)據(jù)的給出方式,節(jié)點(diǎn)一般分3類:

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

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

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

          2.1 NR法的基本原理

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

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

          (1)

          2.2 PQ法的基本原理

          PQ分解法是在對采用極坐標(biāo)表示的NR法進(jìn)行有效簡化的基礎(chǔ)上發(fā)展而來,NR法的核心是求解修正方程式。高壓系統(tǒng)中有功功率潮流主要與各節(jié)點(diǎn)電壓向量角度有關(guān),無功功率潮流則主要受各節(jié)點(diǎn)電壓幅值的影響。忽略可以不計入在內(nèi)的因素,其修正方程式采用極坐標(biāo)表達(dá)為:

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

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

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

          (4)和

          (5)

          共同構(gòu)成PQ分解法迭代過程中的計算公式。

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

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

          3.1 文件輸入輸出模塊

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

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

          3.2 NR算法模塊化函數(shù)編程及流程圖

          (1)導(dǎo)納矩陣生成模塊:根據(jù)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)計算出導(dǎo)納矩陣;

          (2)節(jié)點(diǎn)功率誤差模塊:根據(jù)功率誤差公式計算出各節(jié)點(diǎn)功率誤差;

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

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

          (5)節(jié)點(diǎn)電壓修正模塊:用修正量去修正各節(jié)點(diǎn)電壓值。

          流程圖見圖1。

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

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

          3.3 PQ算法模塊化函數(shù)編程及流程圖

          (1)導(dǎo)納矩陣生成模塊:根據(jù)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)計算出導(dǎo)納矩陣;

          (2)根據(jù)功率誤差公式計算出各節(jié)點(diǎn)功率誤差的模塊;

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

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

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

          (6)修正各節(jié)點(diǎn)電壓值的模塊。

          流程圖見圖2。

          3.4 算法編程細(xì)節(jié)問題說明

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

          vector Matrix;

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

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

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

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

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

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

          圖3 包含5節(jié)點(diǎn)的網(wǎng)絡(luò)模型算例 圖4 斂代特性對數(shù)坐標(biāo)

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

          迭代次數(shù)

          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算法程序的輸出結(jié)果

          迭代次數(shù)

          Θ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算法程序的輸出結(jié)果

          算法

          IEEE05

          迭代次數(shù)

          IEEE14

          迭代次數(shù)

          IEEE30

          迭代次數(shù)

          IEEE05

          運(yùn)行時間

          IEEE14

          運(yùn)行時間

          IEEE30

          運(yùn)行時間

          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法得到的計算結(jié)果一致。另外使用IEEE14和IEEE30的算例繼續(xù)用這兩種算法程序計算,匯總結(jié)果可得到如下結(jié)論(如表3):

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

          5.結(jié)論

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

          參考文獻(xiàn)

          [1] 王錫凡.現(xiàn)代電力系統(tǒng).北京:科學(xué)出版社,2003.

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

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

          [4] 陳穎,沈沉,梅生偉,盧強(qiáng).改進(jìn)Jacobian-Free Newton-GMRES(m)的電力系統(tǒng)分布式潮流計算. 電力系統(tǒng)自動化, 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相關(guān)文章:dc是什么


          c++相關(guān)文章:c++教程


          汽車防盜機(jī)相關(guān)文章:汽車防盜機(jī)原理


          關(guān)鍵詞: 分析 比較 P-Q 計算 電力 潮流 基于

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();