配电网粒子群算法实例
算例:
????????
一、故障信息的數學表示
在上圖中K表示斷路器,每一個斷路器上均有一個FTU裝置,可以反饋斷路器開關是否過流,用表示上傳的故障信息,反映的是各分段開關處是否流過故障電流有故障電流為1,否則為0)。即:
因為FTU上傳的信息可分為有故障信息及無故障信息兩類,對于分段區間來講也只能是有故障及無故障兩種情況,所以我們可以用二進制編碼規則對配電網故障定位問題進行數學建模。以上圖所示輻射狀配電網為例,系統擁有12個分段開關,我們可以用一串12位的二進制代碼表示FTU的上傳信息,作為程序的輸入,1代表對應的開關有過流信息,0代表對應的開關無過流信息。同時用另一串12位的二進制代碼作為程序的輸出,代表對應饋線區間發生故障,代表無故障。
二、二進制PSO算法的配電網故障定位原理
應用二進制PSO算法求解配電網故障定位問題,粒子的位置代表配電網中饋線區段的狀態,粒子的維數代表配電網的饋線區段總數。每一饋線區段存在0和1兩種狀態,0表示正常狀態,1表示故障狀態,饋線區段的狀態為待求量。因此,N段饋線區段的狀態求解就轉化成N維粒子群優化求解,每個粒子的N維位置都表示為配電網N段饋線區段的潛在狀態。每次迭代過程中,通過評價函數評價各粒子位置優劣,更新粒子的當前最優位置和全體粒子的最優位置,進而更新粒子的速度和位置,直到滿足程序終止條件為止。最終得出的粒子群的全局最優位置就是所求的各饋線區段的實際狀態。
三、構造配電網故障定位評價函數
??? 基于待求各饋線區段實際狀態下所對應的信息應與實際上傳故障信息偏差最小的原則,構造如下評價函數:
表達式的值為每個潛在解對應的適應度值,值越小表示解越優良,因此評價函數應取極小值。
式中:為第j個開關FTU上傳的故障信息,取值為1認為該開關流過了故障電流,為0則未流過;為各開關節點的期望狀態,若該開關流過了故障電流,則期望狀態為1,相反,期望狀態為0,表達式為各區段狀態的函數。N為配電網中饋線區段的總數,為配電網中各設備狀態,為1表明設備故障,取0則設備正常。表示一個權系數乘以故障設備數,。是根據故障診斷理論中“最小集”概念設置的權重系數,取值范圍介于與1之間,表明故障區間數越少解越優,避免出現誤診斷,本文中權系數取0.5。
四、求期望函數
針對不同的網絡,期望函數的表達式不同,無法用統一的格式表示出來。僅以上述算例為例來說明如何求取期望函數。
在輻射型配電網中,任何區間發生故障,必將導致其上游開關流過故障過電流。這是求取期望函數的原則。假設圖一的饋線區段6處發生故障,那么分段開關K1,K2,K3 ,K6,都將有過電流若饋線區段11處發生故障,則K1,K2,K3 ,K6,K10都將有過電流。由此類推我們可得到各個分段開關的期望函數:
用粒子群算法求解配電網故障定位評價函數的極小值即可。
Matlab源代碼:
?? ?clc;
??? clear all;
??? global Ij;
??? global Vmax;?????????????????????? %允許誤差
??? MaxNum=120;??????????????????? %粒子最大迭代次數
??? D=12; %粒子的維數????????????????????
??? Particlesize=30;??????????????????? %粒子群規模
??? c1=2.1;??????????????????????????? %每個粒子的個體學習因子,也稱為加速常數
??? c2=2.1;??????????????????????????? %每個粒子的社會學習因子,也稱為加速常數
??? w=1;?????????????????????????? %慣性因子
??? Vmax=4;??????????????????????? %粒子的最大飛翔速度
??? S_b=randint(Particlesize,D);???? %粒子所在的位置
??? V=Vmax*rand(Particlesize,D);???????? %粒子的飛翔速度
???? Ij=[1 1 1 1 0 1 1 1 0 0 1 1];%FTU 反饋的值這里就是輸入,請修改這里,看結果
??? fitness=F(S_b');%這里注意下,要轉置
??? %inline定義的適應度函數會使程序運行速度大大降低
??? for i=1:Particlesize
??????????? f(i)=F(S_b(i,:));
??? end
??? personalbest_x=S_b;%這里是種群里的每個粒子都認為自己是最好的
??? personalbest_faval=f;
??? [globalbest_favali]=min(personalbest_faval);%全局最優
??? globalbest_x=personalbest_x(i,:);
??? k=1;
??? Start=0;
??? while k<=MaxNum
??????? Remember=globalbest_faval;
??????? for i=1:Particlesize
????? ??????????f(i)=F(S_b(i,:));%計算適應度函數值
??????????? if f(i)<personalbest_faval(i) %判斷當前位置是否是歷史上最佳位置
??????????????? personalbest_faval(i)=f(i);
??????????????? personalbest_x(i,:)=S_b(i,:);
??????????? end
??????? end%這里就是把整個種群中的所有粒子都檢查了一遍,保證當前最優
??????? [globalbest_favali]=min(personalbest_faval);%更新種群最優
??????? globalbest_x=personalbest_x(i,:);
??????? for i=1:Particlesize %更新粒子群里每個個體的最新位置
???????????V(i,:)=w*V(i,:)+c1*rand*(personalbest_x(i,:)-S_b(i,:))...
???????????????+c2*rand*(globalbest_x-S_b(i,:));%更新了速度
?????????? for j=1:length(Ij)
?????????????? if rand(1)<Sigmoid(V(i,j))%這里體現了速度決定位置
?????????????????? S_b(i,j)=1;
?????????????? else
??????????????????? S_b(i,j)=0;
?????????????? end
?????????? end
??????? end
??? if globalbest_faval-Remember==0
??????? Start=Start+1;
??????? if Start==20
??????????? disp(globalbest_x);
??????????? break;
??????? end
??? end
??????? k=k+1;
end
F.m
function fitness=F(SB)
global Ij;
IE=zeros(1,length(Ij));
IE(1)=SB(1)|SB(2)|SB(3)|SB(4)|SB(5)|SB(6)|SB(7)|SB(8)|SB(9)|SB(10)|SB(11)|SB(12);
IE(2)=SB(2)|SB(3)|SB(4)|SB(5)|SB(6)|SB(7)|SB(8)|SB(9)|SB(10)|SB(11)|SB(12);
IE(3)=SB(3)|SB(4)|SB(5)|SB(6)|SB(7)|SB(8)|SB(9)|SB(10)|SB(11)|SB(12);
IE(4)=SB(4)|SB(5);
IE(5)=SB(5);
IE(6)=SB(6)|SB(7)|SB(8)|SB(9)|SB(10)|SB(11)|SB(12);
IE(7)=SB(7)|SB(8)|SB(9)|SB(10);
IE(8)=SB(8)|SB(9)|SB(10);
IE(9)=SB(9);
IE(10)=SB(10);
IE(11)=SB(11)|SB(12);
IE(12)=SB(12);
fitness=sum(abs(Ij-IE))+0.5*sum(abs(SB));
end
Sigmoid.m
function AN=Sigmoid(V)
global Vmax;
??? if V>Vmax
??????? AN=0.98;
??? elseif V>-Vmax
???????AN=1/(1+exp(-V));
??? else
??????? AN=-0.98;
??? end
end
總結
以上是生活随笔為你收集整理的配电网粒子群算法实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PBR Graph材质
- 下一篇: 分享一些行业经验,巩固知识体系