【智能算法】人类进化优化算法(HEOA)原理及实现

news2024/11/24 1:13:45

目录

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


1.背景

2024年,J Lian受到人类进化启发,提出了人类进化优化算法(Human Evolutionary Optimization Algorithm, HEOA)。

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

2.算法原理

2.1算法思想

HEOA将全局搜索过程分为:人类探索和人类发展。初始化采用Logistic混沌映射,在人类探索阶段,进行初始的全局搜索。在人类发展阶段,人口被分类为领导者、探索者、追随者和失败者,每个人都使用不同的搜索策略。

在这里插入图片描述

2.2算法过程

人类探索阶段

探索阶段被定义为最大迭代次数的初始1/4。在人类发展的各个阶段,当面对未开发的领域和有限的知识时,个体倾向于采用统一的搜索策略:
X i t + 1 = β ⋅ ( 1 − t M a x i t e r ) ⋅ ( X i t − X b e s t ) ⋅ L e v y ( d i m ) + X b e s t ⋅ ( 1 − t M a x i t e r ) + ( X m e a n t − X b e s t ) ⋅ f l o o r ( r a n d f j u m p ) ⋅ f j u m p (1) X_{i}^{t+1}=\beta\cdot(1-\frac{t}{Max_{iter}})\cdot(X_{i}^{t}-X_{best})\cdot Levy(dim)+X_{best}\cdot(1-\frac{t}{Max_{iter}})+(X_{mean}^{t}-X_{best})\cdot floor(\frac{rand}{f_{jump}})\cdot f_{jump}\tag{1} Xit+1=β(1Maxitert)(XitXbest)Levy(dim)+Xbest(1Maxitert)+(XmeantXbest)floor(fjumprand)fjump(1)
其中, β \beta β为自适应因子,平均位置Xmean表述为:
X m e a n t = 1 N ∑ k = 1 N X k t (2) X_{mean}^t=\frac1N\sum_{k=1}^NX_k^t\tag{2} Xmeant=N1k=1NXkt(2)
自适应因子解释了人类探索知识的难度越来越大和群体特征:
β = 0.2 ( 1 − t M a x t e r ) ⋅ ( X i t − X m e a n t ) (3) \beta=0.2\Bigg(1-\frac t{Max_{ter}}\Bigg)\cdot\Bigg(X_i^t-X_{mean}^t\Bigg)\tag{3} β=0.2(1Maxtert)(XitXmeant)(3)

跳跃策略

在探索阶段借鉴了图像裁剪与重组技术的跳跃策略,旨在增强搜索位置的分布广度。将图像划分为 36x36 的小块,然后按照特定规则重新排列,以保持整体形状。这种技术利用人眼在观察图像时,通过整体和局部特征的组合来感知图像,从而对局部信息的丢失相对不敏感。将这一概念扩展到高维数据,该方法在保持元数据的关键特征的同时,将搜索分布在多个区域,以提高搜索效率。
f j u m p = ( l b ( 1 ) − u b ( 1 ) ) δ , δ ∈ [ 100 , 2000 ] (4) f_{jump}=\frac{(lb(1)-ub(1))}{\delta},\delta\in[100,2000]\tag{4} fjump=δ(lb(1)ub(1)),δ[100,2000](4)
在这里插入图片描述
在这里插入图片描述

人类发展阶段

在人类发展的各个阶段,HEOA将人类社会分为四种不同的角色:领导者、探索者、追随者和失败者。每个角色采用独特的搜索策略,共同协作探索全局最优解。
领导者拥有丰富的知识,通常位于最优区域。在进行的实验中,预适应前40%的个体被指定为领导者。他们利用现有的知识,开始探索人类发展的优越领域:
X i t + 1 = { ω ⋅ X i t ⋅ exp ⁡ ( − t r a n d ⋅ M a x i t e r ) , R < A ω ⋅ X i t + R n ⋅ o n e s ( 1 , d i m ) , R ≥ A (5) X_i^{t+1}=\begin{cases}\omega\cdot X_i^t\cdot\exp(\frac{-t}{rand\cdot Max_{iter}}),R<A\\\\\omega\cdot X_i^t+Rn\cdot ones(1,dim),R\geq A\end{cases}\tag{5} Xit+1= ωXitexp(randMaxitert),R<AωXit+Rnones(1,dim),RA(5)
知识获取的容易度系数w,随着发展的推进逐渐减小:
ω = 0.2 cos ⁡ ( π 2 ( 1 − t M a x i t e r ) ) (6) \omega=0.2\cos(\frac\pi2(1-\frac t{Max_{iter}}))\tag{6} ω=0.2cos(2π(1Maxitert))(6)
探索者在探索未知领域以发现全局最佳解决方案方面发挥着至关重要的作用。在进行的实验中,在种群中健康度排名前40%到80%的个体被指定为探索者:
X i t + 1 = R n ⋅ exp ⁡ ( X w o r s t t 2 − X i t 2 i 2 ) (7) X_i^{t+1}=Rn\cdot\exp(\frac{X_{worst}^t{}^2-X_i^{t2}}{i^2})\tag{7} Xit+1=Rnexp(i2Xworstt2Xit2)(7)
跟随者坚持最具适应性的领导者的指导,跟随他们的脚步。在进行的实验中,最上层的80%至90%的人口被分配为追随者的角色:
X i t + 1 = X i t + 2 ω ⋅ R d ⋅ ( X b e s t t − X i t ) (8) X_i^{t+1}=X_i^t+2\omega\cdot Rd\cdot\left(X_{best}^t-X_i^t\right)\tag{8} Xit+1=Xit+2ωRd(XbesttXit)(8)
失败者是指不能很好地适应环境而留在人群中的个体。这些不适应社会的失败者将被淘汰,在适合人类发展的地区通过繁殖来补充人口:
X i t + 1 = X b e s t + ( X b e s t − X i t ) ⋅ R n (9) X_i^{t+1}=X_{best}+\left(X_{best}-X_i^t\right)\cdotp Rn\tag{9} Xit+1=Xbest+(XbestXit)Rn(9)

伪代码

在这里插入图片描述

3.结果展示

使用测试框架,测试HEOA性能 一键run.m

  • 【智能算法】省时方便,智能算法统计指标——一键运行~

CEC2017-F22
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.参考文献

[1] Lian J, Hui G. Human evolutionary optimization algorithm[J]. Expert Systems with Applications, 2024, 241: 122638.

5.代码获取

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

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

相关文章

Linux提示:mount: 未知的文件系统类型“ntfs”

mount: 未知的文件系统类型“ntfs” 在Linux系统中&#xff0c;如果遇到“mount: 未知的文件系统类型‘ntfs’”的错误&#xff0c;这通常意味着您的系统没有安装支持NTFS文件系统的软件。为了挂载NTFS文件系统&#xff0c;您需要安装ntfs-3g软件包。以下是如何在不同Linux发行…

python学习笔记-02

变量和数据类型 程序中运用变量存储数据&#xff0c;python是一门强类型语言&#xff0c;赋值时不需要指定数据类型。 1.变量的定义 语法格式&#xff1a;变量名数据 a10 print(a) a哈哈 print(a)python中基本数据类型&#xff1a; 数字(num)&#xff1a;int(有符号整数)、lo…

Java_方法引用

方法引用就是把已经有的方法拿过来用&#xff0c;当作函数式接口中抽象方法的方法体。 条件&#xff1a; 1.引用处需要是函数式接口 2.被引用的方法需要已经存在 3.被引用的方法的形参和返回值需要跟抽象方法的形参和返回值保持一致 4.被引用方法的功能需要满足当前的要求 简…

122. Kafka问题与解决实践

文章目录 前言顺序问题1. 为什么要保证消息的顺序&#xff1f;2.如何保证消息顺序&#xff1f;3.出现意外4.解决过程 消息积压1. 消息体过大2. 路由规则不合理3. 批量操作引起的连锁反应4. 表过大 主键冲突数据库主从延迟重复消费多环境消费问题后记 前言 假如有家公司是做餐饮…

Java性能优化(五)-多线程调优-Lock同步锁的优化

作者主页&#xff1a; &#x1f517;进朱者赤的博客 精选专栏&#xff1a;&#x1f517;经典算法 作者简介&#xff1a;阿里非典型程序员一枚 &#xff0c;记录在大厂的打怪升级之路。 一起学习Java、大数据、数据结构算法&#xff08;公众号同名&#xff09; ❤️觉得文章还…

python基础---面向对象相关知识

面向对象 可以把数据以及功能打包为一个整体 类: 名称属性(数据)方法 class Person:def __init__(self, name, age):self.age ageself.name namedef print_info:print(self.name, self.age)定义 #经典类 class Dog1:pass# 新式类 class Dog2(object):pass在python3里面这…

[leetcode] 67. 二进制求和

文章目录 题目描述解题方法模拟java代码复杂度分析 相似题目 题目描述 给你两个二进制字符串 a 和 b &#xff0c;以二进制字符串的形式返回它们的和。 示例 1&#xff1a; 输入:a "11", b "1" 输出&#xff1a;"100"示例 2&#xff1a; 输…

QML 本地存储(Setting,sqlite)

Qt hello - 专注于Qt的技术分享平台 QML 原生的储存方有两种&#xff1a; 1&#xff0c;Settings 跟QWidget 中的QSettings 一样&#xff0c;可以简单的存储一些配置。 2&#xff0c;Sqlite sqlite数据库。可以存储一些复杂的数据。 一&#xff0c;Settings 我们以一个按钮的位…

自动语音识别

⚠申明&#xff1a; 未经许可&#xff0c;禁止以任何形式转载&#xff0c;若要引用&#xff0c;请标注链接地址。 全文共计3077字&#xff0c;阅读大概需要3分钟 &#x1f308;更多学习内容&#xff0c; 欢迎&#x1f44f;关注&#x1f440;【文末】我的个人微信公众号&#xf…

学习笔记:【QC】Android Q qmi扩展nvReadItem/nvWriteItem

一、qmi初始化 流程图 初始化流程: 1、主入口&#xff1a; vendor/qcom/proprietary/qcril-hal/qcrild/qcrild/rild.c int main(int argc, char **argv) { const RIL_RadioFunctions *(*rilInit)(const struct RIL_Env *, int, char **); rilInit RIL_Init; funcs rilInit…

深度学习之基于Matlab神经网络的活体人脸和视频人脸识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 人脸识别技术作为生物识别技术的一种&#xff0c;近年来得到了广泛的关注和应用。与传统的身份认证方…

小程序预览或上传代码时,遇到app.json未找到某个wxml文件的解决方法

uniapp小程序&#xff0c;点击预览或者是上传代码&#xff0c;遇到app.json无法找到某个wxml文件的解决方法&#xff1a;清缓存 问题&#xff1a; message&#xff1a;Error: app.json: 未找到 ["subPackages"][3]["pages"][3] 对应的 subPackages4/pages/…

RTT潘多拉开发板上实现电源管理

简介 随着物联网(IoT)的兴起&#xff0c;产品对功耗的需求越来越强烈。作为数据采集的传感器节点通常需要在电池供电时长期工作&#xff0c;而作为联网的SOC也需要有快速的响应功能和较低的功耗。 在产品开发的起始阶段&#xff0c;首先考虑是尽快完成产品的功能开发。在产品…

【负载均衡在线OJ项目日记】编译与日志功能开发

目录 日志功能开发 常见的日志等级 日志功能代码 编译功能开发 创建子进程和程序替换 重定向 编译功能代码 日志功能开发 日志在软件开发和运维中起着至关重要的作用&#xff0c;目前我们不谈运维只谈软件开发&#xff1b;日志最大的作用就是用于故障排查和调试&#x…

B端UX/UI设计面试作品集分层源文件figmasketch模板

当您考虑找工作时&#xff0c;是否曾质疑过项目复盘作品集的重要性&#xff1f;实际上&#xff0c;一份精心准备的项目复盘作品集对于求职者来说具有无可估量的价值&#xff0c;特别是对于设计师这一职业领域。 以下所述或许对您而言已非陌生。您的作品集应当成为您专业技能与…

系统架构设计师错题集

在实时操作系统中&#xff0c;两个任务并发执行&#xff0c;一个任务要等待另一个任务发来消息&#xff0c;或建立某个条件后再向前执行&#xff0c;这种制约性合作关系被称为任务的&#xff08;9&#xff09;。 (9)A.同步 B.互斥 C.调度 D.执行 【答案】A 【解析】本题考查…

安装docker20.10.18版本步骤

安装docker20.10.18版本步骤 准备低版本安装包 #安装20.10.18版本的dockercd /opt #切换目录#上传需要的docker20.10.18.zip安装包unzip docker20.10.18.zip #解压cd docker20.10.18/ #切换目录yum install -y *.rpm #安装systemctl enable --now docker.service #开机自启并…

手动配置dns后网速变慢

之前因为自动的dns能上qq但打不开网页&#xff0c;就手动设置了一个&#xff0c;结果近些天时不时出现网页图片加载慢的问题&#xff0c;影响到我看美女图片了&#xff0c;是可忍熟不可忍 测了下网速&#xff0c;很快&#xff0c;下载上传都是三位数的&#xff0c;那显然不是网…

【c++算法篇】双指针(下)

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;算法笔记仓 朋友们大家好啊&#xff0c;本篇文章我们来到算法的双指针的第二部分 目录 1.有效三角形的个数2.查找总价格为目标值的两个商品3.三数之和4.四数之和5.双指针常见场景总结 1.有效三角形…

mvc 异步请求、异步连接、异步表单

》》》 利用Jquery ajax 》》》 mvc 异步表单 c# MVC 添加异步 jquery.unobtrusive-ajax.min.js 方法 具–>Nuget程序包管理器–>程序包管理器控制台 在控制台输入&#xff1a;PM>Install-Package Microsoft.jQuery.Unobtrusive.Ajax –version 3.0.0 回车执行即可在…