粒子群优化算法(Particle Swarm Optimization,PSO)属于进化算法的一种,通过迭代寻找最优解。
PSO算法包含以下部分:
价值函数 y = f ( x , a ) y=f(x,a) y=f(x,a),其中 a a a为模型参数, x x x为待求变量,我们希望求得令 y y y最小的 x x x
N N N个粒子,每个粒子为一个矢量,其维数与待求变量一致
每个粒子有两个属性,速度 v v v和位置 x x x
粒子最优位置 l b e s t lbest lbest,每个粒子有一个粒子最优位置,为其历史上到达过的使价值函数最低的位置
全局最优位置 g b e s t gbest gbest,为所有粒子到达过的使价值函数最低的位置
PSO算法的基本流程如下:
随机初始化N个粒子的位置、速度
对每次迭代:
更新各粒子最优位置、最优值
更新全局最优位置、最优值
检查是否满足结束条件
对每个粒子:
v = C * v + M_1 * R_1 * (gbest - x) + M_2 * R_2 * (lbest - x)
x = x + v
python实现PSO的完整程序:
import numpy as np
from inspect import isfunction
import csv
class Particle:
def __init__(self, dimension, velocity_limit, value_limit):
self.position