粒子群演算法屬於智慧型演算法的一類,與該類演算法類似的還有蟻群演算法,遺傳演算法等。大家可以將這幾種演算法進行比較。
粒子群優化演算法(particle swarm optimization,pso)屬於進化演算法的一種,是通過模擬鳥群捕食行為設計的。從隨機解出發,通過迭代尋找最優解,通過適應度來評價解的品質。在這裡,我們舉乙個例子來深入理解一下該演算法:假設有一鳥群,在一座島上某個地方放有食物,但是鳥群並不知道食物在哪,只是知道與食物之間的距離。這時候鳥兒們很聰明,它們在目前距離食物最近的鳥的周圍搜尋,這樣它們可以更好更快的找到食物。
所有的粒子具有一下兩個屬性:
位置v速度x
pso初始化為一群隨機粒子(隨機解),然後通過迭代找到最優解。在每一次迭代種,粒子通過跟蹤兩個「極值」來跟新自己。第乙個就是粒子本身所找到的最優解pbest;另乙個極值是整個種群目前找到的最優解,及全域性極值gbest。粒子通過下面的公式來更新自己速度和位置:
速度變換公式:
vi+1=w∗vi+c1∗rand1∗(pbesti−xi)+c2∗rand2∗(gbesti−xi) v_=w*v_i+c_1*rand_1*(pbest_i-x_i)+c_2*rand_2*(gbest_i-x_i)v
i+1
=w∗v i
+c 1
∗rand 1
∗(pbest i
−x i
)+c 2
∗rand 2
∗(gbest i
−x i )
位置變換公式:
xi=xi+vi+1 x_i=x_i+v_x i
=x i
+v
i+1
以上式子中:
w為慣性因子,一般取1
c1,c2 c_1,c_2c 1
,c 2
為學習因子,一般取2
rand1,rand2 rand_1,rand_2rand 1
,rand 2
為(0,1)之間的隨機數
vi和xi v_i和x_iv i
和x i
分別表示粒子第i維的速度和位置
pbesti,,gbesti pbest_i,,gbest_ipbest i
,,gbest i
分別表示某個粒子最好位置第i維的值,整個種群最好位置第i維的值
注意:以上兩式是針對粒子的某乙個維度進行跟新的。對粒子的每一維,都要用上述的式子進行更新。
流程圖如下:
# coding: utf-8
import numpy as np
import random
import matplotlib.pyplot as plt
#程式my_pso = pso(pn=30, dim=1, max_iter=100)
my_pso.init_population()
fitness = my_pso.iterator()
# 畫圖
plt.figure(1)
plt.title("figure1")
plt.xlabel("iterators", size=14)
plt.ylabel("fitness", size=14)
t = np.array([t for t in range(0, 100)])
fitness = np.array(fitness)
plt.plot(t, fitness, color='b', linewidth=3)
plt.show()12
3456
78910
1112
13在上面我們計算x4−2x+3 x^4-2x+3x
4−2x+3的優化函式。
我們看一看結果:
1.迭代影象
2.迭代最後的結果可以看出來在x取0.1937左右,x4−2x+3 x^4-2x+3x
4−2x+3取得較優值
粒子群優化演算法 粒子群演算法
粒子群演算法 particle swarm optimization,pso 屬於進化演算法的一種,該演算法最初是受到飛鳥集群活動的規律性啟發,進而利用群體智慧型建立的乙個簡化模型。粒子群演算法在對動物集群活動行為觀察基礎上,利用群體中的個體對資訊的共享使整個群體的運動在問題求解空間中產生從無序到有...
粒子群優化演算法
粒子群優化演算法 1.概念 粒子群優化演算法 pso 是一種進化計算技術。源於對鳥群捕食的行為研究。粒子群優化演算法的基本思想 是通過群體中個體之間的協作和資訊共享來尋找最優解 pso的優勢 在於簡單容易實現並且沒有許多引數的調節。目前已被廣泛應用於函式優化 神經網路訓練 模糊系統控制以及其他遺傳演...
粒子群優化演算法
與ga演算法比較 粒子群優化 clc,clear all x 0 0.01 4 y hanshu x figure plot x,y hold on w 1 慣性因子 c1 2 c2 2 maxgen 30 迭代次數 sizepop 5 粒子個數 vmax 1 vmin 1 速度限制 popmax ...