| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 进化计算(四)——NSGA/NSGA II算法详解 -> 正文阅读 |
|
[数据结构与算法]进化计算(四)——NSGA/NSGA II算法详解 |
NSGA/NSGA II算法理论学习引言概述?NSGA系列算法都是基于Pareto支配关系解决多目标优化问题的智能算法。有些问题的Pareto解集很大(可能无界),有效的方法是去找能代表Pareto解集的一系列解。基于Pareto解实现多目标优化问题应该尽量达到三个目标:
简单介绍一下NSGA前使用GA解决多目标优化的方法
?优点——容易实现;缺点:如果Pareto解集是非凸的,不是所有的Pareto解都能被搜到。
??VEGA:采用成比例选择机制,针对每个子目标函数产生对应的一个子群体。即:如果多目标问题具有 k k k个子目标函数,需随机产生 k k k个子群体,每个子群体的规模为 N / k N/k N/k ,其中 N N N为整个群体规模。各子目标函数在其相应的子群体中独立进行评价和选择,之后组成一个新的群体进行交叉和变异操作,如此循环执行分割、并列、评价、选择、合并过程,最终求出问题的非劣解。
为什么引入NSGA算法解决多目标优化问题
?遗传算法向NSGA算法过渡的过程中,引入了非支配排序、虚拟适应度、共享小生境等技术(本文不对这些技术进行具体讲解,仅在下文中用作与NSGA II对比时简单阐述关键技术,更多内容可参考该篇博客)。 为什么引入NSGA II算法?主要有如下三个原因(NSGA的局限性):
?NSGA过渡到NSGA II的过程中,引入了快速非支配排序、拥挤度和拥挤距离、精英策略等概念。 发展时间节点
NSGA & NSGA II?NSGA II核心算法主要由两部分构成:快速非支配排序、拥挤比较算子,文章中选用的选择策略为tournament selection(锦标赛选择法),其他重组、变异算子等步骤与基本遗传算法没有太大的差异。参考:遗传算法解决单目标优化的MATLAB编程。 Fast nondominated sorting approachNSGA——原始非支配排序?排序前,随机生成N个决策向量作为初始种群中的N个个体。
??直到N个个体均完成分层,非支配排序算法结束。
NSGA II——快速非支配排序?在快速非支配排序算法中,每个solution都会被分配两个参数: n i n_i ni?、 S i S_i Si?。其中, n i n_i ni?表示支配第 i i i个解的解的个数, S i S_i Si?表示第 i i i个解所支配的解的个数。
?易知,在二层及以上层的个体其
n
i
n_i
ni?最大为N-1(该解被其他N-1个解支配)。因此,这些个体在
n
i
n_i
ni?变为0之前(即完成分层之前)最多会被访问N-1次。这样的解最多有N-1个,因此,步骤234遍历时最大的计算复杂度可以达到
O
(
N
2
)
O(N^2)
O(N2)。因此,快速非支配算法的计算复杂度为
O
(
M
N
2
)
O(MN^2)
O(MN2)。 Diversity Preservation?该部分的算法主要是为了保障种群多样性,使所求解集尽可能地均匀分布。 NSGA——sharing function approach?NSGA采用共享函数保障种群多样性,关键是选择一个合适的共享参数。共享参数 σ s h a r e \sigma_{share} σshare?决定虚拟适应度被共享的程度。实际计算中,该参数代表了种群中任意两个共享虚拟适应度的个体之间的最大欧几里得距离。该方法存在如下两个问题:
NSGA II —— crowded-comparison approach?该方法的最大优势在于无需设定任何参数,同时计算复杂度也有了一定程度的优化。拥挤度和拥挤度比较算子是该部分算法的两个关键概念。
??抽象理解:第i个解的拥挤距离就是其所在非支配前沿上相邻两点构成的长方形cuboid周长。(以同一支配层的最近邻点作为顶点的长方形)
??经过前边的计算,种群中的每个个体都具备了非支配等级
i
r
a
n
k
i_{rank}
irank?和拥挤度距离
i
d
i
s
t
a
n
c
e
i_{distance}
idistance?这两个属性。基于这两个属性,定义以下偏序关系: Main LoopNSGA?算法流程图如下: NSGA II?算法流程如下:
??伪代码: 参考链接及文献 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 9:32:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |