算法基于群鸟觅食的模型。(最佳决策寻找最优)适合无约束非线性函数优化
每只鸟看做一个粒子,则一群鸟可看做一个粒子群。每只鸟课根据自己的经验招呼最优觅食路径(局部最优),如果一群鸟的话(全局最优)
但是如果速度过快,可能看不到最优解就跳过去了,如果速度过慢,就不足以支撑到找到全局最优的时候。
粒子更新位置公式:(c1c2为加速常数,需要自己设置,但是如果为0的话呢,可能粒子群之间的信息就无法交换,也就是说,只能得到每只鸟找到的局部最优信息。所以一般不为0)其中w是惯性因子,可以是定值也可以是变化的值(通常刚开始设置较大,在不断迭代过程中逐步缩小)pi局部最优pg全局最优
算法流程如下:
MATLAB代码如下:目标函数是:y=1+(2.1*(1-x+2*x.^2).*exp(-x.^2/2))
clc;clear all;close all;
tic; %程序运行计时E0=0.001; %允许误差
MaxNum=100;