带精英策略的快速非支配排序遗传算法 NSGA-II 算法

摘要:
NSGAII是一种基于遗传算法的多目标优化算法,是基于帕累托最优解的多目标最优化算法。接下来,我们将介绍帕累托最优解的相关概念。其中,一个个体的拥挤距离nd最终在目标函数上除以该级别个体的范围拥挤比较算子非支配排序遗传算法已应用于许多问题,但NSGA仍存在一些问题:)a具有较高的计算复杂性,即O,因此当群体较大时,计算相当耗时。NSGA-II通过以下三个方面改进了上述缺陷:)提出了一种快速非支配排序方法,以降低算法的计算复杂性。

NSGAII(带精英策略的非支配排序的遗传算法),是基于遗传算法的多目标优化算法,是基于pareto最优解讨论的多目标优化,下面介绍pareto(帕累托)最优解的相关概念。

Paerot支配关系

带精英策略的快速非支配排序遗传算法 NSGA-II 算法第1张

Pareto最优解定义

多目标优化问题与单目标优化问题有很大差异。当只有一个目标函数时,人们寻找最好的解,这个解优于其他所有解,通常是全局最大或最小,即全局最优解。而当存在多个目标时,由于目标之间存在冲突无法比较,所以很难找到一个解使得所有的目标函数同时最优,也就是说,一个解可能对于某个目标函数是最好的,但对于其他的目标函数却不是最好的,甚至是最差的。因此,对于多目标优化问题,通常存在一个解集,这些解之间就全体目标函数而言是无法比较优劣的,其特点是:无法在改进任何目标函数的同时不削弱至少一个其他目标函数。这种解称作非支配解(nondominated soluitons)或Pareto最优解(Pareto optimal Soluitons),定义如下:

带精英策略的快速非支配排序遗传算法 NSGA-II 算法第2张

NSGAII算法

NSGA一II算法的基本思想为:首先,随机产生规模为N的初始种群,非支配排序后通过遗传算法的选择、交叉、变异三个基本操作得到第一代子代种群;其次,从第二代开始,将父代种群与子代种群合并,进行快速非支配排序,同时对每个非支配层中的个体进行拥挤度计算,根据非支配关系以及个体的拥挤度选取合适的个体组成新的父代种群;最后,通过遗传算法的基本操作产生新的子代种群:依此类推,直到满足程序结束的条件。相应的程序流程图如下图所示:

带精英策略的快速非支配排序遗传算法 NSGA-II 算法第3张

快速非支配排序算法

带精英策略的快速非支配排序遗传算法 NSGA-II 算法第4张

拥挤度和拥挤度比较算子

拥挤度是指种群中给定个体的周围个体的密度,直观上可表示为个体。周围仅仅包含个体。本身的最大长方形的长、宽之和, 用nd表示。

带精英策略的快速非支配排序遗传算法 NSGA-II 算法第5张

拥挤度的算法如下:

带精英策略的快速非支配排序遗传算法 NSGA-II 算法第6张

这里面有些小问题, 拥挤度无穷的设定并不是边界的两端而是一端, 如果是最小问题的话则是最小一端。

其中, 个体的拥挤距离  nd  最终是要除以该层 个体 在该目标函数上的范围(该层个体在该目标函数值上的最大最小值之差)

拥挤度比较算子

带精英策略的快速非支配排序遗传算法 NSGA-II 算法第7张

非支配排序遗传算法(NSGA)在许多问题上得到了应用,但NSGA仍存在一些问题:
)a计算复杂度较高,为O(mN3)(m为目标函数个数,N为种群大小),所以当种群较大时,计算相当耗时。
b)没有精英策略;精英策略可以加速算法的执行速度,而且也能在一定程度上确保己经找到的满意解不被丢失。
)c需要指定共享半径。

而NSGA一II针对以上的缺陷通过以下三个方面进行了改进:

)a提出了快速非支配排序法,降低了算法的计算复杂度。由原来的O(mN3)降到O(mN2),其中,m为目标函数个数,N为种群大小。
b)提出了拥挤度和拥挤度比较算子,代替了需要指定共享半径的适应度共享策略,并在快速排序后的同级比较中作为胜出标准,使准Paroet域中的个体能扩展到整个Pareto域,并均匀分布,保持了种群的多样性。
)c引入精英策略,扩大采样空间。将父代种群与其产生的子代种群组合,共同竞争产生下一代种群,有利于保持父代中的优良个体进入下一代,并通过对种群中所有个体的分层存放,使得最佳个体不会丢失,迅速提高种群水平。

带精英策略的快速非支配排序遗传算法 NSGA-II 算法第8张

带精英策略的快速非支配排序遗传算法 NSGA-II 算法第9张

带精英策略的快速非支配排序遗传算法 NSGA-II 算法第10张

主体循环部分

    (1).随机初始化开始种群P0。并对P0进行非支配排序,初始化每个个体的rank值。

    (2). t = 0

    (3).通过二进制锦标赛法从Pt选择个体,并进行交叉和变异操作,产生新一代种群Qt

    (4).通过合并Pt 和 Qt 产生出组合种群Rt =  PUQt

    (5).对Rt进行非支配排序,并通过排挤和精英保留策略选出N个个体,组成新一代种群Pt+1

    (6).跳转到步骤3,并循环,直至满足结束条件。

以上内容是结合以下网络上的资料给出的:

http://www.cnblogs.com/bnuvincent/p/5289710.html

https://www.zhihu.com/question/26990498

另外,继续学习推荐参考以下内容:

http://blog.csdn.net/lf8289/article/details/2291466

免责声明:文章转载自《带精英策略的快速非支配排序遗传算法 NSGA-II 算法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇解决XP在网络中最大共享连接数的问题在CentOS 7-8上安装PHP 8.0下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

多目标遗传算法 ------ NSGA-II (部分源码解析) 拥挤距离计算 crowddist.c

1 /* Crowding distance computation routines */ 2 3 # include <stdio.h> 4 # include <stdlib.h> 5 # include <math.h> 6 7 # include "global.h" 8 #...

目标函数、损失函数、代价函数

http://www.cnblogs.com/Belter/p/6653773.html 注:代价函数(有的地方也叫损失函数,Loss Function)在机器学习中的每一种算法中都很重要,因为训练模型的过程就是优化代价函数的过程,代价函数对每个参数的偏导数就是梯度下降中提到的梯度,防止过拟合时添加的正则化项也是加在代价函数后面的。在学习相关算法的过程中,...

xgboost和gbdt区别

1. xgboost在目标函数中加入了正则化项,当正则化项为0时与传统的GDBT的目标函数相同2. xgboost在迭代优化的时候使用了目标函数的泰勒展开的二阶近似,paper中说能加快优化的过程!!xgboost可自定义目标函数,但是目标函数必须二阶可导也是因为这个。GDBT中只用了一阶导数。3. xgboost寻找最佳分割点时,考虑到传统贪心法效率比...

从NSGA到 NSGA II

NSGA(非支配排序遗传算法)、NSGAII(带精英策略的非支配排序的遗传算法),都是基于遗传算法的多目标优化算法,都是基于pareto最优解讨论的多目标优化,遗传算法已经做过笔记,下面介绍pareto(帕累托)最优解的相关概念。本文是基于参考文献做的读书笔记。 1 NSGA算法 1.1 Paerot支配关系   1.2  Pareto最优解定义 多目...

05-03 主成分分析(PCA)

目录 主成分分析(PCA) 一、维数灾难和降维 二、主成分分析学习目标 三、主成分分析详解 3.1 主成分分析两个条件 3.2 基于最近重构性推导PCA 3.2.1 主成分分析目标函数 3.2.2 主成分分析目标函数优化 3.3 基于最大可分性推导PCA 3.4 核主成分分析(KPCA) 四、主成分分析流程 4.1 输入 4.2 输出...