【电池健康状态预测】基于matlab灰狼算法优化BP神经网络GWO( 二 )


图2 2D和3D位置向量及其可能的下一个位置
1.2.2 气泡网攻击方式(-net)(利用阶段)
共设计了两种方法来对座头鲸的气泡网行为进行建模:
收缩包围机制:通过降低式(3)中 a 的值实现 。注意 A的波动范围也通过 a降低,换句话说,A 是一个区间[-a,a]内的随机值,a 随着迭代进行从 2 降为 0 。设置 A中的随机值在[-1,1]之间,搜索代理的新位置可以定义为代理原始位置与当前最优代理位置之间的任意位置 。图 3a 显示了 2D 空间中当 0 ≤ A ≤ 1 0 时从 ( X , Y )靠近 ( X ? , Y ? ) 所有可能的位置 。这种机制本质上就是包围捕食 。
螺旋更新位置 。如图 3b,该方法首先计算鲸鱼位置 ( X , Y ) 与猎物位置 ( X ? , Y ? ) 之间的距离,然后在鲸鱼与猎物位置之间创建一个螺旋等式,来模仿座头鲸的螺旋状移动:
(a)收缩包围机制
(b)螺旋更新位置
图3 WOA中实现的气泡网搜索机制
值得注意的是,座头鲸在一个不断缩小的圆圈内绕着猎物游动,同时沿着螺旋形路径游动 。为了对这种同时发生的行为进行建模,假设有 50%的可能性在收缩包围机制和螺旋模型之间进行选择,以便在优化过程中更新鲸鱼的位置,数学模型如下:
其中 p pp 为[0,1]之间的随机数 。
1.2.3搜索猎物( for prey)( phase)
除了泡泡网方法,座头鲸还会随机寻找猎物,同样基于可变 A向量,事实上,座头鲸会根据彼此的位置进行随机搜索,因此使用随机值大于1或小于-1的 A ? 来迫使搜索代理远离参考鲸鱼 。与利用阶段相反,这里将根据随机选择的搜索代理来更新搜索代理在探索阶段的位置,而不是根据目前为止最优的搜索代理 。该机制和 ∣ A ? ∣ > 1 强调了探索,并允许WOA算法执行全局搜索 。数学模型如下:
其中 X → r a n d 为从当前种群中选择的随机位置向量(表示一头随机鲸鱼) 。
特定解附近满足 A ? > 1的一些可能解如图 4 所示 。
图4 WOA中的探索机制(X*是一个随机选择的搜索代理)
WOA算法首先随机初始化一组解,在每次迭代中,搜索代理根据随机选择的搜索代理或到目前为止获得的最优解更新它们的位置 。将 a aa 参数由 2 随迭代次数降为 0,从而由探索逐步到利用 。当 ∣ A ? ∣ > 1 时选择随机搜索代理,∣ A ? ∣ < 1 时选择最优解更新搜索代理位置 。根据 p pp 的值,WOA可以在螺旋运动和圆环运动之间进行切换 。最后,通过满足终止准则来终止WOA算法 。WOA算法的伪代码如图5所示 。
图5 WOA算法伪代码
1.3 代码分析
只要明白了原理的基本流程,其实代码就没有说明困难了,咱们主要介绍一下如何实现上述分析的几个重要原理,所要优化的问题的是三十个数的平方和最小
(1)参数初始化 。初始时主要设置代理数量和最大迭代次数即可,其他算法相关的参数因为和当前迭代次数相关,需要在迭代中设置 。
SearchAgents_no=30; % 搜索代理数量Max_iteration=500; % 最大迭代次数``**(2) 种群初始化** 。随机初始化所有代理各个维度上的位置值,需要保证在取值范围内 。```cPositions=rand(SearchAgents_no,dim).*(ub-lb)+lb;
(3)种群评估 。评估种群中每个代理的目标值,如有某个代理由于当前最优解,则将其设为最优解 。
for i=1:size(Positions,1)% 计算每个代理的目标值fitness=fobj(Positions(i,:));% 更新最优解if fitness"Leader_score=fitness; Leader_pos=Positions(i,:);endend
(4)设置和迭代次数相关的算法参数 。