【群智能算法】一种改进的蜣螂优化算法IDBO[2]【Matlab代码#18】

2023-11-07


获取资源请见文章第5节:资源获取】


1. 原始DBO算法

详细介绍此处略,可参考DBO算法介绍

2. 改进后的IDBO算法

2.1 Bernoulli混沌映射种群初始化

传统的蜣螂优化算法在种群初始化阶段采用的是生成随机数的方式进行初始化种群位置,导种群中蜣螂的位置良莠不齐,同时不能遍历环境中的所有位置,导致其寻优效果差、收敛速度低。所以本文提出在种群初始化阶段引入Bernoulli映射,Bernoulli映射的数学表达式可表示为:
在这里插入图片描述
其中, Z k Z_{k} Zk为产生的第 k k k代混沌序列的当前值, ρ \rho ρ为控制参数,经过实验发现,当 ρ \rho ρ处于 0.5 附近时能够获得更好的遍历性。

2.2 自适应因子

在觅食行为的蜣螂位置更新公式中,会根据目前的个体和群体的最优解来更新自己的位置,一旦这个解陷入局部最优,整个种群就很容易进入停滞状态,为了改善这个问题,平衡全局和局部搜索能力,引入了自适应因子。

2.3 Levy飞行策略

在偷窃行为蜣螂的位置更新公式中,也会根据目前的个体最优值来更新自己的位置,也容易陷入局部最优,此时可以使用莱维飞行策略进行位置更新使得这部分个体去到更广的搜索空间:
在这里插入图片描述

2.4 动态权重系数

基本蜣螂优化算法的偷窃行为更新阶段,在迭代初期就向全局最优解逼近,会导致搜索范围不足,陷入局部最优,使搜索失败。为克服这一弊端,再在其位置更新公式中加入动态权重系数 ω,让它在迭代初期具有较大值,促进全局搜索,迭代后期自适应变小,促进局部搜索并加快收敛速度。

3. 部分代码展示

function [ bestX,fMin , Convergence_curve ] = IDBO(N, Max_iteration,lb,ub,dim,fobj  )
       
P_percent = 0.2;     
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
pNum = round( N *  P_percent );    % The population size of the producers   

lb= lb.*ones( 1,dim );    % Lower limit/bounds/     a vector
ub= ub.*ones( 1,dim );    % Upper limit/bounds/     a vector

%Initialization
% ★★改进1:Bernoulli映射种群初始化★★
x = Bernoulli(N,dim,ub,lb);
for i = 1 : N
    fit( i ) = fobj( x( i, : ) ) ; 
end

pFit = fit;                       
pX = x; 
XX=pX;    
[ fMin, bestI ] = min( fit );
bestX = x( bestI, : );

4. 效果图展示

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 资源获取

可以获取完整代码资源。

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

【群智能算法】一种改进的蜣螂优化算法IDBO[2]【Matlab代码#18】 的相关文章

  • 图像分析-光纤识别

    我是图像分析新手 您知道如何以仅获取纤维的方式对该图像进行二值化吗 我尝试过不同的阈值技术等 但没有成功 我不介意应该使用什么工具 但我更喜欢 NET or Matlab PS 我不知道该把答案放在哪里 所以我把它放在StackOverfl
  • 如何将条形图的 XtickLabels 向左移动?

    我目前正在尝试创建频率直方图 为此 我必须创建一个条形图 条形图之间没有空格 然而 这集中于XTickLabels在酒吧的中间 由于它是一个直方图 我希望数值位于每个条形之间的线上 以便它可以直观地指示间隔 本质上 我需要将所有刻度标签移至
  • 在 Matlab 中保存当前运行的脚本

    有没有办法保存Matlab中当前运行的脚本 我有一个脚本 它会自动备份一组脚本 但如果我更改了当前脚本 则保存的版本将过期 也许可以调用一些java Thanks 在 Yair Altman 网站上的某个地方 请参阅我的其他答案中的链接 他
  • 对多个属性使用一种设置方法 MATLAB

    我有几个属性基本上使用相同的属性set method classdef MyClass properties A B end methods function mc MyClass a b Constructor mc A a mc B b
  • matlab mex 文件和 C++ dll (Windows)

    我有一个带有 Test 类的 DLL 标题 class MY EXPORT Test public int doit const string str 和来源 int Test doit const string str return in
  • 计算数组中接下来的 n 个元素的乘积

    我想计算下一个的乘积n矩阵的相邻元素 号码n要相乘的元素数应在函数的输入中给出 例如 对于此输入 我应该从第一个开始计算每 3 个连续元素的乘积 p ind max product 1 2 2 1 3 1 3 这给出了 1 2 2 2 2
  • MATLAB 中时间戳过滤器的优化 - 处理非常大的数据集

    我正在 MATLAB 中编写一个程序 必须使用 MATLAB 并且不能真正使用 MEX 来过滤大量数据 我需要实现的过滤器之一要求我将时间戳向量与其他时间戳不会出现的已知 不良 时间列表进行比较 一个典型的时间戳向量有大约 2 000 00
  • 按元素出现的频率对数组元素进行排序

    是否可以在 matlab octave 中使用sort函数根据元素的相对频率对数组进行排序 例如数组 m 4 4 4 10 10 10 4 4 5 应该产生这个数组 5 10 10 10 4 4 4 4 4 5是出现频率较低的元素 位于顶部
  • 如何使用matlab生成不同频率的正弦波?

    对于我的项目 我需要使用 matlab 生成一个正弦波 它有 100 000 个样本 并且频率在每 10 000 个样本后随机变化 采样率和频率可以根据方便而定 matlab中有没有函数可以生成这个 好的另一个例子 生成 5 个随机频率 r
  • MATLAB 教程中的 SIFT 实现

    我正在寻找 MATLAB 中的一些基本 SIFT 实现 我需要从第一原则来写它 另外 我正在寻找一些可以解释程序中发生的事情的内容 Vedali 的代码和 David Lowe 的代码超出了我的理解范围 如果您是 Matlab 用户 您一定
  • 括号中的波形符字符

    在 MATLAB 中 以下代码执行什么操作 m func returning matrix 波浪号运算符 的作用是什么 在 Matlab 中 这意味着不要将函数中相应的输出参数分配到赋值的右侧 因此 如果func returning mat
  • 在 Matlab 中高效获取像素坐标

    我想在 Matlab 中创建一个函数 给定一个图像 该函数将允许人们通过单击图像中的像素来选择该像素并返回该像素的坐标 理想情况下 人们能够连续单击图像中的多个像素 并且该函数会将所有相应的坐标存储在一个矩阵中 有没有办法在Matlab中做
  • matlab中的排列函数是如何工作的

    这是一个有点愚蠢的问题 但我似乎无法弄清楚排列在 matlab 中是如何工作的 以文档为例 A 1 2 3 4 permute A 2 1 ans 1 3 2 4 到底是怎么回事 这如何告诉 matlab 3 和 2 需要交换 哇 这是我迄
  • 如何在 matlab 中创建由多个 3d 图像数据数组组成的数组

    我正在阅读 15 张图片imagedata imread imagename jpg 它的大小总是320 by 320 by 3 如何将数据放入数组中 使用 for for 循环 以便在访问新数组的第一个元素时获得输入的第一个图像的 RGB
  • MATLAB - 冲浪图数据结构

    我用两种不同的方法进行了计算 对于这些计算 我改变了 2 个参数 x 和 y 最后 我计算了每种变体的两种方法之间的 误差 现在我想根据结果创建 3D 曲面图 x gt on x axis y gt on y axis Error gt o
  • 访问图像的 Windows“标签”元数据字段

    我正在尝试进行一些图像处理 所以现在我正在尝试读取图像 exif 数据 有 2 个内置函数可用于读取图像的 exif 数据 问题是我想读取图像标签 exifread and imfinfo这两个函数都不显示图像标签 Is there any
  • 如何在文本集中创建所有字符组合?

    例如 我有这样的文本集 第 1 栏 a b 第 2 栏 l m n 第 3 栏 v w x y 我想将它们组合起来以获得如下输出 alv alw alx aly amv amw amx amy 这将输出 24 种文本组合 如果我只使用前两列
  • 有效地绘制大时间序列(matplotlib)

    我正在尝试使用 matplotlib 在同一轴上绘制三个时间序列 每个时间序列有 10 6 个数据点 虽然生成图形没有问题 但 PDF 输出很大 在查看器中打开速度非常慢 除了以栅格化格式工作或仅绘制时间序列的子集之外 还有其他方法可以获得
  • 从开始/结束索引列表创建向量化数组

    我有一个两列矩阵M包含一堆间隔的开始 结束索引 startInd EndInd 1 3 6 10 12 12 15 16 如何生成所有区间索引的向量 v 1 2 3 6 7 8 9 10 12 15 16 我正在使用循环执行上述操作 但我想
  • 图像处理 - 使用 opencv 进行服装分割

    我正在使用 opencv 进行服装特征识别 第一步 我需要通过从图像中移除脸部和手来分割 T 恤 任何建议表示赞赏 我建议采用以下方法 Use 阿德里安 罗斯布鲁克的用于检测皮肤的皮肤检测算法 谢谢罗莎 格隆奇以获得他的评论 在方差图上使用

随机推荐

  • 【2023年电赛国一必备】D题报告模板--可直接使用

    任务 图1 任务内容 要求 图2 基本要求内容 图3 发挥部分内容 说明 图4 说明内容 评分标准 图5 评分内容 正文 部分 摘要 本实验旨在设计和制作一种装置 用于对信号发生器输出的信号进行调制方式识别与参数估计 该装置能够识别和显示信
  • SpringCloud基础知识

    一 什么是微服务架构 微服务 一词源于Martin Fowler的名为Microservices 的博文 可以在他的官方博客上找到 简单地说 微服务是系统架构上的一种设计风格 它的主旨是将一个原本独立的系统拆分成多个小型服务 这些小型服务都
  • telnet远程登陆程序

  • 集合引用类型篇(一)

    ECMAScript中最常用的集合引用类型就是Object和Array 尤其是Array提供的很多方法 可以更方便的操纵数据 为我们提供快速处理数据的能力 Object 显示创建Object的实例对象有两种方法 一种是new Object
  • java开发——Cloneable接口、clone()方法和深浅拷贝

    1 实现Cloneable接口表明该类的对象是允许克隆的 2 允许克隆的意思是 可以调用clone 方法 3 深拷贝还是浅拷贝 取决于如何重写Object的clone 方法 4 原对象和克隆对象的关系 深拷贝 阳关道和独木桥 浅拷贝 藕断丝
  • java人脸识别功能实现

    1 首先是用的百度AI人脸识别接口 去百度申请以下参数作为预备 2 直接导入写好的人脸工具类对人脸进行注册 package cn abtu config import com baidu aip face AipFace import or
  • 基于Springboot+mysql+mybatis-plus+swagger+redis+rabbimq+Springcloud+eureka+feign(http)+Apollo的员工管理系统(1

    基于Springboot mysql mybatis plus swagger redis rabbimq Springcloud eureka feign http Apollo的员工管理系统 1 本系统基于Springboot集成各种组
  • SpringBoot+Kafka+ELK 完成海量日志收集

    整体流程大概如下 服务器准备 在这先列出各服务器节点 方便同学们在下文中对照节点查看相应内容 SpringBoot项目准备 引入log4j2替换SpringBoot默认log demo项目结构如下 pom
  • 字典序最小回文串

    字典序最小回文串 题目解读 给你一个由 小写英文字母 组成的字符串 s 你可以对其执行一些操作 在一步操作中 你可以用其他小写英文字母 替换 s 中的一个字符 请你执行 尽可能少的操作 使 s 变成一个 回文串 如果执行 最少 操作次数的方
  • odoo13搭建-odoo13源码在windows系统的搭建详细过程

    最近因为要用odoo 所以记录一下在windows系统下搭建odoo的过程 odoo使用的是github下载odoo13版本 资源信息 提前需要的准备的安装包和源码如下 odoo13源码 odoo13源码下载 https github co
  • 带通滤波器介数如何确定

    你在MATLAB界面左下角的Start里面选择filter design然后填入你的参数 MATLAB会自动帮你算出你设计的滤波器的阶数
  • 福禄克测试中的电阻参数:LOOP、PAIR UBL、P2P UBL代表什么?

    福禄克测试中的电阻参数 LOOP PAIR UBL P2P UBL分别代表什么 LOOP 直流环路电阻 PAIR UBL 线对电阻差 P2P UBL 线对电阻差的差 IEEE 标准 802 3 2012 规定导线之间的直流电阻 LOOP 不
  • template_event

    if f ES TEMPLATE DIR then echo generate event template curl XPUT http localhost 9200 template template event d cat ES TE
  • 单链表翻转--Java实现

    问题描述 将单链表的顺序翻转过来 代码实现 定义链表节点 static class ListNode int val ListNode next public ListNode int val ListNode next this val
  • 网络安全(黑客)自学路线笔记

    一 什么是黑客 黑客泛指IT技术主攻渗透窃取攻击技术的电脑高手 现阶段黑客所需要掌握的远远不止这些 二 为什么要学习黑客技术 其实 网络信息空间安全已经成为海陆空之外的第四大战场 除了国与国之间的博弈 国内企业与企业间也有显著的明争暗斗现象
  • 分库分表后的查询解决方案

    在分库分表之后 每个表的数据是分散存储在不同的数据库中的 因此 在查询数据时需要考虑如何查询跨多个数据库和表的数据 常见的解决方案有以下几种 1 应用层分页 将查询条件分发到各个数据库 然后在应用层合并结果集并进行分页 这种方案可以实现比较
  • Redux 是什么?怎么用?

    第1 章 Redux 介绍 本章涵盖 定义Redux 了解Flux 与Redux 之间的差异 使用Redux 和React 介绍action reducer 和store 学习何时使用Redux 在2018 年 如果你进入任何一个React
  • psql命令

    psql备份数据库 su postgres pg dump d map gt map sql 导出sql psql d map f map sql 导入sql psql导出数据到文件 COPY SELECT gid name FROM l
  • java强引用、软引用、弱引用、虚引用

    前言概述 在JDK1 2以前的版本中 当一个对象不被任何变量引用 那么程序就无法再使用这个对象 这就像在日常生活中 从商店购买了某样物品后 如果有用 就一直保留它 否则就把它扔到垃圾箱 由清洁工人收走 一般说来 如果物品已经被扔到垃圾箱 想
  • 【群智能算法】一种改进的蜣螂优化算法IDBO[2]【Matlab代码#18】

    文章目录 获取资源 请见文章第5节 资源获取 1 原始DBO算法 2 改进后的IDBO算法 2 1 Bernoulli混沌映射种群初始化 2 2 自适应因子 2 3 Levy飞行策略 2 4 动态权重系数 3 部分代码展示 4 效果图展示