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