matlab で非常に基本的な PSO (魚の群れ) を作成するプロジェクトがあります。
私がこれまでに行ったこと:
1) 軸の寸法を設定しました。
2) ランダムな x、y 座標で 50 匹の魚の群れを作成し、それらをプロットします (群れの座標は配列に保存されます)。
3) Figure のどこかをクリックすると、サメを表すクリック座標が得られます。
4) 最も遠い魚である魚の最適な x,y 位置を計算します。
ここで、残りの魚をベスト ポジションの魚に近づける必要があります。
コードは次のとおりです。
Dx=100;
Dy=100;
axis([0 Dx 0 Dy]);
N=50;
K=4;
d=min(Dx,Dy)/K;
click=ginput(1);
fish=zeros(50,4);
i=1;
while i<=N
x= rand * Dx;
y= rand * Dy;
if d>=sqrt((click(1)-x)^2+(click(2)-y)^2)
fish(i,1)=x;
fish(i,2)=y;
hold on;
plot(x,y,'o'); % fishes
i=i+1;
end;
end;
click1=ginput(1);
bestposition=1;
i=1;
while i<=N
position=sqrt((click1(1)-fish(i,1))^2+(click1(2)-fish(i,2))^2);
if i==1
max=position;
else
if max<position
max=position;
bestposition=i;
end
end
i=i+1;
end
hold on;
plot(click1(1), click1(2), 'r*'); %shark