【智能算法】乌鸦搜索算法(CSA)原理及实现

在这里插入图片描述

目录

    • 1.背景
    • 2.算法原理
      • 2.1算法思想
      • 2.2算法过程
    • 3.结果展示
    • 4.参考文献


1.背景

2016年,Askarzadeh等人受到乌鸦觅食自然行为启发,提出了乌鸦搜索算法(Crow Search Algorithm, CSA)。

2.算法原理

2.1算法思想

CSA模拟了乌鸦进行觅食和藏匿食物的两种行为,CSA具有控制参数较少、 结构简单、 易于掌握且全局搜索能力强等优点。

2.2算法过程

在这里插入图片描述

在每次迭代中,每只乌鸦都会保存自己隐藏食物的位置,用m表示,这个位置代表了乌鸦当前所认为的最佳位置。当算法进行迭代时,乌鸦会在搜索空间中通过跟踪其他乌鸦来获得更好的位置。具体地,在第gen次迭代时,当乌鸦j准备去查看自己的食物时,乌鸦i决定跟踪乌鸦j以获取其隐藏食物的位置。此时,会有两种情况发生:

  • 乌鸦 j 没有发现乌鸦 i 在跟踪它。那么, 乌鸦 i 就会一直跟随乌鸦 j 直到到达它隐藏食物的位置
  • 乌鸦 j 发现了乌鸦 i 在跟踪它。此时, 乌鸦 j 会随机飞到一个位置, 以保护自己的食物

x i g e n + 1 = { x i g e n + r i × F L i g e n ( m j g e n − x i g e n ) , if a j ⩾ A P j g e n a random position , otherwise (1) x_i^{gen+1}=\begin{cases}x_i^{gen}+r_i\times FL_i^{gen}(m_j^{gen}-x_i^{gen}),&\text{if}a_j\geqslant AP_j^{gen}\\\text{a random position},&\text{otherwise}\end{cases}\tag{1} xigen+1={xigen+ri×FLigen(mjgenxigen),a random position,ifajAPjgenotherwise(1)
CSA首先随机生成每只乌鸦的初始位置,并将这些位置设定为它们的初始记忆。在每次迭代中,每只乌鸦会随机选择一只乌鸦进行跟踪,来更新乌鸦的位置并利用适应度函数fit来评估乌鸦的新位置。如果新位置更加优秀,则将乌鸦隐藏食物的位置改变为新位置,即更新乌鸦的记忆。
m i g e n + 1 = { x i g e n + 1 , if f i t ( x i g e n ) is better than  f i t ( m i g e n ) m i g e n , otherwise (2) m_i^{gen+1}=\begin{cases}x_i^{gen+1},&\text{if}fit(x_i^{gen})\text{is better than }fit(m_i^{gen})\\m_i^{gen},&\text{otherwise}\end{cases}\tag{2} migen+1={xigen+1,migen,iffit(xigen)is better than fit(migen)otherwise(2)
伪代码
在这里插入图片描述

3.结果展示

在这里插入图片描述

4.参考文献

[1] Askarzadeh A. A novel metaheuristic method for solving constrained engineering optimization problems: crow search algorithm[J]. Computers & structures, 2016, 169: 1-12.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/488496.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CUDA从入门到放弃(四):CUDA 编程模式 CUDA Programming Model

CUDA从入门到放弃(四):CUDA 编程模式 CUDA Programming Model 1 Kernels CUDA C 扩展了 C,允许定义名为内核的函数,这些函数可以被不同的 CUDA 线程并行执行多次,而不是像普通 C 函数那样只执行一次。内核…

Python数据结构实验 递归算法设计

一、实验目的 1.掌握递归程序设计的基本原理和方法; 2.熟悉数据结构中顺序表和单链表下的递归算法设计思想; 3.掌握并灵活运用递归算法解决一些较复杂的应用问题。 二、实验环境 1.Windows操作系统的计…

使用JMeter进行梯度压测

使用JMeter进行梯度压测 梯度压测配置如下: 使用线程:5,然后循环5000次,共2.5万个样本使用线程:10,然后循环5000次,共5万个样本使用线程:15,然后循环5000次,共7.5万个样本使用线程:20&#xff…

投资现货黄金有持仓时间限制吗?

投资现货黄金是否有持仓时间限制?这是许多投资者在进入黄金市场前都想要了解的一个问题。实际上,现货黄金交易并没有严格的持仓时间限制。换句话说,投资者可以按照个人的投资策略和市场情况自由决定持有黄金的时间长度。 以下是影响现货黄金持…

数据结构(四)顺序表与链表的深层次讲解

我们在数据结构(二),对链表和顺序表已经讲解过了。但很多同学表示有点晦涩难懂那我就出一篇深层次讲解,一步一步来带领大家学习。 我们从头(数据结构)开始完整的来为大家讲解,大家好好看好好学。…

c语言中函数声明注意点都在这里了

C语言中函数声明主要分为三个大点:函数返回值类型、函数名和参数列表。 一、函数返回值类型 1. 无返回值的函数声明 无返回值的函数声明使用关键字void表示,表示该函数不返回任何值。例如: void print_hello(); // 声明一个无返回值的函数…

【Emgu CV教程】10.5、轮廓之凸包

文章目录 一、什么叫轮廓的凸包二、凸包函数三、二维点集寻找凸包四、绘制物体轮廓的凸包1.原始素材2.代码3.运行结果 一、什么叫轮廓的凸包 凸包是一个更加简化的多边形,是轮廓最外层的“凸”多边形,与前一篇多边形近似拟合不同的是,凸包组…

学生宿舍智能控电柜安装调试技术

学生宿舍智能控电柜安装调试石家庄光大远通电器有限公司宿舍控电限电管理系统是一种用于管理学生宿舍用电的智能系统,主要功能包括: 1.实时监控和控制:该系统能够实时监测和记录宿舍的用电情况,包括电器使用情况、电量消耗等。管理人员可以通过电脑或手机…

数据结构(五)——树与二叉树的应用

5.5 树与二叉树的应用 5.5.1 哈夫曼树 结点的权:有某种现实含义的数值。 结点的带权路径长度:从树的根到该结点的路径长度(经过的边数)与该结点上权值的乘积。 树的带权路径长度:树中所有叶结点的带权路径长度之和…

FPGA电平标准

1.LVTTL:(3.3v) 2.LVCOMS:(1.8v) 3.LVDS(1.8v):LVDS_25(2.5v) 4:如果是ddr3与fpga相连接fpga的vcco推荐(1.5v)…

【Linux】进程的基本概念(进程控制块,ps命令,top命令查看进程)

目录 01.进程的基本概念 程序与进程 进程的属性 02.进程控制块(PCB) task_struct的内容分类 组织进程 03.查看进程 ps命令 top指令 在计算机科学领域,进程是一项关键概念,它是程序执行的一个实例,是操作系统的…

【Linux C | 多线程编程】线程的退出

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰: 本文未经允许…

第九届蓝桥杯大赛个人赛省赛(软件类)真题C 语言 A 组-乘积尾零

solution 找末尾0的个数&#xff0c;即找有多少对2和5 >问题等价于寻找所给数据中&#xff0c;有多少个2和5的因子&#xff0c;较少出现的因子次数即为0的个数 #include <iostream> using namespace std; int main() {// 请在此输入您的代码printf("31");…

项目3-留言板

1.创建项目 记得将project type改为maven 将需要的包引入其中 更改版本号 引入MYSQL相关包记得进行配置&#xff01;&#xff01;&#xff01; spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mycnblog?characterEncodingutf8&useSSLfalseusername: rootpassword:…

MySQL将id相同的两行数据合并group_concat

MySQL将id相同的两行数据合并 group_concat这个函数能将相同的行组合起来&#xff0c;省老事了。 MySQL中group_concat函数 完整的语法如下&#xff1a; group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔符’]) 1.基本查询 Sql代码 2.…

力扣热门算法题 89. 格雷编码,92. 反转链表 II,93. 复原 IP 地址

89. 格雷编码&#xff0c;92. 反转链表 II&#xff0c;93. 复原 IP 地址&#xff0c;每题做详细思路梳理&#xff0c;配套Python&Java双语代码&#xff0c; 2024.03.24 可通过leetcode所有测试用例。 目录 89. 格雷编码 解题思路 完整代码 Python Java 92. 反转链表…

SOC 子模块---中断控制器

中断控制器对soc 中的各个外设进行中断管理&#xff0c;进行优先权排队&#xff0c;并送出IQR信号给CPU&#xff1b; 中断控制器在整个系统中的结构&#xff1a; IRQ<n>来源于不同的中断源&#xff0c;比如&#xff1a;I2C,SPI等&#xff0c;INTC收集这些中断&#xff0…

从人工智能入门到理解ChatGPT的原理与架构的第一天(First)

目录 一.ChatGPT的发展历程 二.Attention is all you need 三.对于GPT-4的智能水平评估 四.大语言模型的技术演化 1.从符号主义到连接主义 2.特征工程 2.1数据探索 2.2数据清洗 2.3数据预处理 2.3.1无量纲化 2.3.1.1标准化 2.3.1.2区间缩放法 2.3.1.3标准化与归一…

Numpy使用中的十大经典routines函数

1.np.ones(shape, dtypeNone, order‘C’) np.ones(shape(3, 4, 3), dtypenp.int32)array([[[1, 1, 1],[1, 1, 1],[1, 1, 1],[1, 1, 1]],[[1, 1, 1],[1, 1, 1],[1, 1, 1],[1, 1, 1]],[[1, 1, 1],[1, 1, 1],[1, 1, 1],[1, 1, 1]]])2.np.zeros(shape, dtypefloat, order‘C’) …

P1835 素数密度题解

题目 给定区间[L,R]&#xff08;1≤L≤R<&#xff0c;R−L≤&#xff09;&#xff0c;请计算区间中素数的个数。 输入输出格式 输入格式 第一行&#xff0c;两个正整数L和R。 输出格式 一行&#xff0c;一个整数&#xff0c;表示区间中素数的个数。 输入输出样例 输…