改良型二値粒子群最適化アルゴリズムの配電網再構成への応用(Matlab Realization) 【論文複製】

 

目次

 ​

0 概要

1 配電網再構成の目的機能

2 算例

3 MATLAB コードの実装


0 概要

配電システムには多数のセクションスイッチとタイスイッチがあり、配電ネットワークの再構成は、セクションスイッチとタイスイッチの組み合わせ状態を調整することでネットワーク構造を変更し、配電のいくつかの指標を最適化するために使用されます。ネットワークを最適な状態に導きます。通常運用時は、2 種類のスイッチの異なる組み合わせ状態により、システムの信頼性と安定性を向上させたり、ネットワーク損失を軽減したりできます。障害が発生すると、一部のセクション スイッチが開いて障害のある分岐が分離されますが、一部の接点スイッチが閉じて障害のある分岐を他のフィーダまたは同じフィーダの他の分岐に転送して電力供給需要を満たすようになります。

1 配電網再構成の目的機能

配電ネットワーク構造は閉ループ設計であり、開ループ動作です。配電ネットワークの再構成は、ネットワーク トポロジが放射状であり、電圧要件を満たしていることを確認するために行われます。

バンドル、分岐容量制約、変圧器容量制約などの制約を前提として、配電網の特定の指標または複数の指標に対して最適な配電網運用モードを決定します。この論文では、配電網の最小ライン損失を目的関数として採用します。つまり、次のようになります。

       

式中、f はすべての分岐の合計有効電力損失、i は分岐番号、N は配電網分岐の総数、Ki はスイッチ状態変数、つまり О は開状態を表し、1 はスイッチ状態を表します。閉状態; 抵抗値; Pi、Qi、Ui はそれぞれブランチの有効電力、無効電力、ブランチ i のフロント ノードの電圧振幅を表します。
配電網再構成の制約には、次の式に示すように、潮流制約、電圧制約、電流制約、線路容量制約、ネットワーク トポロジの放射状運用制約などが含まれます。
 

                  

2 算例

シミュレーション例では IEEE33 ノード配電ネットワークを採用しており、トポロジー構造は図に示されています。配信ネットワークには 33 のノードと 37 のブランチが含まれており、

5 つの常開接点スイッチはそれぞれ分岐 33、34、35、36、37 に配置されており、基準電圧は 12 です。66kV。

3 MATLAB コードの実装

コードの一部: 

部分代码:
r2=rand(n,dim);% 创建随机矩阵,大小( 20x3 )
iter=0;
maxiter=60;% 最大迭代次数
tap=[8 9 10 11 21 33 35 0 0
    2 3 4 5 6 7 18 19 20
    12 13 14 34 0 0 0 0 0
    15 16 17 29 30 31 36 32 0
    22 23 24 25 26 27 28 37 0];
ta=tap';
%%  建立关联矩阵
data=loadcase(case33);
doc=data.branch;
nhanh=37;
nut=33;
matrix=zeros(nhanh,nut);
    nutdau=doc(:,1);
    nutcuoi=doc(:,2);
for i=1:nhanh
matrix(i,nutdau(i))=1;
matrix(i,nutcuoi(i))=1;
end

%% 计算个体最优的适应度函数
 fpbest=zeros(1,n);
 for i=1:n
     fpbest(i)=50000;
 end
%% 主循环
while iter<maxiter
    iter=iter+1;
    w=wmax-(wmax-wmin)*iter/maxiter;% 指定权重系数
    c1=2*rand(1);
    c2=2*rand(1);
    %% 更新速度
    vold=vnew;
    for i=1:n
        for j=1:dim
        vnew(i,j)=w*vnew(i,j)+c1*r1(i,j)*(pbest(i,j)-x(i,j))+c2*r2(i,j)*(gbest(j)-x(i,j));
       if abs(vnew(i,j))==abs(vold(i,j))
           vnew(i,j)=rand(1,1).*vnew(i,j);
       end
        end
    end


-------
plot(dienap,'-sr')
hold on
plot(gbestvolt,'-^b')
ylabel('电压(p.u)')
xlabel('Node')
title('电压分布')
legend('配电网重组前','配电网重组后')
hold off
disp('      ')
disp('      ')
disp('      ')
disp('      ')
disp('==========================================================================================')
disp('***************************** 33节点配电网仿真结果 ***************************')
disp('==========================================================================================')
disp('                               重构前                          重构后 '          )
disp('------------------------------------------------------------------------------------------')
disp(['联络开关:              ', num2str(o), '                  ',num2str(a)])
disp('------------------------------------------------------------------------------------------')
disp(['功率损耗:                ',num2str(tonthat),' kW','                         ',num2str(fgbest),' kW'])
disp('------------------------------------------------------------------------------------------')
disp(['减少的功率损耗:      ', '_______','                             ',num2str(ploss), ' %'])
disp('------------------------------------------------------------------------------------------')
disp(['最小电压:           ',num2str(dienapmin),' pu','                          ',num2str(minvolt),' pu'])
disp('------------------------------------------------------------------------------------------')
toc

コードの一部:
iter=0;
maxiter=60;% 最大反復回数
Tap=[8 9 10 11 21 33 35 0 0
    2 3 4 5 6
    7 18 19 20 12 13 14 34 0 0 0 0 0
    15 16 17 29 30 31 36 32 0
    22 23 24 25 26 27 28 37 0];
ta=tap';
%% 関連行列を作成します
data=loadcase(case33);
doc=data.branch;
nhanh=37;
nut=33;
行列=ゼロス( nhanh,nut);
    ナットダウ=doc(:,1);
    ナットクオイ=doc(:,2);
i=1の場合:nhanh
行列(i,nutdau(i))=1;
行列(i,nutcuoi) (i)) =1;
終了

%% 個別の最適な適応度関数を計算します
 fpbest=zeros(1,n);
 for i=1:n
     fpbest(i)=50000; %%
 メイン
ループ
while iter<maxiter
    iter=iter+1;
    w=wmax -( wmax-wmin)*iter/maxiter;% 重み係数を指定
    c1=2*rand(1);
    c2=2*rand(1);
    %% 更新速度
    vold=vnew;
    i=1:n の場合
        、j= 1: dim
        vnew(i,j)=w*vnew(i,j)+c1*r1(i,j)*(pbest(i,j)-x(i,j))+c2*r2(i,j) *(gbest(j)-x(i,j));
       abs(vnew(i,j))==abs(vold(i,j))
           vnew(i,j)=rand(1,1 ) の場合。 *vnew(i,j);
       終了
        終了
    終了


-------
プロット(dienap,'-sr')
ホールド オン
プロット(gbestvolt,'-^b')
ylabel('電圧 (pu)')
xlabel('ノード')
title('電圧分布')
legend('配電網再編前',「配電網再編後」)
保留
disp(' ')
disp(' ')
disp(' ')
disp(' ')
disp('=============== ==== ============================================= ====== ==========================')
disp('************* ******* ********* 33 ノード分散ネットワークのシミュレーション結果 *************************** ')
disp('==== ======================================== =========== ====================================== ==')
disp('リファクタリング前、リファクタリング後' )
disp('---------------------------------------------- - ------------------------------------------')
disp(['接点スイッチ: ', num2str(o), ' ',num2str(a)])
disp('---------------------------- - ------------------------------------------------- - ----------')
disp(['電力損失: ',num2str(tonthat),' kW',' ',num2str(fgbest),' kW'])
disp('--- - ------------------------------------------------- - ------------------------------------')
disp(['電力損失の削減: ', '_______ ',' ',num2str(ploss), ' %'])
disp('------------------------------ -- ------------------------------------------------ -- --------')
disp(['最小電圧: ',num2str(dienapmin),' pu',' ',num2str(minvolt),'pu'])
disp('---------------- -------------------------------------------------- ------------------------')
トック

おすすめ

転載: blog.csdn.net/Yan_she_He/article/details/131650301