粒子群算法

粒子群优化算法/微粒群算法
英文:particle swarm optimization 简称 pso

1.人工智能与人工生命

人工生命:研究生命行为
人工智能:不光研究生命行为,更要应用到人类生活中
人工智能的提出早于人工生命
生命行为:繁殖、进化、信息交换与处理、决策等

2.粒子群优化算法

最初目的只是研究鸟类行为。但现在多被当作一种最优化算法。
算法种类:PSO 、Adaptive PSO 等

population 称为 swarm
candidate solution 称为 particles,即每个粒子就代表一种解
particles的运动由各自已知的最好位置与全局最好位置来决定(全局最好位置:所有particle各自已知的最好位置中的最好位置)
f为适应度函数/损失函数/目标函数,适应度即适应度函数的值

================================================
详细说明
================================================
模型m(x,β),数据点(x,y),未知参数β,目标函数f=[y-m(x,βi)]^2   β会有多种,βi表示第i种解
目的:求解β,β=argmin(f)
目标函数由你来自行设定,我只是举个例子

第i个粒子即βi,是一个向量  β_i = [β_i,1 ,β_i,2 , β_i,3 ,..., β_i,n] 
第i个例子所经历过的最好位置 P_i = [P_i,1 , P_i,2 , P_i,3 ,..., P_i,n]
所有粒子所经历过的最好位置中的最好位置 Pg = [Pg_1 , Pg_2 , Pg_3 ,..., Pg_n]

更新第i个粒子的第j个元素及其速度
V_i,j+1 = W*V_i,j + C1*Rand()*(P_i,j - X_i,j) + C2*Rand()*(Pg_ j - X_i,j)
X_i,j+1 = X_i,j + V_i,j 
Rand()为[0,1]的随机数
V_i,j由预先设定的Vmax_ j所限制
C1 C2为加速常数,也叫学习因子
W为惯性权重

算法:
初始化每个粒子的位置与速度
初始化每个粒子的最好位置,初始化全局最好位置
计算每个粒子的适应度
对于第i个粒子,如果在该位置的适应度好于P_i的适应度,则将该位置作为P_i
对于第i个粒子,如果在该位置的适应度好于Pg的适应度,则将该位置作为Pg
更新粒子位置与速度
满足条件,则停止迭代(比如可设置Pg的适应度达到m即停止迭代,或设定一个最大迭代数)

思考:
W=0 为局部最优化算法,W != 0 才能让粒子从局部最优冲出去,才可能达到全局最优
Vmax 最大速度、Gmax最大迭代数,这两个的设置都值得研究,太大太小都不行
C1 = 0 收敛比PSO快,但 针对复杂问题容易陷入局部最优
C2 = 0 则得到解的几率很小

我认为:
W*V_i,j 为粒子的惯性思维,即不思考,原来这么做现在怎么做
C1*Rand()*(P_i,j - X_i,j) + C2*Rand()*(Pg_ j - X_i,j)为粒子的思考,结合自己所经历的与别人经历的来思考
所以粒子最终的速度由两部分决定,且有最大速度限制
WIKI上用惯性+认知+社会解释三部分,当然你也可以改进这个算法嘛!不一定就这三部分。

 

参考:
https://blog.51cto.com/aaron8967/1047228
https://blog.csdn.net/loveC__/article/details/89675117
https://blog.csdn.net/j_jiajia/article/details/106469555
《改进的粒子群优化算法(APSO和DPSO)研究》

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值