迭代公式:
引數描述功能k
迭代次數~id
粒子標號
描述為第幾個粒子
w慣性權重
繼承前一次迭代移動的程度
r1,r2
隨機數範圍(0,1)
~c1,c2
自定引數
~pbest
粒子歷史最優
某粒子目前為止取到的歷史最優值
gbest
粒子全域性最優
所有粒子目前為止取到的全域性最優值
x粒子座標~v
粒子速度
包括方向與步長
matlab原始碼:
clear
clcfigure(1);
subplot(1,2,1)
[x,y]=meshgrid(-12:0.05:12,-12:0.05:12);
img=fun(x,y);
mesh(x,y,img);
hold on;
n=60; %粒子數目
d=2; %維度
nmax=100000000000000; %最大迭代次數
v=zeros(n,d); %粒子速度
pbest=zeros(n,1); %個體最優
xypbest=zeros(n,d); %個體最優座標
gbest=0; %種群最優
xygbest=zeros(1,d); %種群最優座標
%%定義引數
c1=1;
c2=1;
r1=rand(1);
r2=rand(1);
w=0.5;
j=0;
a=unifrnd(-12,12,[n,d]); %隨機生成範圍內粒子群
for i=[1:n]
img=fun(a(i,1),a(i,2));
if img>pbest(i)
pbest(i)=img;
xypbest(i,:)=a(i,:);
endif img>gbest
gbest=img;
xygbest=a(i,:);
endplot3(a(i,1),a(i,2),img,'+')
endv(1)=1;
record=sum(img)/n;
while (j0.001)
r1=rand(1);
r2=rand(1);
v=w*v+r1*c1*(xypbest-a)+c2*r2*(xygbest-a);
temp=(v>0.2);
v=(~temp).*v+0.2*temp;
temp=(v
v=(~temp).*v-0.2*temp;
a=a+v;
temp=(a>12);
a=(~temp).*a+temp*12;
temp=(a
a=(~temp).*a-temp*12;
for i=[1:n]
img=fun(a(i,1),a(i,2));
if img>pbest(i)
pbest(i)=img;
xypbest=a(i,:);
endif img>gbest
gbest=img;
xygbest=a(i,:);
endend
j=j+1;
img=fun(a(:,1),a(:,2));
record=[record;sum(img)/n];
endsubplot(1,2,2)
xlabel('x')
ylabel('y')
zlabel('img')
img=fun(x,y);
mesh(x,y,img);
hold on;
for i=[1:n]
img=fun(a(i,1),a(i,2));
plot3(a(i,1),a(i,2),img,'r*')
hold on
enddisp(j)
figure(2);
axis([0 900 -inf inf]);
plot([0:j],record)
測試函式:
function [ z ] = fun( x,y )
z=0.5+((sin(sqrt(x.^2+y.^2))).^2-0.5)./(1+0.001*(x.*x+y.*y)).^2;
end
粒子群優化演算法 粒子群演算法
粒子群演算法 particle swarm optimization,pso 屬於進化演算法的一種,該演算法最初是受到飛鳥集群活動的規律性啟發,進而利用群體智慧型建立的乙個簡化模型。粒子群演算法在對動物集群活動行為觀察基礎上,利用群體中的個體對資訊的共享使整個群體的運動在問題求解空間中產生從無序到有...
粒子群演算法
如前所述,pso模擬鳥群的捕食行為。設想這樣乙個場景 一群鳥在隨機搜尋食物。在這個區域裡只有一塊食物。所有的鳥都不知道食物在那裡。但是他們知道當前的位置離食物還有多遠。那麼找到食物的最優策略是什麼呢。最簡單有效的就是搜尋目前離食物最近的鳥的周圍區域。pso從這種模型中得到啟示並用於解決優化問題。ps...
粒子群演算法
一 粒子群演算法的歷史 粒子群演算法源於複雜適應系統 complex adaptive system,cas cas理論於1994年正式提出,cas中的成員稱為主體。比如研究鳥群系統,每個鳥在這個系統中就稱為主體。主體有適應性,它能夠與環境及其他的主體進行交流,並且根據交流的過程 學習 或 積累經驗...