【配電網(wǎng)重構(gòu)】基于粒子群求解配電網(wǎng)重構(gòu)模型matlab源碼
一、故障信息的數(shù)學(xué)表示
在上圖中K表示斷路器,每一個(gè)斷路器上均有一個(gè)FTU裝置,可以反饋斷路器開關(guān)是否過流,用表示上傳的故障信息,反映的是各分段開關(guān)處是否流過故障電流有故障電流為1,否則為0)。即:

因?yàn)镕TU上傳的信息可分為有故障信息及無故障信息兩類,對(duì)于分段區(qū)間來講也只能是有故障及無故障兩種情況,所以我們可以用二進(jìn)制編碼規(guī)則對(duì)配電網(wǎng)故障定位問題進(jìn)行數(shù)學(xué)建模。以上圖所示輻射狀配電網(wǎng)為例,系統(tǒng)擁有12個(gè)分段開關(guān),我們可以用一串12位的二進(jìn)制代碼表示FTU的上傳信息,作為程序的輸入,1代表對(duì)應(yīng)的開關(guān)有過流信息,0代表對(duì)應(yīng)的開關(guān)無過流信息。同時(shí)用另一串12位的二進(jìn)制代碼作為程序的輸出,代表對(duì)應(yīng)饋線區(qū)間發(fā)生故障,代表無故障。
傳統(tǒng)配電網(wǎng)的運(yùn)行優(yōu)化問題主要涉及發(fā)電機(jī)機(jī)端電壓的調(diào)整、變壓器分接頭的調(diào)節(jié)和電容器容量的配置。在接入分布式電源和儲(chǔ)能裝置之后,配電網(wǎng)的優(yōu)化問題還將包括對(duì)分布式電源和儲(chǔ)能裝置的控制。配電網(wǎng)運(yùn)行優(yōu)化問題的目標(biāo)函數(shù)主要有最小化系統(tǒng)的有功功率損耗,減少設(shè)備的運(yùn)行成本等等。優(yōu)化變量包括連續(xù)型變量即分布式電源和儲(chǔ)能裝置的有功無功等,離散型變量即變壓器的分接頭和電容器的投切組數(shù),接入設(shè)備的位置和容量等。約束條件主要有1.發(fā)電機(jī)機(jī)端電壓的最大最小限制2.變壓器分接頭的檔位限制以及電容器的容量限制3.變壓器和電容器每日最大操作數(shù)的限制, 4. 分布式電源和儲(chǔ)能裝置的有功無功功率約束等。綜合配電網(wǎng)優(yōu)化的目標(biāo)函數(shù)、變量以及約束條件,該優(yōu)化問題可以看作是一個(gè)多目標(biāo)、多變量的混合整數(shù)非線性規(guī)劃問題。
針對(duì)配電網(wǎng)的優(yōu)化問題,目前主要的求解方法有傳統(tǒng)的數(shù)學(xué)優(yōu)化方法和人工智能方法。傳統(tǒng)的數(shù)學(xué)優(yōu)化方法主要包括線性/非線性規(guī)劃法、動(dòng)態(tài)規(guī)劃法等,而人工智能方法主要包括遺傳算法、模擬退火法和粒子群優(yōu)化算法等。傳統(tǒng)的優(yōu)化算法從全局考慮整個(gè)優(yōu)化問題,原理嚴(yán)格,計(jì)算時(shí)間較短。但是對(duì)目標(biāo)函數(shù)和優(yōu)化變量的初值要求較高。人工智能算法對(duì)目標(biāo)函數(shù)和初值的要求不高,并且能夠求解高維度的優(yōu)化問題,其缺點(diǎn)是容易陷入局部最優(yōu),計(jì)算時(shí)間較長。
綜上,配電網(wǎng)的優(yōu)化方向主要內(nèi)容有:(1)含分布式發(fā)電設(shè)備與儲(chǔ)能設(shè)備的運(yùn)行方式研究(2)配電網(wǎng)中接入的分布式發(fā)電設(shè)備與儲(chǔ)能裝置的安裝位置和容量的選擇(3)綜合考慮分布式發(fā)電設(shè)備以及儲(chǔ)能裝置的運(yùn)行與規(guī)劃的優(yōu)化問題研究
二、粒子群算法的概念
??粒子群優(yōu)化算法(PSO:Particle swarm optimization) 是一種進(jìn)化計(jì)算技術(shù)(evolutionary computation)。源于對(duì)鳥群捕食的行為研究。粒子群優(yōu)化算法的基本思想:是通過群體中個(gè)體之間的協(xié)作和信息共享來尋找最優(yōu)解.
??PSO的優(yōu)勢:在于簡單容易實(shí)現(xiàn)并且沒有許多參數(shù)的調(diào)節(jié)。目前已被廣泛應(yīng)用于函數(shù)優(yōu)化、神經(jīng)網(wǎng)絡(luò)訓(xùn)練、模糊系統(tǒng)控制以及其他遺傳算法的應(yīng)用領(lǐng)域。
1、基本思想
??粒子群算法通過設(shè)計(jì)一種無質(zhì)量的粒子來模擬鳥群中的鳥,粒子僅具有兩個(gè)屬性:速度和位置,速度代表移動(dòng)的快慢,位置代表移動(dòng)的方向。每個(gè)粒子在搜索空間中單獨(dú)的搜尋最優(yōu)解,并將其記為當(dāng)前個(gè)體極值,并將個(gè)體極值與整個(gè)粒子群里的其他粒子共享,找到最優(yōu)的那個(gè)個(gè)體極值作為整個(gè)粒子群的當(dāng)前全局最優(yōu)解,粒子群中的所有粒子根據(jù)自己找到的當(dāng)前個(gè)體極值和整個(gè)粒子群共享的當(dāng)前全局最優(yōu)解來調(diào)整自己的速度和位置。下面的動(dòng)圖很形象地展示了PSO算法的過程:
2、更新規(guī)則
??PSO初始化為一群隨機(jī)粒子(隨機(jī)解)。然后通過迭代找到最優(yōu)解。在每一次的迭代中,粒子通過跟蹤兩個(gè)“極值”(pbest,gbest)來更新自己。在找到這兩個(gè)最優(yōu)值后,粒子通過下面的公式來更新自己的速度和位置。
公式(1)的第一部分稱為【記憶項(xiàng)】,表示上次速度大小和方向的影響;公式(1)的第二部分稱為【自身認(rèn)知項(xiàng)】,是從當(dāng)前點(diǎn)指向粒子自身最好點(diǎn)的一個(gè)矢量,表示粒子的動(dòng)作來源于自己經(jīng)驗(yàn)的部分;公式(1)的第三部分稱為【群體認(rèn)知項(xiàng)】,是一個(gè)從當(dāng)前點(diǎn)指向種群最好點(diǎn)的矢量,反映了粒子間的協(xié)同合作和知識(shí)共享。粒子就是通過自己的經(jīng)驗(yàn)和同伴中最好的經(jīng)驗(yàn)來決定下一步的運(yùn)動(dòng)。以上面兩個(gè)公式為基礎(chǔ),形成了PSO的標(biāo)準(zhǔn)形式。
%function main()
clear;
clc;
tic;
psoOptions = get_psoOptions;
psoOptions.Vars.ErrGoal = 1e-6; ? ? %最小誤差
LL=5; ? %聯(lián)絡(luò)開關(guān)數(shù)
% Parameters common across all functions
psoOptions.SParams.c1 = 0.02; %邊界參數(shù)
psoOptions.SParams.w_beta = 0.5; %初始化beta值
% Run experiments for the three complex functions
psoOptions.Obj.f2eval = 'fitness_4geDG';
psoOptions.Obj.lb = ones(1,LL); %初始化下限
%psoOptions.Obj.lb = ones(1,32);
psoOptions.Obj.ub = [10 7 15 21 11]; %初始化上限 ? ? ? ? ? ?%通過運(yùn)行程序maxswarmmin得到的結(jié)果
%psoOptions.Obj.ub = 20*ones(1,32);
%psoOptions.Obj.ub(1,1:5)=4;
psoOptions.SParams.Xmax =psoOptions.Obj.ub; %最大限制位置
DimIters = [5; ... ? %Dimensions維數(shù)
? ? ? ? ? ? ?300]; ? ?%Corresponding iterations迭代次數(shù)
?x = DimIters; ? ? ? ?
psoOptions.Vars.Dim = x(1,:);
psoOptions.Vars.Iterations = x(2,:);
swarmsize = [50] ? %種群規(guī)模
psoOptions.Vars.SwarmSize = swarmsize;
disp(sprintf('This experiment will optimize %s function', psoOptions.Obj.f2eval));
disp(sprintf('Population Size: %d\t\tDimensions: %d.', psoOptions.Vars.SwarmSize, psoOptions.Vars.Dim));
temp = 5e6;
fVal = 0;
%運(yùn)行QPSO算法
[tfxmin, xmin,PBest,fPBest, tHistory] = QPSO(psoOptions);
? ?fVal=tfxmin;
? ? ?if temp>tfxmin
? ? ? ?temp=tfxmin;
? ? ? ?record=tHistory;
? ? ?end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
toc;
disp(sprintf('\nminxfmin= \t\t%2.10g',temp)); ?%最優(yōu)函數(shù)適應(yīng)值
xmin ? ? ? ? ? %優(yōu)化的開關(guān)組合 ? ?
fPBest ? ? ? ? %備選開關(guān)組合函數(shù)適應(yīng)值
PBest ? ? ? ? ?%備選開關(guān)組合(用于在哪個(gè)開關(guān)失靈情況下,采用備選方案,更加符合實(shí)際情況)
a=fbm(xmin)
figure(1)
plot(record(:,2))
xlabel('迭代次數(shù)')
ylabel('適應(yīng)度值')


?