粒子群最適化

1.問題の説明:

        粒子群最適化(PSO)は、粒子群最適化とも呼ばれ、1995年にJ.ケネディとRCエバーハートによって開発された進化的計算技術です。これは、単純化された社会モデルのシミュレーションから派生しています。その中で、粒子群に由来する「群れ」は、人工生命(人工生命)のモデルを開発する際にMMMillonasによって提案された群知能の5つの基本原則に準拠しています。「粒子」は妥協案です。グループのメンバーを質量や体積がないものとして説明する必要があるだけでなく、その速度と加速度も説明する必要があるためです。

      PSOアルゴリズムは元々、鳥の群れの優雅で予測不可能な動きをグラフィカルにシミュレートするために設計されました。動物の社会的行動の観察を通して、グループ内の情報の社会的共有が進化の利点を提供することがわかり、これはアルゴリズムの開発の基礎として使用されます。PSOの初期バージョンは、最近傍の速度マッチングを追加し、距離に基づく多次元検索と加速度を考慮して作成されました。その後、開発(探査)と探査(探査)をより適切に制御するために慣性重量wが導入され、標準バージョンが形成されました。

2.プログラムの一部:

 function main
%これは粒子群最適化プログラムです
%n:変数の次元; m:粒子数
%x:m * n行列; v:m * nマトリックス
%pbx:m * nマトリックス; gbx:1 * n行列
%pbf:m * 1行列; gbf:number
clear all;
clc
tic;
E0 = 0.001; %許可されたエラー
MaxNum = 100; %毎回の反復回数

n = 1;
m = 50;
c1 = 2;
c2 = 2;
w = 1;
vmax = 0.5;
rand( 'state'、sum(100 * clock));
%ランダムm粒子
x = -4 + 8 * rand(m、n);
v = 2 * rand(m、n);
   j = 1:nの
i = 1:mの適合度計算します     f(i)= Fitness(x(i、j));    終わり



end
%個々の最大値とグローバル最大値を見つける
pbx = x;
pbf = f;
[gbf i] = min(pbf);
gbx = pbx(i、:);
%開始ループ
k = 1;
一方、k <= MaxNum
    for i = 1:m
           for j = 1:n
            f(i)= Fitness (x(i、j));            f(i)<pbf(i)            pbf(i)= f(i);の場合に
           終了します。            pbx(i、:) = x(i、:);            終了      終了     [gbfi] = min(pbf);     gbx = pbx(i、:);     for i = 1:m            v(i、:) = w * v(i、:) + c1 * rand *(pbx(i、:)-x(i、:))+ c2 * rand *(gbx-x (私、:));            j = 1:nの             場合v(i、j)> vmax                 v(i、j)= vmax;












            elseif v(i、j)<-vmax
                v(i、j)=-vmax;
            終了
        終了
        x(i、:) = x(i、:) + v(i、:);
    端
    もしABS(GBF)<E0、中断、終了
    K = K + 1。
end
%結果を表示します
disp( '最大値は'); 1 / gbf-1
disp( 'および対応する座標は'); gbx
x = -4:0.01:4;
y = 1.1 *(1-x + 2 * x。^ 2)。* exp(-x。^ 2/2);
plot(x、y);
つかまっている;
plot(gbx、1 / gbf-1、 'r *');
オフホールド
TOC

3.シミュレーションの結論:

D00001

おすすめ

転載: blog.csdn.net/ccsss22/article/details/114645126