【智能算法】饥饿游戏搜索算法(HGS)原理及实现

2024-04-19 13:44

本文主要是介绍【智能算法】饥饿游戏搜索算法(HGS)原理及实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

目录

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


1.背景

2021年,Yang等人受到自然界饥饿驱动的活动和动物的行为选择启发,提出了饥饿游戏搜索算法(Hunger Games Search, HGS)。

在这里插入图片描述

在这里插入图片描述

2.算法原理

2.1算法思想

HGS源自动物在寻找食物时的行为模式,强调动物根据感知信息和计算规则与环境交互,优先选择和追求食物来源以支持生存、繁殖和获取食物。饥饿作为强大的驱动力,能够推动动物行为,并在竞争和其他驱动力之间起主导作用。

2.2算法过程

群居动物在觅食过程中经常相互合作:
X ( t + 1 ) → = { G a m e 1 : X ( t ) → • ( 1 + r a n d n ( 1 ) ) , r 1 < l G a m e 2 : W 1 → • X b → + R → • W 2 → • ∣ X b → − X ( t ) → ∣ , r 1 > l , r 2 > E G a m e 3 : W 1 → • X b → − R → • W 2 → • ∣ X b → − X ( t ) → ∣ , r 1 > l , r 2 < E (1) \left.\overrightarrow{X(t+1)}=\left\{\begin{array}{c}Game_1:\overrightarrow{X(t)}•(1+randn(1)),r_1<l\\Game_2:\overrightarrow{W_1}•\overrightarrow{X_b}+\overrightarrow{R}•\overrightarrow{W_2}•\left|\overrightarrow{X_b}-\overrightarrow{X(t)}\right|,r_1>l,r_2>E\\Game_3:\overrightarrow{W_1}•\overrightarrow{X_b}-\overrightarrow{R}•\overrightarrow{W_2}•\left|\overrightarrow{X_b}-\overrightarrow{X(t)}\right|,r_1>l,r_2<E\end{array}\right.\right.\tag{1} X(t+1) = Game1:X(t) (1+randn(1)),r1<lGame2:W1 Xb +R W2 Xb X(t) ,r1>l,r2>EGame3:W1 Xb R W2 Xb X(t) ,r1>l,r2<E(1)
在这里插入图片描述
E是所有位置的变分控制:
E = s e c h ( ∣ F ( i ) − B F ∣ ) (2) E=\mathrm{sech}(|F(i)-BF | )\tag{2} E=sech(F(i)BF)(2)
BF是当前迭代最优适应度,sech为双曲函数:
s e c h ( x ) = 2 e x + e − x (3) \mathrm{sech}(x)=\frac2{e^x+e^{-x}}\tag{3} sech(x)=ex+ex2(3)
参数表述为:
R → = 2 × s h r i n k × r a n d − s h r i n k s h r i n k = 2 × ( 1 − t T ) (4) \begin{aligned}&\overrightarrow{R}=2\times shrink\times rand-shrink\\&shrink=2\times(1-\frac tT)\end{aligned}\tag{4} R =2×shrink×randshrinkshrink=2×(1Tt)(4)
个体在搜索中的饥饿特征:
W 1 ( i ) → = { h u n g r y ( i ) • N S H u n g r y × r 4 , r 3 < l 1 r 3 > l (5) \overrightarrow{W_1(i)}=\begin{cases} hungry(i)•\dfrac{N}{SHungry}\times r_4,r_3<l\\ 1r_3>l\end{cases}\tag{5} W1(i) = hungry(i)SHungryN×r4,r3<l1r3>l(5)
W2表达式表述为:
W 2 ( i ) → = ( 1 − e x p ( − ∣ h u n g r y ( i ) − S H u n g r y ∣ ) ) × r 5 × 2 (6) \overrightarrow{W_2(i)}=(1-exp(-|hungry(i)-SHungry|))\times r_5\times2\tag{6} W2(i) =(1exp(hungry(i)SHungry))×r5×2(6)
hungry代表每个人的饥饿,SHungry是所有个体饥饿感受的总和,hungry(i)表述为:
h u n g r y ( i ) = { 0 , A l l F i t n e s s ( i ) = = B F h u n g r y ( i ) + H , A l l F i t n e s s ( i ) ! = B F (7) hungry(i)=\left\{\begin{array}{c}0,AllFitness(i)==BF\\hungry(i)+H,AllFitness(i)!=BF\end{array}\right.\tag{7} hungry(i)={0,AllFitness(i)==BFhungry(i)+H,AllFitness(i)!=BF(7)
AllFitness(i)保留当前迭代中每个个体的适应度。在每次迭代中,最佳个体的饥饿感被设置为0。对于其他个体,在原有饥饿的基础上增加一个hungry(H),H表述为:
T H = F ( i ) − B F W F − B F × r 6 × 2 × ( U B − L B ) H = { L H × ( 1 + r ) , T H < L H T H , T H ≥ L H (8) TH=\frac{F(i)-BF}{WF-BF}\times r_6\times2\times(UB-LB)\\H=\left\{\begin{array}{c}LH\times(1+r),TH<LH\\TH,TH\geq LH\end{array}\right.\tag{8} TH=WFBFF(i)BF×r6×2×(UBLB)H={LH×(1+r),TH<LHTH,THLH(8)

流程图

在这里插入图片描述

伪代码

在这里插入图片描述

3.结果展示

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

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

CEC2005-F7
在这里插入图片描述
在这里插入图片描述

探索与开发

在这里插入图片描述

4.参考文献

[1] Yang Y, Chen H, Heidari A A, et al. Hunger games search: Visions, conception, implementation, deep analysis, perspectives, and towards performance shifts[J]. Expert Systems with Applications, 2021, 177: 114864.

这篇关于【智能算法】饥饿游戏搜索算法(HGS)原理及实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/917707

相关文章

Python pyinstaller实现图形化打包工具

《Pythonpyinstaller实现图形化打包工具》:本文主要介绍一个使用PythonPYQT5制作的关于pyinstaller打包工具,代替传统的cmd黑窗口模式打包页面,实现更快捷方便的... 目录1.简介2.运行效果3.相关源码1.简介一个使用python PYQT5制作的关于pyinstall

使用Python实现大文件切片上传及断点续传的方法

《使用Python实现大文件切片上传及断点续传的方法》本文介绍了使用Python实现大文件切片上传及断点续传的方法,包括功能模块划分(获取上传文件接口状态、临时文件夹状态信息、切片上传、切片合并)、整... 目录概要整体架构流程技术细节获取上传文件状态接口获取临时文件夹状态信息接口切片上传功能文件合并功能小

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

C#实现文件读写到SQLite数据库

《C#实现文件读写到SQLite数据库》这篇文章主要为大家详细介绍了使用C#将文件读写到SQLite数据库的几种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录1. 使用 BLOB 存储文件2. 存储文件路径3. 分块存储文件《文件读写到SQLite数据库China编程的方法》博客中,介绍了文

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实

JAVA利用顺序表实现“杨辉三角”的思路及代码示例

《JAVA利用顺序表实现“杨辉三角”的思路及代码示例》杨辉三角形是中国古代数学的杰出研究成果之一,是我国北宋数学家贾宪于1050年首先发现并使用的,:本文主要介绍JAVA利用顺序表实现杨辉三角的思... 目录一:“杨辉三角”题目链接二:题解代码:三:题解思路:总结一:“杨辉三角”题目链接题目链接:点击这里

基于Python实现PDF动画翻页效果的阅读器

《基于Python实现PDF动画翻页效果的阅读器》在这篇博客中,我们将深入分析一个基于wxPython实现的PDF阅读器程序,该程序支持加载PDF文件并显示页面内容,同时支持页面切换动画效果,文中有详... 目录全部代码代码结构初始化 UI 界面加载 PDF 文件显示 PDF 页面页面切换动画运行效果总结主

SpringBoot实现基于URL和IP的访问频率限制

《SpringBoot实现基于URL和IP的访问频率限制》在现代Web应用中,接口被恶意刷新或暴力请求是一种常见的攻击手段,为了保护系统资源,需要对接口的访问频率进行限制,下面我们就来看看如何使用... 目录1. 引言2. 项目依赖3. 配置 Redis4. 创建拦截器5. 注册拦截器6. 创建控制器8.

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

Springboot使用RabbitMQ实现关闭超时订单(示例详解)

《Springboot使用RabbitMQ实现关闭超时订单(示例详解)》介绍了如何在SpringBoot项目中使用RabbitMQ实现订单的延时处理和超时关闭,通过配置RabbitMQ的交换机、队列和... 目录1.maven中引入rabbitmq的依赖:2.application.yml中进行rabbit