天天看點

【電力系統】基于粒子群算法優化電力系統潮流計算附matlab代碼

✅作者簡介:熱愛科研的Matlab仿真開發者,修心和技術同步精進,matlab項目合作可私信。

🍎個人首頁:Matlab科研工作室

🍊個人信條:格物緻知。

⛄ 内容介紹

粒子群優化算法是一種新興的群體智能優化技術,适用于目前科學領域、工程領域和經濟領域中很多複雜的、非線性的甚至非凸形式的最優化問題。本文介紹了PSO算法的基本原理及其在負荷經濟配置設定、無功優化、最優潮流計算等方面的應用。

⛄ 部分代碼

%% Calculation of Power System

clc

clear 

close all  

%% NR load flow analysis

nbus = 30; 

busdata = busdatas(nbus);

linedata = linedatas(nbus);

resultWithoutDG = nrloadflow(nbus,busdata,linedata);

dim = 10;

Pmin=3; %minimum  power of solar DG unit

if nbus==30

    Pmax=30; %maximum power of solar DG unit in MW

else

    Pmax=100;

end

%% potential bus selection

R=linedata(:,3);

sourcbus=linedata(:,1);

destintnbus=linedata(:,2);

% del=180/pi*del;

 for ii=1:size(linedata,1)

         alpha(ii)=(R(ii)/(abs(resultWithoutDG.V(sourcbus(ii)))...

                        *abs(resultWithoutDG.V(sourcbus(ii)))))...

                         *cos(resultWithoutDG.del(sourcbus(ii))...

                            -resultWithoutDG.del(destintnbus(ii)));

         beta(ii)=(R(ii)/(abs(resultWithoutDG.V(sourcbus(ii)))...

                       *abs(resultWithoutDG.V(sourcbus(ii)))))...

                        *sin(resultWithoutDG.del(sourcbus(ii))...

                          -resultWithoutDG.del(destintnbus(ii)));

         SV(ii)=alpha(ii).*resultWithoutDG.Pi(destintnbus(ii))...

                     -beta(ii).*resultWithoutDG.Qi(destintnbus(ii));

 end

[sv,ind]=sort(SV,'descend');

po=destintnbus(ind);

[poo,ia,ic]=unique(po);

temp=po(sort(ia));

loadBusLocation = temp(1:dim);

%% GA optimisation

fitness=  @(x) objf(x,loadBusLocation,resultWithoutDG,nbus);

options = gaoptimset('MutationFcn',@mutationadaptfeasible,'PopulationSize',20);

options = gaoptimset(options,'PlotFcns',{@gaplotbestf}, ...

    'Display','iter','Generations',80);

[GAx,fval] = ga(fitness,dim,[],[],[],[],Pmin.*ones(1,dim)...

                                ,Pmax.*ones(1,dim),[],options);

finalGAresults= resultcalc(GAx,loadBusLocation,resultWithoutDG,nbus);

%% PSO optimisation

[PSOx,objval]=PSO(loadBusLocation,resultWithoutDG,nbus,dim,Pmax,Pmin);

finalPSOresults= resultcalc(PSOx',loadBusLocation,resultWithoutDG,nbus);

FIG1 = figure('Name', 'PSO Optimization','NumberTitle','off');

figure(FIG1)

plot(1./objval)

grid on;

ylabel('VL (pu)');

xlabel('time (sec)');

title('PSO optimisation')

%% Result plotting

% volatge magnitude plot

FIG2 = figure('Name', 'BUS VOLTAGE','NumberTitle','off');

figure(FIG2)

bar([finalPSOresults.V,finalGAresults.V,resultWithoutDG.V],'group')

xlim([0 nbus+1])

ylim([0.95,1.1])

grid on;

legend('PSO optimised','GA optimised','Without DG')

xlabel('Bus number')

ylabel('Volatge Magnitude in p.u.')

title('Bus Voltage')

% power loss comparison

FIG3 = figure('Name', 'Total Active Power loss','NumberTitle','off');

figure(FIG3)

bar([sum(finalPSOresults.Lpij);sum(finalGAresults.Lpij);sum(resultWithoutDG.Lpij)])

grid on;

title('Total Active Power loss in MW')

ylabel('Active Power loss(MW)')

set(gca,'Xtick',0)

text(0.8,-0.2,'PSO tuned')

text(1.8,-0.2,'GA tuned')

text(2.8,-0.2,'Without Optimisation')

% printresult

⛄ 運作結果

【電力系統】基于粒子群算法優化電力系統潮流計算附matlab代碼
【電力系統】基于粒子群算法優化電力系統潮流計算附matlab代碼
【電力系統】基于粒子群算法優化電力系統潮流計算附matlab代碼

⛄ 參考文獻

❤️ 關注我領取海量matlab電子書和數學模組化資料
❤️部分理論引用網絡文獻,若有侵權聯系部落客删除