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

多目标优化算法:多目标鳗鱼和石斑鱼优化算法(MOEGO)求解DTLZ1-DTLZ9,提供完整MATLAB代码

一、鳗鱼和石斑鱼优化算法

鳗鱼和石斑鱼优化算法(Eel and Grouper Optimizer,EGO)是Ali Mohammadzadeh和Seyedali Mirjalili于2024年提出的一种新型元启发式算法,灵感来源于海洋生态系统中鳗鱼和石斑鱼的共生作用和觅食策略,石斑鱼在珊瑚礁周围的开阔水域捕猎,而海鳗则在夜间滑过礁石捕食。该算法于2024年6月发表在SCI期刊《Cluster Computing》上。

算法描述

EGO算法分为两个主要阶段:勘探阶段和开发阶段。

  1. 勘探阶段:石斑鱼根据猎物的位置寻找最佳的适合度。海鳗的位置是从初始种群中随机选择的。使用两个系数C1和C2,它们的随机值大于1或小于-1,以使搜索代理远离最佳位置。这种机制增强了搜索能力,使EGO算法能够执行全局搜索。
  2. 开发阶段:模拟海鳗在礁石上爬行捕食,而石斑鱼则在珊瑚礁附近的开阔水域游过猎物的行为。估计有50%的机会使用石斑鱼狩猎或鳗鱼狩猎模型来更新位置。这种波动更新定位技术可以确保探索两个解决方案之间指定的空间。

算法流程

  1. 初始化种群,设置初始位置和速度。
  2. 评估每个个体的适应度。
  3. 更新每个个体的历史最佳位置和全局最佳位置。
  4. 根据勘探阶段和开发阶段的规则更新个体的位置。
  5. 重复步骤2-4,直到满足最大迭代次数或达到停止条件。
  6. 输出全局最佳位置和对应的适应度值。

参考文献:
[1]A. Mohammadzadeh, S. Mirjalili, Eel and Grouper Optimizer: A Nature-inspired Optimization Algorithm, Cluster Computing , in press, 2024DOI: Eel and grouper optimizer: a nature-inspired optimization algorithm | Cluster Computing

原文链接:https://blog.csdn.net/weixin_46204734/article/details/139967595

二、多目标鳗鱼和石斑鱼优化算法

由于鳗鱼和石斑鱼优化算法仅能求解单目标优化问题,为了求解多目标优化问题,本文提出多目标鳗鱼和石斑鱼优化算法(Multi-objective Eel and Grouper Optimizer,MOEGO)。MOEGO是鳗鱼和石斑鱼优化算法的多目标变体,能够有效求解多目标优化问题,为了检验本文所提算法的性能,将其应用于基准函数DTLZ1-DTLZ9的求解,并采用六种性能评价指标(GD、IGD、HV、Spacing、Spread、Coverage)对所提算法的收敛性和多样性进行有效评估。
在这里插入图片描述
MOEGO首先对种群进行初始化,采取随机初始化方式。其次,算法对初始化的种群进行筛选并利用筛选的后代交配产生子代个体。接着,利用环境选择算子对子代进行筛选以便进行下一轮迭代。直到满足算法的终止条件,最后一次环境选择出来的所有个体即为最终的近似 Pareto 解集。环境选择算子的作用主要用于子代个体的选择,被选择的个体能够支配种群中的其他个体或者互相不支配,称其为精英个体。通过算法的迭代运算,每次均选出精英个体,反复如此即可求得问题的解。

2.1、六种性能评价指标介绍

  1. Generational Distance (GD)

    • GD指标用于衡量算法生成的非支配解集与真实帕累托前沿之间的平均距离。对于解集P中的每个点,找到其在参考集P*(通常是真实帕累托前沿的一个采样)中最近的点,然后计算它们之间的欧氏距离,最后取平均值。GD值越小,表示算法的收敛性越好,即解集越接近真实帕累托前沿。GD的优点是计算简单,但缺点是它仅衡量收敛性,无法评估多样性,且依赖于参考集的选择。
  2. Inverted Generational Distance (IGD)

    • IGD指标同时考虑了算法的收敛性和多样性。它计算真实帕累托前沿中的每个点到非支配解集中最近点的欧氏距离的平均值。IGD值越小,表示算法的性能越好,即解集在多样性和收敛性上都更接近真实帕累托前沿。IGD能够更全面地反映解集的性能。
  3. Hypervolume (HV)

    • HV指标用于衡量目标空间被非支配解集覆盖的程度。它需要一个参考点,通常是各个目标上的最大值形成的向量。HV值是算法求解得到的非占优解集与参考点之间形成的超立方体的体积。HV值越大,表示算法的收敛性和多样性越好。HV是一个综合性能指标,能够同时反映收敛性和多样性,且不需要先验知识。
  4. Spacing

    • Spacing指标用于衡量解集中各个解的分布均匀性。它计算解集中每个解到其他解的最小距离的标准差。Spacing值越小,说明解集的分布越均匀。Spacing仅衡量解集的均匀性,而不考虑其广泛性。
  5. Spread

    • Spread指标衡量解集在目标空间中的分布范围。它通常通过计算解集中最远两个解之间的距离来衡量。Spread值越大,表示解集的分布范围越广,反映了解集的多样性。
  6. Coverage

    • Coverage指标用于衡量一个解集对另一个解集的覆盖能力。如果解集A的Coverage指标高于解集B,那么意味着解集A在某种程度上能够被解集B覆盖。这个指标通常用于比较两个解集的相对性能。

这些指标各有侧重点,GD和IGD主要关注算法的收敛性,而Spacing和Spread关注算法的多样性。HV是一个综合性指标,同时考虑了收敛性和多样性。Coverage则用于比较两个解集的相对覆盖能力。

2.2、部分MATLAB代码

%% 参数说明
%testProblem 测试问题序号
%Name 测试问题名称
%dim 测试问题维度
%numObj测试问题目标函数个数
%lb测试问题下界
%ub测试问题上界
%SearchAgents_no 种群大小
%Max_iter最大迭代次数
%Fbest 算法求得的POF
%Xbest 算法求得的POS
%TurePF 测试问题的真实pareto前沿
%Result 评价指标随迭代次数的变化值
testProblem=2;
[Name,dim,numObj,lb,ub]=GetProblemInfo(testProblem);%获取测试问题的相关信息
SearchAgents_no=200;%种群大小 
Max_iter=200;%最大迭代次数
[Fbest,Xbest,TurePF,Result] = MOEGO(Max_iter,SearchAgents_no,Name,dim,numObj,lb,ub);%算法求解

2.3、部分结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、完整MATLAB代码

见下方名片


http://www.kler.cn/a/401903.html

相关文章:

  • 高级java每日一道面试题-2024年11月07日-Redis篇-Redis有哪些功能?
  • MySQL超详细安装配置教程(亲测有效)
  • 植物明星大乱斗15
  • 【QT实战】加解密文件夹之————应用程序获取管理员权限
  • 网络安全领域的最新动态和漏洞信息
  • R语言基础入门详解
  • mysql 的乐观锁和 mvcc 是一回事吗
  • Spring Security 中的 UserDetailsService(获取用户详细信息)
  • WebSocket简易聊天室实现(有详细解释)
  • 使用Python语言编写一个简单的网页爬虫,从网站上抓取指定关键词的新闻标题和链接。
  • 简单爬虫的实现
  • 小程序-基于java+SpringBoot+Vue的小区服务管理系统设计与实现
  • 力扣-Hot100-链表其三【算法学习day.36】
  • 初识arkts-类-接口
  • 关于php Datetime 时区转换因为timezone_version(时区版本)问题造成的时区转换问题
  • k8s默认使用的后端网络模式
  • 基于YOLOv8深度学习的智慧社区建筑外墙破损(裂缝、露筋、剥落)检测系统研究与实现(PyQt5界面+数据集+训练代码)
  • 【Pikachu】PHP反序列化RCE实战
  • Django数据库迁移与反向迁移处理方案分析
  • C#使用App.config读写配置键值的简单示例
  • E45.【C语言】练习:输入10个整数查找找并打印不相同的数字及个数
  • 测试杂文 - linux串口打印
  • Rust宏系列教程—自定义派生宏
  • uniapp开发的陪玩系统该如何实现后端PHP语言的书写?
  • Android集成FCM(Firebace Cloud Messaging )
  • 9.《滑动窗口篇》---①长度最小的子数组(中等)