天天看點

【布局優化】基于粒子群算法求解配電網重構matlab源碼

 傳統配電網的運作優化問題主要涉及發電機機端電壓的調整、變壓器分接頭的調節和電容器容量的配置。在接入分布式電源和儲能裝置之後,配電網的優化問題還将包括對分布式電源和儲能裝置的控制。配電網運作優化問題的目标函數主要有最小化系統的有功功率損耗,減少裝置的運作成本等等。優化變量包括連續型變量即分布式電源和儲能裝置的有功無功等,離散型變量即變壓器的分接頭和電容器的投切組數,接入裝置的位置和容量等。限制條件主要有1.發電機機端電壓的最大最小限制2.變壓器分接頭的檔位限制以及電容器的容量限制3.變壓器和電容器每日最大操作數的限制, 4. 分布式電源和儲能裝置的有功無功功率限制等。綜合配電網優化的目标函數、變量以及限制條件,該優化問題可以看作是一個多目标、多變量的混合整數非線性規劃問題。

針對配電網的優化問題,目前主要的求解方法有傳統的數學優化方法和人工智能方法。傳統的數學優化方法主要包括線性/非線性規劃法、動态規劃法等,而人工智能方法主要包括遺傳算法、模拟退火法和粒子群優化算法等。傳統的優化算法從全局考慮整個優化問題,原理嚴格,計算時間較短。但是對目标函數和優化變量的初值要求較高。人工智能算法對目标函數和初值的要求不高,并且能夠求解高次元的優化問題,其缺點是容易陷入局部最優,計算時間較長。

綜上,配電網的優化方向主要内容有:(1)含分布式發電裝置與儲能裝置的運作方式研究(2)配電網中接入的分布式發電裝置與儲能裝置的安裝位置和容量的選擇(3)綜合考慮分布式發電裝置以及儲能裝置的運作與規劃的優化問題研究

粒子群算法

粒子群算法是在1995年由Eberhart博士和Kennedy博士一起提出的,它源于對鳥群捕食行為的研究。它的基本核心是利用群體中的個體對資訊的共享進而使整個群體的運動在問題求解空間中産生從無序到有序的演化過程,進而獲得問題的最優解。設想這麼一個場景:一群鳥進行覓食,而遠處有一片玉米地,所有的鳥都不知道玉米地到底在哪裡,但是它們知道自己目前的位置距離玉米地有多遠。那麼找到玉米地的最佳政策,也是最簡單有效的政策就是搜尋目前距離玉米地最近的鳥群的周圍區域。

在PSO中,每個優化問題的解都是搜尋空間中的一隻鳥,稱之為"粒子",而問題的最優解就對應于鳥群中尋找的"玉米地"。所有的粒子都具有一個位置向量(粒子在解空間的位置)和速度向量(決定下次飛行的方向和速度),并可以根據目标函數來計算目前的所在位置的适應值(fitness value),可以将其了解為距離"玉米地"的距離。在每次的疊代中,種群中的例子除了根據自身的經驗(曆史位置)進行學習以外,還可以根據種群中最優粒子的"經驗"來學習,進而确定下一次疊代時需要如何調整和改變飛行的方向和速度。就這樣逐漸疊代,最終整個種群的例子就會逐漸趨于最優解。

上面的解釋可能還比較抽象,下面通過一個簡單的例子來進行說明

【布局優化】基于粒子群算法求解配電網重構matlab源碼

在一個湖中有兩個人他們之間可以通信,并且可以探測到自己所在位置的最低點。初始位置如上圖所示,由于右邊比較深,是以左邊的人會往右邊移動一下小船。

【布局優化】基于粒子群算法求解配電網重構matlab源碼

現在左邊比較深,是以右邊的人會往左邊移動一下小船

一直重複該過程,最後兩個小船會相遇

【布局優化】基于粒子群算法求解配電網重構matlab源碼

得到一個局部的最優解

【布局優化】基于粒子群算法求解配電網重構matlab源碼
【布局優化】基于粒子群算法求解配電網重構matlab源碼

将每個個體表示為粒子。每個個體在某一時刻的位置表示為,x(t),方向表示為v(t)

【布局優化】基于粒子群算法求解配電網重構matlab源碼

p(t)為在t時刻x個體的自己的最優解,g(t)為在t時刻所有個體的最優解,v(t)為個體在t時刻的方向,x(t)為個體在t時刻的位置

【布局優化】基于粒子群算法求解配電網重構matlab源碼
【布局優化】基于粒子群算法求解配電網重構matlab源碼

下一個位置為上圖所示由x,p,g共同決定了

【布局優化】基于粒子群算法求解配電網重構matlab源碼

種群中的粒子通過不斷地向自身和種群的曆史資訊進行學習,進而可以找到問題的最優解。

但是,在後續的研究中表表明,上述原始的公式中存在一個問題:公式中V的更新太具有随機性,進而使整個PSO算法的全局優化能力很強,但是局部搜尋能力較差。而實際上,我們需要在算法疊代初期PSO有着較強的全局優化能力,而在算法的後期,整個種群應該具有更強的局部搜尋能力。是以根據上述的弊端,shi和Eberhart通過引入慣性權重修改了公式,進而提出了PSO的慣性權重模型:

每一個向量的分量表示如下

【布局優化】基于粒子群算法求解配電網重構matlab源碼
【布局優化】基于粒子群算法求解配電網重構matlab源碼

其中w稱為是PSO的慣性權重,它的取值介于【0,1】區間,一般應用中均采用自适應的取值方法,即一開始令w=0.9,使得PSO全局優化能力較強,随着疊代的深入,參數w進行遞減,進而使的PSO具有較強的局部優化能力,當疊代結束時,w=0.1。參數c1和c2稱為學習因子,一般設定為1,4961;而r1和r2為介于[0,1]之間的随機機率值。

整個粒子群優化算法的算法架構如下:

step1種群初始化,可以進行随機初始化或者根據被優化的問題設計特定的初始化方法,然後計算個體的适應值,進而選擇出個體的局部最優位置向量和種群的全局最優位置向量。

step2 疊代設定:設定疊代次數,并令目前疊代次數為1

step3 速度更新:更新每個個體的速度向量

step4 位置更新:更新每個個體的位置向量

step5 局部位置和全局位置向量更新:更新每個個體的局部最優解和種群的全局最優解

step6 終止條件判斷:判斷疊代次數時都達到最大疊代次數,如果滿足,輸出全局最優解,否則繼續進行疊代,跳轉至step 3。

  對于粒子群優化算法的運用,主要是對速度和位置向量疊代算子的設計。疊代算子是否有效将決定整個PSO算法性能的優劣,是以如何設計PSO的疊代算子是PSO算法應用的研究重點和難點。

function main()
clear,clc
disp('請輸入粒子數');
n = input('');
Y = CreatPSO(n);
 
for i = 1:n
   disp(['第 ',num2str(i),' 個粒子']);
   disp(Y(i,:));
   [loss(i),minV(i)] = PLoss(Y(i,:));
end
   least = min(loss);
   leastIndex = find(loss == least);
   disp(['網損最小的粒子為第( ',num2str(leastIndex),' )個粒子']);
   disp('粒子為值為');
   disp(Y(leastIndex,:));
   disp(['網損有功功率P最小為( ',num2str(least),' )kW']);
   disp(['節點電壓p.u最小為 ',num2str(minV(leastIndex))]);
 
   disp('網絡拓撲見圖');
 
  figure(2);
   Read(Y(leastIndex,:));
   
end
           
【布局優化】基于粒子群算法求解配電網重構matlab源碼

【布局優化】基于粒子群算法求解配電網重構matlab源碼

繼續閱讀