前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >粒子群算法-基础知识

粒子群算法-基础知识

作者头像
算法与编程之美
发布2021-11-15 16:27:04
6030
发布2021-11-15 16:27:04
举报

1 前言

这篇文章是对网友在文章的下的提问,做出的解答。

2 问题描述

粒子群算法相关的基础知识。

3 粒子群算法的简介

粒子群算法(particle swarmoptimization,PSO)由Kennedy和Eberhart在1995年提出,该算法对于Hepper的模拟鸟群(鱼群)的模型进行修正,以使粒子能够飞向解空间,并在最好解处降落,从而得到了粒子群优化算法。

PSO的优势在于简单,容易实现,无需梯度信息,参数少,特别是其天然的实数编码特点特别适合于处理实优化问题。同时又有深刻的智能背景,既适合科学研究,又特别适合工程应用。

4 应用场景

我们举一个应用场景:一群飞鸟在一个区域内寻找着一块食物,鸟儿不知道食物的具体位置,只知道自己与食物间的距离。如何最快的找到食物呢?那就是搜索目前距离食物最近的鸟儿周围的区域。

现在将每一只鸟儿当作一个粒子,在一个n维的空间中搜索食物,每一个粒子具有速度(v)和位置(x)两个属性。

PSO初始化为一群随机的粒子,通过不断地迭代找到最优解,每一次迭代都会根据该粒子自己目前找的最优位置(pbest)和整个粒子群目前找到的最优(gbest)来更新自己的位置和速度。

PSO基础逻辑:

基本PSO公式:

vi+1=w∗vi+c1∗rand1∗(pbesti−xi)+c2∗rand2∗(gbesti−xi)

xi+1= xi+ vi+1

w—惯性权重,一般来说取1。

rand1,rand2—(1,2)之间的随机数。

c1,c2—学习因子,一般取2。

pbesti ,gbesti—某个粒子第i维最优位置,整个粒子群第i维最优位置。

注意:每一个粒子的每一个维度都需要使用上面的基本PSO公式更新自己的位置和速度。

编写代码时我们还需要numpy(用于适应度公式的计算) ,random(用于生成rand1,rand2两个随机数),matplotlib.pyplot(用于绘制图表)掌握这三个第三方库的基础知识。

实习编辑:李欣容

稿件来源:深度学习与文旅应用实验室(DLETA)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档