一、粒子群演算法的概念
粒子群優化演算法(pso:particle swarm optimization) 是一種進化計算技術(evolutionary computation)。源於對鳥群捕食的行為研究。粒子群優化演算法的基本思想:是通過群體中個體之間的協作和資訊共享來尋找最優解.
pso的優勢:在於簡單容易實現並且沒有許多引數的調節。目前已被廣泛應用於函式優化、神經網路訓練、模糊系統控制以及其他遺傳演算法的應用領域。
二、粒子群演算法分析
1、基本思想
粒子群演算法通過設計一種無質量的粒子來模擬鳥群中的鳥,粒子僅具有兩個屬性:速度和位置,速度代表移動的快慢,位置代表移動的方向。每個粒子在搜尋空間中單獨的搜尋最優解,並將其記為當前個體極值,並將個體極值與整個粒子群裡的其他粒子共享,找到最優的那個個體極值作為整個粒子群的當前全域性最優解,粒子群中的所有粒子根據自己找到的當前個體極值和整個粒子群共享的當前全域性最優解來調整自己的速度和位置。下面的**很形象地展示了pso演算法的過程:
2、更新規則
pso初始化為一群隨機粒子(隨機解)。然後通過迭代找到最優解。在每一次的迭代中,粒子通過跟蹤兩個「極值」(pbest,gbest)來更新自己。在找到這兩個最優值後,粒子通過下面的公式來更新自己的速度和位置。
公式(1)的第一部分稱為【記憶項】,表示上次速度大小和方向的影響;公式(1)的第二部分稱為【自身認知項】,是從當前點指向粒子自身最好點的乙個向量,表示粒子的動作**於自己經驗的部分;公式(1)的第三部分稱為【群體認知項】,是乙個從當前點指向種群最好點的向量,反映了粒子間的協同合作和知識共享。粒子就是通過自己的經驗和同伴中最好的經驗來決定下一步的運動。以上面兩個公式為基礎,形成了pso的標準形式。
公式(2)和 公式(3)被視為標準pso演算法。
3、pso演算法的流程和偽**
4、pso演算法舉例
5、pso演算法的demo
#include
#include
#include
#include
#include
#include
#include
#include
using namespace eigen;
using namespace std;
const int dim = 1;//維數
const int p_num = 10;//粒子數量
const int iters = 100;//迭代次數
const int inf = 999999;//極大值
const double pi = 3.1415;
//定義粒子的位置和速度的範圍
const double v_max = 4;
const double v_min = -2;
const double pos_max = 2;
const double pos_min = -1;
//定義位置向量和速度向量
vectorpos;
vectorspd;
//定義粒子的歷史最優位置和全域性最優位置
vectorp_best;
double g_best;
//使用eigen庫定義函式值矩陣和位置矩陣
matrixf_test;
matrixpos_mat;
//定義適應度函式
double fun_test(double x)
//初始化粒子群的位置和速度
void init()
vectorvec;
for (int i = 0; i < p_num; ++i)
std::ptrdiff_t minrow, mincol;
f_test.row(0).mincoeff(&minrow, &mincol);//返回函式值矩陣第一行中極小值對應的位置
g_best = pos_mat(minrow, mincol);//初始化全域性最優位置
}void pso()
//更新函式值矩陣
for (int i = 0; i < p_num; ++i)
for (int i = 0; i < p_num; ++i)
g_best = *min_element(p_best.begin(), p_best.end());//獲取全域性最優位置
}cout << fun_test(g_best);
}
粒子群演算法 PSO
1995年美國社會心理學家kennedy和電氣工程師eberhart共同提出粒子群優化演算法 particle swarm optimization,pso pso演算法的基本思想利用生物學家heppner的生物群體模型,模擬鳥類覓食過程。鳥類飛行過程相互交流,當乙個鳥飛向棲息地時,其他鳥兒也會跟著...
粒子群優化演算法 PSO
粒子群優化演算法 pso particle swarm optimization 是一種進化計算技術 evolutionary computation 源於對鳥群捕食的行為研究。粒子群優化演算法的基本思想 是通過群體中個體之間的協作和資訊共享來尋找最優解 pso的優勢 在於簡單容易實現並且沒有許多引...
粒子群優化演算法 PSO
粒子群優化演算法 pso particle swarm optimization 是一種進化計算技術 evolutionary computation 源於對鳥群捕食的行為研究。粒子群優化演算法的基本思想 是通過群體中個體之間的協作和資訊共享來尋找最優解 pso的優勢 在於簡單容易實現並且沒有許多引...