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

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

MySQL的pymysql操作

本章是MySQL的最后一章&#xff0c;MySQL到此完结&#xff0c;下一站Hadoop&#xff01;&#xff01;&#xff01; 这章很简单&#xff0c;完整代码在最后&#xff0c;详细讲解之前python课程里面也有&#xff0c;感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...

如何配置一个sql server使得其它用户可以通过excel odbc获取数据

要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据&#xff0c;你需要完成以下配置步骤&#xff1a; ✅ 一、在 SQL Server 端配置&#xff08;服务器设置&#xff09; 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到&#xff1a;SQL Server 网络配…...

【WebSocket】SpringBoot项目中使用WebSocket

1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖&#xff0c;添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...

Vue 3 + WebSocket 实战:公司通知实时推送功能详解

&#x1f4e2; Vue 3 WebSocket 实战&#xff1a;公司通知实时推送功能详解 &#x1f4cc; 收藏 点赞 关注&#xff0c;项目中要用到推送功能时就不怕找不到了&#xff01; 实时通知是企业系统中常见的功能&#xff0c;比如&#xff1a;管理员发布通知后&#xff0c;所有用户…...