github代碼地址:https://github.com/BecauseY/optimization-algorithm
算法介紹
PSO是粒子群優化算法(——Particle Swarm Optimization)的英文縮寫,是一種基于種群的隨機優化技術,由Eberhart和Kennedy于1995年提出。粒子群算法模仿昆蟲、獸群、鳥群和魚群等的群集行為,這些群體按照一種合作的方式尋找食物,群體中的每個成員通過學習它自身的經驗和其他成員的經驗來不斷改變其搜索模式。
算法流程
首先說一下參數,有一個種群的概念,種群中每一個個體都可以看作問題的一個解,這個解通過更新自己來最終得到最優解。每一個解可以看作一個鳥(或者一個粒子),所有的鳥都在一個n維空間進行搜索,每個鳥都有一個位置和速度,這個位置就是問題的解。通過適應性函數來判斷目前位置的好壞,然后更新自己的位置和速度。
該算法是每個鳥向自己的歷史最優解(最佳位置)和所有鳥的歷史最優解(最佳位置)進行學習的,通過以下公式可以看出:
t時刻到t+1時刻的速度:
速度更新
下一時刻位置:
位置更新
參數解釋
算法流程圖