粒子群演算法

2021-07-23 21:57:06 字數 1174 閱讀 2630

如前所述,pso模擬鳥群的捕食行為。設想這樣乙個場景:一群鳥在隨機搜尋食物。在這個區域裡只有一塊食物。所有的鳥都不知道食物在那裡。但是他們知道當前的位置離食物還有多遠。那麼找到食物的最優策略是什麼呢。最簡單有效的就是搜尋目前離食物最近的鳥的周圍區域。

pso從這種模型中得到啟示並用於解決優化問題。pso中,每個優化問題的解都是搜尋空間中的乙隻鳥。我們稱之為「粒子」。所有的粒子都有乙個由被優化的函式決定的適應值(fitness value),每個粒子還有乙個速度決定他們飛翔的方向和距離。然後粒子們就追隨當前的最優粒子在解空間中搜尋。

pso 初始化為一群隨機粒子(隨機解)。然後通過迭代找到最優解。在每一次迭代中,粒子通過跟蹤兩個"極值"來更新自己。第乙個就是粒子本身所找到的最優解,這個解叫做個體極值pbest。另乙個極值是整個種群目前找到的最優解,這個極值是全域性極值gbest。另外也可以不用整個種群而只是用其中一部分作為粒子的鄰居,那麼在所有鄰居中的極值就是區域性極值。

在找到這兩個最優值時,粒子根據如下的公式來更新自己的速度和新的位置:

v = w * v + c1 * rand() * (pbest - present) + c2 * rand() * (gbest - present) (a)

present = present + v (b)

v 是粒子的速度, w是慣性權重,present 是當前粒子的位置. pbest and gbest 如前定義 rand () 是介於(0, 1)之間的隨機數. c1, c2 是學習因子. 通常 c1 = c2 = 2.

c#源**如下:

using system;

using system.linq;

namespace msalgorithm

/// /// 內部函式,超球函式

///

/// 當前位置向量

/// 位置

static double f1(double x)

/// /// 獲取全域性最優適應度

///

///

public double getgbestf()

for (int t = 0; t < 5000; t++)

//改變全域性最優

if (p1.f < gbestf)}}

return gbestf;}}

}

執行的結果圖示:

粒子群優化演算法 粒子群演算法

粒子群演算法 particle swarm optimization,pso 屬於進化演算法的一種,該演算法最初是受到飛鳥集群活動的規律性啟發,進而利用群體智慧型建立的乙個簡化模型。粒子群演算法在對動物集群活動行為觀察基礎上,利用群體中的個體對資訊的共享使整個群體的運動在問題求解空間中產生從無序到有...

粒子群演算法

一 粒子群演算法的歷史 粒子群演算法源於複雜適應系統 complex adaptive system,cas cas理論於1994年正式提出,cas中的成員稱為主體。比如研究鳥群系統,每個鳥在這個系統中就稱為主體。主體有適應性,它能夠與環境及其他的主體進行交流,並且根據交流的過程 學習 或 積累經驗...

粒子群演算法

粒子群演算法也稱粒子群優化演算法 鳥群覓食演算法pso 屬於進化演算法的一種,和模擬退火演算法相似,它從隨機解出發通過迭代尋找最優解,通過適應度來評價解的品質,比遺傳演算法規則更為簡單。通過追隨當前搜尋到的最優值來尋找全域性最優。實現容易 精度高 收斂快是一種並行演算法。一 演算法介紹 1 每個尋優...