初步认识:粒子群算法为智能优化算法的一种,其全称为粒子群优化算法,源于对鸟群捕食的行为研究 。 该算法最初是受到飞鸟集群活动的规律性启发,利用群体中的个体对信息的共享使整个群体的运动再问题求解空间中从无序到有序的演化过程,从而求得一个可行解。
原理:用一种粒子来模拟上述的鸟类个体,每个粒子可视为N维搜索空间中的一个搜索个体,粒子的当前位置即为对应优化问题的一个候选解,粒子的飞行过程即为该个体的搜索过程.粒子的飞行速度可根据粒子历史最优位置和种群历史最优位置进行动态调整.粒子仅具有两个属性:速度和位置,速度代表移动的快慢,位置代表移动的方向。每个粒子单独搜寻的最优解叫做个体极值,粒子群中最优的个体极值作为当前全局最优解。不断迭代,更新速度和位置。最终得到满足终止条件的最优解。
应用:1.TSP(旅行商问题)这类组合优化问题
2.非线性整数规划问题(书店买书问题)
流程:
![](https://i-blog.csdnimg.cn/blog_migrate/4dff60d8603fd3b270e4e4a9f84d480e.png)
图1.基本流程图
![](https://i-blog.csdnimg.cn/blog_migrate/9af0caf2fdf3076ec6a1a9c255528c66.png)
图2.参数设置
(1) 设置参数
根据不同的题目设置参数的数量,迭代次数,上届与下届,及粒子的最大速度。
(2)初始化粒子
分别初始化粒子的速度及位置
x = zeros(n,narvs);
x(:,i) = x_lb(i) + (x_ub(i)-x_lb(i))*rand(n,1);
v = -vmax + 2*vmax .* rand(n,narvs);
(3)计算适应度
适应度可以理解为目标函数,以个体最优与群体最优为参考,更新粒子的速度以及更新粒子的位置。目标函数由题目的不同而自己定义。
(4)更新粒子速度和位置
循环迭代,更新粒子额速度和位置,并重新计算粒子的适应度
(5)更新群体最优适应度的位置
若已达到迭代次数,则此时的群体最优位置及为最优解。
核心公式:
这只鸟第
d
步的速度
=
上一步自身的速度惯性
+
自我认知部分
+
社会认知部分
v(d) = w*v(d‐1) + c1*r1*(pbest(d)‐x(d)) + c2*r2*(gbest(d)‐x(d)) (三个部分的和)
r1,r2为[0,1]上的随机数
w为惯性因子,其值非负:
(1)其值较大,全局优化能力强,局部优化能力弱;
(2)其值较小,全局优化能力弱,局部优化能力强。
动态的w更好的适应寻优结果,目前采用较多的为线性递减权值策略:
学习因子c1,c2一般取2,但不一定恒等于2,一般取从c1=c2∈[0,4]
这只鸟第
d+1
步所在的位置
=
第
d
步所在的位置
+
第
d
步的速度
*
运动的时间
x(d+1) = x(d) + v(d) * t (每一步运动的时间t一般取1)
改进:
(1)惯性权重
一个较大的惯性
权值有利于全局搜索,而一个较小的权值则更利于局部搜索
线性递减惯性权重:
非线性递减惯性权重
![](https://i-blog.csdnimg.cn/blog_migrate/bc6e2c028b44df1d5e7a1778e98acdcd.png)
自适应惯性权重
![](https://i-blog.csdnimg.cn/blog_migrate/4a3d93c53e0618beb35ab8325702b712.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8717f07f2a3a404983f539999e0f4e1e.png)
随机惯性权重
![](https://i-blog.csdnimg.cn/blog_migrate/62797915f5fb9f09c19174cf15d0eed2.png)
(2)改进学习因子
压缩因子法
![](https://i-blog.csdnimg.cn/blog_migrate/e07ffba58caf40051917e67c3ea9ed30.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7673e700943dc05675b1396854fc6ded.png)
非对称学习因子
![](https://i-blog.csdnimg.cn/blog_migrate/f949d3d2ad978bb06e48f9c1d897b777.png)
Matlab自带粒子群函数操作
注意:
(1)
这个函数在
R2014b
版本后推出,之前的老版本
Matlab
中不存在。
(2) 这个函数是求最小值的,如果目标函数是求最大值则需要添加负号从而转换为求最小值。
预设参数的选取:
自动退出迭代循环的方式
修改函数的参数
![](https://i-blog.csdnimg.cn/blog_migrate/76ddf248851de7e7214ef74a6bf9454d.png)
函数运行完成后,Matlab输出的停止搜索的原因:
![](https://i-blog.csdnimg.cn/blog_migrate/1eb25fd5d0a3e0527cc936ceaeed6e88.png)
粒子群算法进阶
![](https://i-blog.csdnimg.cn/blog_migrate/f9dc5706c755d9e895fd7c83005b80fb.png)
一、求解方程组
![](https://i-blog.csdnimg.cn/blog_migrate/c7818eb16d2d10b95194cf02df7c5208.png)
实例:
![](https://i-blog.csdnimg.cn/blog_migrate/456aa9eeb74250695a4ae7fc03689eaa.png)
具体代码见PPT
结论
![](https://i-blog.csdnimg.cn/blog_migrate/f15eae1e1976327c72c4b98f59fac02e.png)
二、多元函数拟合
![](https://i-blog.csdnimg.cn/blog_migrate/5569627a3eb926c39fc1628e99721dd2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6af0a0b0646dc7637fe84f448cae10d2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7056dc9bf8d18ed9961519136d071ae7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0088559647f87e1e6684c6bd79622307.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0fb4aae2b3cac0b5cc6c4a60180c10d4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6ac2db3eba3f2b212f5ad512cb6e34be.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3f9ae7e1607d306e3040d246d231333b.png)
三、 拟合微分方程
注意:如果微分方程或者微分方程组有解析解(
dsolve
函数能求出来), 那么这时候就转换为了函数拟合问题,例如我们在更新15
里面举的美国人口预测问题(
阻滞增长模型
)
;我们这里讨论的拟合微分方程指的是只能用ode45
这类函数求出数值解的情况。(详见:更新
15
微分方程)
例题:
![](https://i-blog.csdnimg.cn/blog_migrate/b4da9494145a029f9cc1958c665d0e57.png)
![](https://i-blog.csdnimg.cn/blog_migrate/06067eaf05ebfdb6dad7f45a7da3d5a8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2366c09dd9b4b9993d3644a12163c45c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0d435d8a2b3398d4aebf6cfac3a5a894.png)
![](https://i-blog.csdnimg.cn/blog_migrate/97935b16b13b79f63df04dd6d628d683.png)