第一篇:潮流計算作業A4范文
電力系統潮流計算綜述
學院:電氣工程學院 專業:電力系統及其自動化 學號:s*** 姓名:張雪
摘 要
電力系統潮流計算是電力系統分析中最基本的一項計算。本文對電力系統潮流計算進行了綜述。首先簡單回顧了潮流計算的發展歷史,對當前基于計算機的各種潮流算法的原理及其優缺點,作了簡要介紹和比較,并介紹了它們采用的一些特別技術及程序設計技巧;接著簡要分析了三種新型的潮流計算方法的計算原理及優缺點,它們分別是基于人工智能的潮流計算方法、基于L1范數和現代內點理論的電力系統潮流計算方法、基于符號分析的潮流計算方法等。除此之外還介紹了配電系統潮流計算算法。
關鍵詞:電力系統;潮流計算;綜述;新型潮流計算方法;配電系統 1 概述
電力系統潮流計算是研究電力系統穩態運行的一項基本運算。它根據給定系統的網絡結構及運行條件來確定整個系統的運行狀態:主要是各節點電壓(幅值和相角),網絡中功率分布及功率損耗等。它既是對電力系統規劃設計和運行方式的合理性、可靠性及經濟性進行定量分析的依據,又是電力系統靜態和暫態穩定計算的基礎。潮流計算經歷了一個由手工,利用交、直流計算臺到應用數字電子計算機的發展過程。現在的潮流算法都以計算機的應用為前提。1956年ward等人編制成實用的計算機潮流計算程序,標志著電子計算機開始在電力系統潮流計算中應用。基于導納矩陣的高斯—塞德爾法是電力系統中最早得到應用的潮流計算方法。因它對病態條件(所謂具有病態條件的系統是指:重負荷系統;包含有負電抗支路的系統;具有較長輻射型線路的系統;長線路與短線路接在同一節點,且其長度比值又很大的系統;或平衡節點位于網絡遠端的系統)特別敏感,又發展了基于阻抗陣的高斯—塞德爾法,但此法中阻抗陣是滿陣占大量內存,而限制了其應用。1961年VanNes等人提出用牛頓法求解系統潮流問題,經后人的不斷改進,而得到廣泛應用并出現了多種變型以滿足不同的需要,如快速解耦法、直流法、保留非線性算法等。同時,60年代初開始出現運用非線性規劃的最優潮流算法。60年代末Dom-8mel和Tinney提出最優潮流的簡化梯度法,70年代有人提出海森矩陣法,80年代SunDl提出最優潮流牛頓算法,還可把解耦技術應用于最優潮流,從而形成解耦型最優潮流牛頓算法,還可把解禍技術應用于最優潮流,從而形成解耦型最優潮流牛頓算法。隨著直流輸電技術的發展,交直流聯合電力系統的潮流計算方法相應出現。另外,其它各種潮流算法如最小化潮流算法、隨機潮流算法等也不斷涌現。至于用于特殊用途的潮流算法如諧波潮流、適于低壓配電網的潮流算法也得到了較快的發展。
潮流算法多種多樣,但一般要滿足四個基本要求:(i)可靠收斂;(ii)計算速
2n個變量作為已知量而預先給以指定。也即對每個節點,要給定其兩個變量的值作為已知條件,而另兩個變量作為待求量。
按照電力系統的實際運行條件,根據預先給定的變量的不同,電力系統中的節點又可分為PQ節點、PV節點及Vθ節點或平衡節點三種類型。對應于這些節點,分別對其注入有功、無功功率,有功功率及電壓模值以及電壓模值和相角加以指定;并且對平衡節點來說,其電壓相角一般作為系統電壓相角的基準(即θ=0)。
交流電力系統中的復數電壓變量可以用兩種坐標形式來表示
Ui?Uiej?i
(3)或
Ui?ei?jfi
(4)而復數導納為
Yij?Gij?jBij
(5)將(3)、式(4)以及式(5)代入以導納矩陣為基礎的式(1),并將實部與虛部分開,可得到以下兩種形式的潮流方程。
潮流方程的直角坐標形式為:
Pi?ei?(Gijei?Bijfj)?fi?(Gijfj?Bijej)
(6)
j?ij?i
(i?1,2,n
Qi?fi?(Gijei?Bijfj)?ei?(Gijfj?Bijej)
(7)
j?ij?i(i?1,2,n)
潮流方程的極坐標形式為:
Pos?ij?Uj(Gici?Uij?j?iB?n
i j
(8)isji
(i?1,2, ,n
Qi?Ui?Uj(Gijsin?ij?Bijcos?ij)
(9)
j?i
(i?1,2, ,n以上各式中,j?i 表示∑號后的標號為j節點必須直接和節點i相聯,并包括j=i的情況。這兩種形式的潮流方程統稱為節點功率方程,是牛頓-拉夫遜等潮流算法所采用的主要數學模型。
對于以上潮流方程中的有關運行變量,還可以按其性質的不同加以分類,這對于進行例如靈敏度分析以及最優潮流的研究等都是比較方便的。
每個節點的注入功率是該節點的電源輸入功率PGt、QGt和負荷需求功率PLi、QLi的代數和。負荷需求的功率取決于用戶,是無法控制的,所以稱之為不可控
456
較對稱系統以三倍數增加。(ii)序分量法(或對稱分量法)。采用對稱分量坐標,將系統各量分為正、負、零序分量,并對系統中不對稱元件的序分量之間的耦合,通過加電流源補償的方法使之解耦。2.5.3 交直流聯合電力系統的潮流計算
交直流聯合電力系統的潮流計算是根據交流系統各節點給定的負荷和發電情況,結合直流系統指定的控制方式,通過計算來確定整個系統的運行狀態它和純交流電力系統相比,有以下特點:(i)增加直流電力系統變量,與交流電力系統變量通過換流站中交直流換流器建立聯系;(ii)換流器一方面實現了交直流電力系統間的有功功率傳遞,另一方面又從系統中吸取無功;(iij)直流系統的運行須對各個換流器的運行控制方式加以指定,直流系統的狀態量是給定的直流控制量和換流器交流端電壓的函數。
主要有聯合求解法和交替求解法兩種計算方法,前者是將交流系統潮流方程組和直流系統的方程組聯立起來,統一求解出交流及直流系統中所有未知變量。后者則將交流系統潮流方程組和直流系統的方程組分開來求解,求解直流系統方程組時各換流站的交流母線電壓由交流系統潮流的解算結果提供;而在進行交流系統潮流方程組的解算時,將每個換流站處理成接在相應交流節點上的一個等效的有功、無功負荷,其數值則取自直流系統潮流的解算結果。這樣交替迭代計算,直到收斂。2.5.4 隨機潮流
把潮流計算的已知量和待求量都作為隨機變量來處理,最后求得各節點電壓及支路潮流等的概率統計特性。此法最早是用直流模型,后發展為線性化的交流模型及采用最小二乘法并保留非線性的交流模型。其突出優點是通過一次計算就提供了系統運行和規劃的全面信息。
除上述之外,還有其它一些用途不同的特殊潮流問題,如諧波潮流、動態潮流等,在此不一一列舉。2.6 潮流概念的推廣 2.6.1 狀態估計
實質是一種廣義潮流計算。一般潮流計算時,已知量和方程式數等于未知量數。而在狀態估計中,已知量和方程式數大于待求未知量數,利用冗余變量,在實際測量系統有偏差的情況下獲得表征系統實際運行狀態的狀態量。主要方法有最小二乘估計法、支路潮流狀態估計法、遞推狀態估計法等。
2.6.2 最優潮流
所謂最優潮流,就是當系統的結構參數及負荷情況給定時,通過控制變量的優選,所找到的能滿足所有指定的約束條件,并使系統的某一性能指標或目標函數達到最優時的潮流分布.最優潮流計算是電力系統優化規劃與運行的基礎,它將成為能量管理系統(EMS)中的核心應用軟件之一。其數學模型可表示為:
minf(u,x)??s.t.g(u,x)?0?
(19)
h(u,x)?0??選用不同的目標函數的控制變量,加上相應的約束條件,就構成不同應用目的的最優潮流問題。最優潮流的求解方法主要有:
(1)最優潮流的簡化梯度算法
此法采用了簡化梯度,并應用拉格朗日乘子和罰函數將等式和不等式約束加在目標函數中,從而把有約束問題變為無約束問題。優點是原理簡單,設計簡便。缺點是迭代點向最優點接近時走的是曲折路線,罰因子的選擇比較困難。
(2)最優潮流的牛頓算法 對最優潮流問題:
minf(x?)?0
(20)
s.t.g(?x)?
h(x?)?0?先不考慮不等式約束,構造拉格朗日函數:L(x,?)?f(x)??Tg(x),定義向量Z?x,?,則應用海森矩陣法求最優解點Z*的迭代方程為:W△z=-d,式中:W,d分別為L對于Z的海森矩陣及梯度向量。本方法的關鍵是充分開發并在迭代過程中保持W矩陣的高度稀疏性,另外在求解時采用特殊的稀疏技巧。對不等式約束的處理有兩種方法:(i)罰函數法;(ii)不等式約束化為等式方程法。
(3)解耦最優潮流
把最優潮流的整體最優化問題分解為有功優化和無功優化兩個子優化問題。它有一個特別的優點是容許根據兩個子優化問題各自的特性而采用不同的求解方法。幾種新型的潮流計算方法 3.1 潮流計算的人工智能方法
近年來,人工智能作為一種新興的方法,越來越廣泛的應用到電力系統潮流計算中。該方法不像傳統方法那樣依賴于精確的數學模型,這種方法只能基于對自然界和人類本身活動的有效類比而獲得啟示。具有代表性的有遺傳法、模擬退
值為一不為零的正值。因此,即使是在病態系統的情況下,計算過程不會發散。國內專家學者對解決此問題也進行了許多有益的探討。
提出了一種基于內點非線性規劃的潮流計算模型和算法。基于L1范數的計算原理,潮流方程的求解可以轉化為求解一個新的非線性規劃模型L1LF,并結合現代內點算法來進行求解。和過去的模型相比,該模型非常的簡潔、直觀,易于編程。與現代內點算法相結合的求解過程表現出了良好的收斂性和快速性,計算結果準確、可靠,計算各種病態系統均可良好的收斂,基于L1范數的數學規劃模型將傳統電力系統潮流的直接迭代求解轉化為對一簡單規劃問題的求解后,對系統運行中各部分的控制可更加簡便。增加適當的不等式約束和相關控制變,即可獲得近似于最優潮流的計算模型,可方便的進行潮流計算中的調整。3.3 電力系統潮流計算的符號分析方法
隨著電力系統規模的擴大,電力系統的實時計算問題顯得日益重要,但長期以來受算法的計算效率所限,潮流計算的速度難以得到實質性的突破。根據電力網絡在實際運行中的特點,結合網絡圖論理論提出了運用符號分析方法求解電力網絡潮流的新思路,有望克服傳統數值計算方法在收斂性、冗余項對消、計算機有效字長效應等方面的不足。
基于符號分析方法的潮流計算方法通過建立電力網絡的拓撲模型生成拓撲網絡的全部樹和2-樹,應用網絡的k-樹樹支導納乘積對電力網絡的節點電壓方程進行拓撲求解,進而得出所求變量(即各節點電壓)的符號表達式(即關于元件參數符號的顯式表達式)。這種方法避免了求解非線性方程,不必進行行列式的展開和代數余子式的計算,而且不需要寫出行列式和代數余子式,克服了傳統數值計算的不足。同時它還帶來一個附加的好處,即在構造函數時自然地產生并行處,以及由它的拓撲性質帶來的電力網絡運行方式改變后計算的靈活性。這些特點將在電力系統的在線計算、靜態安全分析等領域發揮明顯優勢。另外,傳統的潮流計算方法都是純“數值計算”,利用這些方法計算出來的結果是數字而不是函數,它們的特點是逐點進行完整的數值計算,因此不可避免地存在收斂性問題、冗余項對消問題、計算機有效字長效應問題和相近數值求差時發生的浮點運算誤差問題。
基于符號分析方法的潮流計算方法在電力系統在線靜態安全分析、短路計算、靈敏度計算等領域中也可推廣使用。4 配電系統潮流計算算法的研究 4.1 線性規劃
1121314-
第二篇:電力系統分析潮流計算大作業
電力系統分析潮流計算大作業
(源程序及實驗報告)
源程序如下:
采用直角坐標系的牛頓-拉夫遜迭代 function chaoliujisuan()m=3;%m=PQ節點個數 v=1;%v=PV節點個數
P=[-0.8055-0.18 0];%P=PQ節點的P值 Q=[-0.5320-0.12 0];%Q=PQ節點的Q值 PP=[0.5];%PP=PV節點的P值 V=[1.0];%V=PV節點的U值
E=[1 1 1 1.0 1.0]';%E=PQ,PV,Vθ節點e的初值
F=[0 0 0 0 0]';%F=PQ,PV,Vθ節點f的初值 G=[
6.3110-3.5587-2.7523 0 0;
-3.5587 8.5587-5
0 0;
-2.7523-5
7.7523 0 0;
0
0
0
0 0;
0
0
0
0 0
];B=[
-20.4022 11.3879
9.1743
0
0;
11.3879-31.00937 15
4.9889 0;
9.1743
-28.7757 0
4.9889;
0
4.9889
0
5.2493 0;
0
0
4.9889
0
-5.2493
];Y=G+j*B;X=[];%X=△X n=m+v+1;%總的節點數
FX=ones(2*n-2,1);%F(x)矩陣
F1=zeros(n-1,n-1);%F(x)導數矩陣 a=0;%記錄迭代次數
EF=zeros(n-1,n-1);%最后的節點電壓矩陣 while max(FX)>=10^(-5)for i=1:m %PQ節點
FX(i)=P(i);%△P FX(n+i-1)=Q(i);%△Q
for w=1:n FX(i)= FX(i)-E(i)*G(i,w)*E(w)+E(i)*B(i,w)*F(w)-F(i)*G(i,w)*F(w)-F(i)*B(i,w)*E(w);%△P
FX(n+i-1)=FX(n+i-1)-F(i)*G(i,w)*E(w)+F(i)*B(i,w)*F(w)+E(i)*G(i,w)*F(w)+E(i)*B(i,w)*E(w);%△Q
end end for i=m+1:n-1 %PV節點 FX(i)=PP(i-m);%△P FX(n+i-1)=V(i-m)^2-E(i)^2-F(i)^2;%△Q
for w=1:n FX(i)= FX(i)-E(i)*G(i,w)*E(w)+E(i)*B(i,w)*F(w)-F(i)*G(i,w)*F(w)-F(i)*B(i,w)*E(w);%△P
end end
for i=1:m %PQ節點
for w=1:n-1
if i~=w
F1(i,w)=-(G(i,w)*E(i)+B(i,w)*F(i));
F1(i,n+w-1)=B(i,w)*E(i)-G(i,w)*F(i);
F1(n+i-1,w)=B(i,w)*E(i)-G(i,w)*F(i);
F1(n+i-1,n+w-1)=G(i,w)*E(i)+B(i,w)*F(i);
else
F1(i,w)=-G(i,i)*E(i)-B(i,i)*F(i);
F1(i,n+w-1)=B(i,i)*E(i)-G(i,i)*F(i);
F1(n+i-1,w)=B(i,i)*E(i)-G(i,i)*F(i);
F1(n+i-1,n+w-1)=G(i,i)*E(i)+B(i,i)*F(i);
for k=1:n
F1(i,w)=F1(i,w)-G(i,k)*E(k)+B(i,k)*F(k);
F1(i,n+w-1)= F1(i,n+w-1)-G(i,k)*F(k)-B(i,k)*E(k);
F1(n+i-1,w)=F1(n+i-1,w)+G(i,k)*F(k)+B(i,k)*E(k);
F1(n+i-1,n+w-1)=F1(n+i-1,n+w-1)-G(i,k)*E(k)+B(i,k)*F(k);
end
end
end end for i=m+1:n-1 %PV節點
for w=1:n-1
if i~=w
F1(i,w)=-(G(i,w)*E(i)+B(i,w)*F(i));
F1(i,n+w-1)=B(i,w)*E(i)-G(i,w)*F(i);
F1(n+i-1,w)=0;
F1(n+i-1,n+w-1)=0;
else
F1(i,w)=-G(i,i)*E(i)-B(i,i)*F(i);
F1(i,n+w-1)=B(i,i)*E(i)-G(i,i)*F(i);
F1(n+i-1,w)=-2*E(i);
F1(n+i-1,n+w-1)=-2*F(i);
for k=1:n
F1(i,w)=F1(i,w)-G(i,k)*E(k)+B(i,k)*F(k);
F1(i,n+w-1)= F1(i,n+w-1)-G(i,k)*F(k)-B(i,k)*E(k);
end
end
end end X=inv(F1)*(-FX);for i=1:n-1
E(i)=E(i)+X(i);
F(i)=F(i)+X(n+i-1);end a=a+1;fprintf('第%d次迭代后的節點電壓分別為:n',a);disp(E+j*F);fprintf('第%d次迭代后功率偏差△P △Q電壓偏差△V的平方分別為:n',a);disp(FX);end
disp('收斂后的節點電壓用極坐標表示為:');EF=E+j*F;for i=1:n-1 fprintf('%d號節點電壓的幅值為:',i)
disp(abs(EF(i)));fprintf('%d號節點電壓的相角度數為',i)
disp(angle(EF(i))*180/pi);end PPH=0;for i=1:n
PPH=PPH+EF(n)*conj(Y(n,i))*conj(EF(i));end fprintf('平衡節點的功率');disp(PPH);
運行結果:
運行結果復制如下:
第1次迭代后的節點電壓分別為:
1.00340.1019i
1.03390.0017i
1.0000
第1次迭代后功率偏差△P △Q電壓偏差△V的平方分別為:
-0.8055
-0.1800
0
0.5000
-0.3720
0.2474
0.3875
0
第2次迭代后的節點電壓分別為:
0.98360.1038i
1.01830.0035i
1.0000
第2次迭代后功率偏差△P △Q電壓偏差△V的平方分別為:
0.0512
-0.0222
-0.0403
0.0002
-0.1012
-0.0219
-0.0099
-0.0000
第3次迭代后的節點電壓分別為:
0.98310.1038i
1.01800.0035i
1.0000
第3次迭代后功率偏差△P △Q電壓偏差△V的平方分別為:
0.0008
-0.0003
-0.0005
-0.0001
-0.0021
-0.0004
-0.0003
-0.0000
第4次迭代后的節點電壓分別為:
0.98310.1038i
1.01800.0035i
1.0000
第4次迭代后功率偏差△P △Q電壓偏差△V的平方分別為:
1.0e-005 *
0.0280
-0.0083
-0.0164
-0.0121
-0.1085
-0.0199
-0.0135
-0.0005
收斂后的節點電壓用極坐標表示為: 1號節點電壓的幅值為:
0.9916
1號節點電壓的相角度數為-7.4748
2號節點電壓的幅值為:
1.0175
2號節點電壓的相角度數為-5.8548
3號節點電壓的幅值為:
1.0229
3號節點電壓的相角度數為-5.5864
4號節點電壓的幅值為:
1.0000
4號節點電壓的相角度數為-0.2021
平衡節點的功率 0.4968-10.3280i
第三篇:潮流計算--電力系統大作業(C++編寫)
程序設計所涉及二叉樹解釋
任意一棵樹或一個森林都能唯一地對應一棵二叉樹,由此而編寫本程序。本程序采用類二叉樹為整體結構,二叉樹類下定義節點類,每一條支路均為樹的一個節點,支路所有的參數均作為節點的屬性,并給節點加入屬性“支路編號”,并以支路編號為依據構建二叉樹,這就要求提前根據二叉樹結構給每一個支路編號。
支路編號原則:左子樹上所有編號均小于其雙親的編號,右子樹上所有編號均大于其雙親的編號,為了便于查看,本程序在節點較少時編號從1開始,逐個遞加至支路數;當支路較多時,可不必拘泥于逐個遞加,只要滿足支路編號原則即可。
例如習題3-4:
123118kV113kV8.5+j20.5Wj2.82×10-4S1.22+j20.2Wj2.82×10-4SDST=0.17+j1.7MVA40+j30MVA20+j15MVA
程序二叉樹結構示意圖:
本二叉樹中節點1即支路1為題目中節點1與節點2之間的部分; 本二叉樹中節點2即支路2為題目中節點2與節點3之間的部分; 對于習題3-3:
程序二叉樹結構示意圖:
本二叉樹中節點2即支路2為題目中節點1與節點2之間的部分; 本二叉樹中節點1即支路1為題目中節點2與節點3之間的部分; 本二叉樹中節點3即支路3為題目中節點2與節點4之間的部分.拓展:
如下多支路網絡:
對于三節點網絡需先進行以下網絡處理轉化為標準二叉樹,而后進行計算;
圖中三角形表明該項阻抗為零,為純導線,并進行相應參數補充進行計算。
程序說明文檔
******************************************************************************************************************************************************* 本程序測試使用方法:在E盤根目錄下建立輸入文件:
輸入文件名:input.txt;
將所附算例對應輸入文件內容復制粘貼至上述文件中,在VC++6.0環境下運行cpp文件得出結果。
輸出文件在E盤根目錄下
輸出文件名為:data.txt;******************************************************************************************************************************************************* 程序功能說明:本程序可以計算任意長度線型開始網絡潮流;
支持多電壓等級下的計算;
可在除供電節點外任意節點引出負載;
*******************************************************************************************************************************************************
輸入格式說明:以支路為基本單位,按潮流方向輸入數據:
以下例示意:
//支路個數
1,110,118,8.5,20.5,0.000564,0,0,1,0,0
//線路等效的支路
2,11,110,1.22,20.2,0,40,30,10,0.17,1.7
//變壓器等效的支路
.//按此方式知道輸入所有的支路
.//輸入從上到下的順序為潮流在
.//線型開式網絡中的流動方向
/*
第一行輸入支路個數,回車
第二行至后輸入各個支路參數,回車分隔不同支路;
各行輸入的支路參數順序是:
支路編號,末端電壓,始端電壓,線路等效電阻,線路等效感抗,線路等效容納,末端輸入有功,末端輸入無功,變比,變壓器有功勵磁損耗,變壓器無功勵磁損耗
對于線路等效電路:變壓器有功/無功損耗輸入零,變比輸入1;
對于變壓器等效電路:所有的參數均歸算至高壓側,Rt,Xt對應輸入線路等效電阻/感抗的位置,線路等效容抗為零;
對于個節點的引出負荷:輸入至以此節點為末節點的支路的末端輸入有功/無功部分;
*/ ******************************************************************************************************************************************************** 輸出文件格式說明:輸出的內容包括
(1)支路信息:每個支路元件的始端有功、無功和末端有功、無功;有功損耗無功損耗;電壓損耗;
(2)全網信息:全網的總電源有功、總負荷有功、有功損耗、網損率;
(3)迭代信息:每次完整迭代后的所有內容;
具體在輸出文件中都明確標出。
********************************************************************************************************************************************************* 程序中變量定義說明:
類中定義的變量
class line_part{
//定義支路類
double U[2];
//支路電壓降落:U[0]電壓降落橫分量,U[1]電壓降落縱分量
double k;
//變壓器變比
double val;
//支路排序
double U_end;
//支路末端電壓
double U_begin;
//支路首段電壓
double X[3];
//支路等效阻抗: X[0]電阻,X[1]感抗,X[2]容納
double S_end[2];
//支路末端功率:S_end[0]有功,S_end[1]無功
double S_begin[2];
//支路首段功率:S_begin[0]有功,S_begin[1]無功
double S0[2];
//變壓器勵磁損耗:S0[0]有功,S0[1]無功
double S_org[2];
//支路末端負載:S_org[0]有功,S_org[1]無功
line_part *lchild,*rchild;
//支路的后繼兩個支路 }
class BinTree{
//定義樹類
void PreOrder(){PreOrder(root);};
//樹的先序遍歷修改電壓
void PostOrder(){PostOrder(root);};
//樹的后序遍歷修改潮流
void display(){display(root);};
//樹的先序遍歷顯示數據
line_part *root;
//樹的根,是一個支路類
};主函數中定義的數據
ofstream outfile;
//輸出數據流定
ifstream infile;
//輸入數據流定
const int M(a);
//支路個數常量
主程序(復制粘貼到C++就能用)
**************************************************************************************************************************************************************
#include
double p_cost_all=0;
double sqr(double x){
//平方計算函數 return x*x;};
class line_part{
//定義支路類 private:
double val;
//支路排序
double U_end;
//支路末端電壓
double U_begin;
//支路首段電壓
double X[3];
//支路等效阻抗: X[0]電阻,X[1]感抗,X[2]容納
double S_end[2];
//支路末端功率:S_end[0]有功,S_end[1]無功
double S_begin[2];
//支路首段功率:S_begin[0]有功,S_begin[1]無功
double S0[2];
//變壓器勵磁損耗:S0[0]有功,S0[1]無功
double S_org[2];
//支路末端負載:S_org[0]有功,S_org[1]無功
line_part *lchild,*rchild;public:
double U[2];
//支路電壓降落:U[0]電壓降落橫分量,U[1]電壓降落縱分量
double k;
//變壓器變比
public: line_part(){ val=0;U_end=0;U_begin=0;X[0]=0;X[1]=0;
X[2]=0;S_end[0]=S_org[0]=0;S_end[1]=S_org[1]=0;
S_begin[0]=0;S_begin[1]=0;k=1;
S0[0]=0;S0[1]=0;U[0]=0;U[1]=0;
lchild = rchild= NULL;}
line_part(double vall,double u_end=0,double u_begin=0,double r=0,double x=0,double b=0,double Pe=0,double Xe=0,double K=0,double P0=0,double Q0=0){
val=vall;
U_end=u_end;
U_begin=u_begin;
X[0]=r;
X[1]=x;
X[2]=b;
S_end[0]=S_org[0]=Pe;
S_end[1]=S_org[1]=Xe;
S_begin[0]=0;
S_begin[1]=0;
k=K;
S0[0]=P0;
S0[1]=Q0;
U[0]=0;
U[1]=0;
lchild = rchild= NULL;
};friend class BinTree;
friend void pass_U(line_part*a,line_part*b,line_part*c);
//電壓傳遞函數
friend void pass_w(line_part*a,line_part*b,line_part*c);
//功率傳遞函數
friend void pass_U2(line_part*a,line_part*b);
//電壓傳遞函數
friend void pass_w2(line_part*a,line_part*b);
//功率傳遞函數
void Sbegin(){
(U_end)*X[2]/2))/sqr(Uend);;-sqr(U_begin)*X[2]/2-sqr(U_end)*X[2]/2;};void Uend(){
double U_heng(0),U_zong(0);
X[2]/2-S0[1];1])/U_begin;
//U_heng即是△u2 0])/U_begin;
//U_zong即是δu2 sqr(U_zong))/k;
double get_val(){
};
//支路首段功率計算函數 double Uend,I2;Uend=k*U_end;I2=(sqr(S_end[0])+sqr(S_end[1]-sqrS_begin[0]=S_end[0]+I2*X[0]+S0[0]S_begin[1]=S_end[1]+I2*X[1]+S0[1]
//支路末端電壓計算函數 double p_begin,q_begin;p_begin=S_begin[0]-S0[0];q_begin=S_begin[1]+sqr(U_begin)*U_heng=(p_begin*X[0]+q_begin*X[U_zong=(p_begin*X[1]-q_begin*X[U_end=sqrt(sqr(U_begin-U_heng)+U[0]=U_heng;U[1]=U_zong;};
//返回支路編號 if(this==0){return-1;}else{ if(val>0&&val<100){return val;} else return-1;}
double get_Uend(){
//返回支路末端電壓
return U_end;};
double get_Ubegin(){
//返回支路首段電壓
return U_begin;};
double get_Pbegin(){
//返回支路首段有功
return S_begin[0];};
double get_Pend(){
//返回支路末端有功
return S_end[0];};
double get_Qbegin(){
//返回支路首段無功
return S_begin[1];};
double get_Qend(){
//返回支路末端無功
return S_end[1];};
double get_Pcost(){
//返回支路有功損耗
return S_begin[0]-S_end[0];};
double get_Qcost(){
//返回支路無功損耗
return S_begin[1]-S_end[1];};line_part *get_lchild(){
//返回支路無功損耗
return lchild;};line_part *get_rchild(){
//返回支路無功損耗
return rchild;};};
void pass_U(line_part *a,line_part *b,line_part *c){(*c).U_begin=(*a).U_end;(*b).U_begin=(*a).U_end;};void pass_w(line_part *a,line_part *b,line_part *c){(*a).S_end[0]=(*b).S_begin[0]+(*c).S_begin[0]+(*a).S_org[0];(*a).S_end[1]=(*b).S_begin[1]+(*c).S_begin[1]+(*a).S_org[1];};void pass_U2(line_part *a,line_part *b){(*b).U_begin=(*a).U_end;};void pass_w2(line_part *a,line_part *b){(*a).S_end[0]=(*b).S_begin[0]+(*a).S_org[0];(*a).S_end[1]=(*b).S_begin[1]+(*a).S_org[1];};
class BinTree{ public:
friend void pass_U(line_part*,line_part*,line_part*);
//電壓傳遞函數
pass_w(line_part*,line_part*,line_part*);
line_part(0,0,0,0,0,0,0,0,0,0,0);root = aa;}
vall,double u_end=0,double u_begin=0,double r=0, Pe=0,double Xe=0, P0=0,double Q0=0){ egin,r,x,b,Pe,Xe,K,P0,Q0);
private:
*&t,double vall,double u_end,double u_begin,double r, Pe,double Xe, Q0);
};
friend void //功率傳遞函數 BinTree(){line_part *aa=new line_part *Getroot(){return root;} void insertline_part(double
double x=0,double b=0,double
double K=0,double insertline_part(root,vall,u_end,u_b} void PreOrder(){PreOrder(root);};void PostOrder(){PostOrder(root);};void display(){display(root);};line_part *root;void insertline_part(line_part
double x,double b,double
double K,double P0,double void PreOrder(line_part *&t);void PostOrder(line_part *t);void display(line_part *&t);
void BinTree::insertline_part(line_part *&t, double vall,double u_end=0,double u_begin=0,double r=0,double x=0,double b=0,double Pe=0,double Xe=0,double K=0,double P0=0,double Q0=0){
//插入節點
double ass=t->get_val();if(t==0||t->get_val()<=0){
t=new line_part(vall,u_end,u_begin,r,x,b,Pe,Xe,K,P0,Q0);} else if(vall
insertline_part(t->lchild, vall,u_end,u_begin,r,x,b,Pe,Xe,K,P0,Q0);} else {
insertline_part(t->rchild, vall,u_end,u_begin,r,x,b,Pe,Xe,K,P0,Q0);} };/////////////////////////////////////////////////////////////////////////////////////////////////////////////// void BinTree::display(line_part *&t){
if(t->get_val()>0&&t->get_val()<100){
display(t->lchild);
display(t->rchild);
ofstream outfile1;
outfile1.open(“e:data.txt”,ios::ate);
p_cost_all +=t->get_Pcost();
double U;
// 計算并存放各個節點的電壓相角(始端為零)
U=atan2(t->U[1],(t->get_Ubegin()-t->U[0]))/3.1415926*180;
outfile1<<“支路”<
”<
outfile1<<“
”<<“首端電壓”<<“
”< outfile1<<“ ”<<“末端電壓”<<“ ”< //計算并存放各個支double U_cost; //計算并存放各個支路的電壓損耗 U_cost=t->get_Ubegin()-t->get_Uend(); outfile1<<“ ”<<“電壓損耗”<<“ outfile1<<” “<<”始端有功“<<” 首端電壓 outfile1<<“ ”<<“始端無功”<<“ 路的末端電壓 outfile1<<” “<<”末端有功“<<” 首端電壓 outfile1<<“ ”<<“末端無功”<<“ 路的末端電壓 double P_cost; 的有功損耗 P_cost=t->get_Pcost(); outfile1<<” “<<”有功損耗“<<” double Q_cost; 的無功損耗 Q_cost=t->get_Qcost(); outfile1<<“ ”<<“無功損耗”<<“ outfile1.close(); ”< //計算并存放各個支“< //計算并存放各個支 //計算并存放各個支路 “< //計算并存放各個支路 ”< };///////////////////////////////////////////////////////////////////////////////////////////////////////////////// void BinTree::PreOrder(line_part *&t){ //先序遍歷二叉樹修改電壓 0) get_lchild()->get_val()<100) get_rchild()->get_val()<100) get_rchild()->get_val()<100) if(t->get_val()>0&&t->get_val()<10{ if(t->get_lchild()->get_val()>0&&t-> { if(t->get_rchild()->get_val()>0&&t-> { t->Uend(); pass_U(t,t->lchild,t->rchild); t->lchild->Uend(); t->rchild->Uend(); } else{ t->Uend(); pass_U2(t,t->lchild); t->lchild->Uend();} } else { if(t->get_rchild()->get_val()>0&&t-> { t->Uend(); pass_U2(t,t->rchild); t->rchild->Uend(); } else{} } PreOrder(t->lchild);PreOrder(t->rchild); } };void BinTree::PostOrder(line_part *t){ //后序遍歷二叉樹修改潮流 if(t->get_val()>0&&t->get_val()<100) get_lchild()->get_val()<100) get_rchild()->get_val()<100) get_rchild()->get_val()<100) { PostOrder(t->lchild);PostOrder(t->rchild);if(t->get_lchild()->get_val()>0&&t-> { if(t->get_rchild()->get_val()>0&&t-> { t->lchild->Sbegin(); t->rchild->Sbegin(); pass_w(t,t->lchild,t->rchild); t->Sbegin(); } else{ t->lchild->Sbegin(); pass_w2(t,t->lchild); t->Sbegin();} } else { if(t->get_rchild()->get_val()>0&&t-> { t->rchild->Sbegin(); pass_w2(t,t->rchild); t->Sbegin(); } else{} }; void main(){ ofstream outfile; //輸入數據流定義 infile>>a; cout<<“節點個數 ”< const int M(a); 量 double *A=new double[10*M];支路數據數組 while(l<11*M){ } } //輸出數據流定義 outfile.open(“e:data.txt”);outfile.clear();outfile.close();ifstream infile;infile.open(“e:input.txt”); int a;int l(0);char b; //支路節點數常 //輸入流輸入各 infile>>A[l]; infile.get(b);l++;};outfile.open(“e:data.txt”,ios::ate);outfile<<“節點個數 ”< i=0;i *i+1],A[11*i+2],A[11*i+3],A[11*i+4],*i+8],A[11*i+9],A[11*i+10]); 如下“< outfile.close(); BinTree elec;for(int //添加節點 elec.insertline_part(A[11*i+0],A[11 A[11*i+5],A[11*i+6],A[11*i+7],A[11} for(i = 0;i<5;i++){ outfile.open(”e:data.txt“,ios::ate);outfile< outfile< elec.PostOrder(); elec.PreOrder();elec.display(); outfile.open(“e:data.txt”,ios::ate); “< ”< “< ”< outfile< line_part *ee=new line_part();ee=elec.Getroot(); double aa =ee->get_Pbegin(); outfile<<“全網的總電源有功 outfile.close(); outfile.open(”e:data.txt“,ios::ate);double bb;bb =aa-p_cost_all; outfile<<”全網的總負荷有功 outfile<<“全網的總有功損耗 double cc; cc = p_cost_all/aa*100; outfile<<”全網的網損率 outfile.close(); p_cost_all=0.0; } }; **************************************************************************************************************************************************************習題3-3 input: 3 2,35,38.5,1.2,2.4,0,3,2,1,0,0 1,35,35,1,2,0,5,3,1,0,0 3,35,35,2,4,0,2,3,1,0,0 習題3-4 Input: 最大負荷 2 1,110,118,8.5,20.5,0.000564,0,0,1,0,0 2,11,110,1.22,20.2,0,40,30,10,0.17,1.7 最小負荷 2 1,110,113,8.5,20.5,0.000564,0,0,1,0,0 2,11,110,1.22,20.2,0,20,15,10,0.17,1.7 科學技術學院 畢業設計(論文)開題報告 題 目: 電力系統潮流分析計算機輔助設計 學 科 部: 信息學科部 專 業: 電氣工程及其自動化 班 級: 電氣082班 學 號: 7022808070 姓 名: 黃義軍 指導教師: 劉愛國 填表日期: 2011 年 月 日 一、選題的依據及意義: 電力系統潮流計算是研究電力系統穩態運行情況的一種基本電氣計算。它的任務是根據給定的運行條件和網路結構確定整個系統的運行狀態,如各母線上的電壓(幅值及相角)、網絡中的功率分布以及功率損耗等。電力系統潮流計算的結果是電力系統穩定計算和故障分析的基礎。 潮流計算經歷了一個由手工, 利用交、直流計算臺到應用數字電子計算機的發展過程。現在的潮流算法都以計算機的應用為前提。 利用電子計算機進行潮流計算從20世紀50年代中期就已經開始。此后,潮流計算曾采用了各種不同的方法,這些方法的發展主要是圍繞著對潮流計算的一些基本要求進行的。一般要滿足四個基本要求: a)可靠收斂 b)計算速度快 c)使用方便靈活 d)內存占用量少 它們也是對潮流算法進行評價的主要依據。 在電力系統運行方式和規劃方案的研究中,都需要進行潮流計算以比較運行方式或規劃供電方案的可行性、可靠性和經濟性。同時,為了實時監控電力系統的運行狀態,也需要進行大量而快速的潮流計算。因此,潮流計算是電力系統中應用最廣泛、最基本和最重要的一種電氣運算。在系統規劃設計和安排系統的運行方式時,采用離線潮流計算;在電力系統運行狀態的實時監控中,則采用在線潮流計算。 二、國內外研究現狀及發展趨勢(含文獻綜述): 在用數字計算機求解電力系統潮流問題的開始階段,人們普遍采用以節點導納矩陣為基礎的高斯-賽德爾迭代法(一下簡稱導納法)。這個方法的原理比較簡單,要求的數字計算機的內存量也比較小,適應當時的電子數字計算機制作水平和電力系統理論水平,于是電力系統計算人員轉向以阻抗矩陣為主的逐次代入法(以下簡稱阻抗法)。 20世紀60年代初,數字計算機已經發展到第二代,計算機的內存和計算速度發生了很大的飛躍,從而為阻抗法的采用創造了條件。阻抗矩陣是滿矩陣,阻抗法要求計算機儲存表征系統接線和參數的阻抗矩陣。這就需要較大的內存量。而且阻抗法每迭代一次都要求順次取阻抗矩陣中的每一個元素進行計算,因此,每次迭代的計算量很大。 阻抗法改善了電力系統潮流計算問題的收斂性,解決了導納法無法解決的一些系統的潮流計算,在當時獲得了廣泛的應用,曾為我國電力系統設計、運行和研究作出了很大的貢獻。但是,阻抗法的主要缺點就是占用計算機的內存很大,每次迭代的計算量很大。當系統不斷擴大時,這些缺點就更加突出。為了克服阻抗法在內存和速度方面的缺點,后來發展了以阻抗矩陣為基礎的分塊阻抗法。這個方法把一個大系統分割為幾個小的地區系統,在計算機內只需存儲各個地區系統的阻抗矩陣及它們之間的聯絡線的阻抗,這樣不僅大幅度的節省了內存容量,同時也提高了計算速度。 克服阻抗法缺點的另一途徑是采用牛頓-拉夫遜法(以下簡稱牛頓法)。牛頓法是數學中求解非線性方程式的典型方法,有較好的收斂性。解決電力系統潮流計算問題是以導納矩陣為基礎的,因此,只要在迭代過程中盡可能保持方程式系數矩陣的稀疏性,就可以大大提高牛頓潮流程序的計算效率。自從20世紀60年代中期采用了最佳順序消去法以后,牛頓法在收斂性、內存要求、計算速度方面都超過了阻抗法,成為直到目前仍被廣泛采用的方法。 在牛頓法的基礎上,根據電力系統的特點,抓住主要矛盾,對純數學的牛頓法進行了改造,得到了P-Q分解法。P-Q分解法在計算速度方面有顯著的提高,迅速得到了推廣。 牛頓法的特點是將非線性方程線性化。20世紀70年代后期,有人提出采用更精確的模型,即將泰勒級數的高階項也包括進來,希望以此提高算法的性能,這便產生了保留非線性的潮流算法。另外,為了解決病態潮流計算,出現了將潮流計算表示為一個無約束非線性規劃問題的模型,即非線性規劃潮流算法。 近20多年來,潮流算法的研究仍然非常活躍,但是大多數研究都是圍繞改進牛頓法和P-Q分解法進行的。此外,隨著人工智能理論的發展,遺傳算法、人工神經網絡、模糊算法也逐漸被引入潮流計算。但是,到目前為止這些新的模型和算法還不能取代牛頓法和P-Q分解法的地位。由于電力系統規模的不斷擴大,對計算速度的要求不斷提高,計算機的并行計算技術也將在潮流計算中得到廣泛的應用,成為重要的研究領域。 三、本課題研究內容 1.熟悉電力系統潮流計算的相關理論。 2.在綜合分析各種電力系統特點的基礎上,運用所學專業知識,提出一種合理高效的潮流計算算法。 3.熟練運用程序設計語言如C語言。 4.通過軟件編程實現所提出的算法,并通過典型系統進行驗證。 四、本課題研究方案 1、確定一種計算方法,如牛頓-拉夫遜法。 2、結合C語言,編寫一套適用的程序完成潮流計算。 3、選取一典型模型進行驗證,試驗程序是否可靠。 五、研究目標、主要特色及工作進度: 研究目標:提出一種合理高效的潮流計算算法,在保證電力系統供電可靠性和電能質量的前提下,盡可能提高潮流計算的效率,降低人力資源消耗。從而提高電力系統運行的經濟性。進度安排: 第1周: 收集相關參考資料和相關文獻。 第2周: 總結整理資料,熟習課題。 第3周: 提出初步設計方案。 第4周: 熟悉電力系統潮流計算的相關理論及計算機語言。 第5周: 實習 第6周: 寫實習報告 第7周: 確定一種計算方法。 第8周: 提出一種合理的程序設計方法。 第9周: 畫出設計程序整體流程圖。 第10周: 將整體程序模塊化,并定義出每個模塊的功能。 六、參考文獻: [1] Tankut Yalcinoz, Onur Ko¨ ksoy.A multiobjective optimization method to environmental economic diaspatch.2007,29(1):42-50 [2] X.S.Han,H.B.Gooi.Effective economic dispatch model and algorithm.Electrical Power and Energy Systems.2007, 29(1):113-120 [3] 何仰贊,溫增銀.電力系統分析.武漢:華中科技大學出版社,2002 [4] 王錫凡,方萬良,杜正春.現代電力系統分析.北京:科學出版社,2003 [5] 宋文南,李樹鴻,張堯.電力系統潮流計算.天津:天津大學出版社,1990 [6] 王晶,翁國慶,張有冰.電力系統的MATLAB6/SIMULINK仿真與應用.西安:西安電子科技大學出版社,2008.[7] 王祖佑.電力系統穩態運行計算機分析.北京:水利電力出版社,1987.[8] 周全仁,張清益.電網計算與程序設計.長沙:湖南科學技術出版社,1983.[9] 許主平,周少武,鄒軍安。電力系統計算機輔助設計。北京:中國電力出版社,2001。 南 京 理 工 大 學 《電力系統穩態分析》 課程報告 姓名 XX 學 號: 5*** 自動化學院 電氣工程 基于牛頓-拉夫遜法的潮流計算例題編程報學院(系): 專 業: 題 目: 任課教師 碩士導師 告 楊偉 XX 2015年6月10號 基于牛頓-拉夫遜法的潮流計算例題編程報告 摘要:電力系統潮流計算的目的在于:確定電力系統的運行方式、檢查系統中各元件是否過壓或者過載、為電力系統繼電保護的整定提供依據、為電力系統的穩定計算提供初值、為電力系統規劃和經濟運行提供分析的基礎。潮流計算的計算機算法包含高斯—賽德爾迭代法、牛頓-拉夫遜法和P—Q分解法等,其中牛拉法計算原理較簡單、計算過程也不復雜,而且由于人們引入泰勒級數和非線性代數方程等在算法里從而進一步提高了算法的收斂性和計算速度。同時基于MATLAB的計算機算法以雙精度類型進行數據的存儲和運算, 數據精確度高,能進行潮流計算中的各種矩陣運算,使得傳統潮流計算方法更加優化。 一 研究內容 通過一道例題來認真分析牛頓-拉夫遜法的原理和方法(采用極坐標形式的牛拉法),同時掌握潮流計算計算機算法的相關知識,能看懂并初步使用MATLAB軟件進行編程,培養自己電力系統潮流計算機算法編程能力。 例題如下:用牛頓-拉夫遜法計算下圖所示系統的潮流分布,其中系統中5為平衡節點,節點5電壓保持U=1.05為定值,其他四個節點分別為PQ節點,給定的注入功率如圖所示。計算精度要求各節點電壓修正量不大于10-6。 二 牛頓-拉夫遜法潮流計算 1 基本原理 牛頓法是取近似解x(k)之后,在這個基礎上,找到比x(k)更接近的方程的根,一步步地迭代,找到盡可能接近方程根的近似根。牛頓迭代法其最大優點是在方程f(x)=0的單根附近時誤差將呈平方減少,而且該法還可以用來求方程的重根、復根。電力系統潮流計算,一般來說,各個母線所供負荷的功率是已知的,各個節點的電壓是未知的(平衡節點外)可以根據網絡結構形成節點導納矩陣,然后由節點導納矩陣列寫功率方程,由于功率方程里功率是已知的,電壓的幅值和相角是未知的,這樣潮流計算的問題就轉化為求解非線性方程組的問題了。為了便于用迭代法解方程組,需要將上述功率方程改寫成功率平衡方程,并對功率平衡方程求偏導,得出對應的雅可比矩陣,給未知節點賦電壓初值,將初值帶入功率平衡方程,得到功率不平衡量,這樣由功率不平衡量、雅可比矩陣、節點電壓不平衡量(未知的)構成了誤差方程,解誤差方程,得到節點電壓不平衡量,節點電壓加上節點電壓不平衡量構成節點電壓新的初值,將新的初值帶入原來的功率平衡方程,并重新形成雅可比矩陣,然后計算新的電壓不平衡量,這樣不斷迭代,不斷修正,一般迭代三到五次就能收斂。2 基本步驟和設計流程圖 形成了雅克比矩陣并建立了修正方程式,運用牛頓-拉夫遜法計算潮流的核心問題已經解決,已有可能列出基本計算步驟并編制流程圖。由課本總結基本步驟如下: 1)形成節點導納矩陣Y; 2)設各節點電壓的初值,如果是直角坐標的話設電壓的實部e和虛部f;如果是極坐標的話則設電壓的幅值U和相角a; 3)將各個節點電壓的初值代入公式求修正方程中的不平衡量以及修正方程的系數矩陣的雅克比矩陣; 4)解修正方程式,求各節點電壓的變化量,即修正量; 5)計算各個節點電壓的新值,即修正后的值; 6)利用新值從第(3)步開始進入下一次迭代,直至達到精度退出循環; 7)計算平衡節點的功率和線路功率,輸出最后計算結果; ① 公式推導 ② 流程圖 三 matlab編程代碼 clear; % 如圖所示1,2,3,4為PQ節點,5為平衡節點 y=0; % 輸入原始數據,求節點導納矩陣 y(1,2)=1/(0.07+0.21j); y(4,5)=0;y(1,3)=1/(0.06+0.18j); y(1,4)=1/(0.05+0.10j); y(1,5)=1/(0.04+0.12j); y(2,3)=1/(0.05+0.10j); y(2,5)=1/(0.08+0.24j); y(3,4)=1/(0.06+0.18j); for i=1:5 for j=i:5 y(j,i)=y(i,j); end end Y=0; % 求節點導納矩陣中互導納 for i=1:5 for j=1:5 if i~=j Y(i,j)=-y(i,j); end end end % 求節點導納矩陣中自導納 for i=1:5 Y(i,i)=sum(y(i,:)); end Y % Y為導納矩陣 G=real(Y); B=imag(Y);% 輸入原始節點的給定注入功率 S(1)=0.3+0.3j; S(2)=-0.5-0.15j; S(3)=-0.6-0.25j; S(4)=-0.7-0.2j; S(5)=0; P=real(S); Q=imag(S); % 賦初值,U為節點電壓的幅值,a為節點電壓的相位角 U=ones(1,5); U(5)=1.05; a=zeros(1,5); x1=ones(8,1); x2=ones(8,1); k=0; while max(x2)>1e-6 for i=1:4 for j=1:4 H(i,j)=0; N(i,j)=0; M(i,j)=0; L(i,j)=0; oP(i)=0; oQ(i)=0; end end % 求有功、無功功率不平衡量 for i=1:4 for j=1:5 oP(i)=oP(i)-U(i)*U(j)*(G(i,j)*cos(a(i)-a(j))+B(i,j)*sin(a(i)-a(j))); oQ(i)=oQ(i)-U(i)*U(j)*(G(i,j)*sin(a(i)-a(j))-B(i,j)*cos(a(i)-a(j))); end oP(i)=oP(i)+P(i); oQ(i)=oQ(i)+Q(i); end x2=[oP,oQ]'; % x2為不平衡量列向量 % 求雅克比矩陣 % 當i~=j時,求H,N,M,L for i=1:4 for j=1:4 if i~=j H(i,j)=-U(i)*U(j)*(G(i,j)*sin(a(i)-a(j))-B(i,j)*cos(a(i)-a(j))); N(i,j)=-U(i)*U(j)*(G(i,j)*cos(a(i)-a(j))+B(i,j)*sin(a(i)-a(j))); L(i,j)=H(i,j); M(i,j)=-N(i,j); end end end % 當i=j時,求H,N,M,L for i=1:4 for j=1:5 if i~=j H(i,i)=H(i,i)+U(i)*U(j)*(G(i,j)*sin(a(i)-a(j))-B(i,j)*cos(a(i)-a(j)));N(i,i)=N(i,i)-U(i)*U(j)*(G(i,j)*cos(a(i)-a(j))+B(i,j)*sin(a(i)-a(j))); M(i,i)=M(i,i)-U(i)*U(j)*(G(i,j)*cos(a(i)-a(j))+B(i,j)*sin(a(i)-a(j))); L(i,i)=L(i,i)-U(i)*U(j)*(G(i,j)*sin(a(i)-a(j))-B(i,j)*cos(a(i)-a(j))) end end N(i,i)=N(i,i)-2*(U(i))^2*G(i,i); L(i,i)=L(i,i)+2*(U(i))^2*B(i,i); end J=[H,N;M,L] % J為雅克比矩陣 x1=-((inv(J))*x2); % x1為所求△x的列向量 % 求節點電壓新值,準備下一次迭代 for i=1:4 oa(i)=x1(i); oU(i)=x1(i+4)*U(i); end for i=1:4 a(i)=a(i)+oa(i); U(i)=U(i)+oU(i); end k=k+1; end k,U,a % 求節點注入功率 i=5; for j=1:5 P(i)=U(i)*U(j)*(G(i,j)*cos(a(i)-a(j))+B(i,j)*sin(a(i)-a(j)))+P(i); Q(i)=U(i)*U(j)*(G(i,j)*sin(a(i)-a(j))-B(i,j)*cos(a(i)-a(j)))+Q(i); end S(5)=P(5)+Q(5)*sqrt(-1); S % 求節點注入電流 I=Y*U' 四 運行結果 節點導納矩陣 經過五次迭代后的雅克比矩陣 迭代次數以及節點電壓的幅值和相角(弧度數) 節點注入功率和電流 五 結果分析 在這次學習和實際操作過程里:首先,對電力系統分析中潮流計算的部分特別是潮流計算的計算機算法中的牛頓-拉夫遜法進行深入的研讀,弄明白了其原理、計算過程、公式推導以及設計流程。牛頓-拉夫遜法是求解非線性方程的迭代過程,其計算公式為?F?J?X,式中J為所求函數的雅可比矩陣;?X為需要求的修正值;?F為不平衡的列向量。利用x(*)=x(k+1)+?X(k+1)進行多次迭代,通過迭代判據得到所需要的精度值即準確值x(*)。六 結論 通過這個任務,自己在matlab編程,潮流計算,word文檔的編輯功能等方面均有提高,但也暴漏出一些問題:理論知識儲備不足,對matlab的性能和特點還不能有一個全面的把握,對word軟件也不是很熟練,相信通過以后的學習能彌補這些不足,達到一個新的層次。第四篇:潮流計算畢業論文
第五篇:電力系統潮流計算