粒子群算法通识
粒子群算法(Particle swarm optimization,PSO)是模擬群體智能所建立起來的一種優(yōu)化算法,主要用于解決最優(yōu)化問題(optimization problems)。1995年由 Eberhart和Kennedy 提出,是基于對(duì)鳥群覓食行為的研究和模擬而來的。
假設(shè)一群鳥在覓食,在覓食范圍內(nèi),只在一個(gè)地方有食物,所有鳥兒都看不到食物(即不知道食物的具體位置。當(dāng)然不知道了,知道了就不用覓食了),但是能聞到食物的味道(即能知道食物距離自己是遠(yuǎn)是近。鳥的嗅覺是很靈敏的)。
假設(shè)鳥與鳥之間能共享信息(即互相知道每個(gè)鳥離食物多遠(yuǎn)。這個(gè)是人工假定,實(shí)際上鳥們肯定不會(huì)也不愿意),那么最好的策略就是結(jié)合自己離食物最近的位置和鳥群中其他鳥距離食物最近的位置這2個(gè)因素綜合考慮找到最好的搜索位置。
粒子群算法與《遺傳算法》等進(jìn)化算法有很多相似之處。也需要初始化種群,計(jì)算適應(yīng)度值,通過進(jìn)化進(jìn)行迭代等。但是與遺傳算法不同,它沒有交叉,變異等進(jìn)化操作。與遺傳算法比較,PSO的優(yōu)勢(shì)在于很容易編碼,需要調(diào)整的參數(shù)也很少。
一、基本概念
與遺傳算法類似,PSO也有幾個(gè)核心概念。
二、粒子群算法的過程
可以看出,粒子群算法的過程比遺傳算法還要簡(jiǎn)單。
1)根據(jù)問題需要,隨機(jī)生成粒子,粒子的數(shù)量可自行控制。
2)將粒子組成一個(gè)種群。這前2個(gè)過程一般合并在一起。
3)計(jì)算粒子適應(yīng)度值。
4)更新種群中每個(gè)粒子的位置和速度。
5)滿足退出條件就退出,不滿足就轉(zhuǎn)向步驟3)。
三、核心—“速度更新”
從上面PSO的算法流程中可以看出,核心步驟是更新種群中每個(gè)粒子的位置和速度,而速度的更新又是核心中的核心。
下面直接給出速度更新公式:
v為粒子當(dāng)前的速度,w為慣性因子(有速度就有運(yùn)動(dòng)慣性)。rand()為隨機(jī)數(shù)生成函數(shù),能夠生成0-1之間的隨機(jī)數(shù)。position為粒子當(dāng)前的位置,pbest為本粒子歷史上最好的位置,gbest為種群中所有粒子中當(dāng)前最好的位置。c1和c2表示學(xué)習(xí)因子,分別向本粒子歷史最好位置和種群中當(dāng)前最好位置進(jìn)行學(xué)習(xí)。
參數(shù)好像也有很多,需要設(shè)置的是3個(gè),w,c1和c2,但實(shí)際上一般都設(shè)置c1=c2=1,w一般設(shè)在0.5左右。所以也沒什么好設(shè)置的。
從物理原理上來解釋這個(gè)速度更新公式,該公式由加號(hào)分割為3個(gè)部分:
第一部分是慣性保持部分,粒子沿著當(dāng)前的速度和方向慣性飛行,不會(huì)偏移,直來直去。(牛頓運(yùn)動(dòng)學(xué)第一定理)。
第二部分是自我認(rèn)知部分,粒子受到自身歷史最好位置的吸引力,有回到自身歷史最好位置的意愿。(牛頓運(yùn)動(dòng)學(xué)第二定理)。
第三部分是社會(huì)認(rèn)知部分,粒子處在一個(gè)社會(huì)中(種群中),社會(huì)上有更好的粒子(成功人士),粒子受到成功人士的吸引力,有去社會(huì)中成功人士位置的意愿。(牛頓運(yùn)動(dòng)學(xué)第二定理)。
速度更新公式的意義就是粒子在自身慣性和2種外力作用下,速度和方向發(fā)生的改變。
注意這3部分都有重要含義。沒有慣性部分,粒子們將很快向當(dāng)前的自身最優(yōu)位置和全局最優(yōu)粒子位置靠攏,變成了一個(gè)局部算法了。有了慣性,不同粒子將有在空間中自由飛行的趨勢(shì),能夠在整個(gè)搜索區(qū)域內(nèi)尋找食物(最優(yōu)解)。而沒有自我認(rèn)知部分,粒子們將向當(dāng)前的全局最優(yōu)粒子位置靠攏,容易陷入局部最優(yōu)。沒有社會(huì)認(rèn)知部分,粒子們各自向自身最優(yōu)位置靠攏,各自陷入自身最優(yōu),整個(gè)搜索過程都不收斂了。
最后,有了速度更新公式,位置更新就簡(jiǎn)單了:
t一般默認(rèn)取1。 這里寫鏈接內(nèi)容
總結(jié)
- 上一篇: 遗传算法实例-求解函数极值
- 下一篇: 粒子群算法实例-求解函数极值