【群智能算法】一种改进的北方苍鹰优化算法 改进北方苍鹰算法INGO[1]【Matlab代码#1】

2023-11-18


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


1. 基础北方苍鹰优化算法

1.1 猎物识别阶段(勘探阶段)

在这里插入图片描述

1.2 追击和逃逸阶段(开发阶段)

在这里插入图片描述

2. 改进的北方苍鹰优化算法

2.1 立方混沌Cubic映射

在这里插入图片描述

2.2 透镜成像反向学习

基于透镜成像的反向学习策略根据缩放因子动态调节反向解的数量,从而优化种群数量并使算法避免局部最优。
透镜成像反向学习得到的反向解为:
在这里插入图片描述
其中,m为缩放因子,ad和bd分别为上下限,Xi为正向解或者叫原始解,Xi*为反向解。特殊地,当m=1时为一般的反向学习策略

2.3 最优最差反向学习策略

(1)对于最优个体,对其进行反向学习,避免算法早熟,从而提高算法的局部寻优能力。反向解如下:
在这里插入图片描述
(2)对于最差个体,对其进行随机反向学习,提高其全局搜索能力。随机反向解如下:
在这里插入图片描述

3. 部分代码展示

%%立方混沌初始化加反向折射机制的的种群初始化
X=initializationNew(SearchAgents,dimension,upperbound,lowerbound, fitness); 
for i =1:SearchAgents
     Flag4ub=X(i,:)>upperbound;
     Flag4lb=X(i,:)<lowerbound;
     X(i,:)=(X(i,:).*(~(Flag4ub+Flag4lb)))+upperbound.*Flag4ub+lowerbound.*Flag4lb;
     L=X(i,:);
     fit(i)=fitness(L);
end
%%
    %% 改进点:混合反向学习策略
    % 对最优位置,透镜成像反向学习策略
    n=1;
    Temp = (upperbound + lowerbound)./2 + (upperbound + lowerbound)./(2*n) - Xbest./n;
    % 边界越界处理
    Flag4ub=Temp>upperbound;
    Flag4lb=Temp<lowerbound;
    Temp=(Temp.*(~(Flag4ub+Flag4lb)))+upperbound.*Flag4ub+lowerbound.*Flag4lb; 
    fitTemp = fitness(Temp);%计算适应度值
    if(fitTemp<fbest)
        fbest = fitTemp;
        Xbest = Temp;
    end
     % 对最差位置,随机反向学习策略
     [fitWorst,indexWorst] = max(fit(i));
     WorstPosition = X(indexWorst);
     Temp = lowerbound + rand(1,dimension).*(upperbound - WorstPosition);
     Temp=(Temp.*(~(Flag4ub+Flag4lb)))+upperbound.*Flag4ub+lowerbound.*Flag4lb; 
    fitTemp = fitness(Temp);%计算适应度值
    if(fitTemp<fitWorst)
       fit(indexWorst) = fitTemp;
       X(indexWorst,:) = Temp;
    end

4. 结果展示

在这里插入图片描述

5. 资源获取

在F1、F2、F3上表现优异,可以获取完整代码资源。

6. 参考文献

付雪,朱良宽,黄建平,王璟瑀,Arystan Ryspayev.基于改进的北方苍鹰算法的多阈值图像分割[J/OL].计算机工程.

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

【群智能算法】一种改进的北方苍鹰优化算法 改进北方苍鹰算法INGO[1]【Matlab代码#1】 的相关文章

  • 数组中 2 个百分位之间的平均元素

    我有 2 个长度为 200 的向量 例如 A 和 B 然后我使用以下方法找到数组 A 的每第二个百分位数 A1 prctile A 1 2 100 1 这样A1是一个长度为50的数组 现在我想找到A1中每两个元素内的A元素的平均值 即A的第
  • MATLAB 中元胞数组的左连接

    I ve 2 cellMATLAB 中的数组 例如 A jim 4 paul 5 sean 5 rose 1 第二个 B jim paul george bill sean rose 我想做一个 SQL 左连接 这样我就可以得到 B 中的所
  • 在 Matlab 2014b 中移动等高线图的 z 值

    我正在尝试绘制曲面图 在曲面下方我希望显示轮廓线 但我希望轮廓位于z 1而不是默认值0 我找到了之前关于这个问题的帖子here https stackoverflow com questions 8054966 matlab how to
  • 将 Matlab MEX 文件中的函数直接嵌入到 Python 中

    我正在使用专有的 Matlab MEX 文件在 Matlab 中导入一些仿真结果 当然没有可用的源代码 Matlab 的接口实际上非常简单 因为只有一个函数 返回一个 Matlab 结构体 我想知道是否有任何方法可以直接从Python调用M
  • 在matlab中设置图例符号的精度

    我有这个 leg2 strcat Max Degree num2str adet 1 1 ch l leg3 strcat Min Degree num2str adet 1 2 ch l leg4 strcat Max Request n
  • 图像增强 - 从书写中清除给定图像

    我需要清理这张照片 删除 清理我 的字样并使其变亮 作为图像处理课程作业的一部分 我可能会使用 matlab 函数 ginput 来查找图像中的特定点 当然 在脚本中您应该对所需的坐标进行硬编码 您可以使用 conv2 fft2 ifft2
  • Microsoft Visual C++ 2008 和 R2007b 的 Mex 类型

    我想对 vs2008 和 matlab2007b 使用 mex 类型 我尝试了下面的代码 include
  • 如何读取 10 位原始图像?其中包含 RGB-IR 数据

    我想知道如何从我的 10 位原始 它有 rgb ir 图像数据 数据中提取 RGB 图像 如何使用 Python 或 MATLAB 进行阅读 拍摄时的相机分辨率为 1280x720 室内照片图片下载 https drive google c
  • 使用 java 执行 Matlab 函数

    我正在编写一个应用程序 它使用 matlab 进行图像处理 然后使用 Java 接口显示结果 由于某些原因 我必须同时使用 Java 和 Matlab 如何在java中使用matlab函数 如何创建和访问界面 MATLAB控制 http m
  • Matlab 编辑器不使用 emacs 快捷方式

    Is there some way I can make the matlab integrated editor not use emacs shortcut but use more normal shortcuts such that
  • opencv中矩阵的超快中值(与matlab一样快)

    我正在 openCV 中编写一些代码 想要找到一个非常大的矩阵数组 单通道灰度 浮点数 的中值 我尝试了几种方法 例如对数组进行排序 使用 std sort 和选择中间条目 但与 matlab 中的中值函数相比 它非常慢 准确地说 在 ma
  • 通过傅里叶空间填充进行插值

    我最近尝试在 matlab 上实现一个在傅立叶域中使用零填充的插值方法的简单示例 但我无法正常工作 我总是有一个小的频移 在傅里叶空间中几乎不可见 但它在时空上产生了巨大的误差 由于傅里叶空间中的零填充似乎是一种常见 且快速 的插值方法 因
  • 在 Matlab 中显示有理数

    我有两个整数 m n 它们一起形成 m n 形式的有理数 现在我只想以这种理性的形式在 Matlab 中显示它们 我可以通过这样做来做到这一点 char sym m n 所以 如果 例如m 1 n 2 Matlab将显示1 2 然而 如果m
  • Matlab Solve():未给出所有解决方案

    我试图找到两条曲线的交点 syms x y g x 20 exp x 30 3 5 1 sol x sol y solve x 22 3097 2 y 16 2497 2 25 y g x x y Real true 它只提供一种解决方案
  • 非模态 questdlg.m 提示

    我的代码绘制了一个图 然后提示用户是否想使用不同的参数绘制另一个图 问题是 当 questdlg m 打开时 用户无法查看绘图的详细信息 这是代码 while strcmp Cont Yes 1 Some code modifying da
  • 如何加载具有可变文件名的 .mat 文件?

    select all mat files oar dir oar mat n oar name loop through files for l 1 length oar load pat oar l lt this is the mat
  • 从 Java 运行 MATLAB 函数

    我在 MATLAB 中有一个 m 文件 我想从 Java 调用该文件 并以字符串或 Java 中的任何形式获取解决方案 这听起来很简单 但由于某种原因我无法让它发挥作用 我试过这个 matlab nosplash wait nodeskto
  • 如何获取MATLAB句柄对象的ID?

    当我尝试使用时出现问题MATLAB 句柄对象 http www mathworks com help techdoc ref handle html作为关键值MATLAB 容器 Map http www mathworks com help
  • 将数据提示堆栈放在轴标签顶部,并在轴位置发生更改后更新轴标签

    此问题仅适用于 unix matlab Windows 用户将无法重现该问题 我在尝试创建位于 y 轴标签顶部的数据提示时遇到问题 下图很能说明问题 正如您所看到的 在 ylabel 附近创建的数据提示将到达 ylabel 文本的底部 而期
  • 平衡两轮机器人而不使其向前/向后漂移

    我正在尝试设计一个控制器来平衡 2 轮机器人 约 13 公斤 并使其能够抵抗外力 例如 如果有人踢它 它不应该掉落 也不应该无限期地向前 向后漂移 我对大多数控制技术 LQR 滑模控制 PID 等 都很有经验 但我在网上看到大多数人使用 L

随机推荐

  • Python 安装模块后找不到模块以及Python代码自动补全设置的一个思路

    起因是在做一些小玩意时安装了一些模块 但是运行时却找不到模块 于是多次重装VScode里边的Python部分 导致VScode自动补全也被玩掉了 查了很久的才终于搞回来 先把找到的一个有用链接放这 免得找不到了如何使用Visual Stud
  • 使用labelme打标签,详细教程

    做图像语义分割 打标签时需要用到labelme这个工具 我总结了它的详细使用教程 目录 一 安装labelme工具 二 文件位置关系 三 labelme工具 四 labelme工具的快捷键 五 代码 将标签文件转为统一固定格式 六 总结 一
  • Jdk8 之 Stream流详细用法(一)

    本篇文章参考云深i不知处的文章 原文链接 https blog csdn net mu wind article details 109516995 一 概述 Stream 是 Java8 中处理集合的关键抽象概念 它可以指定你希望对集合进
  • 21.5 CSS 网页布局方式

    网页布局方式 网页布局方式 是指浏览器对网页中的元素进行排版的方法 常见的网页布局方式包括 1 标准流 文档流 普通流 布局 这是浏览器默认的排版方式 元素按照其在文档中的位置依次排列 可以使用CSS的盒模型属性进行水平和垂直布局 2 浮动
  • ipad投屏软件_无线投屏操作指南 轻松分享

    下发福利 智能会议的无线投屏 支持Windows Mac OS ios Android 一键投屏 随时批注 能够满足一分四屏 灵活进行大小屏互控 帮助企业突破 线 制 以下内容为无线投屏的操作指南 01 Windows 与 Mac OS系统
  • OOMMF手册整理

    如果您得系统Tcl Tk安装就是非线程得 那么您可以创建一个非线程版本得OOMMF 否则您可以在您得主目录或 usr local下创建一个额外得 线程化得Tcl Tk安装 请注意 如果您得系统上安装了多个Tcl Tk安装 则无论何时您构建或
  • Springboot未注入的类使用Spring容器的实体类,实体类又需要插入yml的数据,实体类属于Spring容器。

    Springboot中Bean的注入 我们都知道 Springboot可以使用方法级别注解 Bean 和类级别注解 Controller Component Service等 加包扫描的方式注入Beans 实现交给Spring容器管理 这样
  • R各个包里面的数据集列表

    Package Item Title csv doc datasets AirPassengers Monthly Airline Passenger Numbers 1949 1960 CSV DOC datasets BJsales S
  • STM32串口中断接收方式详细比较

    本例程通过PC机的串口调试助手将数据发送至STM32 接收数据后将所接收的数据又发送至PC机 具体下面详谈 实例一 void USART1 IRQHandler u8 GetData u8 BackData if USART GetITSt
  • stata--异方差检验

    异方差检验有两种方法 1 残差图 2 white检验 1 残差图 一般不用这个 这个只是粗略 代码 reg y fdi rvfplot yline 0 rvpplot fdi yline 0 1 对y和fdi回归 2 画出残差与拟合值 y
  • Doc2Vec的简介及应用(gensim)

    作者 Gidi Shperber 在本文中 你将学习什么是doc2vec 它是如何构建的 它与word2vec有什么关系 你能用它做什么 并且没有复杂的数学公式 介绍 文本文档的量化表示在机器学习中是一项具有挑战性的任务 很多应用都需要将文
  • ajax实现文件上传

    没有使用插件 一 单文件上传
  • linux 命令:zip 详解

    zip 命令的功能是打包和压缩文件 用法 zip options b path t mmddyyyy n suffixes zipfile list xi list 如果 zipfile 未提供 压缩标准输入并把结果写到标准输出 选项 A
  • svn项目的拉取和提交

    svn项目的拉取和提交 如何拉取svn项目到本地 方法一 1 新建一个空的svn目录文件夹 然后直接在桌面空白处鼠标右击 点击Svn Checkout 弹出一个框 URL of repository就是该项目得svn地址 Checkout
  • R语言的Rattle可视化BI数据挖掘分析工具

    Rattle介绍 Rattle是一个免费的开源数据挖掘工具包 使用 Gnome 图形界面以统计语言 R编写 它在GNU Linux Macintosh OS X和MS Windows下运行 Rattle正在澳大利亚和国际上用于商业 政府 研
  • @Cacheable 设置缓存过期时间

    RedisCacheConfig 文件 Configuration public class RedisCacheConfig 自定义的缓存key的生成策略 若想使用这个key 只需要讲注解上keyGenerator的值设置为simpleK
  • 二叉树两节点的最短距离(一次dfs完成)

    字节面试问到的 leetcode上没看到 记录一下自己的做法 此题近似于leetcode 236 二叉树的最近公共祖先 但有较大不同 做法为 对二叉树进行dfs遍历 递归函数写法为func dfs root p q TreeNode ans
  • Kubernetes笔记(四):详解Namespace与资源限制ResourceQuota,LimitRange

    前面我们对K8s的基本组件与概念有了个大致的印象 并且基于K8s实现了一个初步的CI CD流程 但对里面涉及的各个对象 如Namespace Pod Deployment Service Ingress PVC等 及各对象的管理可能还缺乏深
  • 刷脸支付有效的风险监控和预防措施

    刷脸支付是运用了3D人脸识别 活体检测 大数据风控技术等高新技术的全新移动支付方式 将带领行业进入一次新的浪潮人脸图像的预处理主要包括人脸扶正 人脸图像的增强 以及归一化等工作 人脸扶正是为了得到人脸位置端正的人脸图像 图像增强是为了改善人
  • 【群智能算法】一种改进的北方苍鹰优化算法 改进北方苍鹰算法INGO[1]【Matlab代码#1】

    文章目录 获取资源 请见文章第5节 资源获取 1 基础北方苍鹰优化算法 1 1 猎物识别阶段 勘探阶段 1 2 追击和逃逸阶段 开发阶段 2 改进的北方苍鹰优化算法 2 1 立方混沌Cubic映射 2 2 透镜成像反向学习 2 3 最优最差