天堂国产午夜亚洲专区-少妇人妻综合久久蜜臀-国产成人户外露出视频在线-国产91传媒一区二区三区

當(dāng)前位置:主頁(yè) > 科技論文 > 建筑工程論文 >

量子粒群算法_粒子群算法簡(jiǎn)介_(kāi)自話粒子群算法(超簡(jiǎn)單實(shí)例)

發(fā)布時(shí)間:2016-07-07 20:01

  本文關(guān)鍵詞:粒子群算法,由筆耕文化傳播整理發(fā)布。


簡(jiǎn)介

    上次在自話遺傳算法中提到后期會(huì)寫(xiě)兩篇關(guān)于粒子群算法和蟻群算法的博文,所以這次給大家?guī)?lái)的是我對(duì)粒子群的一些理解,并附帶一個(gè)相當(dāng)簡(jiǎn)單的實(shí)例去描述這個(gè)算法,我會(huì)盡力通俗易懂的把整個(gè)算法描述一遍,其實(shí)粒子群算法的思想也挺簡(jiǎn)單的,希望我不要反而寫(xiě)復(fù)雜了,下面同樣引用百度百科的摘要結(jié)束簡(jiǎn)介部分。

    粒子群優(yōu)化算法(PSO)是一種進(jìn)化計(jì)算技術(shù)(evolutionary computation),1995 年由Eberhart 博士和kennedy 博士提出,源于對(duì)鳥(niǎo)群捕食的行為研究 。該算法最初是受到飛鳥(niǎo)集群活動(dòng)的規(guī)律性啟發(fā),進(jìn)而利用群體智能建立的一個(gè)簡(jiǎn)化模型。粒子群算法在對(duì)動(dòng)物集群活動(dòng)行為觀察基礎(chǔ)上,利用群體中的個(gè)體對(duì)信息的共享使整個(gè)群體的運(yùn)動(dòng)在問(wèn)題求解空間中產(chǎn)生從無(wú)序到有序的演化過(guò)程,從而獲得最優(yōu)解。

基本思想

    正如簡(jiǎn)介所描述的那樣,粒子群算法是模擬群體智能所建立起來(lái)的一種優(yōu)化算法,像后面我向大家介紹的蟻群算法也屬于這類(lèi)算法,粒子群算法可以用鳥(niǎo)類(lèi)在一個(gè)空間內(nèi)隨機(jī)覓食為例,所有的鳥(niǎo)都不知道食物具體在哪里,,但是他們知道大概距離多遠(yuǎn),最簡(jiǎn)單有效的方法就是搜尋目前離食物最近的鳥(niǎo)的周?chē)鷧^(qū)域。

    所以,粒子群算法就是把鳥(niǎo)看成一個(gè)個(gè)粒子,并且他們擁有位置和速度這兩個(gè)屬性,然后根據(jù)自身已經(jīng)找到的離食物最近的解和參考整個(gè)共享于整個(gè)集群中找到的最近的解去改變自己的飛行方向,最后我們會(huì)發(fā)現(xiàn),整個(gè)集群大致向同一個(gè)地方聚集。而這個(gè)地方是離食物最近的區(qū)域,條件好的話就會(huì)找到食物。這就是粒子群算法,很好理解。

算法描述

    所以,我們需要一個(gè)pbest來(lái)記錄個(gè)體搜索到的最優(yōu)解,用gbest來(lái)記錄整個(gè)群體在一次迭代中搜索到的最優(yōu)解。速度和粒子位置的更新公式如下:

 

    v[i] = w * v[i] + c1 * rand() * (pbest[i] - present[i]) + c2 * rand() * (gbest - present[i])    

    present[i] = present[i] + v[i]                                                                                                          

    其中v[i]代表第i個(gè)粒子的速度,w代表慣性權(quán)值,c1c2表示學(xué)習(xí)參數(shù),rand()表示在0-1之間的隨機(jī)數(shù),pbest[i]代表第i個(gè)粒子搜索到的最優(yōu)值,gbest代表整個(gè)集群搜索到的最優(yōu)值,present[i]代表第i個(gè)粒子的當(dāng)前位置。

    我這里打了一個(gè)求解y=-x*(x-1) [-2,2]上最大值的粒子群算法,選用這個(gè)簡(jiǎn)單的例子主要是能讓大家清楚的看到效果和粒子的運(yùn)動(dòng)方向,也方便理解我想說(shuō)的一些觀點(diǎn)。代碼如下:

 

/*** * 計(jì)算y=-x(x-1)的最大值 * 取值范圍x--[-2,2] * @author BreezeDust * */ public class PSOTest { int n=2; //粒子個(gè)數(shù),這里為了方便演示,我們只取兩個(gè),觀察其運(yùn)動(dòng)方向 double[] y; double[] x; double[] v; double c1=2; double c2=2; double pbest[]; double gbest; double vmax=0.1; public void fitnessFunction(){//適應(yīng)函數(shù) for(int i=0;i<n;i++){ y[i]=-1*x[i]*(x[i]-2); } } public void init(){ //初始化 x=new double[n]; v=new double[n]; y=new double[n]; pbest=new double[n]; /*** * 本來(lái)是應(yīng)該隨機(jī)產(chǎn)生的,為了方便演示,我這里手動(dòng)隨機(jī)落兩個(gè)點(diǎn),分別落在最大值兩邊 */ x[0]=-0.5; x[1]=2.6; v[0]=0.01; v[1]=0.02; fitnessFunction(); //初始化當(dāng)前個(gè)體極值,并找到群體極值 for(int i=0;i<n;i++){ pbest[i]=y[i]; if(y[i]>gbest) gbest=y[i]; } System.out.println("start gbest:"+gbest); } public double getMAX(double a,double b){ return a>b?a:b; } //粒子群算法 public void PSO(int max){ for(int i=0;i<max;i++){ double w=0.4; for(int j=0;j<n;j++){ //更新位置和速度 v[j]=w*v[j]+c1*Math.random()*(pbest[j]-x[j])+c2*Math.random()*(gbest-x[j]); if(v[j]>vmax) v[j]=vmax; x[j]+=v[j]; //越界判斷 if(x[j]>2) x[j]=2; if(x[j]<-2) x[j]=-2; } fitnessFunction(); //更新個(gè)體極值和群體極值 for(int j=0;j<n;j++){ pbest[j]=getMAX(y[j],pbest[j]); if(pbest[j]>gbest) gbest=pbest[j]; System.out.println(x[j]+" "+v[j]); } System.out.println("======"+(i+1)+"======gbest:"+gbest); } } public static void main(String[] args){ PSOTest ts=new PSOTest(); ts.init(); ts.PSO(100); } }

    輸出結(jié)果如下:

start gbest:0.0 -0.4 0.1 0.0 -10.751668729351186 ======1======gbest:0.0 -0.6822365786740794 -0.2822365786740793 0.0 -5.375834364675593 ======2======gbest:0.0 -0.5822365786740794 0.1 0.0 -2.6879171823377965 ======3======gbest:0.0 -0.48223657867407943 0.1 -1.3439585911688983 -1.3439585911688983 ======4======gbest:0.0 -0.38223657867407945 0.1 -1.2439585911688982 0.1 ======5======gbest:0.0 -0.47659030560462123 -0.09435372693054181 -1.143958591168898 0.1 ======6======gbest:0.0 -0.37659030560462126 0.1 -1.043958591168898 0.1 ======7======gbest:0.0 -0.2765903056046213 0.1 -0.943958591168898 0.1 ======8======gbest:0.0 -0.27903394174424034 -0.0024436361396190653 -0.843958591168898 0.1 ======9======gbest:0.0 -0.38899022876058803 -0.10995628701634769 -0.7439585911688981 0.1 ======10======gbest:0.0 -0.35250959144436234 0.03648063731622572 -0.6439585911688981 0.1 ======11======gbest:0.0 ........ ........ ........ ........ 0.9999990975760489 -1.556071309835406E-6 ======98======gbest:1.0 1.0000000029937202 4.411275849326098E-9 1.0000001827158205 1.085139771533034E-6 ======99======gbest:1.0 0.9999999993730952 -3.6206249540206964E-9 1.0000001197322141 -6.298360633295484E-8 ======100======gbest:1.0

    我們可以從打印的數(shù)據(jù)看出來(lái),剛開(kāi)始x[0]和x[1]分散在最大值兩邊,然后x[0]和x[1]逐漸聚集到1的周?chē),這里,我們已經(jīng)收斂到x=1這個(gè)地方了,這正是我們要求的最大值,其最大值為1,下面是圖解過(guò)程。

    1.初始狀態(tài)

量子粒群算法_粒子群算法簡(jiǎn)介_(kāi)自話粒子群算法(超簡(jiǎn)單實(shí)例)

    2.第二次x[1]向左邊移動(dòng)了

量子粒群算法_粒子群算法簡(jiǎn)介_(kāi)自話粒子群算法(超簡(jiǎn)單實(shí)例)

   3.最后,兩點(diǎn)聚集在1上,上面多個(gè)圈是他們聚集的過(guò)程,可以看出來(lái),聚集過(guò)程是個(gè)越來(lái)越密集的過(guò)程。

量子粒群算法_粒子群算法簡(jiǎn)介_(kāi)自話粒子群算法(超簡(jiǎn)單實(shí)例)

 

 

最后

    粒子群算法,相對(duì)于我上次提到的遺傳算法而言編碼要簡(jiǎn)單很多,同樣屬于進(jìn)化算法,但是粒子群算法并沒(méi)有像遺傳算法那樣有選擇交叉變異這樣的過(guò)程,而更多的是體現(xiàn)在追蹤單個(gè)粒子和共享集體最優(yōu)信息來(lái)實(shí)現(xiàn)向最優(yōu)空間搜索的形式,但是正由于它不同于遺傳算法那樣去忽略個(gè)體的一些內(nèi)在聯(lián)系,所以往往會(huì)陷入局部最優(yōu),所以,在粒子群算法加入像遺傳算法中的變異或者模擬退火等,可以跳過(guò)這個(gè)局部最優(yōu)解。

    而慣性權(quán)值對(duì)于函數(shù)收斂速度和是否收斂有很大的決定作用,兩個(gè)學(xué)習(xí)參數(shù)c1,c2的制定也同等重要,但是即使這樣,它也沒(méi)有遺傳算法中會(huì)有多個(gè)參數(shù)去維護(hù),所以整個(gè)算法就那一個(gè)公式就行了,相當(dāng)?shù)那逦。在遺傳算法中的信息的共享是染色體互相之間通過(guò)交叉共享,所以在搜索移動(dòng)過(guò)程顯得平均緩慢,而粒子群算法是根據(jù)gbest來(lái)決定整個(gè)集群的單向移動(dòng),所以相對(duì)遺傳算法,更快的收斂。

    這不由得讓我想到了熵這個(gè)概念,在諸如我們社會(huì)甚至宇宙這樣復(fù)雜的系統(tǒng),我們都處于一個(gè)無(wú)序的狀態(tài),屬于熵增狀態(tài),像粒子群,遺傳算法,對(duì)群體的研究,體現(xiàn)的智能不就是在這個(gè)無(wú)序的系統(tǒng)提供有序的能量,然后它就逐漸有序了。對(duì)于智能,我想我有更深的體會(huì)了。這段話屬于發(fā)神經(jīng),不作參考。

注:本博文版權(quán)屬BreezeDust所有

歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明:


  本文關(guān)鍵詞:粒子群算法,由筆耕文化傳播整理發(fā)布。



本文編號(hào):66733

資料下載
論文發(fā)表

本文鏈接:http://sikaile.net/jianzhugongchenglunwen/66733.html


Copyright(c)文論論文網(wǎng)All Rights Reserved | 網(wǎng)站地圖 |

版權(quán)申明:資料由用戶54ef9***提供,本站僅收錄摘要或目錄,作者需要?jiǎng)h除請(qǐng)E-mail郵箱bigeng88@qq.com
亚洲欧美日本国产不卡| 不卡一区二区高清视频| 亚洲中文字幕综合网在线| 国产日韩欧美国产欧美日韩 | 亚洲中文字幕有码在线观看| 日本女优一区二区三区免费| 久热99中文字幕视频在线| 国产91麻豆精品成人区| 日本一级特黄大片国产| 99久久免费看国产精品| 亚洲国产成人久久一区二区三区| 又黄又爽禁片视频在线观看| 亚洲一级二级三级精品| 亚洲另类女同一二三区| 国产一区二区三区不卡| 亚洲国产另类久久精品| 日韩亚洲精品国产第二页| 国产免费无遮挡精品视频| 国产精品欧美日韩中文字幕| 亚洲一区二区三区精选| 国产欧美高清精品一区| 久久99这里只精品热在线| 亚洲人妻av中文字幕| 亚洲av日韩av高潮无打码| 欧美大黄片在线免费观看| 欧美日韩综合综合久久久| 欧美加勒比一区二区三区| 国产精品人妻熟女毛片av久| 美女被啪的视频在线观看| 国内女人精品一区二区三区| 国产传媒中文字幕东京热| 国产毛片不卡视频在线| 免费在线播放一区二区| 翘臀少妇成人一区二区| 国产精品九九九一区二区| 免费观看一级欧美大片| 中文字幕亚洲精品乱码加勒比| 在线观看国产午夜福利| 午夜久久久精品国产精品| 日韩特级黄片免费观看| 日本高清视频在线观看不卡 |