github代碼地址:https://github.com/BecauseY/optimization-algorithm
算法介紹
PSO是粒子群優(yōu)化算法(——Particle Swarm Optimization)的英文縮寫(xiě)留攒,是一種基于種群的隨機(jī)優(yōu)化技術(shù)俏扩,由Eberhart和Kennedy于1995年提出笤受。粒子群算法模仿昆蟲(chóng)、獸群夫壁、鳥(niǎo)群和魚(yú)群等的群集行為,這些群體按照一種合作的方式尋找食物沃疮,群體中的每個(gè)成員通過(guò)學(xué)習(xí)它自身的經(jīng)驗(yàn)和其他成員的經(jīng)驗(yàn)來(lái)不斷改變其搜索模式盒让。
算法流程
首先說(shuō)一下參數(shù),有一個(gè)種群的概念司蔬,種群中每一個(gè)個(gè)體都可以看作問(wèn)題的一個(gè)解邑茄,這個(gè)解通過(guò)更新自己來(lái)最終得到最優(yōu)解。每一個(gè)解可以看作一個(gè)鳥(niǎo)(或者一個(gè)粒子)俊啼,所有的鳥(niǎo)都在一個(gè)n維空間進(jìn)行搜索肺缕,每個(gè)鳥(niǎo)都有一個(gè)位置和速度,這個(gè)位置就是問(wèn)題的解。通過(guò)適應(yīng)性函數(shù)來(lái)判斷目前位置的好壞搓谆,然后更新自己的位置和速度炒辉。
該算法是每個(gè)鳥(niǎo)向自己的歷史最優(yōu)解(最佳位置)和所有鳥(niǎo)的歷史最優(yōu)解(最佳位置)進(jìn)行學(xué)習(xí)的,通過(guò)以下公式可以看出:
t時(shí)刻到t+1時(shí)刻的速度:
下一時(shí)刻位置: