MATLAB粒子群(PSO)優(yōu)化算法程序集合
MATLAB粒子群(PSO)優(yōu)化算法程序集合
PSO算法就是模擬一群鳥尋找食物的過程,每個(gè)鳥就是PSO中的粒子,也就是我們需要求解問題的可能解,這些鳥在尋找食物的過程中,不停改變自己在空中飛行的位置與速度。大家也可以觀察一下,鳥群在尋找食物的過程中,開始鳥群比較分散,逐漸這些鳥就會(huì)聚成一群,這個(gè)群忽高忽低、忽左忽右,直到最后找到食物。這個(gè)過程我們轉(zhuǎn)化為一個(gè)數(shù)學(xué)問題。尋找函數(shù)y=1-cos(3*x)*exp(-x)的在[0,4]最大值。該函數(shù)的圖形如下:
在交錯(cuò)并聯(lián)變換器的設(shè)計(jì)中,若想得到優(yōu)良的紋波特性和響應(yīng)功能,各支路的交錯(cuò)觸發(fā)脈沖需設(shè)計(jì)合理。
當(dāng)x=0.9350-0.9450,達(dá)到最大值y=1.3706。為了得到該函數(shù)的最大值,我們?cè)赱0,4]之間隨機(jī)的灑一些點(diǎn),為了演示,我們放置兩個(gè)點(diǎn),并且計(jì)算這兩個(gè)點(diǎn)的函數(shù)值,同時(shí)給這兩個(gè)點(diǎn)設(shè)置在[0,4]之間的一個(gè)速度。下面這些點(diǎn)就會(huì)按照一定的公式更改自己的位置,到達(dá)新位置后,再計(jì)算這兩個(gè)點(diǎn)的值,然后再按照一定的公式更新自己的位置。直到最后在y=1.3706這個(gè)點(diǎn)停止自己的更新。這個(gè)過程與粒子群算法作為對(duì)照如下:
這兩個(gè)點(diǎn)就是粒子群算法中的粒子。該函數(shù)的最大值就是鳥群中的食物,計(jì)算兩個(gè)點(diǎn)函數(shù)值就是粒子群算法中的適應(yīng)值,計(jì)算用的函數(shù)就是粒子群算法中的適應(yīng)度函數(shù)。更新自己位置的一定公式就是粒子群算法中的位置速度更新公式。下面演示一下這個(gè)算法運(yùn)行一次的大概過程:
第一次初始化
第一次更新位置
最后的結(jié)果(30次迭代)
最后所有的點(diǎn)都集中在最大值的地方。
來源:電力MATLAB
工程師必備
- 項(xiàng)目客服
- 培訓(xùn)客服
- 平臺(tái)客服
TOP




















