1. 程式人生 > >PSO-粒子群優化演算法

PSO-粒子群優化演算法

PSO

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

1. 常見的群體智慧優化演算法分類

常見的群體智慧優化演算法主要有如下幾類:

  (1)蟻群演算法(Ant Colony Optimization,簡稱ACO)[1992年提出];

  (2)粒子群優化演算法(Particle Swarm Optimization,簡稱PSO)[1995年提出](簡單易於實現,也是目前應用最為廣泛的群體智慧優化演算法);

  (3)菌群優化演算法(Bacterial Foraging Optimization,簡稱BFO)[2002年提出];

  (4)蛙跳演算法(Shuffled Frog Leading Algorithm,簡稱SFLA)[2003年提出];

  (5)人工蜂群演算法(Artificial Bee Colony Algorithm,簡稱ABC)[2005年提出];

  除了上述幾種常見的群體智慧演算法以外,還有一些並不是廣泛應用的群體智慧演算法,比如螢火蟲演算法、布穀鳥演算法、蝙蝠演算法以及磷蝦群演算法等等。

2. 粒子群優化演算法思想

  粒子群優化演算法是在1995年由Eberhart博士和Kennedy博士一起提出的,它源於對鳥群捕食行為的研究。它的基本核心是利用群體中的個體對資訊的共享從而使得整個群體的運動在問題求解空間中產生從無序到有序的演化過程,從而獲得問題的最優解。我們可以利用一個有關PSO的經典描述來對PSO演算法進行一個直觀的描述。設想這麼一個場景:一群鳥進行覓食,而遠處有一片玉米地,所有的鳥都不知道玉米地到底在哪裡,但是它們知道自己當前的位置距離玉米地有多遠。那麼找到玉米地的最佳策略,也是最簡單有效的策略就是是搜尋目前距離玉米地最近的鳥群的周圍區域。PSO就是從這種群體覓食的行為中得到了啟示,從而構建的一種優化模型。

  在PSO中,每個優化問題的解都是搜尋空間中的一隻鳥,稱之為“粒子”,而問題的最優解就對應為鳥群要尋找的“玉米地”。所有的粒子都具有一個位置向量(粒子在解空間的位置)和速度向量(決定下次飛行的方向和速度),並可以根據目標函式來計算當前的所在位置的適應值(fitness value),可以將其理解為距離“玉米地”的距離。在每次的迭代中,種群中的粒子除了根據自身的“經驗”(歷史位置)進行學習以外,還可以根據種群中最優粒子的“經驗”來學習,從而確定下一次迭代時需要如何調整和改變飛行的方向和速度。就這樣逐步迭代,最終整個種群的粒子就會逐步趨於最優解。

2.1 PSO的缺點

對於有多個區域性極值點的函式,容易陷入到區域性極值中,得不到正確的結果。此外,由於缺乏精密搜尋方法的配合,PSO往往得不到精確的結果。再則,PSO的方法提供了全域性搜尋的可能,但並不能嚴格證明它在全域性最優點上的收斂性。因此,PSO一般適用於一類高維的、存在多個區域性極值點而並不需要得到很高精度的優化問題。

2.2 PSO的優點

  • 易於描述,易於理解
  • 對優化問題定義的連續性無特殊要求
  • 只有非常少的引數需要調整
  • 演算法實現簡單,速度快
  • 相對其他的演化演算法,只需要很少的的演化群體
  • 演算法易於收斂,相比其他演化演算法,只需要較少的評價函式計算次數就可以達到收斂
  • 無集中控制約束,不會因為個體的故障影響整個問題的求解,確保了系統具備很強的魯棒性

3. 粒子群優化演算法的基本框架


3.1 公式

在介紹PSO的演算法流程之前,我們寫給出PSO中常用的迭代運算元的形式。
在D維空間中,有N個粒子:
* Xi=(xi1,xi2,...,xin) 代表粒子 i 的位置向量
* Vi=(vi1,vi2,...,vin) 代表粒子 i 的速度向量(其中n為優化問題的維度大小)
* 粒子i個體經歷過的最好位置: pbesti=(pi1,pi2,...,piD)
* 種群所經歷過的最好位置: gbest=(g1,g2,...,g)
通常,在第 d(1<=d<=D 的位置變化範圍限定在 [Xmin,d,Xmax,d] 內。若在迭代中若 Vid , Xid 超出了邊界值,則該維的速度或位置被限制為該維最大速度或邊界位置。

最早版本的粒子群優化演算法的迭代運算元形式如下:

速度向量迭代公式:

Vk+1i=Vki+C1r1(PkbestiXki)+C2r2(PkgbestXki)
位置向量迭代公式:
Xk+1i=Xki+rVk+1i

其中在公式(1)中, Pbesti Gbest 分別代表粒子 i 的歷史最佳位置向量和種群歷史最佳位置向量。根據公式(1)可以看出,種群中的粒子通過不斷地向自身和種群的歷史資訊進行學習,從而可以找出問題的最優解。
  但是,在後續的研究中表明,上述原始的公式中存在一個問題:公式(1)中 Vi 的更新太具有隨機性,從而使得整個PSO演算法的全域性優化能力很強,但是區域性搜尋能力較差。而實際上,我們需要在演算法迭代初期PSO有著較強的全域性優化能力,而在演算法的後期,整個種群應該具有更強的區域性搜尋能力。所以根據上述的弊端, Shi Eberhart 通過引入慣性權重修改了公式(1),從而提出了PSO的慣性權重模型:

Vk+1id=Wk+1idVkid+C1r1(PkbestidXkid)+C2r2(PkgbestdXkid)
Vk+1id - 第k+1次迭代粒子i飛行速度向量的第d維分量
Xk+1id - 第k+1次迭代粒子i位置向量的第d維分量
c1,c2 - 加速度常數,調節學習最大步長
r1,r2 - 兩個隨機函式,取值範圍[0, 1],以增加搜尋隨機性
w - 慣性權重,非負數,調節對解空間的搜尋範圍

3.2 慣性權重

其中引數 w 稱為是PSO的慣性權重(inertia weight),它的取值介於[0,1]區間,一般應用中均採取自適應的取值方法,即一開始令 w=0.9 ,使得 PSO 全域性優化能力較強,隨著迭代的深入,引數 w 進行遞減,從而使得 PSO 具有較強的區域性優化能力,當迭代結束時, w=0.1 。引數 c1 c2 稱為是學習因子(learn factor),一般設定為1.4961;而 r1 r2 為介於[0,1]之間的隨機概率值。

3.3 演算法流程

 整個粒子群優化演算法的演算法框架如下:

  Step 1 種群初始化:可以進行隨機初始化或者根據被優化的問題設計特定的初始化方法
  
  Step 2 計算個體的適應度(Fitness),適應度指的是目標函式的值
  
  Step 3 選擇出個體的區域性最優位置向量 Pb

相關推薦

PSO-粒子優化演算法

PSO 演算法 粒子群優化演算法 PSO 1. 常見的群體智慧優化演算法分類 常見的群體智慧優化演算法主要有如下幾類:   (1)蟻群演算法(Ant Colony Optimization,簡稱ACO)[1992年提出];   (2)粒子群優化演算法(Particle

粒子優化演算法 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)(基於種群的隨機優化技術演算法) 粒子群演算法模仿昆蟲、獸群、鳥群和魚群等的群集行為,這些群體按照一種合作的方式尋找食物,群體

粒子優化演算法

粒子群優化演算法是模仿生物社會系統而設計的,更確切的說,是由簡單個體組成的群體與環境以及個體之間的互動行為,是一種基於群智慧方法的進化計算技術。 粒子群演算法源於鳥群捕食行為的模擬。一群鳥在一個固定的區域裡隨機搜尋區域裡唯一的一塊食物,所有的鳥都不知到食物在哪裡,但是他們知道自己當前所處的位置離

[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的優化方法。同遺傳演算法類似,也是一種

標準粒子優化(Particle Swarm Optimization, PSO)算法

span color swa pan 先來 war fill 度量 pso 先來嘮嘮什麽是最優化問題,就是在滿足一定的約束條件下,找到一組合適參數,使得系統的某些性能指標(最優性度量)達到最值。叠代提供了一種求解最優化問題的基本思路: \[\left\{ \

粒子優化算法PSO及matlab實現

參數 min 功能 結果 ide 過程 mil .html none 算法學習自:MATLAB與機器學習教學視頻 1、粒子群優化算法概述 粒子群優化(PSO, particle swarm optimization)算法是計算智能領域,除了蟻群算法,魚群算法

基本粒子優化演算法PSO)的matlab實現

粒子群優化演算法是一種模擬鳥群社會行為的群體搜素演算法。它分為全域性最佳粒子優化和區域性最佳粒子優化,對於全域性最佳PSO,或者叫做gbest PSO,每個粒子的鄰域都是整個群,其演算法虛擬碼如下: 建立並初始化一個n維的粒子群 repeat for 每個粒子i=

論文:基於粒子優化的測試資料生成及其實證分析-----生成過程以及實驗(計算機研究與發展)

來源:2012年版的計算機研究與發展期刊 基於PSO的測試資料生成 (1) 核心問題:  如何保證PSO搜尋演算法和測試過程的協作執行  演算法的基本的流程: (1)對被測程式P進行靜態分析並完成: 1.  提取程式的 介面資

叢集智慧-蟻優化演算法

群體智慧 1.叢集智慧     眾多無智慧的個體,通過相互之間的簡單合作所表現出來的智慧行為2.博弈    具備一定智慧的理性個體,按照某種機制行動,在群體層面體現出的智慧3.眾包    設計合適的機制,激勵個體參與,從而實現

基於粒子優化的分類特徵選擇:多目標方法

#引用 ##LaTex @ARTICLE{6381531, author={B. Xue and M. Zhang and W. N. Browne}, journal={IEEE Transactions on Cybernetics}, title={Par

優化演算法的JAVA實現

蟻群演算法簡介 蟻群演算法是群智慧演算法的一種,所謂的群智慧是一種由無智慧或簡單智慧的個體通過任何形式的聚集協同而表現出智慧行為,它為在沒有集中控制且不提供全域性模型的前提下尋找複雜的分散式問題求解方案提供了基礎,比如常見的螞蟻覓食,大雁南飛等行為。蟻群演算法是模擬自然界中螞

優化演算法——粒子演算法(PSO)

一、粒子群演算法的概述     粒子群演算法(PSO)屬於群智慧演算法的一種,是通過模擬鳥群捕食行為設計的。假設區域裡就只有一塊食物(即通常優化問題中所講的最優解),鳥群的任務是找到這個食物源。鳥群在整個搜尋的過程中,通過相互傳遞各自的資訊,讓其他的鳥知道自己的位置,通過這

粒子演算法(PSO,gbest與lbest)

github: 智慧演算法的課件和參考資料以及實驗程式碼   粒子群演算法的原理: 粒子群演算法是一種群體智慧演算法,通過追隨當前搜尋到的最優值來尋找全域性最優。該演算法實現容易、精度高、收斂快,在解決實際問題中具有很大的優越性。主要步驟可描述如下: