当前位置: 首页 > news >正文

指数分布优化器(EDO)(含MATLAB代码)

先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出的新型智能优化算法,并附MATLAB代码。

“今天给大家推送的也是2023年提出的一种新算法,发表在AIRE上,这个期刊目前影响因子12,还是很有含金量。就这个算法效果而言,我觉得还可以,并且它框架也简单~

另外,这个算法基于指数分布理论,没有什么好看的图,更多的是数学公式,学起来可能有点枯燥~”

图片

该研究提出了一种新的基于种群的元启发式算法,称为指数分布优化器(Exponential Distribution Optimizer, EDO)。EDO的主要灵感来自于数学中的指数概率分布模型。EDO算法包括了开发策略和勘探策略。利用CEC2014、CEC2017、CEC2020和CEC2022等测试套件以及6个工程设计问题将EDO算法与L-SHADE、LSHADE-cnEpSin和AGSK进行了比较。EDO得到了更理想的结果,并且统计分析在95%的置信区间上证明了EDO的优越性。它的原始参考文献如下:

Abdel-Basset M, El-Shahat D, Jameel M, et al. Exponential distribution optimizer (EDO): a novel math-inspired algorithm for global optimization and engineering problems[J]. Artificial Intelligence Review, 2023: 1-72.

01
预备知识

指数分布理论是EDO算法的灵感来源。

指数分布是一种连续分布,常用于描述各种自然现象。例如,从现在到地震袭击的等待时间呈指数分布。此外,车辆到达收费站的概率随时间呈指数分布。假设有一个指数随机变量x,参数为λ,可以写成xEXP(λ)。该随机变量的概率密度函数(Probability Density Function, PDF)可表示为:

图片

其中,x表示在事件发生前的等待时间。时间是连续的,不能是一个负值,即x≥0。此外,参数λ>0是指数分布的速率。利用该公式可计算得到指数累积分布函数(Cumulative Distribution Function, CDF):

图片

图1显示了衰减参数λ对指数PDF的影响,使用相同的x值和四个不同的λ值(0.25、0.5、0.75和1)。曲线从λ值开始,并逐渐下降。因此,指数分布总是一个关于PDF的递减函数。指数率的值越大,相关的指数随机变量的PDF值就越小。图2展现了使用不同的λ值的CDF曲线的情况。它是一个递增函数,从指数速率开始,CDF随指数随机变量的增加而增加。

图片

图1 不同λ值对应的PDF

图片

图2 不同λ值对应的指数CDF

指数分布随机变量的均值(μ)和方差(σ^2)可以表示为:

图片

从前面的方程中,可以认为参数λ的值与均值和方差值成反比,反之亦然。换句话说,λ值越大,均值和方差值就越小。那么,标准差(σ)与均值相等,可计算如下:

图片

如果只想了解算法的计算流程,可以不看这一节的。这一节就是介绍一下指数分布模型,知不知道都不怎么影响。不是数学专业的同学,可以了解一下。

02
算法设计

为了便于大家理解,介绍算法时就直接抬出公式和流程,就不过多讨论作者的设计思路和出发点了(哎呀,动机、思路、出发点这些都是写给审稿人看的,能自圆其说就行的,了解来也没啥用,知道算法怎么计算的就行了)。与往期推送一样,这部分内容在Word文档里先写好,然后做成图片,最后导入。

图片

图片

03
计算流程

EDO算法的计算流程伪代码如下(公式序号对应上文):

图片

04
实验仿真

这里对EDO算法的性能进行简单的测试。首先将EDO用于函数寻优,算法的MATLAB程序是严格按照它的原始参考文献进行编码的。此外,种群规模取N等于50,Benchmark函数分别采用了CEC2005测试集、CEC2013测试集、CEC2014测试集、CEC2017测试集、CEC2020优化函数测试集和CEC2022优化函数测试集。仅对仿真结果进行简要展示,不再进一步分析。
 首先,检验一下EDO对全局勘探和局部开发的平衡能力。不知道我在说啥的,看一下之前的这一期推送:
种群的勘探(Exploration)与开发(Exploitation)(含MATLAB代码)

如图3所示,是EDO在CEC2005测试函数f7上的勘探和开发占比曲线。

图片

图3 EDO在CEC2005 f7上的勘探和开发百分占比变化曲线

其次,利用CEC2005测试集验证EDO的性能,这里选择今年很火热的蜣螂优化(DBO)算法进行对比(为了对比的公平,两种算法的种群大小设置为30,最大迭代次数为200)。对比结果如下所示:

EDO Vs DBO

可以看到,EDO的竞争力还是很可观的,在一些函数上收敛曲线突然不见了,是因为已经收敛到理论最优值0了。我使用的是semilogy来绘制的收敛曲线,而semilogy画的是y轴的对数,因此,若曲线收敛到0,semilogy是画不出来的。那么,EDO在绝大部分的函数上,用了不到两百次迭代就收敛到了最优值。在CEC2005的大部分函数上,相比于DBO,EDO算法更简单,收敛速度更快,且收敛精度更高。对EDO算法,我本人还是比较推荐的,简单易实现,并且没有调参,不涉及需要用户改动的参数。

再次,以CEC2013测试集中的单峰函数F1为例,展示EDO在30维环境下的收敛效果,如图4所示。(注意是画的误差曲线)

图片

图4 EDO在CEC2013 F1上的误差收敛曲线

接着,以CEC2014测试集中的多模态函数F14为例,展示EDO在30维环境下的收敛效果,如图5所示。(注意是画的误差曲线)

图片

图5 EDO在CEC2014 F14上的误差收敛曲线

再然后,以CEC2017测试集中的多模态函数F4为例,展示EDO在30维环境下的收敛效果,如图6所示。(注意是画的误差曲线)

图片

图6 EDO在CEC2017 F4上的误差收敛曲线

在此之后,以CEC2020优化函数测试集中的单峰函数F2为例,展示EDO在10维环境下的收敛效果,如图7所示。(注意是画的误差曲线)

图片

图7 EDO在CEC2020优化函数F2上的误差收敛曲线

最后,以CEC2022优化函数测试集中的单峰函数F1为例,展示EDO在10维环境下的收敛效果,如图8所示。(注意是画的误差曲线)

图片

图8 EDO在CEC2022优化函数F1上的误差收敛曲线

进一步,可将EDO应用于复杂工程约束优化问题,例如之前推送的两期算法应用内容:

算法应用:基于DBO算法的工程优化设计(第1期)(含MATLAB代码)

算法应用:工程优化设计(第2期)(含MATLAB代码)

这里以行星轮系设计优化问题(Planetary gear train design optimization problem)为例,展示EDO求解效果。该问题的主要目标是使汽车齿轮传动比的最大误差最小化,如图9所示。为了使最大误差最小化,计算了自动行星传动系统的总齿数。

图片

图9 行星轮系设计优化问题(Planetary gear train design)

该问题包含6个整数变量和11个不同的几何约束和装配约束(10个不等式约束,1个等式约束)。这个问题可以定义如下:

图片

采用罚函数处理约束条件,然后利用EDO算法进行求解,最优值和最优解如下所示。目标函数的收敛曲线如图10所示。

图片

图片

图10 EDO在行星轮系设计问题上的目标函数收敛曲线

05
MATLAB代码

EDO算法对应的MATLAB代码链接如下:

EDO跑CEC2005测试集公众号里有链接
EDO跑CEC2013测试集公众号里有链接
EDO跑CEC2014测试集公众号里有链接
EDO跑CEC2017测试集公众号里有链接
EDO跑CEC2020优化函数测试集公众号里有链接
EDO跑CEC2022优化函数测试集公众号里有链接
EDO的勘探(Exploration)和开发(Exploitation)占比分析公众号里有链接
EDO的工程应用(第1期):压力容器设计、滚动轴承设计、拉伸/压缩弹簧设计、悬臂梁设计、轮系设计、三杆桁架设计公众号里有链接
EDO的工程应用(第2期):焊接梁设计、多盘离合器制动器设计问题、步进圆锥滑轮问题、减速机设计问题、行星轮系设计优化问题、机器人夹持器问题公众号里有链接

可通过下方链接下载代码清单,在里面寻找需要的算法代码,然后去对应的链接获取。清单会同步更新,一旦有新的代码,就可以在清单里找到。清单里面有部分代码是开源获取的。可随时免费下载。

链接:https://pan.baidu.com/s/1n2vpbwuhpA8oyXSJGsAsmA

提取码:8023

相关文章:

指数分布优化器(EDO)(含MATLAB代码)

先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年…...

Java 时间的加减处理

时间的加减处理 Date date new Date(操作时间(类型Date)-(60000*60*1));600001分钟 60000*60*1 1小时...

基于A4988/DRV8825的四路步进电机驱动器

概述 简化板的CNC sheild V3.0,仅保留步进电机速度与方向的控制引脚STEP/DIR、使能端EN、芯片供电VCC\GND,共计11个引脚。PCB四周开设四个M3通孔,以便于安装固定。此外,将板载的焊死的保险丝更改为可更换的保险座保险丝&#xff…...

万字总结网络原理

目录 一、网络基础 1.1认识IP地址 1.2子网掩码 1.3认识MAC地址 1.4一跳一跳的网络数据传输 1.5总结IP地址和MAC地址 二、网络设备及相关技术 2.1集线器:转发所有端口 2.2交换机:MAC地址转换表+转发对应端口 2.3主机:网络分层从上到下封装 2.4主机&路由器:ARP…...

【AI视野·今日CV 计算机视觉论文速览 第262期】Fri, 6 Oct 2023

AI视野今日CS.CV 计算机视觉论文速览 Fri, 6 Oct 2023 Totally 73 papers 👉上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Improved Baselines with Visual Instruction Tuning Authors Haotian Liu, Chunyuan Li, Yuheng Li, Yong Jae Lee大型多模…...

一文搞懂Jenkins持续集成解决的是什么问题

1、持续集成的定义 大师 Martin Fowler 是这样定义持续集成的: 持续集成是一种软件开发实战, 即团队开发成员经常集成他们的工作. 通常, 每个成员每天至少集成一次, 也就意味着每天可能发生多次集成. 持续集成并不能消除Bug, 而是让它们非常容易发现和改正. 根据对项目实战的理…...

微信小程序去除默认滚动条展示

一、微信小程序改版框架升级后,滚动条默认展示了。 在实际应用中效果不好,如果想默认隐藏掉,代码段如下: /* 去除默认滚动条效果 */ ::-webkit-scrollbar {display:none;width:0;height:0;color:transparent; } 设置成全局样式…...

3.02 创建订单操作详细-订单创建与回滚 (创建订单操作详细)

步骤1: 创建orders订单表,子订单表和订单状态表对应的pojo和mappperOrders和OrderItemsMapperOrderItems和OrderItemsMapperOrderStatus和OrderStatusMapper步骤2:创建OrderService和对应的实现类 public interface OrderService {/*** 用于创建订单相关…...

需求放缓、价格战升级、利润率持续恶化对小鹏汽车造成了严重影响

来源:猛兽财经 作者:猛兽财经 收入和每股收益不及预期,亏损创记录 财报显示,小鹏汽车(XPEV)2023年第二季度收入为50.6亿元人民币(合7亿美元),略低于预期,而且还产生了比预期更大的亏…...

《算法通关之路》chapter19解题技巧和面试技巧

《算法通关之路》学习笔记,记录一下自己的刷题过程,详细的内容请大家购买作者的书籍查阅。 1 看限制条件 1.1数据规模 有的题目数据规模较小,那么暴力法就可行;如果暴力法不行,那么再稍微加一个诸如缓存和剪枝的优化…...

什么是TF-A项目的长期支持?

安全之安全(security)博客目录导读 问题:Trusted Firmware-A社区每六个月发布一次代码。然而,对于生产中的平台,该策略在维护、重要软件修复的向后兼容性、获得最新的安全缓解措施和整体产品生命周期管理方面不具备可扩展性。 开源软件项目&…...

【LinuxC】时间、时区,相关命令、函数

文章目录 一、序1.1 时间和时区1.11 时间1.12 时区 1.2 查看时间时区的命令1.21 Windows1.22 Linux 二、C语言函数2.1 通用2.11 函数简介2.12 数据类型简介 2.2 windows 和 Linux特有函数2.3 C语言示例 一、序 1.1 时间和时区 1.11 时间 时间是一种用来描述物体运动变化的量…...

mac清理垃圾的软件有哪些?这三款我最推荐

没错,Mac电脑真的好用,但是清理系统垃圾可不是件容易的事。由于Mac系统的封闭性,系统的缓存垃圾常常隐藏得让人发现不了。不过,别担心!有一些专业的Mac清理软件可以帮你解决这一系列问题,让清理垃圾变得轻松…...

复习Day11:链表part04: 206. 反转链表、92. 反转链表II、25. K 个一组翻转链表、148. 排序链表

我用的方法是在leetcode再过一遍例题,明显会的就复制粘贴,之前没写出来就重写,然后从拓展题目中找题目来写。辅以Labuladong的文章看。然后刷题不用CLion了,使用leetcode自带的IDE模拟面试环境。 哈希表章节的题目思路很清晰&…...

一年一度的国庆节又结束了

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…...

雷达干扰和烧穿范围简介

一、干扰信号比 J/S或J-to-S是从目标发射的干扰信号接收的功率(J)与从目标的雷达反向散射接收的功率的比率。 二、烧穿范围 通过电子攻击(J)可以首先检测到目标回波信号(S)的雷达到目标的距离。 三、自保护干扰 也称为主瓣干扰(雷达回波源和干扰机并置)。 烧穿范围…...

“秋天第一只大闸蟹”背后,看见京东一体化供应链

京东似乎正在从一个大闸蟹的物流服务商、销售商,转变为一个大闸蟹的“供货商”。 作者|斗斗 编辑|皮爷 出品|产业家 阳澄湖连续几天的降雨,使得通往蟹塘的路异常难走。 长期驻扎此地的京东相关负责人蹲在蟹塘边的小路上,指着蟹塘说道…...

大模型Java编码能力评估

大模型如火如荼发展,不能只看热闹,也需要躬身入局。要想评估大模型的能力,必须有一个评估方法和评估数据集。下面就梳理下当前大模型是如何评估代码能力的 权威评估 opencompass: https://opencompass.org.cn/datalearner: https://www.dat…...

javascript选择框和选择文本的创建与增加以及设置选中项

<script type"text/javascript">//得到选中项的索引&#xff0c;文本和值函数function getselected(selectedIndex){var selectboxdocument.forms[0].elements["location"];var indexselectbox[selectedIndex];var selectedOptionselectbox.options[…...

汽车驾驶任务的隐马尔可夫模型识别方法研究

汽车驾驶任务的隐马尔可夫模型识别方法研究 一、Introduction 自动驾驶汽车经过了几十年的发展&#xff0c;是目前国内外汽车行业中的重要研究方向。自 动驾驶汽车的智能化需要车辆能够有类“人”的行为&#xff0c;在决策策略上可以满足人的心理 需求。人在驾驶过程中&#…...

Redis命令处理机制源码探究济

一、项目背景与核心价值 1. 解决的核心痛点 Navicat的数据库连接密码并非明文存储&#xff0c;而是通过AES算法加密后写入.ncx格式的XML配置文件中。一旦用户忘记密码&#xff0c;常规方式只能重新配置连接&#xff0c;效率极低。本项目只作为学习研究使用&#xff0c;不做其他…...

Pyenv vs Miniconda vs Anaconda:Python环境管理实战对比

1. Python环境管理工具全景概览 刚接触Python开发时&#xff0c;最让我头疼的就是环境配置问题。同一个项目在不同电脑上跑出不同结果&#xff0c;安装包时各种依赖报错&#xff0c;这些经历相信很多开发者都遇到过。Python环境管理工具就是为解决这些问题而生的&#xff0c;它…...

MusePublic大模型与ChatGPT对比评测:技术架构与应用场景

MusePublic大模型与ChatGPT对比评测&#xff1a;技术架构与应用场景 1. 为什么需要这场对比&#xff1f; 最近在调试几个内容生成任务时&#xff0c;我同时调用了MusePublic和ChatGPT&#xff0c;结果发现它们的反应节奏、输出风格甚至错误处理方式都挺不一样。不是谁“更好”…...

质量保证体系

质量保证体系&#xff1a;企业卓越的基石 在竞争激烈的市场环境中&#xff0c;产品质量是企业生存和发展的核心。质量保证体系&#xff08;Quality Assurance System, QAS&#xff09;作为一套系统化、标准化的管理方法&#xff0c;能够确保产品和服务从设计到交付的每个环节都…...

offline meta-RL | 总结 FOCAL 等经典工作的数据收集 / 性能测试方法畏

在AI辅助开发的语境下&#xff0c;Skill就是一个包含了领域知识、最佳实践、代码模板的知识包。 以"DAO层CRUD生成"为例&#xff0c;一个Skill包含&#xff1a; /mnt/skills/dao-crud/ ├── SKILL.md # 使用说明 │ ├── 何时使用这个Skill │ …...

React 19实战:如何用最新特性打造Nano Banana无限画布(附完整代码)

React 19实战&#xff1a;如何用最新特性打造Nano Banana无限画布 在当今前端开发领域&#xff0c;React 19的发布无疑为开发者们带来了全新的可能性。本文将深入探讨如何利用React 19的最新特性构建一个名为"Nano Banana"的高性能无限画布应用。不同于传统的画布实现…...

如何用PDF Arranger轻松管理PDF文档:终极免费工具指南

如何用PDF Arranger轻松管理PDF文档&#xff1a;终极免费工具指南 【免费下载链接】pdfarranger Small python-gtk application, which helps the user to merge or split PDF documents and rotate, crop and rearrange their pages using an interactive and intuitive graph…...

Rust async trait 的底层调度逻辑解析

Rust async trait 的底层调度逻辑解析 Rust 的异步编程模型以其高效和灵活著称&#xff0c;而 async trait 作为异步编程的核心抽象之一&#xff0c;其底层调度逻辑直接影响性能与资源利用率。理解其工作机制不仅能帮助开发者写出更高效的代码&#xff0c;还能避免常见的并发陷…...

Arduino Uno开发板入门:从点亮第一个LED到串口通信(附完整代码)

Arduino Uno开发板入门&#xff1a;从点亮第一个LED到串口通信&#xff08;附完整代码&#xff09; 1. 初识Arduino Uno&#xff1a;硬件架构与开发环境搭建 当你第一次拿到这块蓝色的小板子时&#xff0c;可能会好奇它如何成为创客世界的明星。Arduino Uno采用Atmega328P微控…...

Lynis使用教程

在Kali Linux的系统安全审计工具库中&#xff0c;Lynis是一款开源、跨平台的自动化安全审计工具&#xff0c;核心定位是“Linux/Unix系统深度安全扫描与合规性检查工具”。它通过对系统内核、软件配置、用户权限、服务状态、日志策略等维度进行全面检测&#xff0c;识别潜在的安…...