2022.07.09更新:
更简洁的实现请点击这里
原博文:
答疑:
我把答疑放在最前面了。很多小伙伴真的是零基础,既不懂matlab也不懂粒子群算法。因此我把最常问我的问题总结一下。
Q1:为什么我把直接把代码复制过去不能运行r> A1:因为这个代码没有目标函数,你需要设置求解的函数才能计算吧。下文有推荐的测试函数,copy过来可以直接用。
Q2:为什么设置了目标函数还是 错r> A2:设置目标函数后,需要针对目标更改参数。最起码你得把维度数和求解范围设置对(pso1_mian.m的第16行和第18行)。不然就很可能不能运行。
Q3:为什么每次运行的结果不一样r> A3:进化算法都会有这种现象,尤其是在目标函数很复杂的情况下,可能每次的结果差异都很大。调整参数也许能缓解这种情况,但是需要你对进化算法有很深的理解。
Q4:为什么我运行后没有函数图像,只有收敛过程图像r> A4:只有2维和3维的目标函数能画图,高维是没法画图的。
以下是正文:
如果你还不懂粒子群的原理,可以参考我这个博文:初探粒子群优化算法
整个程序分为5个脚本
- pso1_mian.m:主程序,在此脚本内设置参数。
- pso1_im.m:画出函数图像(仅1维和2维)
- pso1_in.m:初始化
- pso1_in2.m:迭代寻优并输出结果
- 另外还有一个目标函数,单独为一个脚本。
-
推荐的测试函数—>这里
-
支持任意维度目标函数的寻优
-
支持动态调整参数(惯性因子随迭代减小, c1 , c2 c_1,c_2c1?,c2?的比值随迭代增大)
-
可视化粒子运动位置
先上运行结果图
下面是源码
1.pso1_mian.m
这里的目标函数用函数句柄的形式调用(第15行)
- pso1_im.m
3.pso1_in.m
- pso1_in2.m
写代码不容易,要拿去用的小伙伴来个三连吧!
文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览34469 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!