[最適化ソリューション]遺伝的アルゴリズムに基づく多目的分散ネットワーク再構築モデルの解決[Matlabソースコード622期間を含む]

1.はじめに

1障害情報の数学的表現
上図で、Kは回路ブレーカーを表し、各回路ブレーカーにはFTUデバイスがあり、回路ブレーカースイッチが過電流であるかどうかをフィードバックできます。アップロードされた障害を示すために使用されます。各セクションスイッチの位置を反映する情報。障害電流が流れるかどうか、障害電流は1、それ以外の場合は0)。つまり
ここに画像の説明を挿入
、FTUによってアップロードされた情報は、障害のある情報と障害のない情報の2つのタイプに分類できるため、セグメント化された間隔では、障害のある情報と障害のない情報しかあり得ないため、配布にバイナリコーディングルールを使用できます。ネットワーク障害箇所の問題は数学的にモデル化されています。上図に示す動径分布ネットワークの例として、システムには12個のセグメントスイッチがあります。12ビットのバイナリコードの文字列を使用して、FTUのアップロード情報を表すことができます。プログラムの入力として、1は対応するスイッチに過電流情報があります。0は、対応するスイッチに過電流情報がないことを意味します。同時に、12ビットのバイナリコードの別の文字列がプログラムの出力として使用されます。これは、対応するフィーダーセクションに障害があることを意味し、障害がないことを意味します。

遺伝的アルゴリズムは、問題の可能な解決策セットを表す母集団から始まり、母集団は、遺伝子によってコード化された特定の数の個人で構成されます。各個体は実際には染色体の特徴を持つ実体です。

染色体は遺伝物質の主なキャリアであり、複数の遺伝子の集まりであり、その内部性能(遺伝子型)は遺伝子の特定の組み合わせであり、個人の形の外部性能を決定します。たとえば、黒髪の特性が制御されます。染色体によって。特性のための遺伝子の特定の組み合わせによって決定されます。したがって、表現型から遺伝子型へのマッピング、つまりコーディング作業を実現する必要があります。遺伝暗号を模倣する作業は非常に複雑であるため、バイナリコーディングなど、単純化することがよくあります。

第一世代の母集団の生成後、適者生存と適者生存の原則に従って、世代は進化し、より良い近似解を生成します。各世代では、個人の適応度に応じて選択が行われます。問題の領域で。個人、そして自然遺伝学の遺伝的演算子の助けを借りて交差と突然変異を組み合わせて、新しいソリューションセットを表す集団を生成します。

このプロセスにより、自然進化のような集団の子孫集団が前の世代よりも環境に適応するようになります。最後の世代の集団の最適な個体をデコードして、問題のおおよその最適な解決策として使用できます。
2遺伝的アルゴリズムプロセスの図
ここに画像の説明を挿入
3配電網の故障位置の評価関数の構築
取得する各フィーダーセクションの実際の状態に対応する情報は、実際の故障情報からの偏差が最小であるという原則に基づいて、次の評価関数が構築されます
ここに画像の説明を挿入
ここに画像の説明を挿入
。4
異なる期待関数見つけるネットワークでは、期待関数の表現が異なり、統一された形式で表現することはできません。上記の計算例を例として取り上げ、期待値関数を取得する方法を説明します。

ラジアル配電ネットワークでは、いずれかのセクションで障害が発生すると、必然的に障害の過電流が上流のスイッチに流れます。これが期待関数を取得する原理です。図1のフィーダーセクション6に障害があるとすると、セクションスイッチK1、K2、K3、およびK6はすべて過電流になります。フィーダーセクション11で障害が発生した場合、K1、K2、K3、K6 、およびK10はすべて過電流があります。類推により、各セグメントスイッチの期待される機能を得ることができます。
ここに画像の説明を挿入

第二に、ソースコード

 
%采用改进遗传算法,基于环网的编码,便于产生可行解(满足配网辐射状的约束)
%用于IEEE33节点配电网故障恢复,适应度是计算网损和操作次数
%选择采用的是轮盘赌方式
%移位操作和变异操作后不会产生不可行解,不需要检验
 
clear;
clc;
tic
%基于环网的编码策略,公共支路只需要放在其中1个环网中,开关1不需要编码(始终闭合)
loop1=[2,3,4,5,18,19,20,33];
loop2=[22,23,24,25,26,27,28,37];
loop3=[8,9,10,11,21,35];
loop4=[6,7,15,16,17,29,30,31,32,36];
loop5=[12,13,14,34];
%确定故障支路(以txt文件形式输入)
% txtpath='breaker.txt';%文件路径名
bb=36;
%存放初始开关集
population1=[1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,1,1,0]; 
%种群大小
popsize=50;
%基因块编码长度
%chromlength=5;
%移位概率
pc = 0.6;
%变异概率
pm = 0.001;
%初始种群
pop = initpop(popsize,bb);
%初始化x,y(存放每次迭代下的最优解)
x=zeros(1,50);
y=zeros(50,size(pop,2));
%计算适应度值
fitvalue = cal_fitvalue(pop);     
for i = 1:50  %50次迭代
    %选择操作
    newpop = selection(pop,fitvalue);
    %移位操作
    newpop = moveposition(newpop,pc,bb);
    %变异操作
    newpop = mutation(newpop,pm,bb);
    %更新种群
    pop = newpop;
    %计算适应度值,寻找最优解
    fitvalue = cal_fitvalue(pop);
    [bestindividual,bestfit] = best(pop,fitvalue);  
    %ws(i)=powerflow(transform(bestindividual)); %记录实际网损
    %cz(i)=sum(xor(bestindividual,population1))-1; %记录实际操作次数
    x(i)=bestfit;
    y(i,:)=bestindividual;
end
[bestfit1,index]=max(x);
%展示初始拓扑
figure
show_tuopu(population1);
saveas(gca,'tuopu1.jpg'); %将拓扑以图片格式保存输出
%展示最大适应度值对应的配网拓扑
figure
show_tuopu(y(index,:));
saveas(gca,'tuopu.jpg'); %将拓扑以图片格式保存输出
%输出各迭代次数下的最佳适应度值
x;
bestfit1;
y(index,:);
%输出具体操作开关
[openkg,closekg] = judge_kg(y(index,:),bb); %求出最优拓扑下需要关断和闭合的开关
fid=fopen('openkg.txt','wt');  %将计算结果以txt文件的形式输出
fprintf(fid,'%g\n',openkg);
fclose(fid);
fid=fopen('closekg.txt','wt');  %将计算结果以txt文件的形式输出
fprintf(fid,'%g\n',closekg);
fclose(fid);
%输出最佳拓扑对应下的配电网的网速和操作次数
ws = powerflow(transform(y(index,:)))
cz = sum(xor(y(index,:),population1))-1
%result=[ws;cz];
fid=fopen('ws.txt','wt');  %将计算结果以txt文件的形式输出
fprintf(fid,'%g\n',ws);
fclose(fid);
fid=fopen('cz.txt','wt');  %将计算结果以txt文件的形式输出
fprintf(fid,'%g\n',cz);
fclose(fid);
%输出潮流计算的节点电压
[node,u,delt]=powerflow_V(transform(y(index,:)));
nodevoltage=[node',u',delt'];
fid=fopen('nodevoltage.txt','wt');  %将计算结果以txt文件的形式输出
[m,n]=size(nodevoltage);
for i=1:m
   for j=1:n
      if j==n
          fprintf(fid,'%g\n',nodevoltage(i,j));
      else
          fprintf(fid,'%g\t',nodevoltage(i,j));
      end
   end
end
fclose(fid);
%输出潮流计算的支路电流
[branch,p,q]=powerflow_S(transform(y(index,:)));
branchflow=[branch',p',q']
fid=fopen('branchflow.txt','wt');  %将计算结果以txt文件的形式输出
[m,n]=size(branchflow);
for i=1:m
   for j=1:n
      if j==n
          fprintf(fid,'%g\n',branchflow(i,j));
      else
          fprintf(fid,'%g\t',branchflow(i,j));
      end
   end
end
fclose(fid);
toc
 

3、実行中の結果

ここに画像の説明を挿入
ここに画像の説明を挿入

四、備考

完全なコードまたはQQ2449341593を追加するための記述過去のレビュー
>>>>>>
[ワークショップスケジューリング] matlab粒子群に基づく[Matlabソースコード013を含む]
[ショップスケジューリング] matlab遺伝子アルゴリズムに基づくGUIでショップスケジューリングモデルを解決する[含むMatlabソースコード049]
[ワークショップスケジューリング]ワークショップスケジューリングを解決するためのmatlab遺伝子アルゴリズムに基づく[Matlabソースコード070を含む]
[ワークショップスケジューリング]ショップスケジューリングを解決するためのmatlabnsgaIIに基づく[Matlabソースコード071を含む]
[ワークショップスケジューリング]に基づくmatlabの改良されたleapfrogアルゴリズムショップスケジューリング問題の解決[Matlabソースコード073を含む]
[ワークショップスケジューリング]交換フローショップスケジューリング問題を解決するためのMatlab [Matlabソースコード176を含む]
[ワークショップスケジューリング] 6X6ショップスケジューリング問題を解決するためのmatlabPSOに基づく[Matlabソースコード411を含む]
[ワークショップスケジューリング] matlab粒子群に基づく生産スケジューリング[Matlabソースコード412を含む]
[ワークショップスケジューリング] matlab遺伝的アルゴリズムに基づく多目的フローショップスケジューリング[Matlabソースコード443を含む]
[最適化] matlabパーティクルスウォームマイクログリッドに基づくターゲット最適化[Matlabソースコード444期間を含む]
[最適化ソリューション]多目的最適化問題を解決するためのmatlabトンボアルゴリズムに基づく[Matlabソースコード477期間を含む]
[最適化アルゴリズム]海洋捕食者アルゴリズム(MPA) [Matlabソースコード478期間を含む]
[最適化アルゴリズム]ブラックホールシミュレーションアルゴリズム(MVO)[Matlabソースコード479を含む]
[最適化アルゴリズム]突然変異戦略に基づく改良された花花粉アルゴリズム[Matlabソースコード480を含む]
[最適化ソリューション]水熱発電の経済的ディスパッチを解決するためのmatlab粒子群アルゴリズムに基づく[Matlabソースコード500期間を含む]
[最適化ソリューション]スズメ検索アルゴリズムに基づく3Dワイヤレスセンサーネットワーク(WSN)カバレッジ最適化[Matlabソースコード599を含む限目]

おすすめ

転載: blog.csdn.net/TIQCmatlab/article/details/115190455