MATLAB算法实战应用案例精讲-【智能优化算法】非支配排序遗传算法-NSGA-Ⅱ(附python和matlab代码)
前言
NSGA是由Srinivas和Deb于90年代初期提出,它是基于个体的等级按层次来分类的。NSGA与简单遗传算法的主要区别在于选择算子的不同。在进行选择操作之前,首先找出当前种群中的非劣最优解,所有这些非劣最优解构成第一个非劣最优解层,并给其赋一个大的假定适应值。为了保持群体的多样性,这些非劣最优解共享它们的假定适应值,然后以同样的方法对种群中剩下的个体进行分类,下一层的共享假定适应值该值要小于上一层的设定值,这一过程继续进行直至群体中所有个体都被归类。NSGA的高效性在于运用一个非支配分类程序,使多目标简化至一个适应度函数的方式。运用该方法,能解决任意数目的目标问题,并且能够求最大和最小的问题。
印度科学家Deb于2000年在NSGA的基础上进行了改进,提出了NSGA-II,一种快速的非劣性排序方法(fast-nondominated-sorting):定义了拥挤距离(crowding distance)估计某个点周围的解密度,取代适应值共享。NSGA-II有效地克服了NSGA的三大缺陷:计算复杂性从O(mN3)降至 O(mN2),具备最优保留机制及无需确定一个共享参数。从而进一步提高了计算效率和算法的鲁棒性。
遗传算法相关知识请参见遗传算法(GA)
算法原理
相关概念
支配(Dominance ) :在多目标优化问题中,如果个体p至少有一个目标比个体q好,而且个体p的所有目标都不比q差那么称个体p支配个体q
序值(Rank):