MATLAB R2018a全局优化工具箱学习(三)粒子群算法
粒子群算法是无导数的一种算法.PSO从这种模型中得到启示并用于解决优化问题。在粒子群算法中,每个优化问题的潜在解都是搜索空间中的一只鸟,称之为粒子。所有的粒子都有一个由被优化的函数决定的适值(适应值),每个粒子还有一个速度决定它们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。
PSO初始化为一群随机粒子(随机解),然后通过迭代找到最优解在每一次迭代中,粒子通过跟踪两个极值来更新自己;第一个就是粒子本身所找到的最优解,这个解称为个体极值;另一个极值是整个种群目前找到的最优解,这个极值是全局极值另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。
此外,笔者认为,在粒子群算法中,粒子位置和速度的更新公式特别重要图解(来源网上):
其中,p(i,d)表示当前各微粒的位置,而p(g,d)表示适应值最优的个体。
MATLAB命令:
[x,fval] = particleswarm(fun,nvars)
[x,fval] = particleswarm(fun,nvars,lb,ub)
参数解释:
%x为所求得的最小值点,而不是最小值
%fval为对应最小值点x处的最小值
%fun为目标函数。注:若有趣为m文件,要用通过句柄@进行引用
%nvars fun函数中未知数的维度
%lb x的下界
%ub x的上界