PSO演算法及其對函式優化問題的處理 PSO演算法改進

2021-09-29 16:29:37 字數 3122 閱讀 5662

速度和位置的更新

每個粒子的速度和位置都以隨機方式進行初始化。而後粒子就朝著全域性最優和個體最優的方向靠近。

引數解釋:

有關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...