多目标遗传算法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=12n ji ,按照以上定义比较个体 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)是表示两个个体间关系密切程度的函数,两个个体 xi xj 间的共享函数 sh(dij) :
    sh(dij)=1(dijσshare)α0,dijσsharedij>σshare

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

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

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

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

  • 22
    点赞
  • 142
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值