2024最新多目标优化算法:多目标指数分布优化器MOEDO(提供MATLAB代码)

本文主要是介绍2024最新多目标优化算法:多目标指数分布优化器MOEDO(提供MATLAB代码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、多目标指数分布优化器(MOEDO)

多目标指数分布优化算法(Multi-objective exponential distribution optimizer ,MOEDO)由Kalita, K等人于2024年提出,其采用增强的精英非主导分类和拥挤距离机制。MOEDO集成了信息反馈机制(IFM),旨在平衡勘探和开发,从而提高收敛性并克服局部最优。

1.在指数分布优化算法EDO的基础上引入多目标指数分布优化器(MOEDO)算法,结合非支配排序(NDS)和拥挤距离(CD)原理;

2.引入集成信息反馈机制(IFM),将多目标挑战分解为单目标子任务,提高算法效率;

3.利用IFM方法确保勘探和开发之间的平衡动态,促进改进的趋同和绕过局部最小值的能力。

多目标优化算法的评价指标主要用于衡量算法在解决多目标优化问题时的性能和效果。以下是几个常用的评价指标的介绍:

1. Inverted Generational Distance (IGD):IGD是一种衡量算法生成的解集与真实前沿之间距离的指标。它通过计算算法生成的解集中每个解与真实前沿之间的最小距离,并对所有解的距离进行平均来评估算法的性能。IGD值越小,表示算法生成的解集越接近真实前沿。

2. Generational Distance (GD):GD是一种衡量算法生成的解集与真实前沿之间距离的指标。与IGD类似,GD也是通过计算算法生成的解集中每个解与真实前沿之间的距离,并对所有解的距离进行平均来评估算法的性能。GD值越小,表示算法生成的解集越接近真实前沿。

3. Hypervolume (HV):HV是一种衡量算法生成的解集所占据的超体积大小的指标。它通过计算算法生成的解集与真实前沿之间的超体积来评估算法的性能。HV值越大,表示算法生成的解集所占据的超体积越大,即解集的多样性和覆盖面积越好。

4. Spread (SP):SP是一种衡量算法生成的解集的分布均匀性的指标。它通过计算算法生成的解集中相邻解之间的距离来评估算法的性能。SP值越大,表示算法生成的解集的分布越均匀,解集的多样性和覆盖面积越好。

参考文献:

[1]Kalita, K., Ramesh, J.V.N., Cepova, L. et al. Multi-objective exponential distribution optimizer (MOEDO): a novel math-inspired multi-objective algorithm for global optimization and real-world engineering design problems. Sci Rep 14, 1816 (2024). Multi-objective exponential distribution optimizer (MOEDO): a novel math-inspired multi-objective algorithm for global optimization and real-world engineering design problems | Scientific Reports

二、部分MATLAB代码

MOEDO求解9个多目标测试函数(zdt1、zdt2 、zdt3、 zdt4、 zdt6 、Schaffer、 Kursawe 、Viennet2、 Viennet3),其中Viennet2 与Viennet3的目标数为3,其余测试函数的目标数为2,并采用4种评价指标(IGD、GD、HV、SP)进行评价对比

close all;
clear ; 
clc;
%%
% TestProblem测试问题说明:
%一共9个多目标测试函数1-9分别是: zdt1 zdt2 zdt3 zdt4 zdt6 Schaffer  Kursawe Viennet2 Viennet3
%%
TestProblem=6;%1-47
MultiObj = GetFunInfo(TestProblem);
MultiObjFnc=MultiObj.name;%问题名
% Parameters
params.Np = 150;        % Population size
params.Nr = 200;        % Repository size
params.maxgen=100;    % Maximum number of generations
numOfObj=MultiObj.numOfObj;%目标函数个数
D=MultiObj.nVar;%维度
[X,Obtained_Pareto] = MOEDO(params,MultiObj);if(isfield(MultiObj,'truePF'))%判断是否有参考的PF
True_Pareto=MultiObj.truePF;
%%  Metric Value
% ResultData的值分别是IGD、GD、HV、Spacing  (HV越大越好,其他指标越小越好)
ResultData=[IGD(Obtained_Pareto,True_Pareto),GD(Obtained_Pareto,True_Pareto),HV(Obtained_Pareto,True_Pareto),Spacing(Obtained_Pareto)];
else%计算每个算法的Spacing,Spacing越小说明解集分布越均匀ResultData=Spacing(Obtained_Pareto);%计算的Spacing
end
%%
disp('Repository fitness values are stored in Obtained_Pareto');
disp('Repository particles positions are store in X');

三、部分结果

四、完整MATLAB代码

2024最新多目标优化算法:多目标指数分布优化器MOEDO(提供MATLAB代码)

文件夹内包含该算法求解9个多目标测试函数(zdt1、zdt2 、zdt3、 zdt4、 zdt6 、Schaffer、 Kursawe 、Viennet2、 Viennet3)的完整MATLAB代码和4种评价指标(IGD、GD、HV、SP),及算法参考文献,代码点击main.m即可运行,包含注释。

这篇关于2024最新多目标优化算法:多目标指数分布优化器MOEDO(提供MATLAB代码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim

jupyter代码块没有运行图标的解决方案

《jupyter代码块没有运行图标的解决方案》:本文主要介绍jupyter代码块没有运行图标的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录jupyter代码块没有运行图标的解决1.找到Jupyter notebook的系统配置文件2.这时候一般会搜索到