粒子群最佳化（Particle Swarm Optimization PSO），又稱粒子群演演算法、微粒群演算法，是由 J Kennedy 和 R C Eberhart 等於 1995 年開發的一種演化計算技術，來源於對一個簡化社會模型的模擬。其中 群（swarm） 來源於微粒群符合 M M Millonas 在開發應用於人工生命（artificial life）的模型時所提出的群體智慧的 5 個基本原則。粒子（particle） 是一個折衷的選擇，因為既需要將群體中的成員描述為沒有質量、沒有體積的，同時也需要描述它的速度和加速狀態。 PSO 演算法最初是為了圖形化地模擬鳥群優美而不可預測的運動。而透過對動物社會行為的觀察，發現在群體中對資訊的社會共享提供一個演化的優勢，並以此作為開發演算法的基礎。透過加入近鄰的速度匹配、並考慮了多維搜尋和根據距離的加速，形成了 PSO 的最初版本。之後引入了慣性權重 w 來更好的控制開發（exploitation）和探索（exploration），形成了標準版本。為了提高粒群演算法的效能和實用性，中山大學、（英國）格拉斯哥大學等又開發了自適應（Adaptive PSO）版本和離散（discrete）版本。 PSO 演算法屬於一種萬能啟發式演演算法，能夠在沒有得知太多問題資訊的情況下，有效的搜尋具有龐大解空間的問題並找到候選解，但同時不保證其找到的最佳解為真實的最佳解。 演算法原理 PSO 演算法是基於群體的，根據對環境的適應度將群體中的個體移動到好的區域。然而它不對個體使用演化運算元，而是將每個個體看作是 D 維搜尋空間中的一個沒有體積的微粒（點），在搜尋空間中以一定的速度飛行，這個速度根據它本身的飛行經驗和同伴的飛行經驗來動態調整。第 i 個微粒表示為 Xi xi1 xi2 xiD ，它經歷過的最好位置（有最好的適應值）記為 Pi pi1 pi2 piD，也稱為 pbest。在群體所有微粒經歷過的最好位置的索引號用符號 g 表示，即 Pg，也稱為 gbest 。微粒 i 的速度用 Vi vi1 vi2 viD 表示。對每一代，它的第 d1 維（1 d1 D）根據如下方程進行變化： vid1 wvidc1rand pidxidc2Rand pgdxid 1a xid1 xidvid1 1b 其中 w 為慣性權重（inertia weight），c1 和 c2 為加速常數（acceleration constants），rand 和 Rand 為兩個在 01 範圍裡變化的隨機值。 此外，微粒的速度 Vi 被一個最大速度 Vmax 所限制。如果當前對微粒的加速導致它的在某維的速度 vid 超過該維的最大速度 vmaxd，則該維的速度被限制為該維最大速度 vmaxd。 對公式（1a），第一部分為微粒先前行為的慣性，第二部分為 認知（cognition） 部分，表示微粒本身的思考；第三部分為 社會（social） 部分，表示微粒間的資訊共享與相互合作。 認知 部分可以由 Thorndike 的效應法則（law of effect）所解釋，即一個得到加強的隨機行為在將來更有可能出現。這裡的行為即 認知，並假設獲得正確的知識是得到加強的，這樣的一個模型假定微粒被激勵著去減小誤差。 社會 部分可以由 Bandura 的替代強化（vicarious reinforcement）所解釋。根據該理論的預期，當觀察者觀察到一個模型在加強某一行為時，將增加它實行該行為的機率。即微粒本身的認知將被其它微粒所模仿。 PSO 演算法使用如下心理學假設：在尋求一致的認知過程中，個體往往記住自身的信念，並同時考慮同事們的信念。當其察覺同事的信念較好的時候，將進行適應性地調整。 標準 PSO 的演算法流程如下： 初始化一群微粒（群體規模為 m ），包括隨機的位置和速度； 評價每個微粒的適應度； 對每個微粒，將它的適應值和它經歷過的最好位置 pbest 的作比較，如果較好，則將其作為當前的最好位置 pbest； 對每個微粒，將它的適應值和全域性所經歷最好位置 gbest 的作比較，如果較好，則重新設定 gbest 的索引號； 根據方程（1）變化微粒的速度和位置； 如未達到結束條件（通常為足夠好的適應值或達到一個預設最大代數 Gmax ），回到（2）。 演算法引數 PSO 引數包括：群體規模 m ，慣性權重 w ，加速常數 c1 和 c2 ，最大速度 Vmax，最大代數 Gmax。 Vmax 決定在當前位置與最好位置之間的區域的解析度（或精度）。如果 Vmax 太高，微粒可能會飛過好解，如果 Vmax 太小，微粒不能進行足夠的探索，導致陷入區域性優值。該限制有三個目的：防止計算溢位；實現人工學習和態度轉變；決定問題空間搜尋的粒度。 慣性權重 w 使微粒保持運動的慣性，使其有擴充套件搜尋空間的趨勢，有能力探索新的區域。 加速常數 c1 和 c2 代表將每個微粒推向 pbest 和 gbest 位置的統計加速項的權重。低的值允許微粒在被拉回來之前可以在目標區域外徘徊，而高的值導致微粒突然的衝向或者越過目標區域。 如果沒有後兩部分，即 c1 c2 0，微粒將一直以當前的速度飛行，直到到達邊界。由於它只能搜尋有限的區域，將很難找到好的解。 如果沒有第一部分，即 w 0，則速度只取決於微粒當前的位置和它們歷史最好位置 pbest 和 gbest ，速度本身沒有記憶性。假設一個微粒位於全域性最好位置，它將保持靜止。而其它微粒則飛向它本身最好位置 pbest 和全域性最好位置 gbest 的加權中心。在這種條件下，微粒群將統計的收縮到當前的全域性最好位置，更像一個區域性演算法。 在加上第一部分後，微粒有擴充套件搜尋空間的趨勢，即第一部分有全域性搜尋的能力。這也使得 w 的作用為針對不同的搜尋問題，調整演算法全域性和區域性搜尋能力的平衡。 如果沒有第二部分，即 c1 0，則微粒沒有認知能力，也就是 只有社會（socialonly） 的模型。在微粒的相互作用下，有能力到達新的搜尋空間。它的收斂速度比標準版本更快，但是對複雜問題，比標準版本更容易陷入區域性優值點。 如果沒有第三部分，即 c2 0，則微粒之間沒有社會資訊共享，也就是 只有認知（cognitiononly） 的模型。因為個體間沒有互動，一個規模為 m 的群體等價於 m 個單個微粒的執行。因而得到解的機率非常小。 收斂性 收斂性的數學證明幫助了 PSO 的發展和應用，但此類分析具有很大的侷限性。為 PSO 加入正交學習後，演算法的全域性收斂、收斂精度及穩健可靠性都得到了提高。 外部連結 DMOZ Particle Swarm People PSO 原始碼連結 Parameter Estimation of a Pressure Swing Adsorption Model for Air Separation Using Multiobjective Optimisation and Support Vector Regression ModelYang Liu 2013 Automatic calibration of a rapid flood spreading model using multiobjective optimisations Yang Liu 2013 httpswebarchiveorgweb20160507233728httpuserwebengglaacukyunliga_demo（格拉斯哥大學的互動式群體演化線上學習課件 EA_demo，可以幫助讀者更好地理解進化及粒群演算法，允許使用者直接在網頁上一代一代地手動執行，以看進化演算法是怎樣一步一步操作的，亦可在背景中批次執行，以觀察演算法的收斂和個體是否跳出區域性最優） Category 最最佳化演算法 Category 群集智慧 參考文獻