EDA365电子论坛网

标题: NSGA-II快速非支配排序算法理解 [打印本页]

作者: pulbieup    时间: 2020-10-10 17:26
标题: NSGA-II快速非支配排序算法理解

) a6 B! p7 V( B5 @- g8 K快速的非支配排序; Z. K0 b: g9 P+ c# x7 _/ P8 m

5 T# v/ W$ G9 |+ e! M' G& ^+ q在NSGA进行非支配排序时,规模为N的种群中的每个个体都要针对M个目标函数和种群中的N-1个个体进行比较,复杂度为O(MN),因此种群中的N个个体都比较结束的复杂度为O(MN2),即每进行一次Pareto分级的时间复杂度为O(MN2)。在最坏的情况下,每个Pareto级别都只含有一个个体,那么需要进行N次分级所需要的时间复杂度则会上升为O(MN3)。鉴于此,论文中提出了一种快速非支配排序法,该方法的时间复杂度为O(MN2)。
6 v" X! `: l4 e' k4 q: W" @' p' f  @4 @4 ]! q0 \1 o0 E
该算法需要保存两个量:
' n% e4 y9 ~; B( c" p, c5 v$ K: t2 f' J& I* ]/ q1 Y
(1).支配个数np。该量是在可行解空间中可以支配个体p的所有个体的数量。
5 ^/ p5 T- H6 S- V" R3 C0 P7 r& H6 a4 m8 j5 {2 K5 X7 I
(2).被支配个体集合SP。该量是可行解空间中所有被个体p支配的个体组成的集合。1 W1 {; s4 d: Q' s* l. J

1 L  \" \/ D) V+ V2 }7 q4 H7 n/ _下面是fast_nondominated_sort的伪代码& O5 l& E" M2 E* a
! \8 s5 P; w3 u) I8 N0 @
/ N* Q' \$ a  X* R0 v3 O

. y% U$ V$ U: L下面是C++实现:
. G5 k9 A/ p3 g1 i6 {( `! h& S$ y8 k1 R0 X0 e* u( E

0 G. T# m! @# k* X& }- K, [! |$ g7 z/ {$ ]& ?6 O" i5 f( j, m% J3 M
matlab代码:" T/ y: t7 S1 \
3 e( o+ y, Z/ a; @

. i- l4 Z9 v% X' G
( Q6 ]# |1 E7 P# d0 w3 @ NSGA2具体算法实现还在编写中。
作者: NNNei256    时间: 2020-10-10 18:32
NSGA-II快速非支配排序算法理解




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2