多目标遗传算法NSGA

多目标遗传算法NSGA

因所读的一篇论文中,为了解决多目标的最优解问题,作者使用了一种称为NSGA-II(Improved Non-dominated Sorting Genetic Algorithm)的遗传算法,花了两天时间了解下,此为何物。其中NSGA以及NSGA-II的原理说明内容大部分取自2008年李莉的硕士论文《基于遗传算法的多目标寻优策略的应用研究》,故将此文定为转载。

首先需要了解一种称之为‘dominate’的关系:
设一个最大化目标函数为F(x)=(F1(x),F2(x),...,Fk(x)), 因为是一个多目标最优的问题,所以这里的目标数量k2。假定x0, x1是解空间X中的两个解。如果i[1,k]使得Fi(x0)>Fi(x1)成立,并且i[1,k]时,Fi(x0)Fi(x1)也成立,那么就称解x0占优(dominate)x1。如果在所有的解空间X中找不到其他能占优x0的解,那么我们称解x0是一个efficient solution。该x0在空间中对应的点,称为 non-dominated point。个人感觉efficient solution其实就是一个Pareto最优解,即,不可能在使得至少一个人收益变得更好情况下而保证其他人的收益不变差。
一般而言,在多目标优化的问题里, efficient solution往往不是唯一的,那么所有efficient solutions的集合,我们称为efficient set。相对应地,所有non-dominated points组成的点集,称为Pareto front(帕累托前沿)。

题外话:一般多目标规划问题,其实都可以建模为找Pareto 最优解的问题。

在一个庞大的解空间中找出所有的Pareto解(Pareto front)是一个NP-hard问题,因此一些有意思启发式算法就诞生了,而本文这里所讲的遗传算法(Genetic Algorithm)就是其中之一。

NSGA(Non-dominated Sorting Genetic Algorithm)

NSGA非支配排序遗传算法就是一种以基本遗传算法为基础的多目标寻优策略,因为其在多目标寻优领域的优势,成为人们的研究热点。

下面将简要说明NSGA的原理[[1]]。
NSGA主要由三部分构成,分别为:

  • 种群分层
    假定寻找最大化目标函数为F(x)=(F1(x),F2(x),...,Fm(x)),种群规模为n
    (1)设i=1
    (2)对于所有的j=12nji,按照以上定义比较个体xi和个体xj之间的支
    配(dominate)与非支配(non-donimated)关系;
    (3)如果不存在任何一个个体xj优于xi,则xi标记为非支配个体;
    (4)令i=1+1,转到步骤(2),直到找到所有的非支配个体。
    通过上述步骤得到的非支配个体集是种群的第一级非支配层,然后,忽略这些已经
    标记的非支配个体(即这些个体不再进行下一轮比较),再遵循步骤(1)一(4),就会得到第二
    级非支配层。依此类推,直到整个种群被分层。

  • 共享小生境技术
    为了在演化过程中保持群体的多样性,NSGA中引入了共享小生境技术。
    假设第p级非支配层上有np个个体,每个个体的虚拟适应度值为fp
    (1)算出同属于一个非支配层的个体xi和个体xj的欧几里得距离:

    dij=l=1l=m(Fl(xi)Fl(xj)FulFdl)2

    其中m目标个数,Ful,Fdl分别为Fl的上界和下界。
    (2)共享函数(Sharing Function)是表示两个个体间关系密切程度的函数,两个个体xixj间的共享函数sh(dij):
    sh(dij)=1(dijσshare)α0,dijσsharedij>σshare

    σshare的值表示了xixj群体的相似度。
    dij表示个体xixj间的欧式距离。
    α用于对sh(dij)的调整。
    由此可见:
    sh(dij)越大表明二者关系密切,即相似度高
    (3)然后我们计算出节点i与其他所有节点的累积相似度,称为共享度ci:
    ci=j=1npsh(dij),i=1,2,...,np

    (4)计算出个体xi的共享适应度值:
    fp(xi)=fp(xi)/ci

    同理我们可以计算出所有个体在小生境条件下的适应度,从而提高了种群在演化时的多样性,因为相似度高的种群,其适应度会得到适当地减小。

整体NSGA工作流程如下图所示(至于遗传算法的具体内容,如果以后接触到,再做详细地了解):
这里写图片描述

阅读更多

没有更多推荐了,返回首页