粒子群(PSO)尋優演算法(matlab)

2021-10-03 16:30:23 字數 1441 閱讀 8048

網上已經有很多大差不大的**,但是有可能執行不了,這裡記錄乙個可以使用的,只需要修改適應度函式(要優化的函式)和粒子的維度(優化乙個二元函式,則乙個粒子的維度就是2維)即可。粒子群優化的方向是使得適應度越來越小的方向。

clear all

%粒子群演算法中的兩個引數

c1 = 1.49445;%兩個加速常數

c2 = 1.49445;

maxgen=100; % 進化次數

sizepop=100; %種群規模

vmax=0.1;%速度最大值

vmin=-0.1;%速度最小值

popmax=5;%個體最大值

popmin=-5;%個體最小值

%例子:優化乙個f(x,y)=x^2+y^2,優化是找到使得f(x,y)最小的x,y

for i=1:sizepop

%隨機產生乙個種群

pop(i,:)=rands(1,2);%有x,y,所以這裡是二維,每乙個粒子都是乙個行向量

v(i,:)=rands(1,2); %初始化速度

fitness(i)=pop(i,1)^2+pop(i,2)^2;%這裡需要修改來適配問題

end% 個體極值和群體極值

[bestfitness,bestindex]=min(fitness);

zbest=pop(bestindex,:); %全域性最佳

gbest=pop; %個體最佳

fitnessgbest=fitness; %個體最佳適應度值

fitnesszbest=bestfitness; %全域性最佳適應度值

%% 迭代尋優

%自適應慣性權重初始化

omg=zeros(1,maxgen);

omgstart=0.09;

omgend=0.02;

for i=1:maxgen

omg(i)=0.4*2.25.^(1/(1+0.5*i/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,:)zbest裡面儲存的就是使得f(x

,y)=

x2+y

2f(x,y)=x^2+y^2

f(x,y)

=x2+

y2最小的x

xx與y

yy,每一次執行結果都不一樣!!!。

這是一次執行的結果。

0.00003805 -0.00006929

粒子群(pso)演算法

一 粒子群演算法的概念 粒子群優化演算法 pso particle swarm optimization 是一種進化計算技術 evolutionary computation 源於對鳥群捕食的行為研究。粒子群優化演算法的基本思想 是通過群體中個體之間的協作和資訊共享來尋找最優解 pso的優勢 在於簡...

粒子群演算法 PSO

1995年美國社會心理學家kennedy和電氣工程師eberhart共同提出粒子群優化演算法 particle swarm optimization,pso pso演算法的基本思想利用生物學家heppner的生物群體模型,模擬鳥類覓食過程。鳥類飛行過程相互交流,當乙個鳥飛向棲息地時,其他鳥兒也會跟著...

粒子群優化演算法 引數尋優

一 粒子群演算法的概念 粒子群優化演算法的基本思想 是通過群體中個體之間的協作和資訊共享來尋找最優解 pso的優勢 在於簡單容易實現並且沒有許多引數的調節。目前已被廣泛應用於函式優化 神經網路訓練 模糊系統控制以及其他遺傳演算法的應用領域。二 粒子群演算法分析 1 基本思想 粒子群演算法通過設計一種...