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