網上已經有很多大差不大的**,但是有可能執行不了,這裡記錄乙個可以使用的,只需要修改適應度函式(要優化的函式)和粒子的維度(優化乙個二元函式,則乙個粒子的維度就是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 基本思想 粒子群演算法通過設計一種...