(6)惯性权重:决定对粒子流速的数量,一般可以采用恒定的或者线性递减等。
2.2基本粒子群算法
(1)算法原理
通过不断改变的学习因子C1,C2和W的惯性权重基本的粒子群算法,粒子会因为公式2-2更新自己的速度和位置。
(2-2)
(2)算法步骤
2.1初始化随机种群里的各微粒的速度和位置;
2.2评价每个微粒的适应度,把当时每个微粒的位置和适应值存在每个微粒的 之中,然后把所有 里的适应值中的最优个体的位置和适应值存在gbest里;
2.3使用2-2的公式更新粒子的速度和位移;
2.4将每个微粒的适应值和它经过的最好的位置进行比较,如果更好,就使之成为当前的最好位置;
2.5对比当前所有的 和 的值,然后更新 ;
2.6如果停止条件被满足(通常是到了设定精度或迭代次数),停止,输出结果,反之就返回2.3继续搜素。
(3)算法的MATLAB实现
在MATLAB中编程实现的基本粒子群优化函数为:PSO。
调用格式: =PSO(fitness,N,c1,c2,w,M,D)其中
fitness:待优化的目标函数;
N:粒子数目;
c1:学习因子1;
c2:学习因子2;
w:惯性权重;
M:最大迭代次数;
D:自变量的个数;
xm:目标函数取最小值时的自变量值;
fv:目标函数的最小值;
基本粒子群算法的MATLA代码见附录一
2.3带压缩因子的粒子群算法
(1)算法原理
Clerc构造了收缩因子,并将它引入了PSO算法,它的速度更新公式为:
(2-3)
(2)算法步骤
2.1随机初始种群里的各微粒的位置和速度;
2.2评价每个微粒的适应度,把当时每个微粒的位置和适应值存在每个微粒的 之中,然后把所有 里的适应值中的最优个体的位置和适应值存在gbest里;
2.3使用2-3和2-31公式更新粒子的速度和位移;
2.4将每个微粒的适应值和它经过的最好的位置进行比较,如果更好,就使之成为当前的最好位置;
2.5对比当前所有的 和 的值,然后更新 ;源-自/优尔+文,论^文'网]www.youerw.com
2.6如果满足停止条件(一般是到了设定的运算精度或者是迭代次数),则停止,输出结果,反之就返回2.3继续搜素。
(3)算法的MATLAB实现
在MATLAB中编程实现的带压缩因子的粒子群优化函数为:YSPSO。
调用格式: =YSPSO(fitness,N,c1,c2,w,M,D)其中
fitness:待优化的目标函数;
N:粒子数目;
c1:学习因子1;
c2:学习因子2;
w:惯性权重;
M:最大迭代次数;
D:自变量的个数;
:目标函数取最小值时的自变量值;
:目标函数的最小值;
带压缩因子的粒子群算法的MATLAB代码见附录二
2.4线性递减权重粒子群算法
(1)算法原理
由于惯性因子过大会利于跳出局部的极小点,便于全局搜素,而惯性因子过小就会利于在当前区域搜素的精确性提高,