当前位置: 首页 > 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;在决策策略上可以满足人的心理 需求。人在驾驶过程中&#…...

避坑指南:ROSALIND刷题时文件读取、版本差异那些事儿(Python生信)

ROSALIND刷题实战避坑手册&#xff1a;Python生信中的文件处理与版本陷阱 当你第一次打开ROSALIND平台&#xff0c;满心欢喜地下载了那道看似简单的DNA计数题目时&#xff0c;可能不会想到接下来会遭遇什么——文件编码错误导致读取失败、Python版本差异引发的字符串处理陷阱、…...

别再死记硬背了!用这5个生活化例子,轻松搞定对数公式(附Markdown速查表)

别再死记硬背了&#xff01;用这5个生活化例子&#xff0c;轻松搞定对数公式&#xff08;附Markdown速查表&#xff09; 数学公式之所以让人望而生畏&#xff0c;往往不是因为它们本身有多复杂&#xff0c;而是缺乏与现实世界的连接。对数运算尤其如此——当它从抽象的符号变成…...

用 Coze 搭建 RAG 问答助手:完整实战(以“问史通”为例)

一、项目背景 最近我用 Coze 搭了一个中国近现代史问答助手——问史通。 它的目标很明确&#xff1a;基于知识库检索结果回答问题&#xff0c;而不是自由发挥。这样做的好处是&#xff1a; 回答更聚焦&#xff0c;适合课程学习与知识问答能把回答范围限定在上传资料内&#xff…...

别再手动一个个启动容器了!用Docker Compose编排一个Web+MySQL+Redis的完整项目(附yml文件详解)

别再手动一个个启动容器了&#xff01;用Docker Compose编排一个WebMySQLRedis的完整项目&#xff08;附yml文件详解&#xff09; 每次部署多容器项目时&#xff0c;最头疼的就是手动启动每个服务、配置网络、挂载数据卷。想象一下&#xff1a;先启动MySQL容器&#xff0c;设置…...

暴雨“钉”在桂北第6天:兴安296mm特大暴雨,桂林柳州风电场正在经历什么?

4月的广西&#xff0c;本不该这样下雨。过去几天&#xff0c;一条强降雨带稳稳盘踞在桂北一带&#xff0c;桂林、柳州相继出现成片的大暴雨区。桂林兴安县更是下出了296毫米的特大暴雨——相当于一天之内把北京半年的雨量倒在了这座县城。广西气象台的预报显示&#xff0c;这场…...

《后端开发全栈工具安装踩坑指南 经验沉淀手册》

《后端开发全栈工具安装踩坑指南 & 经验沉淀手册》这份汇总&#xff0c;是日常开发、环境搭建、中间件部署过程中&#xff0c;一步步踩坑、反复调优攒下来的实战级工具安装 & 配置沉淀。覆盖了编程语言运行环境、版本控制、数据库全家桶、Nginx/Kafka 等主流中间件、远…...

802.11帧结构

一、802.11帧从类型上分为哪几种管理帧Management Frame&#xff1a;用来“管理”无线网络的建立和维护。典型例子&#xff1a;BeaconProbe RequestProbe ResponseAuthenticationDeauthenticationAssociation RequestAssociation Response这些帧不是拿来传业务数据的&#xff0…...

从‘印度统计学家’到‘你的异常检测模型’:马氏距离的前世今生与实战指南

从‘印度统计学家’到‘你的异常检测模型’&#xff1a;马氏距离的前世今生与实战指南 1930年的印度农业研究所里&#xff0c;一位名叫普拉桑塔钱德拉马哈拉诺比斯的统计学家正在研究孟加拉地区的水稻产量分布。他发现传统欧氏距离无法准确衡量不同气候带作物数据的差异性——某…...

Canoe新手必看:Vector 1640硬件连接与通道配置全攻略(附常见指示灯解析)

Canoe新手必看&#xff1a;Vector 1640硬件连接与通道配置全攻略&#xff08;附常见指示灯解析&#xff09; 当你第一次拿到Vector 1640硬件设备时&#xff0c;那些闪烁的指示灯可能会让你感到困惑。绿色、红色、橘黄色&#xff0c;每种颜色背后都隐藏着设备的状态秘密。作为Ca…...

数据预处理和超范围值处理步骤 18

1 .数据预处理实验&#xff08;1&#xff09;导入数据操作步骤&#xff1a;① 从“源”面板拖入“Excel”节点。② 双击节点&#xff0c;选择待处理的数据文件。③ 从“输出”面板拖入“表格”节点&#xff0c;连接至“Excel”节点&#xff0c;右键运行&#xff0c;查看原始数据…...