提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
算法简介
提示:这里可以添加本文要记录的大概内容:
麻雀搜索算法(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 x∈Rn是决策变量向量。目标是寻找一组决策变量值,使得所有目标函数尽可能优化。但由于目标间的冲突性,我们寻找的是 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)中得到广泛应用。其基本思想是对解决方案进行分层分类,根据它们是否在决策空间中相互支配。
非支配排序算法步骤概述:
- 初始化阶段: 将所有解放入待排序集合中。
- 比较阶段: 对每一对解进行比较,如果一个解在所有目标函数上都不劣于另一个解(即不被后者支配),则将后者标记为“被支配”。
- 层级划分: 根据支配关系将解分为不同的层级( fronts),第一层级包含所有非支配解(Pareto最优解),后续层级包含次优解。
- 迭代更新: 在每个层级内部完成比较后,去除已被支配的解,并继续对剩余解进行新一轮的非支配排序,直至所有解都被正确归类到各自的层级。
- 通过非支配排序,算法能够在每次迭代过程中保留并优先选择那些更接近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进行改进,对原始的公式加入一些扰动策略,会使得它在多目标上的表现变得更好,具体的更改,可以自己进行探索,或者询作者。