NSGA II实例讲解

此文章是[1]的文字版,相关视频原链接见参考资料.
假设有一个圆规问题,目标函数为最小的底面积和最小的侧面积。

底面积=πr^2, 侧面积=πrsh
总的目标函数=底面积+侧面积=π
r*(r+sh).
**我们的目标是找到合适的r和h是的底面积和侧面积最小 **

1.提前准备

1.父代初始化为
,(父代的个体为随机选择)
2.对父代进行编码,
采用二进制编码的方式。r要求在[0,10],h要求在[0,20].
假设最优解精确到两位小数,则r共有1000种取值可能,需要10位二进制数表示,而h有2000种可能,需要11位二进制数表示。于是父代的各个值可以用二进制表示,如下所示(前10位表示r,后11位表示h)

3.交叉
之后进行交叉操作,和生物中学到的遗传规则一样,两个个体交换一段基因,假设交换后的基因序列如下图

4.变异
将编码从0改为1或者从1变为0,假设经过编译后的个体如下图所示,得到6个子代

现在有12个个体(6个父代,6个子代,如下图所示,左边为1到6,右边为7到11),我们的目标是从这12个个体中选择优秀的个体进行下一次遗传。

2.非支配排序

然后经过上一篇讲的非支配排序,对这12个个体进行等级排序,排序结果如下

3.拥挤距离

因为我们要选择6个个体作为新的父代进行遗传,所以F5中只能选择1个,所以要对F5中的个体进行拥挤距离测算,选择出拥挤距离最大的个体。之所以选择距离较大的个体保留,是因为这个个体周围可能存在最优解,还有待开发。计算拥挤距离的公式为

在F5={5,6,12}中,如下图所示,对于S来说,6是边界点,对于T来说,5是边界点。所以6和5的拥挤距离将被赋予∞。

12的拥挤距离为0.14,计算如下图所示。因为5,和6的拥挤距离最大,所以可以随机选择一个作为新的父代。

4.新的父代

经过非支配排序和拥挤距离之后,新的父代为{8,2,3,4,11,5}。

整体的算法流程图如下

[ [1]: https://www.bilibili.com/video/BV1q7411C77i?t=389

NSGA II实例讲解相关推荐

  1. 完整的芯片反向设计流程原来是这样的!(实例讲解)

    完整的芯片反向设计流程原来是这样的!(实例讲解) 作者:时间:2018-02-23来源:网络收藏 现代IC产业的市场竞争十分激烈,所有产品都是日新月异,使得各IC设计公司必须不断研发新产品,维持自身企 ...

  2. FullCalendarDemo5 控件的实例讲解—拖拽实现值班排班(五)

    FullCalendarDemo5 控件的实例讲解-拖拽实现值班排班(五) (五)c# asp.net 操作FullCalendarDemo5 导出排班记录 目的:点击导出按钮,弹出参数指定对话框,选 ...

  3. Zsh 开发指南(第十九篇 脚本实例讲解)

    导读 本文将讲解一些比较简单的 zsh 脚本实例. 实例一:复制一个目录的目录结构 功能: 将一个目录及它下边的所有目录复制到另一个目录中(即创建同名目录),但不复制目录下的其他类型文件. 例子: s ...

  4. 进化计算(四)——NSGA/NSGA II算法详解

    NSGA/NSGA II算法理论学习  -A fast and elitist multiobjective genetic algorithm NSGA-II阅读笔记 引言 概述 为什么引入NSGA ...

  5. 实例讲解如何在DB2 UDB中正确的监控死锁

    实例讲解如何在DB2 UDB中正确的监控死锁 aS,?Kr P   前言:这篇文章通过详细的实例阐述了如何在DB2 UDB 中监控死锁的发生.在DB2 UDB中有两种类型的监控器:快照监控器和事件监控 ...

  6. java实现页面高效刷新_selenium高效应对Web页面元素刷新的实例讲解

    当我们在页面上进行selenium.type()或者selenium.click()操作的时候,往往需要需要等待一个元素的出现,对于一般的网页,当我们进入一个新页面的时候,往往会使用selenium. ...

  7. php 返回一个json对象,PHP给前端返回一个JSON对象的实例讲解

    解决问题:用php做后台时,如何给前端发起的AJAX请求返回一个JSON格式的"对象": 说明:我本身是一个前端,工作久了之后发现要是不掌握一门后端开发语言的话,总感觉有点无力.最 ...

  8. python简易版实例_Python3之简单搭建自带服务器的实例讲解

    WEB开发,我们先从搭建一个简单的服务器开始,Python自带服务模块,且python3相比于python2有很大不同, 在Python2.6版本里,/usr/bin/lib/python2.6/ 目 ...

  9. 手摸手教你数据可视化!(附实例讲解)

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:CrescentAI,华南理工大学,Datawhale优秀学习者 ...

最新文章

  1. C++中Reference与指针(Pointer)的使用对比
  2. !aspxpages(即!dumphttpcontext)命令输出的解释
  3. netty 文件传输服务器,Netty之二进制文件传输
  4. 在使用线程池时应特别注意对ThreadLocal的使用
  5. 情怀成驱动力 网游改编手游能火多久?
  6. 简单了解RestTemplate消息读取的转化
  7. 多边形对角线条数(C语言)
  8. mysql触发器不起作用 navicat的bug?
  9. 第69课 胡萝卜与骨头
  10. python 中time和datetime_python中time模块与datetime模块的详解
  11. 弗拉门戈-吉普赛婚礼-保利剧院
  12. android优化 清除无效代码 UCDetector
  13. 不同Ubuntu版本,对应ROS版本
  14. c语言中的面积和体积计算器,C语言编程问题(面积计算器)——新手问题
  15. 程序员一些有意思的智力题整理
  16. C语言中终端一直有光标闪烁,word里光标一直闪
  17. PXC pxc_strict_mode
  18. centos查看dns缓存_centos的dns配置总结
  19. vim开启粘贴板功能
  20. 赵小楼《天道》《遥远的救世主》解读(1)怎么评价《遥远的救世主》《天幕红尘》这两本书和《天道》这部电视剧?

热门文章

  1. 调研发现,CEO对全球经济增长的悲观情绪创新高
  2. 每日一词20190311——高程(altitude或elevation)
  3. JS高级 之 Promise 详解
  4. vue 大屏数据展示组件
  5. 如何利用知识管理软件提高员工工作效率
  6. 快速登录Linux:一步取消密码,一步取消锁屏
  7. 3D雕刻和一般3D建模有什么区别,最广泛的雕刻软件ZBrush好学吗?
  8. Qt Cl.exe不是内部或外部命令,jom.exe ERROR 2 问题解决办法
  9. javascript 的bind
  10. Hack ID Pro 破解门卡钥匙(你无法将我拒之门外)