NSGA2多目标遗传算法学习笔记(初学者记录下自己认为主要的东西)

NSGA2学习笔记


代码下载地址:https://download.csdn.net/download/obsession54666/11123114

  • Pareto-最优解的概念
    NSGA2多目标遗传算法学习笔记(初学者记录下自己认为主要的东西)_第1张图片
    1:解A优于解B(解A强帕累托支配解B)
    假设现在有两个目标函数,解A对应的目标函数值都比解B对应的目标函数值好,则称解A比解B优越,也可以叫做解A强帕累托支配解B,举个例子,就很容易懂了图中代表的是两个目标的的解的情况,横纵坐标表示两个目标函数值,E点表示的解所对应的两个目标函数值都小于C,D两个点表示的解所对应的两个目标函数值,所以解E优于解C,D.
    2:解A无差别于解B(解A能帕累托支配解B)
    同样假设两个目标函数,解A对应的一个目标函数值优于解B对应的一个目标函数值,但是解A对应的另一个目标函数值要差于解B对应的一个目标函数值,则称解A无差别于解B,也叫作解A能帕累托支配解B,举个例子,还是上面的图,点C和点D就是这种情况,C点在第一个目标函数的值比D小,在第二个函数的值比D大。
    3:帕累托最优解
    同样假设两个目标函数,对于解A而言,在 变量空间 中找不到其他的解能够优于解A(注意这里的优于一定要两个目标函数值都优于A对应的函数值),那么解A就是帕累托最优解
  • 遗传算法流程图

NSGA2多目标遗传算法学习笔记(初学者记录下自己认为主要的东西)_第2张图片

  • 竞标赛算法

1、确定每次选择的个体数量N。(二元锦标赛选择即选择2个个体)
2、从种群中随机选择N个个体(每个个体被选择的概率相同) ,根据每个个体的适应度值,选择其中适应度值最好的个体进入下一代种群。
3、重复步骤2多次(重复次数为种群的大小),直到新的种群规模达到原来的种群规模。

  • 快速非支配排序

在NSGA进行非支配排序时,规模为N的种群中的每个个体都要针对M个目标函数和种群中的N-1个个体进行比较,复杂度为O(MN),因此种群中的N个个体都比较结束的复杂度为O(MN2),即每进行一次Pareto分级的时间复杂度为O(MN2)。在最坏的情况下,每个Pareto级别都只含有一个个体,那么需要进行N次分级所需要的时间复杂度则会上升为O(MN3)。鉴于此,论文中提出了一种快速非支配排序法,该方法的时间复杂度为O(MN2)。
该算法需要保存两个量:(1).支配个数np。该量是在可行解空间中可以支配个体p的所以个体的数量。 (2).被支配个体集合SP。该量是可行解空间中所有被个体p支配的个体组成的集合。

  • 快速拥挤系数估计程序

为了维持种群多样性引入拥挤系数。拥挤系数的计算需要根据每一目标函数值的大小的升序顺序进行排序。对于每一目标函数,边界解被指定为无穷大距离的值。所有其它中间的解都被指定为等于两个相邻解的函数值归一化后的绝对值差。
全部拥挤系数是通过个体每一目标距离值的加和计算得到的。每一项目标函数在计算拥挤系数前都会经过归一化处理。所有群成员被指定了一个距离度量,我们就能对比两个解与其它解的接近程度。一个拥有更小的距离度量的量值的解,在一定程度上,会被其它解挤掉。

  • 拥挤比较算子

在两个有不同排名非支配解中,我们更喜欢拥有更低更好的排名解。否则如果两个解属于同一前沿面,那么我们更喜欢处于相对不太拥挤区域的解。

  • NSGA2流程

NSGA2多目标遗传算法学习笔记(初学者记录下自己认为主要的东西)_第3张图片
随机产生一个初始父代P0,在此基础上采用二元锦标赛选择、交叉和变异操作产生子代Q0,P0和Q0的种群规模均为N。将Pt和Qt并入到Rt中(初始时t=0),对Rt进行快速非支配解排序,构造其所有不同等级的非支配解集F1、F2。。。按照需要计算Fi中所有个体的拥挤距离,并根据拥挤比较运算符构造Pt+
,直至Pt+1规模为N,图中Fi为F3

  • 模拟二进制交叉

NSGA2多目标遗传算法学习笔记(初学者记录下自己认为主要的东西)_第4张图片

  • 多项式变异
    NSGA2多目标遗传算法学习笔记(初学者记录下自己认为主要的东西)_第5张图片

你可能感兴趣的:(NSGA2多目标遗传算法学习笔记(初学者记录下自己认为主要的东西))