多目标优化算法:多目标黑翅鸢算法(MOBKA)求解ZDT1、ZDT2、ZDT3、ZDT4、ZDT6,提供完整MATLAB代码

news/2024/11/17 13:57:51/

一、黑翅鸢算法介绍

黑翅鸢优化算法(Black-winged Kite Algorithm, BKA)是2024年提出的一种元启发式优化算法,其灵感来源于黑翅鸢的迁徙和捕食行为。这种算法通过模拟黑翅鸢在捕食过程中的飞行和搜索策略,被用来解决优化问题,尤其在寻找基准函数的全局最优解以及在工程领域中处理复杂系统的优化问题上展现出了其应用价值。

算法原理

黑翅鸢优化算法的原理主要包括以下几个方面:

  1. 种群初始化算法开始时,随机生成一组初始解,每个解代表问题空间中的一个潜在最优解。这些解也被称为个体或“黑翅鸢”。
  2. 捕食行为模拟:模拟黑翅鸢的捕食行为,即通过观察和调整飞行路径来捕捉猎物。在算法中,个体代表潜在解决方案,而解决方案的质量则决定了其在搜索空间中的适应度。
  3. 飞行和调整:每个个体在搜索空间中飞行,尝试找到更好的解决方案。这可以通过随机移动或根据某种策略进行调整来实现。
  4. 领导者策略:BKA算法引入了领导者策略来指导整个优化过程。通过选择适应度值高的个体作为领导者,其他个体通过与领导者的互动学习并改进解决方案。
  5. 柯西变异策略:BKA中引入了柯西变异策略,有助于算法跳出局部最优解,并增加在全局搜索空间中发现更好解的概率。

算法描述

黑翅鸢优化算法的描述涉及到以下几个关键点:

  • 双螺旋搜索策略:BKA算法采用了一种称为“双螺旋搜索策略”的技术,这种策略结合了全局搜索和局部搜索,使得算法能在解空间中有效地定位到全局最优解,同时保持对局部最优解的快速响应。
  • 适应度评估:对每个个体计算其适应度值,这通常根据优化问题的目标函数来确定,目标是找到适应度最高的解。
  • 种群更新:最优秀的个体替换当前种群中的较差个体,形成新的种群。

算法步骤

黑翅鸢优化算法的基本步骤如下:

  1. 初始化:随机生成初始解,这些解代表搜索空间中的潜在解决方案。
  2. 适应度评估:对每个个体计算其适应度值,以确定其在搜索空间中的位置。
  3. 捕食者选择:依据适应度值,选择出一部分表现优秀的个体作为“猎物”,这些是当前搜索区域中的最优解。
  4. 飞行阶段:黑翅鸢会尝试从较弱的猎物出发,通过迭代更新策略向较强猎物的方向移动,模仿黑翅鸢在空中的翱翔和迁徙。
  5. 搜索策略:使用局部搜索策略,如梯度上升或邻域搜索,对猎物进行微调,可能包括随机扰动以避免陷入局部最优。
  6. 种群更新:最优秀的猎物替换当前种群中的较差个体,形成新的种群。
  7. 循环迭代:上述步骤不断重复,直到达到预设的迭代次数或满足某个停止条件,如适应度阈值、最大搜索范围等。

参考文献:
[1]Wang, J., Wang, Wc., Hu, Xx. et al. Black-winged kite algorithm: a nature-inspired meta-heuristic for solving benchmark functions and engineering problems. Artif Intell Rev 57, 98 (2024). https://doi.org/10.1007/s10462-024-10723-4

二、多目标黑翅鸢算法(MOBKA)

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

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

  1. Generational Distance (GD)

    • GD指标衡量算法生成的非支配解集与真实Pareto前沿之间的平均距离。它通过计算真实Pareto前沿上每个点到最近非支配解的欧氏距离,然后取这些距离的平均值来实现。GD值越小,表示算法生成的解集越接近真实Pareto前沿,反映了算法的收敛性。
  2. Inverted Generational Distance (IGD)

    • IGD指标衡量算法生成的非支配解集与真实Pareto前沿之间的距离,但与GD不同的是,IGD是从真实Pareto前沿向算法生成的解集计算距离。它计算每个真实Pareto前沿上的点到最近非支配解的欧氏距离的平均值。IGD值越小,表示算法生成的解集越接近真实Pareto前沿。
  3. Hypervolume (HV)

    • HV指标衡量算法生成的非支配解集在目标空间中覆盖的体积。通常,这个体积是在目标函数的最小值和最大值之间定义的。HV值越大,表示算法生成的解集在目标函数空间中覆盖的范围越广,反映了算法的收敛性和多样性。
  4. Spacing

    • Spacing指标衡量算法生成的非支配解集中各个解之间的平均距离。它通过计算解集中每个解到其他解的最小距离的标准差来实现。Spacing值越小,表示解集内部的解越密集,多样性越高。
  5. Spread

    • Spread指标衡量算法生成的非支配解集在Pareto前沿上的分散程度。高的Spread值意味着解集在前沿上分布得更均匀,没有聚集在某个区域,反映了算法的多样性。
  6. Coverage

    • Coverage指标衡量一个算法生成的Pareto前沿覆盖另一个算法生成的Pareto前沿的比例。如果算法A的Coverage指标高于算法B,那么意味着算法A生成的Pareto前沿在某种程度上包含了算法B生成的Pareto前沿,反映了算法的广泛性。

2.2、部分MATLAB代码

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

2.3、部分结果

ZDT1:
在这里插入图片描述
在这里插入图片描述
ZDT2:
在这里插入图片描述
在这里插入图片描述
ZDT3:
在这里插入图片描述
在这里插入图片描述

三、完整MATLAB代码

见下方名片


http://www.ppmy.cn/news/1547729.html

相关文章

Scala-字符串(拼接、printf格式化输出等)-用法详解

Scala 一、 使用 号连接字符串 在 Scala 中, 运算符实际上会调用 String 类的 concat 方法或者使用字符串的加法操作,生成一个新的字符串。 字符串是不可变的,每次拼接都会创建一个新的字符串。 Mr. yuTips: 性能相对较差&…

【web前端笔记】vue3 + vite的前端项目中,使用import.meta.glob()方法实现全局注册组件的通用代码

目录 1.1、如何读取所有文件 1.2、通用代码 1.3、在main.js引入 这篇文章介绍一下,在vue3和vite搭建的项目中,如何将【src/components】目录下所有的【*.vue】文件,当做一个组件全局注册到Vue对象里面。 1.1、如何读取所有文件 在vue3和vite搭建的项目里面,它给我们提…

爬虫如何解决短效代理被封的问题?

在数据采集的征途上,短效代理如同一把双刃剑,它既能为我们带来速度和效率,也可能因为频繁更换IP地址而遭遇被封禁的风险。那么,作为数据采集er的我们,该如何巧妙应对,确保爬虫的稳定运行呢?今天…

MyBatis CRUD快速入门

3. CRUD操作 3.1. namespace 配置文件中namespace中的名称为对应Mapper接口或者Dao接口的完整包名 3.2. select select标签是mybatis中最常用的标签之一select语句有很多属性可以详细配置每一条SQL语句 id 命名空间中唯一的标识符接口中的方法名与映射文件中的SQL语句ID 一一…

方法论-WPS模型(高效沟通和决策分析的框架)

WPS模型(What, Problem, Solution)是一种高效沟通和决策分析的框架,旨在帮助沟通者清晰、简洁地表达问题和解决方案,特别适用于在复杂或多变的环境中进行清晰的交流。WPS模型的核心是通过以下三个步骤来组织沟通内容: …

SpringBootTest常见错误解决

1.启动类所在包错误 问题 由于启动类所在包与需要自动注入的类的包不在一个包下: 启动类所在包: com.exmaple.test_02 但是对于需要注入的类却不在com.exmaple.test_02下或者其子包下,就会导致启动类无法扫描到该类,从而无法对…

继承和多态(上)

目录 一.继承 1.何为继承 2.继承的语法 3.子类访问父类 (1)子类访问父类的成员变量 (2)子类访问的父类方法 二.super关键字 1.super用于调用父类的构造方法 2.super用于调用父类的实例方法 3.super用于访问父类的实例变量 三.子父类构造方法 和代码块的执行优先顺序…

SQLite 和 MySQL语法区别

SQLite 和 MySQL 在 SQL 语法上有一些差异,这些差异主要体现在数据类型、函数、表和索引的管理等方面。以下是一些主要的不同之处: 1. 数据类型 SQLite 支持的数据类型包括:TEXT, INTEGER, REAL, BLOB。动态类型系统,允许在插入…