智慧演算法-粒子群演算法(2)

語言: CN / TW / HK

theme: scrolls-light

一起養成寫作習慣!這是我參與「掘金日新計劃 · 4 月更文挑戰」的第16天,點選檢視活動詳情

1. 粒子群演算法

本節主要介紹粒子群演算法的改進思路及策略,首先回顧一下粒子群演算法:一群分散的鳥兒在隨機地飛行覓食,它們不知道食物所在的具體位置,在覓食過程中,每隻小鳥都會記錄自己飛行位置。突然,其中某一隻小鳥$A$發現好多玉米,於是就喊:“快來,我這裡有好多食物!”,然而,其他小鳥都只發現了零零星星的幾個玉米粒。於是,每個小鳥在飛行的時候就有了一個指導的方向(往小鳥A的位置飛),但是,每個小鳥都有不忍心放棄當前努力搜尋過的位置(小鳥們心想:我這裡剛才也找到點玉米粒,再繼續找找說不定比你還要多)。因此,它們最終決定結合自身的經驗整個群體的經驗,調整自己的飛行速度和所在位置,不斷地尋找更加接近食物的位置,最終使得群體聚集到食物位置。

粒子群演算法介紹以及例項詳解請參考智慧演算法-粒子群演算法 - 掘金 (juejin.cn)

2. 粒子群演算法改進策略

2.1 選擇思想

從種群中選擇出一個個體,將該個體的適應度與其它個體的適應度進行比較,若優於某個體,則每次給該個體記一分。對每個個體重複這個過程。根據每個個體的分數,對所有個體進行排列。選擇較好的前半部分個體,並複製它們,替代種群中較差的後半部分個體。在此過程中,最佳個體的適應度並未發生改變。

評價:此種改進策略收斂速度緩慢,相當於把差的粒子都替換了成優秀的粒子,導致所有粒子都很優秀,都比較相似,大家朝著最優秀的粒子進步速度就緩慢了。越是差距大,越知道自己的努力方向,越是都很優秀,大家差距越小,提升空間過小,進步緩慢。

2.2 雜交微粒群思想

微粒群中的每個微粒被賦予一個雜交概率,由使用者給定,與適應值無關。 在每次迭代時,依據雜交概率選擇一定數量的微粒進入雜交池,池內的微粒隨機地兩兩雜交,產生相同數目的子代,並用子代微粒取代父代微粒,以保持種群的微粒數目不變

微粒雜交計算方式請參考如下公式:

image.png

2.3 變異思想

測試所有粒子與當前最優的距離,當距離小於一定的數值的時候,可以拿出所有粒子的一個百分比(如10%,需根據題目自行確定)的粒子進行隨機初始化,讓這些粒子重新尋找最優值(給一些粒子隨機賦予新的位置,豐富粒子群)。

評價:此改進思想可以克服“早熟”(防止收斂過快而陷入區域性最優解)

2.4 小生境改進思想

小生境的簡單概述,自然界中往往特徵、性狀相似的物種相聚在一起,並在同類中交配繁衍後代。遺傳演算法中的小生境思想主要是將每一代個體劃分為若干類,每類選出優秀個體組成一個種群;

基於動態鄰域的改進微粒群演算法。 根據微粒的下標將微粒群體分割成若干個相鄰的區域,而不管它們在空間位置上如何。每次迭代時,種群中一個微粒到其它微粒之間的距離可以被算出來,並記錄下最大距離$dmax$,然後計算每一個粒子的 $‖𝑥𝑎−𝑥𝑏‖/𝑑max$,根據計算出的結果選擇相鄰的微粒,利用較小比值和較大比值作為選擇依據。公式中的$‖𝑥𝑎−𝑥𝑏‖$表示粒子$a$與粒子$b$的距離。