NSGA-II基本原理
NSGA-II基本原理思想
多目标优化算法基本流程
-
初始化n个解
如何初始化,什么样的初始化对求解有帮助
-
计算函数值(或者适应度)
适应度指的是适合求解目标的高低,而函数值指的是目标函数求解的值
-
利用旧解产生新解
各种策略:GA、PSO、灰狼优化等(本质是一样的)
对策略改进,GA:交叉变异,PSO:速度,系数,算法融合
通过比大小选择得到新一轮的解
非支配排序,确定Rank
对于同一个Rank,拥挤距离越大越好
拥挤度距离
拥挤度距离指的是一个个体x1左右相邻的两个x2和x3为对角线形成的四边形的周长一半,如图所示

图中虚线部分为红点的拥挤度距离,拥挤度距离可以保持帕累托解集的分布均匀性,拥挤度越大越好,位于边界两点(上边界和下边界)的拥挤度距离应当设置为无穷大。

快速非支配排序

支配:是指在多目标优化问题中用来比较两个解的优劣的关系。一个解支配另一个解,意味着在所有目标函数上至少有一个目标比另一个解好,且在其他目标上至少有一个目标与另一个解相同或更好。支配关系有助于确定解的优劣顺序,进而指导遗传算法在搜索空间中寻找更好的解。
假设有两个解 ( A ) 和 ( B ),分别由它们的目标函数向量表示为 ( f{f}(A) = (f_1(A), f_2(A), ..., f_m(A)) ) 和 ( f{f}(B) = (f_1(B), f_2(B), ..., f_m(B)) )。
- ( A ) 支配 ( B ) (记作 ( A $\prec$ B )),当且仅当:
- 对于所有的 ( i = 1, 2, ..., m ),都有 ( fi(A)$ \leq$ fi(B) );
- 至少存在一个 ( j ) 使得 ( fj(A) < fj(B) )。
- ( A ) 和 ( B ) 互不支配(即没有支配关系),当且仅当:
- 不满足 ( A $\prec $B ) 且不满足 ( B$ \prec$ A )。
- ( A ) 与 ( B ) 具有支配关系(即部分支配关系),当且仅当:
- 存在一些目标函数 ( i ) 和 ( j ),使得 ( fi(A) $\leq$ fi(B) ) 且 ( fj(A) < fj(B) )。
通过这样的定义,遗传算法可以利用支配关系来评估和比较不同解的优劣,从而指导种群的进化和选择过程。

np为在种群中支配个体i的解个体的数量。(别的解支配个体i的数量)
S(p)为被个体i所支配的解个体的集合。(个体i支配别的解的集合)
1.首先,找到种群中所有n(i)=0的个体(种群中所有不被其他个体至配的个体i),将它们存入当前集合F(1);(找到种群中所有未被其他解支配的个体)
2然后对于当前集合F(1)中的每个个体j,考察它所支配的个体集S(),将集合Si)中的每个个体k的 n(k)减去1,即支配个体k的解个体数减1(因为支配个体k的个体j已经存入当前集F(1));(对其他解除去被第一层支配的数量,即减一)
3.如n(k)-1=0则将个体k存入另一个集H。最后,将F(1)作为第一级非支配个体集合,并赋予该集合内个体一个相同的非支配序i(rank),然后继续对H作上述分级操作并赋予相应的非支配序,直到所有的个体都被分级。其计算复杂度为img, m为目标函数个数,N为种群大小。(按照1)、2)的方法完成所有分级)
NSGA-II基本流程

以下是遗传算法的基本流程图:
- 初始化:
- 随机生成初始种群。
- 适应度评估:
- 计算种群中每个个体的适应度值。
- 选择:
- 根据适应度值选择个体,通常采用轮盘赌选择、锦标赛选择等方式。
- 交叉:
- 选取父代个体进行交叉操作,生成子代个体。
- 变异:
- 对子代个体进行变异操作,引入新的基因组变化。
- 更新种群:
- 根据选择、交叉和变异生成的子代个体更新当前种群。
- 重复进化:
- 重复进行选择、交叉、变异等操作,直到满足停止条件(如达到最大迭代次数或找到满意解)。
- 终止:
- 返回最终优化结果,即近似最优解。
这是遗传算法的一般流程图,具体实现时可能会根据问题的特点和需求进行适当调整和优化。

浙公网安备 33010602011771号