基于非支配排序的多目标麻雀搜索算法(文末提供代码)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


算法简介

提示:这里可以添加本文要记录的大概内容:

麻雀搜索算法(Sparrow Search Algorithm, SSA) 是 2020 年提出的新型智能优化算法,在 SSA 中,每个优化问题的解类似于搜索空间中的一只麻雀,每只麻雀都有各自的能量,能量值用函数适应度值来表示, 其中麻雀分为发现者与参与者,发现者的适应度值通常大于参与者。 SSA 具有收敛速度快、参数较少且算法易实现等优点。


一、多目标概念

多目标优化概念与定义:在多目标优化问题中,我们通常有多个目标函数 f 1 ( x ) , f 2 ( x ) , … , f m ( x ) , f_1(\mathbf{x}),f_2(\mathbf{x}),\ldots,f_m(\mathbf{x}), f1(x),f2(x),,fm(x),其中 x ∈ R n \mathrm{x}\in\mathbb{R}^n xRn是决策变量向量。目标是寻找一组决策变量值,使得所有目标函数尽可能优化。但由于目标间的冲突性,我们寻找的是 Pareto 最优解集而不是单个全局最优解。

Pareto 最优解: 在多目标优化中,一个决策向量 xxx 被称为 Pareto 最优解(Pareto optimal solution),如果不存在另一个决策向量y 使得对于所有的目标函数 f i ,   f i ( y ) ≤ f i ( x ) f_i,~f_i(y)\leq f_i(x) fi, fi(y)fi(x),并且至少有一个不等号严格成立 ( 即  f j ( y ) < f j ( x )  对某个  j ) (\text{即 }f_j(y)<f_j(x)\text{ 对某个 }j) ( fj(y)<fj(x) 对某个 j),这意味着在不损害其他任何目标的前提下,无法进一步改善任何一个目标。Pareto 最优解集合也被称为 Pareto前沿(Pareto frontier)或有效解集

非支配排序(Non-Dominated Sorting): 非支配排序是多目标优化中一种重要的预处理技术,特别是在进化算法如NSGA-II(Non-dominated Sorting Genetic Algorithm II)中得到广泛应用。其基本思想是对解决方案进行分层分类,根据它们是否在决策空间中相互支配。

非支配排序算法步骤概述:

  1. 初始化阶段: 将所有解放入待排序集合中。
  2. 比较阶段: 对每一对解进行比较,如果一个解在所有目标函数上都不劣于另一个解(即不被后者支配),则将后者标记为“被支配”。
  3. 层级划分: 根据支配关系将解分为不同的层级( fronts),第一层级包含所有非支配解(Pareto最优解),后续层级包含次优解。
  4. 迭代更新: 在每个层级内部完成比较后,去除已被支配的解,并继续对剩余解进行新一轮的非支配排序,直至所有解都被正确归类到各自的层级。
  5. 通过非支配排序,算法能够在每次迭代过程中保留并优先选择那些更接近Pareto前沿的解,从而有效地推进搜索过程。

二、麻雀搜索算法

圈养家麻雀分为“探索者”和“追随者”2 种,探索者主要是为种群提供整个麻雀群觅食的区域和方向,追随者通过探索者来获取食物,麻雀种群中探索
者和追随者的身份是动态变化的,可以发生转换.同时,种群中部分麻雀为“侦察者”,承担侦察预警工作,它们在觅食的过程中时刻注意周围环境,一旦察觉到捕食者威胁,会迅速逃离当前位置. 麻雀搜索算法就是模拟麻雀种群搜索食物的过程设计的算法:

2.1探索者

在这里插入图片描述

2.2 追随者

在这里插入图片描述

2.3 警戒者

在这里插入图片描述

标题多目标麻雀搜索算法流程图

在这里插入图片描述

3 CEC函数测试

在这里,我们将使用46个知名测试函数(包括当前SCI和核心中使用最为广泛的函数)对其进行测试,其中包括:
ZDT1、ZDT2、ZDT3、ZDT4、ZDT6
DTLZ1-DTLZ7
wfg1-wfg10
uf1-uf10
cf1-cf10
Kursawe、Poloni、Viennet2、Viennet3

3.1 测试函数图

ZDT1
在这里插入图片描述
ZDT2
在这里插入图片描述
DTLZ2
在这里插入图片描述
WFG1
在这里插入图片描述

结论

本文改进用的是非支配排序,但是有一问题,就是原始的SSA有很强的归0性,所以后期需要对SSA进行改进,对原始的公式加入一些扰动策略,会使得它在多目标上的表现变得更好,具体的更改,可以自己进行探索,或者询作者。

完整代码

完整代码请点击

  • 51
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于支配排序遗传算法(Non-Dominated Sorting Genetic Algorithm,NSGA)是一种用于处理多目标优化问题的进化算法。它是在遗传算法的基础上进行改进,可以同时优化多个目标函数,并生成一系列支配解,这些解都不互相支配。 在基于支配排序遗传算法的matlab例程中,首先需要定义多目标函数,即我们需要优化的多个目标的评价函数。然后,通过设定遗传算法的初始种群、交叉和变异操作的参数,进行种群的初始化。 接下来,在每一代中,使用支配排序算法对种群进行分层,将所有个体根据其支配关系划分为不同的层级。越接近第一层的个体越优秀,因为它们不被其他个体所支配。 然后,根据这些层级进行选择操作,以保留多样性和局部优化能力。选择操作可以使用快速支配排序算法,同时结合拥挤度算子,根据个体在解向量空间中的拥挤度进行选择。 接下来进行交叉和变异操作,通过交叉和变异产生新的个体,并替换掉原来的个体。通过不断进行交叉和变异操作,直到达到停止条件为止,例如达到最大迭代次数或找到满足要求的解。 最后,根据最终得到的支配解的集合,进行后处理操作,如生成帕累托前沿面、计算各个解的拥挤度等信息。 总之,基于支配排序遗传算法的matlab例程通过将多目标函数转化为单目标优化问题,并结合支配排序和拥挤度算子等技术,能够有效求解多目标优化问题,得到一系列支配解,提供了多样性的解集。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值