粒子群PSO演算法的基本原理
先看兩個概述:
1.
2.
好了,進入主題:
PSO演算法是基於群體智慧理論的優化演算法,群體中的粒子在每次迭代搜尋的過程中,通過跟蹤群體2個極值:粒子本身所找到的最優解Pbest和群體找到的最優解Gbest來動態調整自己位置和速度[5, 6],完成對問題尋優,對於如下的函式優化問題
maxf(x1,x2,…,xn)
s. t R1j≤xj≤R2j, j=1,2,…,n(1)
其計算步驟如下[1]:
(1)對粒子群中粒子的位置和速度進行隨機初始化。設定群體的規模為N,則隨機生成如下矩陣
x11x12…x1nv11v12…v1n
x21x22…x2nv21v22…v2n
… … … … … … … …
xN1xN2…xNnvN1vN2…vNn
, (2)
其中{xij, i=1,2,…,N, j=1,2,…,n}表示群體中i粒子的位置為j,vij是對應它的速度,二者均為區間[R1j,R2j]上均勻分佈的隨機數。
(2)計算每個粒子的適應度(目標函式值)。
(3)計算粒子所經歷的最好位置pbesti(t)=(xi1,xi2,…,xim),也就是粒子所經歷過的具有最好適應度的位置,由下面兩個式子確定
pbesti(t+1)= pbesti(t) 如果f(x1(t+1),x2(t+1),…,xn(t+1))<pbesti(t)),
pbesti(t+1)=
計算群體中所有粒子經歷過最好位置,即全域性最好位置
Gbesti(t)=maxf(Pbest1(t)), f(Pbest2(t)),…, f(PbestN(t)) , (4)
(4)依據下式對粒子的速度和位置進行進化
vij(t+1)=vij+c1r1(Pbesti(t)-xij(t))+c2r2(Gbesti(t)-xij(t)), (5)
其中c1,2為加速度常數(學習速率), r1,2為[0,1]均勻分佈的隨機數。
(5)判斷結束條件,目標函式的適應度達到足夠好或者進化到預先設定的代數,否則返回步驟(2),繼續進行
3用MATLAB實現粒子群演算法
MATLAB是MathWorks公司的產品,是一個功能強大的科學與工程計算軟體,集成了計算、視覺化和程式編制等功能,其使用直觀、簡潔並符合人們思維習慣的程式碼給使用者提供了一個友好的開發環境[9, 10],利用MATLAB矩陣運算的強大功能編寫粒子群演算法程式有很好的優勢。
3. 1粒子群的初始化
initpop函式的功能是實現群體的初始化, popsize表示群體的大小, dimsize表示粒子維數,它由變數的維數決定, xmin是變數的下限, xmax是變數的上限。
function pop=initpop(popsize, dimsize)
pop=unifrnd(xmin, xmax, popsize, 2* dimSize);
3. 2計算粒子的適應度和確定群體的Pbest和Gbest
Calobjvalue函式的功能是計算目標函式的適應度,其公式是採用本文的示例模擬,使用者可以根據不同的優化問題予以修改。
function objvalue=calobjvalue(pop)
for i=1: popsize
obfuct1=sin(sqrt(pop(,i 1) ^2+pop(,i 2) ^2)) ^2-0. 5;
obfuct2=(1. 0+0. 001* (sqrt(x(,i 1) ^2+x(,i 2) ^2)) ^2);
objvalue(,i 1)=0. 5+obfuct1/obfuct2;
end
Pbest=pop(:, 1: dimsize);
[ggBest, xindex]=max(objvalue);
xtemp=pop(xindex, 1: dimsize);
Gbest=xtemp;
3. 3粒子速度和位置的更新
粒子速度和位置的更新是基於式(5)與(6),並生成新的粒子群體.
function pop2=renew(pop)
for t=1: popsize
for dimIndex=1: dimsize
w=wcmax-(wcmax-wcmin)* (generation/maxgeneration);
sub1=Pbest(t, dimIndex)-pop(t, dimIndex);
sub2=Gbest(1, dimIndex)-pop(t, dimIndex);
tempV=w* pop(t, dimszie+dimIndex)+c1* unifrnd(0, 1)* sub1+c2* unifrnd(0, 1)* sub2;
if tempV>speedmax
pop(t, dimszie+dimIndex)=speedmax;
elseif tempV<(-speedmax)
pop(t, dimsize+dimIndex)=-speedmax;
else
pop(t, dimszie+dimIndex)=tempV;
end
tempposition=pop(t, dimIndex)+pop(t, dimsize+dimIndex);
if tempposition>xmax
pop(t, dimIndex)=xmax;
elseif tempposition<xmin
pop(t, dimIndex)=xmin;
else
pop(t, dimIndex)=tempposition;
end
end
3. 4粒子Pbest和Gbest的更新
粒子在進化過程中依據其適應度,調節個體最好位置Pbest和群體最好位置Gbest
function [Pbest,Gbest]=regulate(pop)
for i=1: popsize
obfuct1=sin(sqrt(x(,i 1) ^2+x(,i 2) ^2)) ^2-0. 5;
obfuct2=(1. 0+0. 001* (sqrt(x(,i 1) ^2+x(,i 2) ^2)) ^2);
objvalue(,i 1)=0. 5+obfuct1/obfuct2;
obfuct3=sin(sqrt(pBest(,i 1) ^2+pBest(,i 2) ^2)) ^2-0. 5;
obfuct4=(1. 0+0. 001* (sqrt(pBest(,i 1) ^2+pBest(,i 2) ^2)) ^2);
pvaluer(,i 1)=0. 5+obfuct3/obfuct4;
end
obfuct1=sin(sqrt(gBest(1) ^2+gBest(2) ^2)) ^2-0. 5;
obfuct2=(1. 0+0. 001* (sqrt(gBest(1) ^2+gBest(2) ^2)) ^2);
objvaluetemp=0. 5+obfuct1/obfuct2;
for i=1: popsize
if objvaluer(,i 1)<pvaluer(,i 1)
PBest(,i 1: dimszie)=pop(,i 1: dimszie);
end
if objvaluer(,i 1)<objvaluertemp
GBest=pop(,i 1: dimszie);
xtemp=pop(,i 1: dimsize);
end
end
相關推薦
粒子群PSO演算法的基本原理
先看兩個概述: 1. 2. 好了,進入主題: PSO演算法是基於群體智慧理論的優化演算法,群體中的粒子在每次迭代搜尋的過程中,通過跟蹤群體2個極值:粒子本身所找到的最優解Pbest和群體找到的最優解Gbest來動態調整自己位置和速度[5, 6],完成對問題尋優,對於如下的函式優化問題 m
使用粒子群PSO演算法實現MPPT-M語言模擬
在Octave上,模擬了使用粒子群PSO實現MPPT的過程。 目錄 本文主要是程式碼。可以在Octave上執行。我的軟體環境是winxp(32bit),Octave4.4.0。 1、先繪製出PV曲線 光伏電阻串聯的方法如下圖。每個光伏電池都有各自的反向並聯
粒子群優化演算法 PSO
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
粒子群優化演算法(PSO)簡介及MATLAB實現
目錄 粒子群優化演算法概述 • 粒子群優化(PSO, particle swarm optimization)演算法是計算智慧領域,除了蟻群演算法,魚群演算法之外的一種群體智慧的優化演算法,該演算法最早由Kennedy和Eberhart在1995年提出的,
matlab學習筆記(1)——粒子群優化演算法(PSO)的程式實現
本文內容參考matlab R2016a完全自學一本通。 粒子群優化演算法(PSO)屬於進化演算法的一種,它從隨機解出發,通過迭代找到最優解。該演算法通過適應度來評價解的品質,並通過追隨當前搜尋到的最優值來尋找全域性最優。 假設在一個D維的目標搜尋空間
粒子群優化演算法(PSO)之基於離散化的特徵選擇(FS)(二)
作者:Geppetto 前面我們介紹了特徵選擇(Feature Selection,FS)與離散化資料的重要性,總覽的介紹了PSO在FS中的重要性和一些常用的方法。今天講一講FS與離散化的背景,介紹本文所採用的基於熵的切割點和最小描述長度原則(MDLP
MATLAB粒子群優化演算法實現(PSO)
PSO(PSO——Particle Swarm Optimization)(基於種群的隨機優化技術演算法) 粒子群演算法模仿昆蟲、獸群、鳥群和魚群等的群集行為,這些群體按照一種合作的方式尋找食物,群體
PSO-粒子群優化演算法
PSO 演算法 粒子群優化演算法 PSO 1. 常見的群體智慧優化演算法分類 常見的群體智慧優化演算法主要有如下幾類: (1)蟻群演算法(Ant Colony Optimization,簡稱ACO)[1992年提出]; (2)粒子群優化演算法(Particle
粒子群優化演算法
粒子群優化演算法是模仿生物社會系統而設計的,更確切的說,是由簡單個體組成的群體與環境以及個體之間的互動行為,是一種基於群智慧方法的進化計算技術。 粒子群演算法源於鳥群捕食行為的模擬。一群鳥在一個固定的區域裡隨機搜尋區域裡唯一的一塊食物,所有的鳥都不知到食物在哪裡,但是他們知道自己當前所處的位置離
Java中的HashCode 1 之hash演算法基本原理
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
銀行家演算法基本原理
銀行家把一定數量的資金供多個使用者週轉使用。 當顧客對資金的最大申請量不超過銀行家現金時,就可接納,顧客可以分期借款; 但借款總數不能超過最大申請量,銀行家對顧客的借款可以推遲支付,但總能在有限的時間裡得到借款; 當顧客得到全部資金後,他一定能在有限時間裡面歸還所有資金。 Max:執
Sam版Matlab粒子群PSO工具已經更新
顯著亮點 感興趣的同學最好先去 Mathworks檔案交換站原始連結 閱讀一下作者的說明和以往的一些尤其是作者有答覆的討論。——特別說明的是,我通常沒有免費的時間(free time)解答跟工具箱使用類似的問題;如有問題經自己反覆努力之後仍解決不掉,建議直接註
動態範圍控制演算法基本原理
動態範圍控制可以自動調整訊號的動態範圍;(訊號的動態範圍是訊號的最大幅值與最小幅值比值的對數,使用dB作為單位) 動態範圍控制可以做的事情 根據環境匹配音訊訊號電平;也就是杜比volume leveler的作用; 保護ADC使其不會過載;在廣播訊號傳送時,傳送器有峰值限制,超過這
K-近鄰演算法—基本原理與實戰
概述 k-近鄰演算法(k-Nearest Neighbor, KNN),是一個理論上比較成熟的方法,也是最簡單的機器學習演算法之一,用於預測資料的類別,以及對資料進行分類。該方法的簡要思路就是採用測量不同特徵值之間的距離來進行分類。 特點
[Algorithm] 群體智慧優化演算法之粒子群優化演算法
%% 該檔案演示基於TSP-PSO演算法 clc;clear %% 載入資料 data=load('eil51.txt') cityCoor=[data(:,2) data(:,3)];%城市座標矩陣 figure plot(cityCoor(:,1),cityCoor(:,2),'m
[人工智慧] 粒子群優化演算法 & 差分進化演算法
粒子群優化演算法 & 差分進化演算法 前言 演算法理論 演算法實踐 視覺化 前言 演算法理論 粒子群優化演算法 簡介 粒子群優化演算法( Particle Swarm Optimization,PSO)是進化計算的一個分支,是一種模擬
遺傳演算法 差分進化演算法 粒子群優化演算法區別
一 遺傳演算法 遺傳演算法(GA)作為一種經典的進化演算法,自 Holland提出之後在國際上已經形成了一個比較活躍的研究領域. 人們對 GA 進行了大量的研究,提出了各種改進演算法用於提高演算法的收斂速度和精確性. 遺傳演算法採用選擇,交叉,變異操作,在問題空間搜尋最優解.
粒子群優化演算法對BP神經網路優化 Matlab實現
1、粒子群優化演算法 粒子群演算法(particle swarm optimization,PSO)由Kennedy和Eberhart在1995年提出,該演算法模擬鳥叢集飛行覓食的行為,鳥之間通過集體的協作使群體達到最優目的,是一種基於 Swarm Inteligence的優化方法。同遺傳演算法類似,也是一種
分治演算法基本原理和實踐
一、基本概念 在電腦科學中,分治法是一種很重要的演算法。字面上的解釋是“分而治之”,就是把一個複雜的問題分成兩個或更多的相同或相似的子問題,再把子問題分成更小的子問題……直到最後子問題可以簡單的直接求解,原問題的解即子問題的解的合併。這個技巧是很多高效演算法的基礎,如排序演算法(快速排序,歸併排序),傅立葉變
滑動視窗演算法基本原理與實踐
學過計算機網路的同學,都知道滑動視窗協議(Sliding Window Protocol),該協議是 TCP協議 的一種應用,用於網路資料傳輸時的流量控制,以避免擁塞的發生。該協議允許傳送方在停止並等待確認前傳送多個數據分組。由於傳送方不必每發一個分組就停下來等待確認。因此該協議可以加速資