智能优化算法:乌鸦搜索算法-附代码
摘要:乌鸦搜索算法(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+ri∗fli,iter∗(mj,iter−xi,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+ri∗fli,iter∗(mj,iter−xi,iter),rj≥APj,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代码
乌鸦搜索算法
改进算法matlab代码
名称 | 说明或者参考文献 |
---|---|
基于变因子加权学习与邻代维度交叉策略的改进CSA算法 | [1]赵世杰,高雷阜,于冬梅,徒君.基于变因子加权学习与邻代维度交叉策略的改进CSA算法[J].电子学报,2019,47(01):40-48. |
多段扰动的共享型乌鸦算法 | [1]辛梓芸,张达敏,陈忠云,张绘娟,闫威.多段扰动的共享型乌鸦算法[J].计算机工程与应用,2020,56(02):55-61 |
正弦余弦指引的乌鸦搜索算法研究 | [1]肖子雅,刘升,韩斐斐,于建芳.正弦余弦指引的乌鸦搜索算法研究[J].计算机工程与应用,2019,55(21):52-59. |
个人资料介绍
今天的文章乌鸦的智能_乌鸦搜索分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/83369.html