最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

運籌說 第53期 | 智能優(yōu)化算法介紹之粒子群算法

2022-03-16 19:54 作者:運籌說  | 我要投稿

本期為大家?guī)淼氖沁\籌學(xué)智能優(yōu)化算法——粒子群算法(PSO)的講解。我們將簡單介紹一下粒子群算法的產(chǎn)生背景和基本思想,并重點介紹實現(xiàn)粒子群算法求解實際問題的Python及MATLAB相關(guān)代碼,以幫助大家更好的理解和運用粒子群算法。話不多說,我們一起來看看吧!

1、算法介紹

1.1、產(chǎn)生背景

自然界中的鳥群和魚群的群體行為一直是科學(xué)家的研究興趣所在。1990年,生物學(xué)家 Frank Heppner 提出了鳥群聚集模型,在他的仿真中,一開始每一只鳥都沒有特定的飛行目標(biāo),只是使用簡單的規(guī)則確定自己的飛行方向和飛行速度,當(dāng)有一只鳥飛到棲息地附近時,它周圍的鳥也會跟著飛向棲息地,最終整個鳥群都會落在棲息地。利用上面幾條簡單的規(guī)則,就可以非常接近地模擬出鳥群飛行的現(xiàn)象。l995年,美國社會心理學(xué)家James Kennedy和電氣工程師Russell Eberhart共同提出了粒子群算法(James Kennedy社會心理學(xué)家。自1994年起,他一直致力于粒子群算法的研究工作,目前在美國勞工部從事調(diào)查方法的研究工作。他在計算機科學(xué)和社會科學(xué)雜志和學(xué)報上發(fā)表過許多關(guān)于粒子群的論文。RusselI C.Eberhart 美國印第安納州普度大學(xué)電子與計算機工程系主任,IEEE會士,曾任IEEE神經(jīng)網(wǎng)絡(luò)委員會的主席,著有《計算智能:從概念到實現(xiàn)》等)。

該算法的提出是受對鳥類群體行為進(jìn)行建模與仿真的研究結(jié)果的啟發(fā)。他們的模型和仿真算法主要對Frank Heppner的模型進(jìn)行了修正,以使粒子飛向解空間并在最優(yōu)解處降落。它模擬鳥類的覓食行為,將求解問題的搜索空間比作鳥類的飛行空間,將每只鳥抽象成一個沒有質(zhì)量和體積的粒子,用它來表征問題的一個可能解,將尋找問題最優(yōu)解的過程看成鳥類尋找食物的過程,進(jìn)而求解復(fù)雜的優(yōu)化問題。

粒子群算法具有很好的生物社會背景而易于理解,由于參數(shù)少而容易實現(xiàn),對非線性、多峰問題均具有較強的全局搜索能力,已廣泛應(yīng)用于函數(shù)優(yōu)化、神經(jīng)網(wǎng)絡(luò)訓(xùn)練、模式分類、模糊控制等領(lǐng)域。

1.2、基本思想

在粒子群算法中,潛在解的改進(jìn)是合作的結(jié)果,而在進(jìn)化算法中則是因為競爭。這個概念使得群體智能有別于進(jìn)化算法。簡而言之,在進(jìn)化算法中,每一次迭代都有一個新的種群進(jìn)化,而在群智能算法中,每一代都有個體使自己變得更好。通過將群體中的個體看作在D維搜索空間中沒有質(zhì)量和體積的粒子,每個粒子以一定的速度在解空間運動,并向自身歷史最佳位置pbest和鄰域歷史最佳位置gbest聚集,實現(xiàn)對候選解的進(jìn)化。通俗來講,思路如下:
★1.每只鳥(粒子)隨機在一個位置搜索,評估這個地方的食物量。
★2.所有的鳥信息共享,選出當(dāng)前這群鳥遇到的食物量最多的位置作為飛行目標(biāo)的候選點g。
★3.每只鳥回顧自己的旅程,記住自己曾經(jīng)去過的食物量最多的位置p。
★4.每只鳥為了找到食物量更多的位置,于是向著g點飛行,但是考慮鳥兒飛行的慣性,也就是鳥兒無法從p和g點進(jìn)行選擇,由于慣性它會下一次飛行到達(dá)位置q?。
★5.如果小鳥們決定停止尋找,那么它們會選擇當(dāng)前的g點;否則繼續(xù)上述步驟來尋找它們的棲息地。

現(xiàn)在我們賦予鳥兒一些參數(shù):

·?N:群落中的粒子個數(shù),i=1,2,...,N
·?D:搜索空間的維度,j=1,2,...,D
·?C1:個體學(xué)習(xí)因子,也稱為個體加速因子。這個因子越大,鳥兒越傾向于飛往它自己曾去的食物量最多的地方。
·?C2:社會學(xué)系因子,也成為社會加速因子。這個因子越大,鳥兒越傾向于飛往其他鳥兒(同伴們)曾去的食物量最多的地方。
·?r1、r2:[0,1]上的隨機數(shù)。隨機代表著鳥兒比較佛系,他也不知道飛哪里。
·?w:慣性權(quán)重,也叫慣性系數(shù),這個數(shù)越大,代表著它不容易更改之前的運動路線,更傾向于探索未知領(lǐng)域。

根據(jù)以上參數(shù),速度和位置更新公式為:

式(1)中,第一部分表示粒子先前的速度,用于保證算法的全局收斂性能;第二部分、第三部分則使算法具有局部收斂能力。慣性權(quán)重w表示在多大程度上保留原來的速度:w較大,則全局收斂能力較強,局部收斂能力較弱;w較小,則局部收斂能力較強,全局收斂能力較弱。示意圖如下:


2、應(yīng)用案例

2.1、案例分析

問題描述(TSP問題):

假設(shè)有一個旅行商人要拜訪全國31個省會城市,全國31個省會城市的坐標(biāo)已給出,他需要選擇所要走的路徑,路徑的限制是每個城市只能拜訪一次,而且最后要回到原來出發(fā)的城市。并且要求所選路徑的總路程為所有路徑之中的最小值。

粒子群算法過程:

(1)初始化群體粒子個數(shù)N,粒子維數(shù)D,最大迭代次數(shù)T,學(xué)習(xí)因子c1、c2,慣性權(quán)重最大值Wmax,慣性權(quán)重最小值Wmin。

(2)初始化速度v和種群粒子位置x,計算個體適應(yīng)度值,獲得粒子個體最優(yōu)位置p和最優(yōu)值pbest,以及粒子群全局最優(yōu)位置g和最優(yōu)值gbest。

(3)根據(jù)權(quán)重值w,更新速度值v,進(jìn)行邊界條件處理判斷,并更新位置x,計算適應(yīng)度值,判斷是否替換粒子個體最優(yōu)位置p和最優(yōu)值pbest,以及粒子群全局最優(yōu)位置g和最優(yōu)值gbest。

(4)判斷是否滿足終止條件:如果滿足則結(jié)束搜索過程,輸出優(yōu)化值;如果不滿足,則繼續(xù)進(jìn)行迭代。

2.2、代碼實現(xiàn)

基于以上求解步驟及思想,借助MATLAB和Python兩種平臺分別實現(xiàn)粒子群算法求解TSP問題的詳細(xì)代碼以及最終的運行結(jié)果。由于篇幅有限,部分代碼如下(感興趣的小伙伴們關(guān)注“運籌學(xué)”公眾號后臺回復(fù)“粒子群算法MATLAB”及“粒子群算法Python”即可獲取完整代碼

(1)MATLAB

★代碼展示

MATLAB平臺實現(xiàn)求解PSO算法需要分別建立一個主函數(shù)文件和若干函數(shù),本案例群體的粒子數(shù)為500,每個粒子的維數(shù)為31,算法迭代進(jìn)化次數(shù)為200。加速度因子c1=0.5,c2=0.7,慣性權(quán)重w=0.96。生成隨機初始解的部分代碼如代碼1所示,適應(yīng)度函數(shù)的計算即路徑距離的部分代碼如代碼2所示。標(biāo)準(zhǔn)粒子群算法中速度位置的更新是直接采用加權(quán)的方式進(jìn)行,但是對于求解TSP問題難以直接套用。所以常見的做法是引用交換子和交換序進(jìn)行求解,也就是pij-xij 為粒子與個體極值的交換序,pgj-xij為粒子與全局極值的交換序,并以c1,c2的概率保留,之后更新各路徑總距離。部分代碼如代碼3所示。產(chǎn)生交叉算子和保留的過程由單獨的函數(shù)文件GenerateChangeNums、HoldByOdds計算。小伙伴們可以關(guān)注“運籌學(xué)”公眾號→后臺回復(fù)“粒子群算法MATLAB代碼”獲取完整代碼。

★代碼調(diào)用及運行結(jié)果

案例求解的最終結(jié)果和示意圖如下,途經(jīng)31個城市的最短路徑距離為16399??梢钥闯龊统跏冀庀啾?,優(yōu)化后的路徑方案更加合理,并且在進(jìn)化收斂速度方面性能較好。

(2)Python

★代碼展示

求解流程與上述步驟相同,程序的運行邏輯也基本一致。計算城市之間的距離和評價函數(shù)的部分代碼如代碼1所示,在這里引入了遺傳算法的輪盤賭的思想產(chǎn)生交叉算子,即采用混合型粒子群算法進(jìn)行求解,對慣性因子w、自我認(rèn)知因子c1、社會認(rèn)知因子c2分別以

的概率接受粒子本身逆序、當(dāng)前最優(yōu)解、全局最優(yōu)解作為子代。


由于篇幅有限,小伙伴們可以關(guān)注“運籌學(xué)”公眾號→后臺回復(fù)“粒子群算法Python”獲取完整代碼。

★代碼調(diào)用及運行結(jié)果
點擊運行,得到最短距離為15450??梢钥闯鲇捎诮徊嫘虻脑O(shè)計不同,使用第二種方法運行求解得到的結(jié)果相對更優(yōu)。

☆ 參考資料:

《人工智能導(dǎo)論》

【粒子群算法】:
blog.csdn.net/daaikuaic
【粒子群算法matlab實現(xiàn)】:
zhuanlan.zhihu.com/p/13
公眾號:python學(xué)習(xí)雜記:Python粒子群算法實現(xiàn)、數(shù)學(xué)建模:非常通俗易懂的粒子群算法(PSO)入門

本期的內(nèi)容就介紹到這里,想要進(jìn)一步了解運籌算法,關(guān)注本公眾號,快快學(xué)起來吧!

回復(fù)“粒子群算法MATLAB”獲得代碼!

運籌說

作者 | 陳楠

責(zé)編 | 劉文志

審核 | 徐小峰

運籌說 第53期 | 智能優(yōu)化算法介紹之粒子群算法的評論 (共 條)

使用qq登录你需要登录后才可以评论。
迭部县| 葵青区| 淮安市| 奉节县| 八宿县| 荣昌县| 林西县| 太康县| 青阳县| 民县| 镇赉县| 股票| 盐源县| 龙州县| 铜鼓县| 庆云县| 海安县| 湘潭县| 靖宇县| 江口县| 涟水县| 远安县| 香河县| 小金县| 福安市| 崇明县| 武安市| 余江县| 六安市| 呼伦贝尔市| 阜康市| 寿宁县| 金门县| 繁峙县| 东明县| 开江县| 出国| 罗源县| 收藏| 巴青县| 大城县|