参考资料
《精通MATLAB最优化计算(第二版)》
编程工具
Matlab 2019a
目录
石中居士:最优化计算与Matlab实现——目录zhuanlan.zhihu.com带压缩因子的粒子群算法
- 原理
学习因子
为了有效地控制粒子的飞行速度,使算法达到全局探测于局部开采两者间的有效平衡,Clerc构造了引入收缩因子的PSO算法,其速度更新公式为:
为保证算法的顺利求解,
(1)
(2)微粒规模
- 算法步骤
带压缩因子粒子群算法的基本步骤如下:
【1】随机初始化种群中各微粒的位置和速度;
【2】评价每个微粒的适应度,将当前各微粒的位置和适应值存储在各微粒的pbest中,将所有pbest中适应值最优个体的位置和适应值存储于gbest中;
【3】用下式更新粒子的速度和位移:
其中,
【4】对每个微粒,将其适应值与其经历过的最好位置作比较,如果较好,则将其作为当前的最好位置;
【5】比较当前所有pbest和gbest的值,更新gbest;
【6】若满足停止条件(通常为预设的运算精度或迭代次数),搜索停止,输出结果,否则返回【3】继续搜索。
- Matlab代码与试算
求下面函数的最小值:
求解时采用两种参数取法:
(1)粒子群数目取40,学习因子都取2.05,迭代步数取10000;
(2)粒子群数目取30,学习因子1取2.8,学习因子2取1.3,迭代步数取10000。
解:建立目标函数文件fitness.m
fitness.m
function
test.m
[
Compressibility_Factor_Particle_Swarm_Optimization_Method.m
function
本题中的最小点为
即使采用同样的参数,粒子群算法每次得出的结果也可能不同,采取同样的参数(粒子群数目取40,学习因子都取2.05,迭代步数取10000)对本例题的函数用带压缩因子的粒子群算法求解20次。
test.m
X1
图像
横坐标代表