A Fast and Elitist Multiobjective Genetic Algorithm: NSGA-II
一、算法简介
本文提出了一种基于非支配排序的多目标遗传算法(MOEA),即非支配排序遗传算法II (NSGA-II)。具体来说,提出了一种计算复杂度为(MN^2)的快速非支配排序方法。此外,提出了一个选择算子,通过结合亲代种群和子代种群并选择最佳的解来创建交配池。在困难测试问题上的仿真结果表明,与Pareto-archived evolution strategy (PAES)和 strength-Pareto EA(SPEA)相比,在大多数问题中,所提出的NSGA-II能够在真正的pareto最优前沿附近找到更好的解的传播和更好的收敛性,这两种精英moea特别注重创建多样化的pareto最优前沿。
NSGA存在的问题:
- 非支配排序的计算复杂度高:O(MN^3),这种巨大的复杂性是由于每一代非支配排序过程的复杂性而产生的。
- 缺乏精英主义:精英主义可以显著加快遗传算法的性能,这也有助于防止一旦找到好的解决方案就会丢失。
- 需要指定共享参数:传统的保证种群多样性从而得到多种等价解的机制,大多依赖于共享的概念。共享的主要问题是它需要指定一个共享参数。虽然已经有一些关于共享参数动态大小的研究,但一种无参数的多样性保护机制是可取的。
本文提出了一种非支配排序遗传算法,它使用了一个快速的非支配排序过程、一个精英保持方法和一个无参数的小生境算子
“小生境”(Niche)是一个核心概念,它指的是在搜索空间中,某些个体可以更好地存活和繁殖的特定区域。简单来说,小生境是指在多峰优化问题中,每一个峰(即局部最优解)所对应的区域。在这些区域内,相似的个体可以互相竞争和合作,从而促进算法在多个局部最优解之间进行平衡和探索。
多目标遗传算法与遗传算法的区别:选择的方法不同
二、精英非支配排序遗传算法
-
快速非支配排序方法:
Np:支配p的解的数量
Sp:p支配的解的集合
- 通过循环比较找到种群中所有np = 0的个体,赋予其非支配等级为1,并将这些个体存入非支配集合F1中。
- 对于集合F1中的每一个个体,将其所支配的个体集合Sp中的每个个体的np都减1,若减1后np=0则将个体p存入集合F2中,并赋予其中的个体非支配等级2。
- F2中的个体重复上述操作,直至所有个体都被赋予了非支配等级。
- 拥挤距离:
-
拥挤比较算子:
在两个具有不同非支配层级的解之间,我们更倾向于较低(较好)层级的解。
如果两个解决方案属于同一层级,那么我们更倾向于位于较小拥挤区域的解。
三、算法原理
算法流程:
- 随机产生规模为N的初始种群Pt,经过非支配排序、 选择、 交叉和变异, 产生子代种群Qt, 并将两个种群联合在一起形成大小为2N的种群Rt;
- 对Rt进行快速非支配排序,构造所有不同等级的非支配解集 F1 , F2 , F3 . . .
- 对每个非支配层中的个体进行拥挤距离计算, 根据非支配关系以及个体的拥挤距离选取合适的个体组成新的父代种群Pt+1;
- 通过遗传算法的基本操作产生新的子代种群Qt+1, 将Pt+1与Qt+1合并形成新的种群Rt, 重复以上操作, 直到满足程序结束的条件
流程图:
第t代的操作:
精英策略:为了达到保留优秀个体淘汰劣等个体的目的。精英策略通过将父代与子代个体混合形成新的群体,扩大了产生下一代个体时的筛选范围。