简单聊聊粒子群算法

粒子群优化算法

该算法最早由Kennedy和Eberhart在1995年提出

Particle Swarm Optimization

灵感来源于对鸟类捕食问题的研究。

粒子的概念

适应度函数值评价粒子

没有选择交叉变异三个算子

一个是个体的极值,一个是群体的极值。

粒子通过个体极值和群体极值更新自身的速度和位置

多步之后才会出现个体极值的概念。

PSO有记忆的功能

粒子群优化算法既有对个体最优的保留,又有对全局最优的保留。但是遗传算法崇尚的只是全局最优,比较的范围只有全局。

遗传算法是互相共享信息,粒子群算法是单向的信息流动。

一般情况下,PSO收敛速度比遗传算法快,他不会破坏这个“最优”。

matlab自带工具箱利用一部分,称为子集

我们外部工具箱用的是全部个体,即全集

如果x产生变化之后超出了限定范围,则取端点值。

rands(0)从-1到1,rands(0)从0到2

重新加了figure之后,再空一行用plot,这会重新绘制出一个新的图像,否则会在原有的图像上进行绘制。

 

mse表示的是期望值和实际值之间的差的平方和。

var表示的是实际值和所有实际值的平均值的差的平方和。

cov表示的是协方差

 

warning off 可以在命令行中取消警告

 

cov(协方差)代码实现:

COR_UP=sum((E-mean(E)).*(D-mean(D)))

 

var(方差总数)表示的是实际值和所有实际值的平均值的差的平方和。代码实现:

var=sum((E-mean(E)).*(E-mean(E)))

 

mse(期望方差总数)表示的是期望值和实际值之间的差的平方和。代码实现:

mse=sum((E-D).*(E-D))

 

粒子群算法就好比,一个人在森林当中走,这个时候别人告诉他东南方向有一片空地,他自己凭借以前走过的经验直到正北方向有一片空地,于是他就采取一种折中措施,朝着东偏北的方向前进,认为这两个方向既然都有空地,那么他们“中间”出现空地的可能性就很大,于是就靠着这种感觉向“中间”出发,但是这两个方向到底哪一个占的考虑权重更大,这是由参数决定的。

从实际生活经验来讲,在社会经验和生活经验中采取折中措施,有一定道理,但是也没那么有道理。比如,你知道东北方向有座高山,东南方向也有一座高山,那么他们中间某个地方有很可能有一片高山吗?这倒不一定吧,山于山之间是山谷也完全有可能啊。只能说,这种算法是在已知条件有限的情况下根据这样一种经验,或者说“直觉”,作出的一种无奈选择。

matlab在数学建模中的应用,这本书里面讲ω越大,那么粒子飞翔的速度和位置更新的幅度也越大。仔细推敲,这一定吗?三个不确定的向量做合成,其中一个向量的模增大,那么总向量的模增大,这不一定。当然在最后的一个阶段内,这一次和上一次的速度是可以看成近似的,因为初始随机速度随着迭代代数的增大所起到的作用会越来越小,到最后,一段时间内的速度都可以近似看做是由全局最优和个体最优点去决定的速度。从而导致可以看成ω越大,保留的近似的上一次的速度越大,速度叠加起来就可以看做是两个夹角是锐角的向量叠加。但是反过来说,ω越大,那么这个“看成近似”所需要的代数也就越久,虽然从单词来讲好像增大了步进距离,但是从整体来讲“可以看成近似的代数”变少。综上,这是一个经验之谈,书上说的,我信了。

协同粒子算法?这个问题先留着。

 

 

 

plot3(zbest(1), zbest(2), fitnesszbest,'bo','linewidth',1.5)

‘bo’,b是blue蓝色的意思,O是画圈,linewidth,线条宽度。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值