演化算法:乌鸦搜索算法 (Crow Search Algorithm)

news2025/7/19 11:23:21

前言

如果你对这篇文章感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。

在机器学习中,我们所要优化的问题很多时候难以求导,因此通常会采用一些演化算法(又称零阶优化 / 黑盒优化)来近似求解。

这些演化算法通常是根据一些生物的行为置顶,有如下分类:

在这里插入图片描述
本文所要介绍的乌鸦搜索算法 (CSA) 就是其中的一种,属于演化算法。


乌鸦搜索算法

乌鸦搜索算法受乌鸦的行为所启发,即在乌鸦种群中,每只乌鸦都在干三件事:

  • 寻找藏食物的地点;
  • 想要发现其它乌鸦藏食物的地点;
  • 不想被其它乌鸦发现自己藏食物的地点。

每只乌鸦 i i i 在每一轮会选择一只乌鸦 j j j 进行跟踪,此时有两种情况:

  • 乌鸦 j j j 未发现乌鸦 i i i,则乌鸦 i i i 向乌鸦 j j j 藏食物的地点前进;
  • 乌鸦 j j j 发现了乌鸦 i i i,决定进行误导,即乌鸦 i i i 的位置变成随机位置。

为进一步说明上述过程,定义如下符号:

  • 向量 x i t x_i^{t} xit 表示第 i i i 只乌鸦第 t t t 轮的位置;
  • m e m i t mem_i^t memit 表示第 i i i 只乌鸦第 t t t 轮的历史最优解;
  • A P i t AP_i^t APit 表示第 i i i 只乌鸦第 t t t 轮的警觉概率;
  • f l i t fl_i^t flit 表示第 i i i 只乌鸦第 t t t 轮的跟随步长;
  • r i r_i ri 表示第 i i i 只乌鸦的随机概率,范围在 ( 0 , 1 ) (0,1) (0,1) 之间。

x i t x_i^{t} xit 理解为第 t t t 轮搜索到的位置, m e m i t mem_i^t memit 即为到第 t t t 轮时的历史最优解。具体迭代过程如下:

  • 一共有 t M A X t_{MAX} tMAX 轮迭代, N N N 只乌鸦;
  • 每一轮迭代,遍历每一只乌鸦;
  • 当遍历到第 i i i 只乌鸦时,随机选择第 j j j 只乌鸦进行跟踪;
    • 如果 r j ≥ A P j t r_j\geq AP_j^t rjAPjt,即乌鸦 j j j 未发现,则乌鸦 i i i 进行如下更新:
      x i t + 1 = x i t + r i ⋅ f l i t ⋅ ( m e m j t − x i t ) , x_i^{t+1}=x_i^t+r_i\cdot fl_i^t \cdot (mem_j^t-x_i^t), xit+1=xit+riflit(memjtxit),
    • 如果 r j < A P j t r_j<AP_j^t rj<APjt,则 x i t + 1 x_i^{t+1} xit+1 变为随机值;
  • 每一轮迭代结束后,遍历每一只乌鸦,若 f ( x i t + 1 ) > f ( m e m i t ) f(x_i^{t+1})>f(mem_i^t) f(xit+1)>f(memit),则更新 m e m i t + 1 = x i t + 1 mem_i^{t+1}=x_i^{t+1} memit+1=xit+1,否则不更新,即 m e m i t + 1 = m e m i t mem_i^{t+1}=mem_i^{t} memit+1=memit

完整算法如下:
在这里插入图片描述


参考资料

  • Learn Crow Search Algorithm Step-by-Step with Example
  • [ESWA22 - Behrouz Samieiyan] Novel optimized crow search algorithm for feature selection

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++——模板

文章目录1 泛型编程2 函数模板2.1 函数模板概念2.2 函数模板格式2.3 函数模板的实例化2.3.1 隐式实例化2.3.1.1 定义2.3.1.2 代码演示2.3.1.3 运行结果2.3.1.4 缺点2.3.2 显式实例化2.3.2.1 格式2.3.2.2 代码演示2.3.2.3 运行结果2.4 模板参数的匹配原则2.4.12.4.22.4.33 类模板…

并发编程的三大挑战之原子性及其解决方案

目录 一、原子性问题 1、带来原子性问题的原因 2、如何解决线程切换带来的原子问题 2.1、使用synchronized关键字来保证 2.2、使用CAS来保证原子性 2.3、使用lock锁来保证 一、原子性问题 1、带来原子性问题的原因 线程切换是带来原子的根本原因&#xff0c;java的并发程…

proteus光敏电阻电路的arduino仿真

虽然Fritzing0.9.10有了仿真的功能&#xff0c;但都是测试板&#xff0c;能够仿真的很有限&#xff0c;所以还是要借助proteus来仿真。这里&#xff0c;我们来实先一个简单的光明电阻的仿真电路。本篇博文&#xff0c;重点演示proteus仿真arduino光敏电阻&#xff0c;arduino采…

Kerberos 域委派攻击之基于资源的约束性委派

CSDN自动迁移博客文章注意区别&#xff1a;约束性委派 不能跨域进行委派&#xff0c;基于资源的约束性委派可以跨域和林如果约束性委派&#xff0c;必须拥有 SeEnableDelegationPrivilege 权限&#xff0c;该特权是敏感的&#xff0c;通常仅授予域管理员。为了使用户/资源更加独…

DDD领域驱动设计初探

DDD 强调领域模型要兼顾业务和技术两个视角。 我们怎么用一套系统化的方法&#xff0c;抽丝剥茧、一步一步地把需求落实到代码呢&#xff1f;咱们看看下面这张图&#xff0c;它表示了领域驱动设计中的主要流程。 领域驱动设计主要的开发流程你可以看到&#xff0c;在整个开发流…

IDEA 实现热部署(社区版)

前言 为什么要热部署&#xff1f; 开发环境下&#xff0c;我们经常对项目代码进行变动&#xff0c;如果每次都重新启动应用会浪费我们大量时间&#xff0c;为此就产生了热部署的方案&#xff0c;可以在不重启的情况下使用新代码。 热部署为了解决的问题有两个: 在开发的时候…

华为网工入门之eNSP小实验(6)--OSPF(一)基础概念及单区域配置

OSPF OSPF属于典型的链路状态路由协议链路状态路由协议的四个步骤: 1.相邻的建立邻居关系2.邻居间的链路间的状态信息(LSA)交互和同步LSDB(链路状态数据库)3.优选路径运算 (SPF算法计算)4.根据最优路径生成路由表项加载到路由表 目前针对ipv4协议使用的是OSPF Version 2(RFC23…

测试测开面试要知道的那些事01

列表与元组的区别列表是动态数组&#xff0c;它们可变且可以重设长度&#xff08;改变其内部元素的个数&#xff09;。元组是静态数组&#xff0c;它们不可变&#xff0c;且其内部数据一旦创建便无法改变。元组缓存于Python运行时环境&#xff0c;这意味着我们每次使用元组时无…

JAVA进阶 —— 集合进阶

目录 一、 双列集合 二、 Map 1. Map的常见API 2. Map的遍历方式 2.1 第一种遍历方式&#xff1a;键找值 2.2 第二种遍历方式&#xff1a;键值对 2.3 第三种遍历方式&#xff1a;Lambda表达式 三、 Map的三种实现类 1. HashMap 2. LinkedHashMap 3. TreeMap 3.1 练…

python智慧校园线上考试在线比赛答题系统平台源码redis

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;python考试 获取完整源码源文件说明文档配置教程等 在虚拟环境下输入命令“python manage.py runserver”启动项目&#xff0c;然后&#xff0c;访问“http://127.0.0.1:8000”进入网站首页&#xff0c;如图1所示。 注册用…

jvm之堆解读

堆&#xff08;Heap&#xff09;的核心概述 堆针对一个JVM进程来说是唯一的&#xff0c;也就是一个进程只有一个JVM&#xff0c;但是进程包含多个线程&#xff0c;他们是共享同一堆空间的。 一个JVM实例只存在一个堆内存&#xff0c;堆也是Java内存管理的核心区域。 Java堆区…

我把物流装备用到了轨道交通接驳货物上,RGV,输送线,提升机,WCS……

导语大家好&#xff0c;我是智能仓储物流技术研习社的社长&#xff0c;你的老朋友&#xff0c;老K。新书上市《智能物流系统构成与技术实践》2023年度-厂商宣传合作位--->点击详情作者&#xff1a;马洪旭“智能制造”、“智慧物流”、“绿色物流”等高频词汇已成为物流行业的…

作物杂交(spfa()算法)

蓝桥杯集训每日一题acwing3305 作物杂交是作物栽培中重要的一步。 已知有 N 种作物 (编号 1 至 N)&#xff0c;第 i 种作物从播种到成熟的时间为 Ti。 作物之间两两可以进行杂交&#xff0c;杂交时间取两种中时间较长的一方。 如作物 A 种植时间为 5 天&#xff0c;作物 B …

NTLM协议原理分析

LM Hash 和 NTLM Hashwindows用户的密码以哈希的形式保存在SAM文件中“%SystemRoot%\system32\config\SAM”。域用户的密码以哈希的形式保存在域控的 NTDS.dit 文件中。 密码的哈希值格式如下用域名:uid:LM哈希:NTLM哈希:::由于LM Hash 有安全缺陷&#xff0c;所以Windows Vist…

88. 合并两个有序数组

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺序 排列。注意&#xff1a;最终&#xff0c;合并后数组不应…

【Linux】实现简易的Shell命令行解释器

大家好我是沐曦希&#x1f495; 文章目录一、前言二、准备工作1.输出提示符2.输入和获取命令3.shell运行原理4.内建命令5.替换三、整体代码一、前言 前面学到了进程创建&#xff0c;进程终止&#xff0c;进程等待&#xff0c;进程替换&#xff0c;那么通过这些来制作一个简易的…

Python每日一练(20230308)

目录 1. Excel表列名称 ★ 2. 同构字符串 ★★ 3. 分割回文串 II ★★★ &#x1f31f; 每日一练刷题专栏 C/C 每日一练 ​专栏 Python 每日一练 专栏 1. Excel表列名称 给你一个整数 columnNumber &#xff0c;返回它在 Excel 表中相对应的列名称。 例如&#xff1…

在 k8S 中搭建 SonarQube 9-community 版本(使用 PostgreSQL 数据库)

本文搭建的 SonarQube 版本是 7.4.9-community&#xff0c;由于在官方文档中声明 7.9 版本之后就不再支持使用 MySQL 数据库。所以此次搭建使用的数据库是 PostgreSQL 11.4 版本。 一、部署 PostgreSQL 服务 1. 创建命名空间 将 PostgreSQL 和 SonarQube 放在同一个命名空间…

02从零开始学Java之Java到底是个啥?

博主简介我是壹壹哥(孙玉昌)&#xff0c;十年软件开发授课经验&#xff0c;CSDN博客专家、阿里云专家博主、掘金优秀创作者、infoQ专家博主&#xff1b;关注壹壹哥(孙玉昌)&#xff0c;带你玩转Java&#xff0c;轻松实现从入门到放弃&#xff0c;哦不&#xff0c;到熟悉&#x…

【基于STM32的多功能台灯控制】

基于STM32的多功能台灯控制 在之前一篇博文中已出过智能台灯相关的介绍&#xff0c;在这里对之前的模块以及功能上进行了优化和功能上的改进&#xff0c;需源码或实物可私【创作不易-拒绝白嫖】 功能说明 1、按键模式多功能台灯在设计上使用了4个按键分别做为 按键1模式的切换…