智能优化算法:布谷鸟搜索算法-附代码

2023-05-16

智能优化算法:布谷鸟搜索算法-附代码

文章目录

  • 智能优化算法:布谷鸟搜索算法-附代码
    • 1.算法原理
    • 2.算法结果
    • 3.参考文献
    • 4.Matlab代码

摘要:谷鸟搜索算法(cuckoo search ,cs),是由剑桥大学Yang等提出的一种群智能优化算法,它也是一种新型元启发式搜索算法。CS 算法主要优点是参数少、操作简单、易实现、随机搜索路径优和寻优能力强等,备受学者关注,相关的科研成果也日益倍增

1.算法原理

布谷鸟具有孵卵寄生性,本身没有孵化行为,这就促使它通过寻找质优的巢窝,依靠养父母孵化和育雏 。巢寄生殖行为主要表现在宿主的选择,繁殖期间,大布谷鸟寻找在孵化和育雏时间上基本相似、雏鸟饮食习性基本相同的、卵形状和颜色相当的宿主,通常表现为雀形目鸟类。确定寄生的宿主后,大布谷鸟要选择适当的时机,一般在宿主即将孵化之前,趁宿主外出觅食时迅速寄生产卵。春末夏初,便向北飞,它自己不会做窝,不会育雏,也不会孵化,它每次飞到一个巢窝里只产一个鸟蛋。通常情况下,大布谷鸟在产卵前,为了不被宿主察觉,会把宿主一枚或数枚卵移走,使得巢穴中的卵数量相等或相近。而一旦靠养母孵化的雏鸟孵出,它有将养母本身的雏鸟推出巢外的本性,从而独享养母抚养,这样自己成活的概率大大增加。

为了模拟布谷鸟这种寻窝寄生的习性,Yang 等在文献中将CS算法假设以下3种理想状态:

(1) 每只布谷鸟一次只产一枚卵,并且随机选择一个鸟巢存放;
(2) 在寻窝的过程中,卵最好的鸟巢将会被保留到下一代;
(3) 可用鸟巢的数量是固定的,并且设鸟巢中外来卵被发现的概率是 P P P P ∈ [ 0 , 1 ] P\in [0,1] P[0,1]。如果发现外来鸟蛋,则鸟窝主人重新建立一个鸟窝。
通过以上 3 种理想状态的假设,布谷鸟寻优搜索的位置和路径的更新公式如下:
x i t + 1 = x i t + α ⊕ L ( λ ) ,   i = 1 , 2 , . . , n (1) x_i^{t+1}= x_i^t + \alpha \oplus L(\lambda),\, i =1,2,..,n \tag{1} xit+1=xit+αL(λ),i=1,2,..,n(1)
式中: x i t x_i^t xit—第 i 个鸟窝在第 t t t 代的鸟窝位置, ⊕ \oplus —点对点乘法, α \alpha α —步长控制量,用于控制步长的搜索范围,其值服从正态分布。

在式(1)中, L ( λ ) L(\lambda) L(λ)为 Lévy随机搜索路径,随机步长为 Lévy分布
L ( s , λ ) ~ s − λ ,   ( 1 < λ ≤ 3 ) (2) L(s,\lambda) \widetilde{}s^{-\lambda},\,(1<\lambda\leq3)\tag{2} L(s,λ) sλ,(1<λ3)(2)
式中: s s s—由莱维飞行得到的随机步长。

有式 可以看出,该行走方式是一个随机漫步的过程。由于莱维飞行的随机游动特征,局部极值点附近往往会出现新解,因此莱维飞行的短步长搜索更加有利于提高解的质量。另外,距离局部最优值较远的地方也存在新解,偶尔的大步长探索,使得算法不容易陷入局部极值点。

根据布谷鸟的孵化鸟蛋的过程, CS算法的算法描述如下:

步骤1 定义目标函数 f ( X ) , X = ( x 1 , . . . , x d ) T f(X),X=(x_1,...,x_d)^T f(X),X=(x1,...,xd)T,函数初始化,并随机生成 n n n个鸟窝的初始位置 X i ( i = 1 , 2 , . . . , n ) X_i(i=1,2,...,n) Xi(i=1,2,...,n),设置种群规模、问题维数、最大发现概率 P P P和最大迭代次数等参数;

步骤2 选择适应度函数并计算每个鸟窝位置的目标函数值,得到当前的最优函数值;

步骤3 记录上一代最优函数值,利用式(1)对其他鸟窝的位置和状态进行更新;
步骤 4 现有位置函数值与上一代最优函数值进行比较,若较好,则改变当前最优值;

步骤 5 通过位置更新后,用随机数 r ∈ [ 0 , 1 ] r\in[0,1] r[0,1] P P P对比,若 r > P r>P r>P ,则对 x t + 1 x^{t+1} xt+1进行随机改变,反之则不变。最后保留最好的一组鸟窝位置 y i t + 1 y_i^{t+1} yit+1;

步骤6 若未达到最大迭代次数或最小误差要求,则返回步骤2 ,否则,继续下一步;

步骤7 输出全局最优位置。

2.算法结果

在这里插入图片描述

3.参考文献

[1]兰少峰,刘升.布谷鸟搜索算法研究综述[J].计算机工程与设计,2015,36(04):1063-1067.

4.Matlab代码

算法相关应用
布谷鸟算法

名称说明或者参考文献
布谷鸟优化的BP神经网络(预测)https://blog.csdn.net/u011835903/article/details/112149776(原理一样,只是优化算法用布谷鸟算法)
布谷鸟优化的BP神经网络(分类)https://blog.csdn.net/u011835903/article/details/112149394(原理一样,只是优化算法用布谷鸟算法)
基于布谷鸟算法优化的SVM数据分类https://blog.csdn.net/u011835903/article/details/110523352(原理一样,只是优化算法用布谷鸟算法)
布谷鸟算法优化的otsu多阈值分割https://blog.csdn.net/u011835903/article/details/108019744(原理一样,只是优化算法用布谷鸟算法)
布谷鸟优化的PID参数优化https://blog.csdn.net/u011835903/article/details/109306387(原理一样,只是优化算法用布谷鸟算法)
基于布谷鸟算法的无线传感器网(WSN)覆盖优化https://blog.csdn.net/u011835903/article/details/109262039(原理一样,只是优化算法用布谷鸟算法)
基于布谷鸟算法的3D无线传感器网(WSN)覆盖优化https://blog.csdn.net/u011835903/article/details/113834323(原理一样,只是优化算法用布谷鸟算法)

个人资料介绍

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

智能优化算法:布谷鸟搜索算法-附代码 的相关文章

  • 我的大学——学习生活总结

    纪念我终将逝去的青春 大一上學期 專業 1 C語言K amp R amp amp 習題 2 C語言經典習題 3 C語言趣味習題 4 C陷阱与缺陷 5 彙編語言 6 C 43 43 程序設計 7 C 程序設計
  • latex论文作图(python+matplotlib)

    20210425 0 引言 论文中进行作图 xff0c 需要对图片中的各种元素进行控制 xff0c 最近在论文写作过程中为了能够得到匹配文章的高质量图片 xff0c 也是花了很多心血 除了对图片中的风格进行控制 xff0c 另一方面比较重要
  • SAP结转方法:表结法、帐结法

    SAP 处理会计期间结帐方法主要有两种方法 xff1a 表结法和帐结法 国内在会计期末结帐大都采用 帐结 的方法 xff0c 而 SAP 一般都是采用 表 结 xff0c 通过财务报表的编制来披露当期利润 xff0c 即 xff1a 销售科
  • V4L2读取摄像头YUYV(YUV420)帧后使用C语言转存为bmp格式

    摄像头配置读取一帧YUV420 xff08 YUYV xff09 保存为RGB24图像 BRG的顺序 xff0c bmp 下面是内存中摄像头读取的数据直接转存为RGB图片的源码 输入 xff1a 图像指针地址 xff0c 图像长度 xff0
  • Linux内核系统调用原理与实现

    解决什么问题 Linux系统调用主要是操作系统实现的应用编程接口 xff0c 简单的说就是linux内核提供对外 对于应用程序 的接口函数 xff0c 进程通过调用系统调用完成自身的功能 系统调用在每个平台的实现方式都不同相同 xff0c
  • Docker容器基础

    1 介绍 Docker官网 xff1a https docs docker com Docker的github地址 xff1a https github com moby moby Dockerhub官网 https registry hu
  • 【自动驾驶】常见位姿估计算法的比较: 三角测量、PNP、ICP、

    PnP问题 3D 2D DLT 直接线性变换算法 相机标定工程用到的是DLT 直接线性变换算法 xff0c 它是一类PnP问题 3D 2D 请参考 位姿估计 视觉SLAM 笔记 常见位姿估计算法的比较 PnP xff08 Perspecti
  • CC2530 BootLoader,不带协议栈,任意跳转

    最近业余研究了下CC2530的远程固件更新 空中下载 现做个总结 一则方便大家学习共进 二则自己做个记录以防日后忘了 一 BootLoader主要技术点 nbsp nbsp 1 程序跳转到指定位置 nbsp nbsp 2 设置好相应的中断向
  • 使用 VNC 实现多用户登录

    Virtual Network Computing VNC 是一种提供计算机远程访问的流行工具 常规的 VNC 配置是针对单用户工作台而进行优化的 xff0c 可登录到 VNC 端口直接访问单一用户的桌面 然而 xff0c 这一配置在多用户
  • STLink V2烧录SWIM和SWD接口接线图

    stm8 采用SVTP软件烧录 xff0c 烧录接口为SWIM xff08 stlink v2烧录器带有该接口 xff09 xff0c 如下图 xff1a stm32可采用stlink v2 的SWD接口烧录 xff0c 接线图如下 xff
  • 车辆姿态角(Euler角)Pitch、Yaw、Roll 的设定

    首先申明 xff1a 此坐标系是针对车辆而设定的 xff0c 对于无人机来说是不同的 pitch xff1a 俯仰角 xff0c pitchAngleC2W orientation radian Y yaw xff1a 航向角 xff0c
  • Docker(四)----Docker-Compose 详解

    1 什么是Docker Compose Compose项目来源于之前的fig项目 xff0c 使用python语言编写 与docker swarm配合度很高 Compose 是 Docker 容器进行编排的工具 xff0c 定义和运行多容器
  • 转贴:ERP实施过程中的40个问题

    笔者在多年的实践中 xff0c 结合自身经验和多年的理论积累 xff0c 总结出有关ERP 实施的最关键的39 个问题 xff0c 以问答的形式 xff0c 让您在最短的时间内对ERP 实施有一个全面而客观的认识 xff0c 以免陷入日新月
  • VS Code 常用设置集合

    常用设置 xff08 setting json xff09 34 editor parameterHints enabled 34 true 开启参数预览窗口 设置字体颜色 34 editor semanticTokenColorCusto
  • Arduino--LCD1602(IIC)

    xff08 1 xff09 简介 前篇文章介绍了LCD1602的四位数据线控制方法 xff1a https blog csdn net u011816009 article details 106573622 但是该方法还是需要较多的IO口
  • Px4 ULog文件详解

    Px4 ULog文件详解 简介数据类型文件组织文件头定义段消息标记位消息格式定义消息信息消息复合信息消息参数消息 数据段订阅消息取消订阅消息日志数据消息字符串消息同步消息丢失 附录 简介 ULog 是用于记录数据的文件格式 xff0c 该格
  • 开发日记(一)

    这是自己编程第二天 xff0c 自己解决了好几个问题 xff0c 觉得很有成就感 xff0c 决定写下以后开发中遇到的问题 1 在多个Activity中传递数据 xff0c 之前只学过绑定基本的putExtra xff0c 今天上网一搜 x
  • 源程序生成控制流图和du-path

    最近上 源代码分析技术 这个课 xff0c 老师让写一个程序 xff0c 由一段c代码 xff0c 生成生成控制流图和du path xff0c 控制流图不用解释了 xff0c 说一下du path xff0c 这个术语是针对变量来说的 x
  • pandas使用笔记

    DataFrame使用笔记 dates 61 pd date range span class hljs string 39 20160728 39 span periods 61 span class hljs number 6 span
  • keras

    大神笔记 xff0c 转载自http blog csdn net u012162613 article details 45397033 Keras简介 Keras是基于Theano的一个深度学习框架 xff0c 它的设计参考了Torch

随机推荐

  • gensim similarity计算文档相似度

    向量空间模型计算文档集合相似性 0 将原始输入的词转换为ID xff0c 词的id表示法简单易用 xff0c 但是无法预测未登记词 xff0c 难以挖掘词关系 xff1b 词汇鸿沟 1 任意两个词之间是独立的 xff0c 无法通过词的ID来
  • doc2vec计算文档相似度

    doc2vec是基于word2vec的 xff0c word2vec对于计算两个词语的相似度效率比较好 xff0c 修改了word2vec中的cbow和skip gram模型 xff0c paragraph vector直接得到doc向量
  • 多维中维度的理解

    项目有段时间了 xff0c 今天需要做一个需求查询调研 必须要照顾楼下业务人员理解的方式吧多维度表述清楚 还真不好讲 xff1a 原以为维度就是一个基准点 xff0c 一个看事情的角度 xff0c 静下来想 xff0c 要描述出来好像还真不
  • Spring注解

    注解介绍 注解有两个作用 xff1a 标注和注入 标注 xff1a 类路径下自动扫描 xff0c 减少在xml中配置bean 例如 64 Component 64 Service注入 xff1a 自动装配 xff0c 需要类的地方直接加注解
  • akka基础

    基本概念消息传递API 通用API消息传递方式 Future机制Actor生命周期处理状态和错误 监督kill actor生命周期监控和DeathWatch安全重启状态 纵向扩展 Router调度方式使用策略 横向扩展 订阅集群事件启动 退
  • ROS学习(9)自定义移动机器人模型Gazebo仿真

    文章目录 前言一 gazebo启动二 创建编译功能包三 更新xacro文件1 更新robot base xacro2 更新robot camera xacro3 更新robot lidar xacro4 更新robot xacro 四 更新
  • ROS学习(11)使用ROS创建地图

    文章目录 前言一 创建编译功能包二 更新启动文件三 启动模型四 保存地图五 加载地图六 总结 前言 创建地图是一件比较复杂的工作 xff0c ROS利用map server地图服务器 xff0c 借助激光雷达和机器人的里程信息来完成这项工作
  • ROS学习(12)使用ROS创建自定义地图

    文章目录 前言一 新建环境二 创建编译功能包三 新建 world文件四 新建world启动文件五 更新启动文件六 建图 前言 上一篇使用的是柳树车库环境 xff0c 实现完整建图工作比较复杂 xff0c 所以准备新建一个简单点的环境 xff
  • ROS学习(13)自定义机器人的ROS导航

    文章目录 前言一 创建编译功能包二 代价地图配置三 基本局部规划器配置四 创建导航包的启动文件五 运行启动文件六 为导航功能包集设置rviz七 导航仿真 前言 上一篇针对我家户型 xff0c 完成了自定义环境的建图工作 本篇主要完成对导航功
  • ROS学习(开篇)Ubuntu16.04安装ROS Kinetic详细教程

    文章目录 前言一 添加ROS软件源 xff08 sources list xff09 二 添加密钥三 更新apt功能包列表四 安装ROS五 初始化 rosdep六 将ROS环境变量添加到 bashrc文件中七 安装rosinstall等工具
  • ROS学习(14)自定义四轮小车的ROS导航

    文章目录 前言一 创建编译功能包二 代价地图配置三 基本局部规划器配置四 创建导航包的启动文件五 导航仿真六 总结 前言 本篇为自定义四轮小车的ROS导航仿真 xff0c 与前面自定义机器人导航类似 该篇源码非原创 xff0c 特此说明 x
  • ROS学习(24)plugin插件

    文章目录 前言一 工作原理二 具体实现1 创建基类2 创建plugin类3 注册插件4 编译插件的动态链接库5 将插件加入ROS6 调用插件7 运行效果 前言 ROS中的插件就是可以动态加载的扩展功能类 ROS中的pluginlib功能包提
  • ROS学习(28)Web GUI

    文章目录 前言一 rosbridge suite元功能包二 roslibjs ros2djs ros3djs功能包三 tf2 web republisher功能包四 创建web应用五 使用web浏览器控制机器人 前言 ROS Web too
  • 参看了别人写的面试讲解

    转帖 ERP顾问的面试 新的一年就要开始了 xff0c 有不少的同行估计都在想着跳槽了 今天我就把自己的当面试官的感受给大家谈谈 xff0c 也许 xff0c 从中 xff0c 你可以掌握 ERP 实施顾问面试的技巧 在来年 xff0c 当
  • ROS2学习(1)ROS2简述

    文章目录 前言一 ROS1存在的问题二 什么是ROS21 ROS2的设计目标2 ROS2的系统架构3 ROS2的关键中间件 DDS4 ROS2中的通信模型5 ROS2的编译系统 前言 虽然众多开发者对ROS1进行了很多开发建设 xff0c
  • Qt之实现自定义控件的两种方式——提升法

    文章目录 前言一 需求二 实现1 新建项目2 自定义控件类3 提升4 效果 前言 可以通过Qt设计师拖拽原生控件进行界面开发 xff0c 但有时候原生控件不能满足项目需求 此时 xff0c 就需要实现自定义控件 Qt中实现自定义控件 xff
  • Qt之实现自定义控件的两种方式——插件法

    文章目录 前言一 需求二 实现1 新建项目2 自定义控件类3 编译插件4 拖拽使用 xff08 1 xff09 在designer exe中直接拖拽 xff08 2 xff09 在Qt Creator的设计师中直接拖拽 5 在项目中正常使用
  • Qt自定义控件——动态圆形进度条

    文章目录 前言一 需求二 实现1 自定义控件类2 提升3 效果 前言 本篇通过提升法实现一个动态圆形进度条 一 需求 自定义实现一个动态圆形进度条 xff0c 支持设置进度条颜色 目标值背景色 外边框背景色 中央圆环背景色 旋转角度及大小自
  • linux下可视化git工具git-cola安装与使用(SSH方式)

    一 git cola为何物 很多小伙伴 xff0c 特别喜欢使用TortoiseGit xff0c 该软件是做什么的 xff0c 就不用多说吧 奈何 xff0c TortoiseGit只有windows版 xff0c 这让在linux上开发
  • 智能优化算法:布谷鸟搜索算法-附代码

    智能优化算法 xff1a 布谷鸟搜索算法 附代码 文章目录 智能优化算法 xff1a 布谷鸟搜索算法 附代码1 算法原理2 算法结果3 参考文献4 Matlab代码 摘要 xff1a 谷鸟搜索算法 cuckoo search cs xff0