粒子群優化演算法求函式最小值

2021-10-10 04:12:37 字數 1918 閱讀 4197

1.演算法簡介

粒子群演算法(簡稱pso)是一種有效的全域性尋優演算法,最早由美國的kennedy和eberhart於2023年提出。基於群體智慧型理論的優化演算法,通過個體之間的協作和資訊共享來尋找最優解,具有「自我」學習提高和向「他人」學習的優點,被廣泛應用於函式優化、資料探勘、神經網路訓練等領域。

演算法模擬鳥群的捕食行為 假設一群鳥在隨機搜尋食物,在這個區域裡只有一塊食物(最優解),所有的鳥都不知道食物在那裡,在搜尋過程中,通過相互傳遞各自的資訊,讓其他鳥知道自己的位置,通過這樣的協作判斷自己找到的是不是最優解,同時也將自己的最優解傳遞給整個鳥群。最終,整個鳥群都聚集在食物周圍,即找到最優解 問題收斂。

問題抽象 鳥被抽象為沒有質量和體積的粒子,並延伸到n維空間,粒子i在n維空間的位置表示為向量xi=(x1,x2,x3……xn),飛行速度表示為向量vi=(v1,v2,v3……vn)。每個粒子都有乙個由目標函式決定的適應度值,並且知道自己到目前為止發現的最好位置,這個可以看作是粒子自己的飛行經驗。除此之外,每個粒子還知道到目前為止整個群體中所有粒子發現的最好位置,這個可以看作是粒子同伴的經驗。粒子就是通過自己的經驗和同伴中最好的經驗來決定下一步的運動。

2.流程圖及演算法實現

其中,終止條件:

1)達到最大迭代次數

2)相鄰兩代之間的偏差在一定範圍內

主要公式:

vid →第i個粒子在第t+1次迭代中第d維的速度

動態w能獲得比固定值更好的尋優結果(w減小→全域性尋優能力減弱,區域性尋優增強)

3.具體**實現

問題描述:用粒子群優化演算法求以下測試函式最小值

records=zeros(1,maxgeneration);

%% 粒子初始化

for i = 1:popsize

pop(i,:) = (popmax-popmin)*rand(1,dim)+popmin;

v(i,:) = (vmax-vmin)*rand(1,dim)+vmin;

fitness(i) = fun_fitness(pop(i,:));

end%% 更新個體極值和群體極值

p_bestposition = pop;

p_bestfitness = fitness;

[bestfitness, bestindex] = min(fitness);

g_bestposition = pop(bestindex,:);

g_bestfitness = bestfitness;

%% 迭代

for i = 1:maxgeneration

%更新慣性權重

w=wmax-i*(wmax-wmin)/maxgeneration;

for j = 1:popsize

% 更新速度

v(j,:) = w*v(j,:) + c1*rand*(p_bestposition(j,:) - pop(j,:)) + c2*rand*(g_bestposition - pop(j,:));

v(j,v(j,:)>vmax) = vmax;

v(j,v(j,:)popmax) = popmax;

pop(j,pop(j,:)測試函式:

function [y] = fun_fitness(x)

y=100*(x(1)^2-x(2))^2+(1-x(1))^2;

end

執行得到的適應度變化曲線:

粒子群優化演算法 粒子群演算法

粒子群演算法 particle swarm optimization,pso 屬於進化演算法的一種,該演算法最初是受到飛鳥集群活動的規律性啟發,進而利用群體智慧型建立的乙個簡化模型。粒子群演算法在對動物集群活動行為觀察基礎上,利用群體中的個體對資訊的共享使整個群體的運動在問題求解空間中產生從無序到有...

粒子群優化演算法

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

粒子群優化演算法

與ga演算法比較 粒子群優化 clc,clear all x 0 0.01 4 y hanshu x figure plot x,y hold on w 1 慣性因子 c1 2 c2 2 maxgen 30 迭代次數 sizepop 5 粒子個數 vmax 1 vmin 1 速度限制 popmax ...