智能优化算法:登山队优化算法-附代码

news2024/12/23 5:32:01

智能优化算法:登山队优化算法

文章目录

  • 智能优化算法:登山队优化算法
    • 1.登山队优化算法
      • 1.1 初始化
      • 1.2 协作登山
      • 1.3灾害威胁
      • 1.4协调防御
      • 1.5队员更新
    • 2.实验结果
    • 3.参考文献
    • 4.Matlab
    • 5.python

摘要:MTBO 算法是 Faridmehr 等人于 2023 年受登山队员登山过程中协作登顶行为启发而提出的一种新型元启发式优化算法。该算法通过模拟登山队员协作登山、灾害威胁、协调防御、队员更新实现队员位置更新来求解待优化问题,具有寻优能力强,收敛速度快等特点。

1.登山队优化算法

1.1 初始化

登山队由多名登山队员组成, 并有一位经验丰富的专业队长领队, 其目标 是征服该地区山顶,山顶被认为是待优化问题的最优解。与其他基于种群的优化算法类似, MTBO 也是从种群初始化开始:
X i = rand ⁡ ⋅ ( U j − L j ) , i = 1 , 2 , … , N ; j = 1 , 2 , … , D (1) X_i=\operatorname{rand} \cdot\left(U_j-L_j\right), \quad i=1,2, \ldots, N ; j=1,2, \ldots, D \tag{1} Xi=rand(UjLj),i=1,2,,N;j=1,2,,D(1)
式中, X i X_i Xi 为第 i i i 个登山队队员位置; U j , L j U_j, L_j Uj,Lj 为优化问题的第 j j j 维上、下限值; rand 为介于 0 和 1 之间的随机数; N N N 为登山队队员种群规模; D D D 为优化问题维度。

1.2 协作登山

在登山队中, 最有经验的成员往往被选举为队长, 登山队在队长的协调 和组织下登山, 并最终征服山顶。MTBO 算法在每次迭代之后, 队员位置将从最好到最坏进 行排序, 每个队员都通过队长和前面队员的引导。该阶段队员的位置更新数学描述如下:
X i new  = X i + rand ⁡ × ( X Leader  − X i ) + rand ⁡ × ( X i i − X i ) (2) X_i^{\text {new }}=X_i+\operatorname{rand} \times\left(X_{\text {Leader }}-X_i\right)+\operatorname{rand} \times\left(X_{i i}-X_i\right)\tag{2} Xinew =Xi+rand×(XLeader Xi)+rand×(XiiXi)(2)
式中, X i n e w X_i^{n e w} Xinew 为第 i i i 个登山队队成员新位置; X Leader  X_{\text {Leader }} XLeader  为登山队队长位置; X i i X_{i i} Xii 为受前面队员引导的 其他队员位置。

1.3灾害威胁

(3)灾害威胁。雪崩或跌落悬崖的发生可能威胁到登山队员的生命, 从而阻止登山队到 达山顶, 即迫使算法陷入局部最优状态。MTBO 中, 在随机发生雪崩等灾害的情况下, 登山 队队员通过下式来拯救自己, 即避免算法陷入局部最优, 并朝着最佳队员位置移动。该阶段 队员的位置更新数学描述如下:
X i new  = X i − rand ⁡ × ( X Avalanche  − X i ) (3) X_i^{\text {new }}=X_i-\operatorname{rand} \times\left(X_{\text {Avalanche }}-X_i\right) \tag{3} Xinew =Xirand×(XAvalanche Xi)(3)
式中, X Avalanche  X_{\text {Avalanche }} XAvalanche  为随机发生雪崩等灾害情况下的登山队队员位置; 其他参数意义同上。

1.4协调防御

在登山过程中, 当发生雪崩等灾难时, 整个登山队都会尽力营救被困队 员, 以防止队员死亡。该阶段的灵感就是来自于团队为拯救被困队员而做出的协作和努力, 该阶段队员的位置更新数学描述如下:
X i n e w = X i − rand ⁡ × ( X Team  − X i ) (4) X_i^{n e w}=X_i-\operatorname{rand} \times\left(X_{\text {Team }}-X_i\right) \tag{4} Xinew=Xirand×(XTeam Xi)(4)
式中, X Team  X_{\text {Team }} XTeam  为所有登山队队员的平均位置; 其他参数意义同上。

1.5队员更新

不幸的是, 登山队员可能会因雪崩等灾害而丧生, 上述任何阶段都无法 挽救登山队队员的生命。MTBO 考虑了这一灾难的发生, 即从登山队队员中删除该队员, 并 随机生成新队员。

2.实验结果

在这里插入图片描述

3.参考文献

[1]FARIDMEHR I, NEHDI M L, DAVOUDKHANI I F, et al. Mountaineering team-based optimization: a novel human-based metaheuristic algorithm[J]. Mathematics, 2023, 11(5): 1273.

[2]李杰,崔东文.新型群体智能算法优化BIGRU/BILSTM的水资源空间均衡评价[J/OL].中国农村水利水电:1-15[2023-08-12].http://kns.cnki.net/kcms/detail/42.1419.TV.20230711.1622.039.html

4.Matlab

5.python

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

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

相关文章

【智力悬疑题】——【“找凶手”解法】

“找凶手”题目解法 “案件题目”💻 某地发生了一起凶杀案,警察通过排查确定杀人凶手必为4个嫌疑犯中的一个。以下为4个嫌疑犯的供词: A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说。 已知3个…

vue3+vite在main.ts文件中引入./App.vue报错(./App.vue不是模块)

问题 如下图: 方法一 下载TypeScript Vue Plugin (Volar)插件就不报红了,看它的描述应该就是ts文件可以识别vue文件。 方法二 在src文件夹下添加env.d.ts文件,添加以下代码: declare module *.vue {import type { DefineC…

Android系统-进程-Binder2-Java层

引言: 对于Android系统,一般是从java层到native层,再到kernel驱动层,形成一个完整的软件架构。Android系统中的Binder IPC通信机制的整体架构,从java层到底层驱动层是怎么样的一个架构和原理的呢? 概念与…

详解单链表

💕十载寒窗无人问,一举成名天下知💕 作者:Mylvzi 文章主要内容:程序环境和预处理 引言: 我们之前已经学习过顺序表,顺序表是一种线性的存储结构,它在内存中是连续存放的&#xff1…

《Java-SE-第三十五章》之方法引用

前言 在你立足处深挖下去,就会有泉水涌出!别管蒙昧者们叫嚷:“下边永远是地狱!” 博客主页:KC老衲爱尼姑的博客主页 博主的github,平常所写代码皆在于此 共勉:talk is cheap, show me the code 作者是爪哇岛的新手,水平很有限&…

微服务实战项目-学成在线-项目部署

微服务实战项目-学成在线-项目部署 1 什么是DevOps 一个软件的生命周期包括:需求分析阶、设计、开发、测试、上线、维护、升级、废弃。 通过示例说明如下: 1、产品人员进行需求分析 2、设计人员进行软件架构设计和模块设计。 3、每个模块的开发人员…

Vue3实现图片懒加载及自定义懒加载指令

Vue3实现图片懒加载及自定义懒加载指令 前言1.使用vue-lazyload/vue3-lazyload插件2.自定义v-lazy懒加载指令2.1 使用VueUse工具集2.2 使用IntersectionObserver 前言 图片懒加载是一种常见性能优化的方式,它只去加载可视区域图片,而不是在网页加载完毕…

直线电机模组在3C电子行业中的重要应用

直线模组的种类有很多,是自动化行业中必不可少的传动元件,其中丝杆模组和同步带模组的应用率比较高,但随着自动化领域的迅速发展,高精密直线电机模组也得到了广泛的应用,尤其是在电子行业中的应用。 3C电子产品在我们的…

Redis数据一致性问题的三种解决方案

Redis数据一致性问题的三种解决方案 1、首先redis是什么 Redis(Remote Dictionary Server ),是一个高性能的基于Key-Value结构存储的NoSQL开源数据库。大部分公司采用Redis来实现分布式缓存,用来提高数据查询效率。 2、为什么会选Redis 在…

vue全局组件自动注册直接使用,无需单独先引用注册再使用

目录结构: 本案例是在根目录下components文件夹测试的,文件位置项目内任意,确保在main.js挂载路径正确即可 1、新建文件夹(名字随意)zxy_components (放自己组件的地方) 2、在zxy_components文件夹下 !新建…

中科亿海微FIFO使用

引言 FPGA(现场可编程门阵列)是一种可编程逻辑器件,具有灵活性和可重构性,广泛用于数字电路设计和嵌入式系统开发。在FPGA中,FIFO(First-In, First-Out)是一种常见的存储器结构,用于…

Vue3 Props组件简单应用(父组件获取子组件数据)

去官网学习→Props | Vue.js 运行示例&#xff1a; 代码&#xff1a;App.vue <template><img alt"Vue logo" src"./assets/logo.png"><h2>Vue Props数据传递</h2><h4>子组件中的数据&#xff1a;{{ content }}</h4>…

OpenCV实例(九)基于深度学习的运动目标检测(一)YOLO运动目标检测算法

基于深度学习的运动目标检测&#xff08;一&#xff09; 1.YOLO算法检测流程2.YOLO算法网络架构3.网络训练模型3.1 训练策略3.2 代价函数的设定 2012年&#xff0c;随着深度学习技术的不断突破&#xff0c;开始兴起基于深度学习的目标检测算法的研究浪潮。 2014年&#xff0c;…

软考高项-思维导图31-33(计算机高级系统项目管理师)

陆续更新一些软考高项的思维导图&#xff0c;都是一些必背知识点&#xff0c;希望可以帮助大家早日考过高项&#xff0c;早日当上高工&#xff0c;早日成为杭州E类人才。全部完整导图快速获取链接&#xff1a;计算机高级系统项目管理师-思维导图汇总 三十一、范围确认 三十二、…

MySql(干货)

写这篇博客的目的不是为了将介绍原理&#xff0c;而是为了Sql中的代码操作属实太多了&#xff0c;在这里进行一个汇总&#xff0c;方便查阅&#xff01;&#xff01;&#xff01; Sql分类 分类全称说明 DDL Data Definintion Language数据定义语言&#xff0c;用来定义数据库对…

Linux命令200例:pwd用于显示当前工作目录的绝对路径

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &…

智能优化算法:白鲨优化算法-附代码

智能优化算法&#xff1a;白鲨优化算法 文章目录 智能优化算法&#xff1a;白鲨优化算法1.白鲨优化算法1.1 初始化1.2 速度更新1.3位置更新1.4鱼群行为 2.实验结果3.参考文献4.Matlab5.python 摘要&#xff1a;WSO 算法是 Braik 等于 2022 年提出一种基于白鲨深海觅食策略的新型…

第二十三章 原理篇:Pix2Seq

大夏天我好像二阳了真是要命啊。 现在找到工作了&#xff0c;感觉很快乐&#xff0c;但是也有了压力。 《论你靠吹牛混进公司后该怎么熬过试用期》 希望自己能保持学习的习惯&#xff01;加油&#xff01; 参考教程&#xff1a; https://arxiv.org/pdf/2109.10852.pdf https://…

动捕系统mockup_optitrack替换为VRPN传递信息

motive&#xff1a;启动→载入已有→layout选择capture→view选择data streming→复选marker右键create刚体→rename刚体→修改local interface为本机ip→勾选vrpn ROS端&#xff1a;roslaunch vrpn_client_ros vrpn_efy.launch 记得修改server地址为motiveip地址 关掉motive…

并查集、树状数组

并查集、树状数组、线段树 并查集树状数组树状数组1 (单点修改&#xff0c;区间查询)树状数组2 (单点查询&#xff0c;区间修改) 并查集 【模板】并查集 题目描述 如题&#xff0c;现在有一个并查集&#xff0c;你需要完成合并和查询操作。 输入格式 第一行包含两个整数 …