PSO粒子群算法

它是通过一个适应度函数来选取一个目标函数的最优参数组合

用什么适应度函数就得具体问题具体分析了

下面来讲解下他的过程

 鸟被抽象为没有质量和体积的微粒(点),并延伸到N维空间,粒子i在N维空间的位置表示为矢量Xi=(x1,x2,…,xN),飞行速度表示为矢量Vi=(v1,v2,…,vN)。每个粒子都有一个由目标函数决定的适应值(fitness value),并且知道自己到目前为止发现的最好位置(pbest)和现在的位置Xi。这个可以看作是粒子自己的飞行经验。除此之外,每个粒子还知道到目前为止整个群体中所有粒子发现的最好位置(gbest)(gbest是pbest中的最好值),这个可以看作是粒子同伴的经验。粒子就是通过自己的经验和同伴中最好的经验来决定下一步的运动


详细过程:https://blog.youkuaiyun.com/myarrow/article/details/51507671

————————————————

首先以一个求两个参数的函数最小值举例,他的目标函数就是这个函数了,他的适应度函数就是最小值;

算法流程:

1.初始化

设置最大迭代次数(迭代次数过小则结果不收敛,迭代次数过大则浪费时间);粒子群规模,即初始化多少个微粒;个体学习因子c1,群体学习因子c2(基本都设为2);惯性因子w(基本上设定0.4-0.9);

初始化N个微粒的速度、位置,随机生成的,两个数组都是N*2的。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6LCBLQ==,size_13,color_FFFFFF,t_70,g_se,x_16

2.设定适应度函数

3.更新粒子速度、位置

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6LCBLQ==,size_20,color_FFFFFF,t_70,g_se,x_16

 就像下图所示,微粒1知道目前的最好位置是绿色圈位置,但是它自己也有自己的想法,想着:我往他那个方向移动,但是同时我又在我自己周围寻找更优的位置,(这个优就是以适应度函数来评判),不管更新自己的局部最优位置,如果更优,则同时更新全局最优位置。到达迭代次数后,那个全局最优位置即为所求参数组合。

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6LCBLQ==,size_19,color_FFFFFF,t_70,g_se,x_16

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值