(2020年編輯)粒子群算法matlab代碼吐血推薦_第1頁(yè)
(2020年編輯)粒子群算法matlab代碼吐血推薦_第2頁(yè)
(2020年編輯)粒子群算法matlab代碼吐血推薦_第3頁(yè)
(2020年編輯)粒子群算法matlab代碼吐血推薦_第4頁(yè)
(2020年編輯)粒子群算法matlab代碼吐血推薦_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

歡迎來(lái)主頁(yè)粒子群算法(1)----粒子群算法簡(jiǎn)介二、粒子群算法的具體表述上面羅嗦了半天,那些都是科研工作者寫(xiě)論文的語(yǔ)氣,不過(guò), PSO的歷史就像上面說(shuō)的那樣。下面通俗的解釋PSO算法。PSO算法就是模擬一群鳥(niǎo)尋找食物的過(guò)程,每個(gè)鳥(niǎo)就是 PSO中的粒子,也就是我們需要求解問(wèn)題的可能解,這些鳥(niǎo)在尋找食物的過(guò)程中,不停改變自己在空中飛行的位置與速度。大家也可以觀察一下,鳥(niǎo)群在尋找食物的過(guò)程中,開(kāi)始鳥(niǎo)群比較分散,逐漸這些鳥(niǎo)就會(huì)聚成一群,這個(gè)群忽高忽低、忽左忽右,直到最后找到食物。這個(gè)過(guò)程我們轉(zhuǎn)化為一個(gè)數(shù)學(xué)問(wèn)題。尋找函數(shù) y=1-cos(3*x)*exp(-x) 的在[0,4]最大值。該函數(shù)的圖形如下:當(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è)過(guò)程與粒子群算法作為對(duì)照如下:這兩個(gè)點(diǎn)就是粒子群算法中的粒子。該函數(shù)的最大值就是鳥(niǎo)群中的食物計(jì)算兩個(gè)點(diǎn)函數(shù)值就是粒子群算法中的適應(yīng)值,計(jì)算用的函數(shù)就是粒子群算法中的適應(yīng)度函數(shù)。更新自己位置的一定公式就是粒子群算法中的位置速度更新公式。下面演示一下這個(gè)算法運(yùn)行一次的大概過(guò)程:第一次初始化精品文檔歡迎來(lái)主頁(yè)第一次更新位置第二次更新位置精品文檔歡迎來(lái)主頁(yè)第21次更新最后的結(jié)果(30次迭代)最后所有的點(diǎn)都集中在最大值的地方。精品文檔歡迎來(lái)主頁(yè)粒子群算法(2)----標(biāo)準(zhǔn)的粒子群算法在上一節(jié)的敘述中,唯一沒(méi)有給大家介紹的就是函數(shù)的這些隨機(jī)的點(diǎn)(粒子)是如何運(yùn)動(dòng)的,只是說(shuō)按照一定的公式更新。這個(gè)公式就是粒子群算法中的位置速度更新公式。下面就介紹這個(gè)公式是什么。在上一節(jié)中我們求取函數(shù)y=1-cos(3*x)*exp(-x) 的在[0,4]最大值。并在[0,4]之間放置了兩個(gè)隨機(jī)的點(diǎn),這些點(diǎn)的坐標(biāo)假設(shè)為 x1=1.5;x2=2.5;這里的點(diǎn)是一個(gè)標(biāo)量,但是我們經(jīng)常遇到的問(wèn)題可能是更一般的情況-- x為一個(gè)矢量的情況,比如二維的情況z=2*x1+3*x22的情況。這個(gè)時(shí)候我們的每個(gè)粒子為二維,記粒子 P1=(x11,x12),P2=(x21,x22),P3=(x31,x32) ,......Pn=(xn1,xn2) 。這里n為粒子群群體的規(guī)模, 也就是這個(gè)群中粒子的個(gè)數(shù),每個(gè)粒子的維數(shù)為 2。更一般的是粒子的維數(shù)為 q,這樣在這個(gè)種群中有 n個(gè)粒子,每個(gè)粒子為 q維。由n個(gè)粒子組成的群體對(duì) Q維(就是每個(gè)粒子的維數(shù)) 空間進(jìn)行搜索。每個(gè)粒子表示為: xi=(xi1,xi2,xi3,...,xiQ),每個(gè)粒子對(duì)應(yīng)的速度可以表示為 vi=(vi1,vi2,vi3,....,viQ),每個(gè)粒子在搜索時(shí)要考慮兩個(gè)因素:1。自己搜索到的歷史最優(yōu)值 pi,pi=(pi1,pi2,....,piQ),i=1,2,3,....,n。2。全部粒子搜索到的最優(yōu)值 pg,pg=(pg1,pg2,....,pgQ),注意這里的 pg只有一個(gè)。下面給出粒子群算法的位置速度更新公式:這里有幾個(gè)重要的參數(shù)需要大家記憶,因?yàn)樵谝院蟮闹v解中將會(huì)經(jīng)常用到:它們是:是保持原來(lái)速度的系數(shù),所以叫做慣性權(quán)重。是粒子跟蹤自己歷史最優(yōu)值的權(quán)重系數(shù),它表示粒子自身的認(rèn)識(shí),所以叫 “認(rèn)知”。通常設(shè)置為 2。是粒子跟蹤群體最優(yōu)值的權(quán)重系數(shù),它表示粒子對(duì)整個(gè)群體知識(shí)的認(rèn)識(shí),所以叫做 “社會(huì)知識(shí)”,經(jīng)常叫做“社會(huì)”。通常設(shè)置為 2。是[0,1]區(qū)間內(nèi)均勻分布的隨機(jī)數(shù)。是對(duì)位置更新的時(shí)候,在速度前面加的一個(gè)系數(shù),這個(gè)系數(shù)我們叫做約束因子。通常設(shè)置為 1。這樣一個(gè)標(biāo)準(zhǔn)的粒子群算法就結(jié)束了。下面對(duì)整個(gè)基本的粒子群的過(guò)程給一個(gè)簡(jiǎn)單的圖形表示:精品文檔歡迎來(lái)主頁(yè)判斷終止條件可是設(shè)置適應(yīng)值到達(dá)一定的數(shù)值或者循環(huán)一定的次數(shù)。注意:這里的粒子是同時(shí)跟蹤自己的歷史最優(yōu)值與全局(群體)最優(yōu)值來(lái)改變自己的位置預(yù)速度的,所以又叫做全局版本的標(biāo)準(zhǔn)粒子群優(yōu)化算法。精品文檔歡迎來(lái)主頁(yè)粒子群算法(3)----標(biāo)準(zhǔn)的粒子群算法(局部版本)在全局版的標(biāo)準(zhǔn)粒子群算法中,每個(gè)粒子的速度的更新是根據(jù)兩個(gè)因素來(lái)變化的,這兩個(gè)因素是: 1.粒子自己歷史最優(yōu)值pi。2. 粒子群體的全局最優(yōu)值 pg。如果改變粒子速度更新公式, 讓每個(gè)粒子的速度的更新根據(jù)以下兩個(gè)因素更新,A.粒子自己歷史最優(yōu)值 pi。B.粒子鄰域內(nèi)粒子的最優(yōu)值 pnk。其余保持跟全局版的標(biāo)準(zhǔn)粒子群算法一樣, 這個(gè)算法就變?yōu)榫植堪娴牧W尤核惴āR话阋粋€(gè)粒子 i的鄰域隨著迭代次數(shù)的增加而逐漸增加,開(kāi)始第一次迭代,它的鄰域?yàn)?0,隨著迭代次數(shù)鄰域線性變大,最后鄰域擴(kuò)展到整個(gè)粒子群,這時(shí)就變成全局版本的粒子群算法了。經(jīng)過(guò)實(shí)踐證明:全局版本的粒子群算法收斂速度快,但是容易陷入局部最優(yōu)。局部版本的粒子群算法收斂速度慢,但是很難陷入局部最優(yōu)?,F(xiàn)在的粒子群算法大都在收斂速度與擺脫局部最優(yōu)這兩個(gè)方面下功夫。其實(shí)這兩個(gè)方面是矛盾的??慈绾胃玫恼壑辛恕8鶕?jù)取鄰域的方式的不同,局部版本的粒子群算法有很多不同的實(shí)現(xiàn)方法。第一種方法:按照粒子的編號(hào)取粒子的鄰域,取法有四種: 1,環(huán)形取法 2,隨機(jī)環(huán)形取法 3,輪形取法 4,隨機(jī)輪形取法。1 環(huán)形 2隨機(jī)環(huán)形3輪形 4隨機(jī)輪形因?yàn)楹竺嬗幸原h(huán)形取法實(shí)現(xiàn)的算法,對(duì)環(huán)形取法在這里做一點(diǎn)點(diǎn)說(shuō)明:以粒子 1為例,當(dāng)鄰域是 0的時(shí)候,鄰域是它本身,當(dāng)鄰域是 1時(shí),鄰域?yàn)?2,8;當(dāng)鄰域是 2時(shí),鄰域是 2,3,7,8;......,以此類(lèi)推,一直到鄰域?yàn)?4,這個(gè)時(shí)候,鄰域擴(kuò)展到整個(gè)例子群體。據(jù)文獻(xiàn)介紹(國(guó)外的文獻(xiàn)),采用輪形拓?fù)浣Y(jié)構(gòu), PSO的效果很好。第二種方法:按照粒子的歐式距離取粒子的鄰域在第一種方法中,按照粒子的編號(hào)來(lái)得到粒子的鄰域,但是這些粒子其實(shí)可能在實(shí)際位置上并不相鄰,于是Suganthan 提出基于空間距離的劃分方案,在迭代中計(jì)算每一個(gè)粒子與群中其他粒子的距離。記錄任何 2個(gè)粒子間的的最大距離為dm。對(duì)每一粒子按照||xa-xb||/dm計(jì)算一個(gè)比值。其中||xa-xb||是當(dāng)前粒子a到b的距離。而選擇閾值frac根據(jù)迭代次數(shù)而變化。當(dāng)另一粒子b滿(mǎn)足||xa-xb||/dm<frac時(shí),認(rèn)為b成為當(dāng)前粒子的鄰域。這種辦法經(jīng)過(guò)實(shí)驗(yàn),取得較好的應(yīng)用效果,但是由于要計(jì)算所有粒子之間的距離,計(jì)算量大,且需要很大的存儲(chǔ)空間,所以,該方法一般不經(jīng)常使用。精品文檔歡迎來(lái)主頁(yè)粒子群算法(5)-----標(biāo)準(zhǔn)粒子群算法的實(shí)現(xiàn)標(biāo)準(zhǔn)粒子群算法的實(shí)現(xiàn)思想基本按照粒子群算法(2)----標(biāo)準(zhǔn)的粒子群算法的講述實(shí)現(xiàn)。主要分為3個(gè)函數(shù)。第一個(gè)函數(shù)為粒子群初始化函數(shù)InitSwarm(SwarmSize......AdaptFunc)其主要作用是初始化粒子群的粒子,并設(shè)定粒子的速度、位置在一定的范圍內(nèi)。本函數(shù)所采用的數(shù)據(jù)結(jié)構(gòu)如下所示:表ParSwarm記錄的是粒子的位置、速度與當(dāng)前的適應(yīng)度值,我們用W來(lái)表示位置,用V來(lái)代表速度,用F來(lái)代表當(dāng)前的適應(yīng)度值。在這里我們假設(shè)粒子個(gè)數(shù)為N,每個(gè)粒子的維數(shù)為D。W1,1W1,2.W1,DV1,1V1,2.V1,D-1V1,DF1第1個(gè)粒子....W2,1W2,2.W2,DV2,1V2,2.V2,D-1V2,DF2第2個(gè)粒子.........................................WN-WN-.WN-1,DVN-VN-.VN-1,DVN-1,FN第N-1個(gè)粒1,11,2..-11,11,2..-1D-1子WN,1WN,2.WN,DVN,1VN,2.VN,D-1VN,DFN第N個(gè)粒子....表OptSwarm記錄每個(gè)粒子的歷史最優(yōu)解(粒子歷史最好的適應(yīng)度)以及全部粒子搜索到的全局最優(yōu)解。用Wg代表全局最優(yōu)解,W.,1代表每個(gè)粒子的歷史最優(yōu)解。粒子群初始化階段表OptSwarm的前N行與表ParSwarm中的相同,而Wg的值為表ParSwarm中適應(yīng)度值的最大值對(duì)應(yīng)的行。Wj

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論