多目标优化问题NSGAii实例讲解
多目标优化问题NSGAii概念介绍
首次接触多目标优化问题,以NSGA2为例介绍自己的理解,如有不妥之处,欢迎大家批评指正.
NASG II主要由两部分组成,一是非支配排序,二是拥挤距离测算。非支配排序的目的是将群体分级,拥挤距离排序的目的是对同一级别中的个体进行排序。最终选择级别高,拥挤距离大的个体作为下一代。
本文先对概念进行解释,在下一篇中将结合具体实例进行介绍。
.
1.非支配排序
首先介绍非支配排序的概念。
假设有两个函数f1和f2.目标是f1和f2函数值越小越好。如下图所示为一些可行解。
图片:
- 计算每个个体的支配数量(np)和被支配集(Sp) ;
1>对于节点C,节点D和节点E在F1和F2上都比C要小,所以称为:节点D和E可以支配C,所以npc=2。而被C支配的节点有B,所以Spc=[B]。
2>对于节点D,没有节点能够支配节点D,所以npD=0。而被D支配的节点有A,B,C,所以SpD=[A,B,C]。
3>对于节点E,没有节点能够支配节点E,所以npE=0。而被D支配的节点有B,C,所以SpE=[B,C]。
4>对于节点A,节点D可以支配节点A,所以npA=1。而被A支配的节点没有,所以SpA=[null]。
5>对于节点B,节点C,D,E可以支配节点B,所以npB=3。而被B支配的节点没有,所以SpB=[null]。 - 将所有节点分级 ;
1>选择群体中计数为0的个体,表示他们不被其他个体所支配,该集合分为第一级别,即F1=[D,E];
2>为了找到F2,F1中每个个体有一个包括其支配的所有个体的列表。当前
SpD=[A,B,C],SpE=[B,C]。
对于列表中的每个个体,每遍历一次,相应的次数减1。当前情况下
遍历A一次,所以npA-1,此时npA=0
遍历B两次,所以npB-2,此时npB=1
遍历C两次,所以npC-2,此时npC=0
之后,将计数为0的节点归为第二类
F2 = [A,C].
3>为了发现F3,只需遍历F2中所有的个体,再次相减,查看哪个个体的数值为0,将他们归为F3。以此类推,可以进行个多个体的分级操作。
具体过程,参考来自[[1]]。
二、拥挤距离测算
1.拥挤距离越大越容易被保留。
拥挤距离的测算公式为
CDim表示在第m个目标函数中第i个个体的拥挤度。fm表示第m个目标函数。
Xmax表示所有个体中在m函数下的最大值,Xmin表示最小值。
总结
非支配排序和拥挤距离是NSGA II中两个非常重要的概念。具体实例讲解会在下一篇中介绍。