速度和位置的更新
每個粒子的速度和位置都以隨機方式進行初始化。而後粒子就朝著全域性最優和個體最優的方向靠近。
引數解釋:
有關c1,c2的補充:
1)低的值允許粒子在被拉回前可以在目標區域外徘徊,高的值則導致粒子突然衝向或超越目標區域;
2)若c1 = 0,則粒子沒有認知能力,在粒子的相互作用下,容易陷入區域性極值點;
3)若c2 = 0,粒子間沒有社會資訊共享,演算法變成乙個多起點的隨機搜尋;
4)若c1 = c2 = 0,粒子將一直以當前速度飛行,直到到達邊界。通常c1,c2在[0,4]之間,一般取c1 = c2 = 2
x1,x2的範圍均在[-2.048,2.048]之間
目標函式fun.m檔案
function y = fun(x)
y=100 * (x(1).^2 - x(2)).^2 + (1 - x(1)).^2;
end
主函式pso.m檔案
clc
clear
%%繪製目標函式曲線
figure(1);
[x,y] = meshgrid(-2.048:0.1:2.048,-2.048:0.1:2.048);
%輸入平方時,要在「^」前加「.」,否則可能有錯
z = 100 * (x.^2 - y).^2 + (1 - x).^2;
mesh(x,y,z);
xlabel('x');ylabel('y');zlabel('f(x,y)');
title('rosenbrock函式');
hold on
%%引數初始化
c1 = 2;
c2 = 2;
maxgen=100; %進化次數
sizepop=10; %種群規模
vmax=0.5; %最大速度
vmin=-0.5; %最小速度
popmax=2; %最大位置
popmin=-2; %最小位置
%%產生初始粒子和速度
for i=1:sizepop
%隨機產生乙個種群
pop(i,:)=2*rands(1,2); %初始種群 rands中的引數2用來控制維度
v(i,:)=0.5*rands(1,2); %初始化速度
%計算適應度
fitness(i)=fun(pop(i,:)); %染色體的適應度
end%%個體極值和群體極值
[bestfitness,bestindex]=max(fitness);
zbest=pop(bestindex,:); %全域性最佳
gbest=pop; %個體最佳
fitnessgbest=fitness; %個體最佳適應度值
fitnesszbest=bestfitness; %全域性最佳適應度值
%%迭代尋優
for i=1:maxgen
for j=1:sizepop
%速度更新
v(j,:) = v(j,:) + c1*rand*(gbest(j,:) - pop(j,:)) + c2*rand*(zbest - pop(j,:));
v(j,find(v(j,:)>vmax))=vmax; %速度不能越界
v(j,find(v(j,:)popmax))=popmax; %粒子位置不能越界
pop(j,find(pop(j,:)fitnessgbest(j)
gbest(j,:) = pop(j,:);
fitnessgbest(j) = fitness(j);
end%群體最優更新
if fitness(j) > fitnesszbest
zbest = pop(j,:);
fitnesszbest = fitness(j);
endend
yy(i)=fitnesszbest;
end%%結果分析
figure(2);
plot(yy)
xlabel('進化代數','fontsize',12);ylabel('適應度','fontsize',12);
結果圖示如下:
圖一:rosenbrock函式影象
圖二:進化代數和適應度之間的關係
有關其他函式的畫法及其優化與上述類似,不再贅述。
對速度更新方程加慣性權重w。當粒子群到達區域性最優附近時,粒子速度的更新主要由第一項來決定。由於固定引數的pso演算法的w通常小於1,粒子的速度將會越來越小,甚至停止運動,發生早熟收斂。
1)若w = 0,由於速度本身沒有記憶性,只取決於粒子當前位置和其歷史最好位置pbest和gbest,所以,粒子群將收縮到當前的全域性最好位置,更像乙個區域性演算法;
2)若w不為0,微粒有擴充套件搜尋空間的趨勢,即有全域性搜尋能力;
3)用慣性權重來控制前面的速度對當前速度的影響,較大的w可以加強pso的全域性搜尋能力,較小的w能加強區域性搜尋能力。
故往往會在pso演算法前期將w設定的較大些,使其可以基本訪問到解空間的所有解;當到演算法後期,已經快接近最優解的時候,將w的值設定的較小一些,增加區域性搜尋能力,使之更快的逼近最優解。
加收縮因子k有助於確保pso演算法收斂。
通常
收縮因子控制系統行為最終收斂,且可以有效搜尋不同的區域,該法能得到高質量的解。
注意:迭代次數、種群規模、初始速度和位置等引數都會影響演算法的效能
粒子群優化演算法(PSO)簡介以及其C 風格框架
粒子群優化 particle swarm optimization,pso 演算法 是由 kennedy,j.和 eberhart,r.1995 提出的一種群智慧型計算方法,與更著名且經典的遺傳演算法類似,同為進化演算法。乙個系統裡面有若干個粒子,每個粒子代表乙個問題的候選解,而這些粒子在系統的控制...
損失函式及其優化演算法
損失函式 loss function 也叫代價函式 cost function 是神經網路優化的目標函式,神經網路訓練或者優化的過程就是最小化損失函式的過程 損失函式值小了,對應 的結果和真實結果的值就越接近 交叉熵 cross entropy 代價函式 於資訊理論中熵的概念。是目前神經網路分類問題...
對A 演算法的路徑進行優化
注 優化最終路徑,必然會對演算法耗時造成一定的影響。search新增乙個引數,用來代替原本的break gap常量巨集,在search中,清理記憶體時,將地圖資料恢復。修改後的源 如下 bool castar search int x,int y,std list lresult,double db...