遺伝的アルゴリズムと粒子群アルゴリズムに基づく電力潮流計算の比較(Matlabコード実装)

目次

1。概要

2 粒子群アルゴリズム

3 遺伝的アルゴリズム

4 潮流計算の実行結果

5 参考文献

6 Matlab コードの実装


1。概要

電力システムの潮流とは、各発電機と負荷の電力と電流、各バス電圧の大きさと位相、各送電線と変圧器の電流、電力、損失など、システム内のすべての動作パラメータの全体を指します。
潮流計算は、システムの動作形態を決定し、システムの定常状態動作を分析するために、既知のグリッド構造と動作条件に基づいています。これは電気工学における長期研究の重要なテーマです。

この記事では、遺伝的アルゴリズムと粒子群アルゴリズム (Matlab コード実装) に基づく電力潮流計算の比較について説明します。

2 粒子群アルゴリズム

レイノルズとヘップナーのモデルに触発されて、1995 年に電子工学博士のラッセル・エハーハート博士と社会心理学博士のジェームス・ケネディは粒子群アルゴリズムを提案しました [3-4]。このアルゴリズムでは、鳥の餌の位置は問題空間解の位置に対応し、鳥は質量も体積も持たない「粒子」に対応します。採餌プロセス 粒子間の情報共有と相互協力に対応し、粒子は情報を共有しながら移動方向や速度を調整し、最適解を迅速に探索します。    

                                         図1 粒子群最適化アルゴリズムのフローチャート

3 遺伝的アルゴリズム

遺伝的アルゴリズムには、(1) グローバルに探索でき、局所的な最適解に陥りにくい、(2) コーディングが多様で、多くの問題を遺伝的アルゴリズムで解決できる、(3) といった多くの利点があります。 ) ランダムに並列探索が可能で、探索範囲は徐々に縮小される (4) 適応度関数は非常に柔軟で、離散的または連続的であり、導関数と微分に制限はありません (5) 遺伝的アルゴリズム非常に複雑な問題にも使用でき、信頼性の高い結果が得られる (6) 互換性と拡張性が高く、他の多くのアルゴリズムと組み合わせて使用​​できる 技術の進歩とさまざまなアルゴリズムの研究の深化に伴い、多くのアルゴリズムの欠陥はある程度明らかであり、特定のアルゴリズムの欠陥を回避したい場合は、他のアルゴリズムと組み合わせて新しいアルゴリズムを形成することが良い方法であり、遺伝的アルゴリズムはより優れた協調アルゴリズムです。

4 潮流計算の実行結果


コードの一部:

%% 基于遗传算法和粒子群算法的潮流计算比较(Matlab代码实现)
clc;
clear;
close all;
%% 随机数种子
rng('default')
rng(1)
%%
addpath(genpath('matpower7.0'))
%%
data.mpc=case9;
data.numBranch=length(data.mpc.branch(:,1));
data.distance=xlsread('线型.xlsx',2);
data.Line=xlsread('线型.xlsx',1);
data.numLine=length(data.Line(:,1));
data.base=100;
data.lamdaLoss=25; %损耗成本系数
%% 算法参数设置
dim=data.numBranch;
%%
lb=zeros(1,dim);
ub=ones(1,dim);
fobj=@aimFcn_1;
option.lb=lb; %下限
option.ub=ub; %上限
option.dim=dim;%决策变量个数
if length(option.lb)==1 %判断是否成立,如果成立就往下进行
    option.lb=ones(1,option.dim)*option.lb; %统一长度,每个决策变量对应一个lb和ub
    option.ub=ones(1,option.dim)*option.ub; %统一长度,每个决策变量对应一个lb和ub
end
option.fobj=fobj;
option.showIter=0;
%% 算法参数设置
% 基本参数
option.numAgent=20;        %初始解个体数 越大越好
option.maxIteration=20;    %最大迭代次数 越大越好
option.popSize=option.numAgent;
option.lenTS=option.numAgent*5;  %禁忌长度
% 遗传算法
option.p1_GA=0.85;
option.p2_GA=0.1;
% 粒子群算法
option.w_pso=0.1;
option.c1_pso=1;
option.c2_pso=1;
str_legend=[{'GA'},{'PSO'}];
%% 初始化种群个体
x=ones(option.numAgent,option.dim);
y=ones(option.numAgent,1);
for i=1:option.numAgent
    x(i,:)=option.lb+rand(1,option.dim).*(option.ub-option.lb);
    [y(i),~,x(i,:)]=option.fobj(x(i,:),option,data);
end
% 使用算法求解
rng(1)
[bestY(1,:),bestX(1,:),recording(1)]=GA(x,y,option,data);
rng(1)
[bestY(2,:),bestX(2,:),recording(2)]=PSO(x,y,option,data);
%%
figure
hold on
for i=1:length(recording)
    plot((recording(i).bestFit),'LineWidth',2)
end
xlabel('迭代次数')
ylabel('适应度值')
legend(str_legend)
title('适应度函数曲线')

%% 输出结果
str='GA算法优化结果'
[~,result1]=option.fobj(bestX(1,:),option,data);
str='PSO算法优化结果'
[~,result2]=option.fobj(bestX(2,:),option,data);
str='随机方案'
[~,result5]=option.fobj(bestX(2,:)*0+1,option,data);

5 参考文献

理論文献の一部はオンライン文献から取得しています。侵害がある場合は、連絡して削除してください。

[1] 劉建華。粒子群アルゴリズムの基礎理論と改良研究[D]。長沙:中南大学、2009年。

[2]孫如祥。粒子群と遺伝的アルゴリズムのハイブリッド研究 [D]。南寧:広西大学、2014年。

[3] パン・フェイロン。遺伝的アルゴリズムに基づいたファジィ制御ワイヤ送給システム[D]。北京:中国地質大学、2015年。

6 Matlab コードの実装

返信: 遺伝的アルゴリズムと粒子群最適化に基づく潮流計算の比較

おすすめ

転載: blog.csdn.net/weixin_61181717/article/details/127962498