天天看点

NSGA-II

A Fast and Elitist Multiobjective Genetic Algorithm:NSGA-II中文翻译

目录

1. NSGA-II 简介

2. NSGA-II 详细介绍

3. NSGA-II 模拟结果

4. 参数设置问题

5. 约束处理方法

1. NSGA 简介

NSGA-II适合应用于复杂的、多目标优化问题。是K-Deb教授于2002在论文:A Fast and Elitist Multiobjective Genetic Algorithm:NSGA-II,中提出。在论文中提出的NSGA-II解决了NSGA的主要缺陷,实现快速、准确的搜索性能。NSGA的非支配排序的时间复杂度为 O(MN3) O ( M N 3 ) ,在种群规模N较大时排序的速度会很慢。NSGA-II使用带精英策略的快速非支配排序,时间复杂度为 O(M(2N)2) O ( M ( 2 N ) 2 ) ,排序速度有大幅的提升。而且使用了精英策略,保证了找到的最优解不会被抛弃,提高了搜索性能。另一方面NSGA使用共享函数来使解分布均匀,该函数依赖于共享参数 σshare σ s h a r e 的选择,而且共享函数的复杂度高达 O(N2) O ( N 2 ) 。NSGA-II从新定义了拥挤距离来代替共享参数。

2. NSGA-II详细介绍

一. 快速非支配排序

NSGA-II

基于支配比较对种群快速非支配排序,排序分两部分

  • 将群体的的个体能支配的个体组成一个集合 Sp S p ,记录个体被支配的个体数 np n p
  • 将 np==0 n p == 0 的个体组成第一个前列集 F1 F 1 ,并给个体的等级rank赋值为1。从 Fi F i 中取出每个个体,对该个体的 Sp S p 集合中的个体进行如下操作: 将 np n p 都减一,并判断如果 np==0 n p == 0 则加入集合 Fi+1 F i + 1 中。

二.多样性保护

  • 1.拥挤距离(crowding distance)

    NSGA在使种群收敛到pareto-optimal-solutions的同时,使用共享参数来保持解能相对均匀分布,也就是尽量要保持解得多样性。但是共享函数复杂度(O(n^2))太高,这里使用拥挤距离来代替共享参数。对两个目标函数的拥挤距离如下图

    NSGA-II

    拥挤距离等于解在各个目标函数的方向上的前后两个解得距离和。在二维时就等于图示矩形周长的一半。

    拥挤距离的伪代码如下:

    NSGA-II

note : 如果某个方向上的距离很大,就会很大程度上影响总的距离的大小。为了使每个方向上的目标函数对拥挤距离有等效的影响力,需要每个目标函数上的距离要规则化normalized。

  • 2.拥挤比较操作(crowded-comparison-operator)

    在选择算子是基于非支配比较操作区选择个体

    NSGA-II
  • 3.NSAG-II的实现过程
    NSGA-II

    首先:对种群 Pt P t 执行选择、交叉、变异操作,形成新种群 Qt Q t 。

    然后:合并这两个种群并对合并后的种群执行非支配排序

    最后:根据个体rank形成的前列面 Fi F i ,从低到高依次加入下一代种群 Pt+1 P t + 1 ,当 Fi F i 加入使种群大小越界时,依据拥挤距离从大到小,将个体加入种群。

    we use a binary tournament selection operator on crowded_comparison operator

    NSGA-II
  • 复杂度分析:worst case

    fast_nondominated_sort complexity: O(M(2N)2) O ( M ( 2 N ) 2 )

    crowding_distance_assign complexity: O(M(2N)log(2N)) O ( M ( 2 N ) l o g ( 2 N ) )

    sorting on nondominated_operator complexity: O((2N)log(2N)) O ( ( 2 N ) l o g ( 2 N ) ) (such as quick sort)

3.模拟结果

选择合适参数设置进行测试,虽然不是最佳的参数设置,但是为了体现NSGA-II相比其他算法的优越性,应该是对各种问题表现都相对均衡的参数。参数设置如下

population size:250

probability for crossover:0.9

probability for mutation: 1nvariesor1nbits 1 n v a r i e s o r 1 n b i t s

distribution index for crossover and mutation: nc=20 nm=20 n c = 20   n m = 20

binary code : single point crossover, bitwise mutation

real code : SBX , polynomial mutation

测试结果:

NSGA-II

可见除了ZDT3 和ZDT6,NSGA-II性能都是最好的。

大多数情况下,浮点数编码的NSGA-II比其他任何算法都有更好的解分布,包括二进制编码的NSGA-II.

4.参数设置

只是以进化次数和变异分布指数为例,简单说明参数的影响,并不对最优参数设置做深入的研究。

增加进化次数到500 :可以得到离最优解更近的收敛,和更均匀的解分布

减少变异分布指数: 可以使多项式变异产生变化更大的解

例如:ZDT4有很多局部最优解,为了跳出zdt4的局部最优解,自变量要有大变化才可能。这里使用了更小的distribution index for mutation: nm=10 n m = 10 ,结果convergence metric 减小到0.02,diversity metric 减小到0.498

5.约束处理

继续阅读