智能优化算法:乌鸦搜索算法-附代码

智能优化算法:乌鸦搜索算法-附代码


摘要:乌鸦搜索算法(crow search algorithm, CSA)是2016 伊朗学者提出的,作为一种新的群智能仿生算法,它通过模仿乌鸦藏食这一行为来解决优化问题。已经被应用于多种工程寻优领域,取得不错的效果。

1.算法原理

鸦的聪明行为之一是,它们把多余的食物藏在特定的隐蔽处,并在需要时回忆食物的位置。此外,乌鸦有一个贪婪的习惯,它们会跟着其他乌鸦去寻找它们的藏食之处。如果乌鸦找到了其他乌鸦的藏食之处,便会偷走隐藏的食物。乌鸦搜索算法(CSA)通过模仿这种行为,提供了一种有效的方法来解决优化问题。

在 CSA中 ,第i只乌鸦的位置用向量 x i , i t e r ( i = 1 , 2 , . . . N ; i t e r = 1 , 2 , . . . , i t e r m a x ) x^{i,iter}(i=1,2,...N;iter=1,2,...,iter_{max}) xi,iter(i=1,2,...N;iter=1,2,...,itermax)表 示 。 其 中 x i , i t e r = x 1 i , i t e r , x 2 i , i t e r , . . . , x d i , i t e r x^{i,iter} = {x_1^{i,iter},x_2^{i,iter},...,x_d^{i,iter}} xi,iter=x1i,iter,x2i,iter,...,xdi,iter 为乌鸦的数量, i t e r m a x iter_{max} itermax是最大迭代次数, d d d 是决策变量的维数。每只乌鸦都有记忆中最佳的藏食之处。在第 i t e r iter iter 次迭代时,藏食位置为 m i , i t e r m_{i,iter} mi,iter。乌鸦试图搜索和跟踪其他乌鸦来发现比现有的更好的食物来源。

在 CSA 的每一次迭代中,为了更新乌鸦 i i i 的位置,乌鸦 i i i 随机选择另一只乌鸦(例如 j j j)。乌鸦 i i i 试图跟随乌鸦 j j j 接近它的藏食之处, m i , i t e r m_{i,iter} mi,iter。根据感知概率( A P AP AP),将有如下两种情况:

1)情况 1。如果乌鸦 j j j不知道被乌鸦 i i i跟踪,乌鸦i更新它的位置为:
x i , i t e r + 1 = x i , i t e r + r i ∗ f l i , i t e r ∗ ( m j , i t e r − x i , i t e r ) (1) x^{i,iter+1}=x^{i,iter}+r_i*fl^{i,iter}*(m^{j,iter}-x^{i,iter})\tag{1} xi,iter+1=xi,iter+rifli,iter(mj,iterxi,iter)(1)
式(1)中: r i r_i ri是区间[0 1]之间均匀分布的随机数; f l i , i t e r fl^{i,iter} fli,iter是乌鸦 i i i在第 i t e r iter iter次迭代中的飞行距离。飞行距离决定移动到选定隐藏位置的步长。飞行距离较小则局部搜索能力强,飞行距离较大则全局搜索能力强。

2)情况 2:如果乌鸦 j j j知道被乌鸦 i i i跟踪,乌鸦 j j j会随机进入搜索空间的位置来愚弄乌鸦 i i i

根据情况 1与情况 2,乌鸦的位置更新为:
x i , i t e r + 1 = { x i , i t e r + r i ∗ f l i , i t e r ∗ ( m j , i t e r − x i , i t e r ) , r j ≥ A P j , i t e r a   r a n d o m   p o t i o n     o t h e r w i s e (2) x^{i,iter+1}= \begin{cases} x^{i,iter}+r_i*fl^{i,iter}*(m^{j,iter}-x^{i,iter}),r_j\geq AP^{j,iter}\\ a\,random\,potion\,\,\,otherwise \end{cases}\tag{2} xi,iter+1={ xi,iter+rifli,iter(mj,iterxi,iter),rjAPj,iterarandompotionotherwise(2)
式(2)中: r j r_j rj是区间[0 1]之间均匀分布的随机数; A P j , i t e r AP^{j,iter} APj,iter表示乌鸦 j j j在第 i t e r iter iter 次迭代后的 A P AP AP。较小的 A P AP AP值增加激烈化,较大的 A P AP AP值增加多样化。

算法步骤如下:
1)初始化参数。定义决策变量,设置乌鸦的数量( N N N),最大迭代次数 ( i t e r m a x iter_{max} itermax) ,飞行距离(fl),和感知概率( A P AP AP
2)初始化乌鸦的位置和记忆。 N N N 只乌鸦随机分布在一个 $d4 维搜索空间。在首次迭代中,假设乌鸦把食物隐藏在初始位置。
3)评估适应度(目标)函数。计算每只乌鸦对应的目标函数值。
4)更新乌鸦位置。根据式(1)生成新的位置。
5)检测新位置的可行性。检测每只乌鸦的新位置的可行性。如果乌鸦的新位置是可行的,乌鸦则会更新它的位置。否则,乌鸦停留在当前位置,不会移动到新的位置。
6)评估新位置的适应度函数。计算每只乌鸦新位置的适应度函数值。
7)更新记忆。如果乌鸦的新位置的适应度函数值比记忆位置的适应度函数值更好,乌鸦就通过新的位置更新它的记忆。
8)迭代终止条件。重复步骤 4)—7)直至达到最大迭代次数。当满足终止条件时,输出最优目标函数值对应的位置。

算法流程图如下:

在这里插入图片描述

2.算法结果

在这里插入图片描述

3.参考文献

[1] ALIREZA A. A novel metaheuristic method for solving con⁃strained engineering optimization problems: Crow search algorithm[J]. Computers & Structures,2016,169(21):1⁃12.

[2] 黄景光,陈波,林湘宁,吴巍,于楠,叶元.基于乌鸦搜索算法的孤岛微网多目标优化调度[J].高压电器,2020,56(01):162-168.

[3] 徐达,焦庆龙.基于乌鸦搜索算法的装备并行拆卸任务规划[J].火力与指挥控制,2020,45(01):100-104.

4.Matlab代码

https://mianbaoduo.com/o/bread/aJyTmZ8=

猜你喜欢

转载自blog.csdn.net/u011835903/article/details/108800505
今日推荐