NSGA-II

news/2025/2/11 21:49:10/

A Fast and Elitist Multiobjective Genetic Algorithm:NSGA-II中文翻译
目录
1. NSGA-II 简介
2. NSGA-II 详细介绍
3. NSGA-II 模拟结果
4. 参数设置问题
5. 约束处理方法

1. NSGA 简介

NSGA-II适合应用于复杂的、多目标优化问题。是K-Deb教授于2002在论文:A Fast and Elitist Multiobjective Genetic Algorithm:NSGA-II,中提出。在论文中提出的NSGA-II解决了NSGA的主要缺陷,实现快速、准确的搜索性能。NSGA的非支配排序的时间复杂度为 O(MN3) O ( M N 3 ) ,在种群规模N较大时排序的速度会很慢。NSGA-II使用带精英策略的快速非支配排序,时间复杂度为 O(M(2N)2) O ( M ( 2 N ) 2 ) ,排序速度有大幅的提升。而且使用了精英策略,保证了找到的最优解不会被抛弃,提高了搜索性能。另一方面NSGA使用共享函数来使解分布均匀,该函数依赖于共享参数 σshare σ s h a r e 的选择,而且共享函数的复杂度高达 O(N2) O ( N 2 ) 。NSGA-II从新定义了拥挤距离来代替共享参数。

2. NSGA-II详细介绍

一. 快速非支配排序

picture 1

基于支配比较对种群快速非支配排序,排序分两部分

  • 将群体的的个体能支配的个体组成一个集合 Sp S p ,记录个体被支配的个体数 np n p
  • np==0 n p == 0 的个体组成第一个前列集 F1 F 1 ,并给个体的等级rank赋值为1。从 Fi F i 中取出每个个体,对该个体的 Sp S p 集合中的个体进行如下操作: 将 np n p 都减一,并判断如果 np==0 n p == 0 则加入集合 Fi+1 F i + 1 中。

二.多样性保护

  • 1.拥挤距离(crowding distance)
    NSGA在使种群收敛到pareto-optimal-solutions的同时,使用共享参数来保持解能相对均匀分布,也就是尽量要保持解得多样性。但是共享函数复杂度(O(n^2))太高,这里使用拥挤距离来代替共享参数。对两个目标函数的拥挤距离如下图
    picture 2
    拥挤距离等于解在各个目标函数的方向上的前后两个解得距离和。在二维时就等于图示矩形周长的一半。
    拥挤距离的伪代码如下:
    picture 3

note : 如果某个方向上的距离很大,就会很大程度上影响总的距离的大小。为了使每个方向上的目标函数对拥挤距离有等效的影响力,需要每个目标函数上的距离要规则化normalized。

  • 2.拥挤比较操作(crowded-comparison-operator)
    在选择算子是基于非支配比较操作区选择个体
    picture 4

  • 3.NSAG-II的实现过程
    picture NSGA-II procedure
    首先:对种群 Pt P t 执行选择、交叉、变异操作,形成新种群 Qt Q t
    然后:合并这两个种群并对合并后的种群执行非支配排序
    最后:根据个体rank形成的前列面 Fi F i ,从低到高依次加入下一代种群 Pt+1 P t + 1 ,当 Fi F i 加入使种群大小越界时,依据拥挤距离从大到小,将个体加入种群。
    we use a binary tournament selection operator on crowded_comparison operator
    picture NSGA-II code

  • 复杂度分析:worst case
    fast_nondominated_sort complexity: O(M(2N)2) O ( M ( 2 N ) 2 )
    crowding_distance_assign complexity: O(M(2N)log(2N)) O ( M ( 2 N ) l o g ( 2 N ) )
    sorting on nondominated_operator complexity: O((2N)log(2N)) O ( ( 2 N ) l o g ( 2 N ) ) (such as quick sort)

3.模拟结果

选择合适参数设置进行测试,虽然不是最佳的参数设置,但是为了体现NSGA-II相比其他算法的优越性,应该是对各种问题表现都相对均衡的参数。参数设置如下
population size:250
probability for crossover:0.9
probability for mutation: 1nvariesor1nbits 1 n v a r i e s o r 1 n b i t s
distribution index for crossover and mutation: nc=20 nm=20 n c = 20 n m = 20

binary code : single point crossover, bitwise mutation
real code : SBX , polynomial mutation

测试结果:
picture of result for test
可见除了ZDT3 和ZDT6,NSGA-II性能都是最好的。
大多数情况下,浮点数编码的NSGA-II比其他任何算法都有更好的解分布,包括二进制编码的NSGA-II.

4.参数设置

只是以进化次数和变异分布指数为例,简单说明参数的影响,并不对最优参数设置做深入的研究。
增加进化次数到500 :可以得到离最优解更近的收敛,和更均匀的解分布
减少变异分布指数: 可以使多项式变异产生变化更大的解
例如:ZDT4有很多局部最优解,为了跳出zdt4的局部最优解,自变量要有大变化才可能。这里使用了更小的distribution index for mutation: nm=10 n m = 10 ,结果convergence metric 减小到0.02,diversity metric 减小到0.498

5.约束处理


http://www.ppmy.cn/news/588872.html

相关文章

Quartus ii 软件的使用

一、开发工程 1.新建工程 选择一个路径作为工程存放位置,然后在工程文件夹创建4个子文件夹,分别命名为: doc、par、rtl和sim。 doc文件夹用于存放项目相关的文档, par文件夹用于存放Quartus软件的工程文件,rtl文件夹…

基于DEAP库的python进化算法-7.多目标遗传算法NSGA-II

文章目录 一.多目标优化简介1.多目标优化问题2.多目标优化求解思路 二.NSGA-II算法解析1.快速非支配排序(Fast non-dominated sort)2.拥挤距离计算(Crowding distance assignment)3.精英保存策略(Elitism) 三.NSGA-II算法实现1.测试函数 一.多目标优化简介 1.多目标优化问题 …

NSGA-II:快速精英多目标遗传算法(论文+代码解读)

按照本文梳理的算法各个模块实现,NSGA-II完整代码见GitHub - bujibujibiuwang/NSGA-II-in-python: 《A fast and elitist multi-objective genetic algorithm: NSGA-II》 目录 1.介绍 2. NSGA-II 2.1 快速非支配排序 2.1.1 NSGA的传统非支配排序 2.1.2 NSGA-I…

Quartus-II入门

一、安装破解Quartus-II 安装过程 打开安装文件,之后一路默认完成安装 完成安装之后开始破解 破解 将破解文件解压之后放到..\quartus\bin64目录下,然后打开破解器,点击应用,之后点击退出即可。 点击桌面的执行文件&#xff0…

Quartus II11.0安装教程

安装前先关闭杀毒软件和360卫士,注意安装路径不能有中文,安装包路径也不要有中文。 1.鼠标右击【Quartus II 11.0】压缩包选择【解压到Quartus II 11.0】。 2.双击打开解压后的【Quartus II 11.0】文件夹。 3.双击打开【Quartus】文件夹。 4.鼠标右击【1…

NSGA-II算法介绍

博主毕设用到了,记录下来防忘记,比较具体,也分享给需要学习的同学。 1995年,Srinivas和Deb提出了非支配遗传(Non-dominated Sorting Genetic Algorithms,NSGA)算法[42]。NSGA算法是以遗传算法为…

移植和使用ucOSII

目录 1、首先打开STM32CubeMx,选择New Project,选择芯片型号 2、其次,选择RCC时钟配置 3、第三,选择对应的debug接口 4、配置主频时钟 5、不生成PendSV_IRQn代码 6、配置LED灯的IO用于测试 7、配置代码生成选项,点击…

Quartus 软内核NIOS II 入门指导

一.背景介绍 FPGA开发过程中,往往有许多重复性繁琐的事情要处理,这时候直接使用HDL编程实现,会很浪费资源;而且有些工作是不需要并行执行,这时候NIOS II 内核就提供了很好的解决方案。在ARMFPGA或者DSPFPGA的嵌入式应用…