hello,大家好。各位可点击此处,访问公众号官方店铺。谨防上当受骗,感谢各位支持!
今天为各位讲解粒子群优化(PSO)算法,我们之前在基于粒子群算法的多目标搜索算法讲解(附MATLAB代码)这篇推文讲到过PSO,但由于时间久远,所以先带领各位回顾一下PSO。
01 | 粒子群的含义
粒子群优化算法顾名思义是一种群智能优化算法,在使用PSO求解问题时,每一个粒子可以被看做问题的一个解。既然是PSO是智能优化算法,那么在搜索问题解的过程中,PSO一定会存在其与其它智能优化算法不同的地方,PSO的独特之处主要在于PSO是通过全局更新与个体更新相结合的方式更新粒子的位置。
02 | 全局最优粒子和个体最优粒子
粒子群中包含若干个粒子,粒子群中的粒子在搜索过程中通过若干次迭代,不断更新粒子位置最终完成搜索,以找到最终的解。
那么现在就存在两个问题:
1)既然进行若干次迭代,那么每一次迭代时当代的最优粒子个体,不一定比上一代的最优粒子个体更优秀,或者比上几代的最优粒子个体更优秀,这是我们必须选择一个到当前迭代完成时的最好粒子个体作为整个粒子群的“标杆”,这个“标杆”就是全局最优粒子,它是随着迭代次数的增加,可能会不断发生变化的。
2)全局最优粒子是整个粒子群所有粒子到当前迭代完成时的最好粒子,相较之下,个体最优粒子就是当前粒子到当前迭代完成时的最好粒子。
举一个例子,假设目标函数为
粒子1:2 2
粒子2:1 1
粒子3:-3 2
粒子4:-5 0
粒子5:-5 -1
粒子1的目标函数值
粒子2的目标函数值
粒子3的目标函数值
粒子4的目标函数值
粒子5的目标函数值
初始全局最优粒子为粒子2。第一次迭代,假设各个粒子位置更新情况如下:
粒子1:0 1
粒子2:1 -1
粒子3:-3 0
粒子4:-3 -2
粒子5:-5 -2
粒子1的目标函数值
粒子2的目标函数值
粒子3的目标函数值
粒子4的目标函数值
粒子5的目标函数值
在第一次迭代完成时,全局最优粒子变为粒子1。粒子3的个体最优粒子为第一次迭代完成时的粒子位置,粒子4的个体最优粒子为第一次迭代完成时的粒子位置,而粒子5的个体最优粒子为初始时的粒子位置。
03 | 粒子速度和位置的更新
在对全局最优粒子和个体最优粒子有一个直观的了解以后,接下来详细讲解粒子群中各个粒子的位置是如何更新的。
我们首先必须明确一点:粒子位置更新的目的是搜索到更好的解。
就如上面的那个例子,初始全局最优粒子为粒子2,此时的全局最优目标函数值为2。但是在迭代一次后,即粒子群的位置更新一次后,全局最优粒子更新为粒子1,此时的全局最优目标函数值为1。那么就可以看出随着粒子群位置的更新,我们搜索到的解的质量也随之提高。
PSO算法中粒子位置的更新离不开速度的影响,因此粒子位置更新的公式如下:
其中k为迭代次数;
04 | PSO算法MATLAB代码实例
代码地址链接:
Video Tutorial of PSO implementation in MATLAByarpiz.comSphere函数是PSO算法的目标函数,即
%
接下来的代码是PSO算法的主程序脚本。
%
全局最优粒子的位置如下(一个1行10列的矩阵):
全局最优粒子的目标函数值如下:
运算过程曲线图如下:
今天为各位讲解了PSO的基本操作流程,并用一个实例来阐述如何使用PSO求解连续优化问题。
下期我们将讲解如何使用PSO求解离散优化问题,敬请期待!
最后,祝各位周末愉快!
更多精彩尽在:优化算法交流地
往期精选
- 号内搜索
- MATLAB数学建模教学(二) | 如何使用YALMIP检验数学模型的正确性?
- 优化算法交流地免费代码合集(2020年9月6日更新)
- 这本高质量的智能优化算法自学书籍,你下载了吗?
- 数学建模上分利器,小论文中稿神器,赶快学习近15年来较新颖的智能优化算法!
- 这个高质量的MATLAB自学网站,你收藏了吗?
- 免费代码 | 头脑风暴优化(BSO)算法求解旅行商问题(TSP)MATLAB代码
- 头脑风暴优化(BSO)算法求解旅行商问题(TSP)(附MATLAB代码)
- 一种新颖的交叉算子——头脑风暴优化(BSO)算法求解旅行商问题(TSP)预备知识
- 头脑风暴优化(BSO)算法(附MATLAB代码)
- 如何自学智能优化算法?
- 不是吧,MATLAB代码居然能直接转成C/C++代码
- 遗传模拟退火算法求解旅行商(TSP)问题MATLAB代码讲解
- 遗传模拟退火算法求解旅行商(TSP)问题
- 车辆路径问题(VRP)合集
- 旅行商问题(TSP)合辑
- MATLAB导入txt文件技巧大全
- 遗传算法(GA)求解旅行商问题(TSP)MATLAB代码讲解
- 遗传算法求解0-1背包问题(附matlab源代码)
- 模拟退火(SA)算法求解旅行商 (TSP)问题MATLAB代码讲解
- 多目标优化 | 基于NSGA-II的多目标0-1背包问题求解(附matlab代码)
- 多目标优化 | NSGA-II进阶教程(全网首个三目标优化教程)
- 机器学习 | 基于遗传算法的BP神经网络优化算法(附MATLAB代码)
- 遗传算法求解车间调度问题(附MATLAB代码)
- 多目标优化 | NSGA-II
- word转换为pdf后图片失真的解决办法(全网首发)
- 机器学习 | 简单实现Bp神经网络
- 二维装箱问题之BL法修正版(附MATLAB代码)
- 快速入门文献管理软件-EndNote X9
- 什么?都2020年了,你还不知道知网检索的这些技巧?
- 最小二乘法(附MATLAB代码)
- NSGA-II多目标优化算法讲解(附MATLAB代码)
- 基于人工势场法的机器人二维路径规划(附MATLAB代码)
- 基于粒子群算法的多目标搜索算法讲解(附MATLAB代码)
- 蚁群算法通俗讲解(附MATLAB代码)
- 混合粒子群算法通俗讲解(附MATLAB代码)
知乎 | bilibili:随心390