Autonomous vehicle 杂谈_04


一. 浅谈什么是遗传算法?

  1. 所谓的人工智能,就是让计算机拥有人的智慧和能力。以机器学习(深度学习)为例,其就是在模仿人的学习过程,通过不断地学习来获取知识,从而在遇到新的事物时,可以根据已经学得的知识做出一系列的判断。而遗传算法则是另外一种对人(生物)的模仿,其模仿的对象就是人(生物)的进化学说和遗传学说。也就是通过不断地竞争、繁殖、进化来获取“全局最优解”。

二. 举个例子(寻找最短路径 - - TSP商旅问题)理解遗传算法

  1. 什么是TSP商旅问题?
    问题内容为“给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路。” 如下图所示,假设你从城市A出发,要去往剩下的B、C、D三座城市,怎么走会让你走的路径最短呢?

    也许你会觉得这个问题不就是单纯的排列组合么,看着并不难,但是如果当你要去往的城市变得越来越多,这个时候怎么样才能智能且不重复的去完成这个排列组合的工作呢?这个时候就可以体现出遗传算法的魅力了。

  2. 遗传算法的实际应用
    如下图所示的TSP商旅问题:

    遗传算法的求解最短距离方法就是:

    1. 首先随机生成N组路线作为染色体的祖先群落,并把每一组路线设定为一个染色体。而这组路径的总长度则被定义为了一个叫做适合度值的结果。

    2. 基因互换和基因变异生成新的染色体。
      基因互换
      在祖先群落中随机选取a,b两组,从a组中随机截取一段基因序列,在b组中剔除掉相同的基因,同时将b组剩余基因连接,在将a组中截取的部分接入,这样就形成了一个新染色体了。

      基因变异
      在祖先群落中随机选取一组染色体,从中截取一段基因序列,打乱其排列顺序,在插回,从而形成新的染色体。

      (注:基因互换和基因变异的方法并不唯一,而是可以根据业务需求自定义设计)

    3. 在进行完基因互换以及基因变异之后(其实也就是新生成了N组新的染色体),我们就需要将生成的这N组染色体与之前的祖先群落合并在一起,并按照适合度的大小进行排序,之后再从这个合并后的群落中选取出:适合度较小的N组染色体(TSP结果较优),并用这组新的群落替换掉之前的祖先群落,然后循环之前的步骤。

那么可以预见的就是,每次循环,我们都期待获得适合度值更低,更优化的序列解,当我们设置一个循环次数的上限,对于达到上限返回的最优染色体序列解,我们就可以将其视为此类问题的有效解。也就是说,当我们掌握了如何设计基因,染色体序列,以及背后的互换、变异机制后,遗传算法就能运用到更加广泛的领域了。

三. 遗传算法的用途

  1. 机器人路径规划:不光可以找到从A点到B点的最短距离(点状线),也可以合理规避道路上的障碍物(灰色方块)。
  2. 自动生成诗词、音乐、图画:本质上就是模仿已经有的“数据库”,生成适合度值无限接近已有“数据库”的对象。

四. 感悟与分享

  1. 遗传算法的本质其实并不复杂,但要想获取优质的算法结果就需要设计相对复杂的基因互换和基因变异操作,以及通过一次又一次反复迭代与进化。
  2. 参考资料:
    https://www.bilibili.com/video/BV19U4y1G7dU
    https://www.zhihu.com/question/19885905

如有问题,敬请指正。欢迎转载,但请注明出处。

小白如何通俗地理解 - - 遗传算法以及其实际应用?相关推荐

  1. 如何通俗地理解 Gradle?

    作者:nonesuccess 链接:https://www.zhihu.com/question/30432152/answer/79547641 来源:知乎 著作权归作者所有.商业转载请联系作者获得 ...

  2. 【数学与算法】如何通俗的理解概率密度函数

    概率分布函数就是概率密度函数. 累计分布函数: 对概率密度函数从负无穷到xxx积分,得到的是累计分布函数. 如何通俗的理解概率密度函数? 首先考虑这样一个问题,你点了一个外卖,外卖说会在两个小时送达. ...

  3. 解惑(二)----- 如何通俗地理解Python中的if __name__ == ‘__main__‘

    1. 摘要 通俗的理解__name__ == '__main__':假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明'):在你自己眼中,你是你自己(__name__ == '_ ...

  4. 很好的理解遗传算法的样例

    遗传算法的手工模拟计算演示样例 为更好地理解遗传算法的运算过程,以下用手工计算来简单地模拟遗传算法的各     个主要运行步骤.         例:求下述二元函数的最大值: (1) 个体编码     ...

  5. python怎么用gamma函数_如何通俗的理解伽马(gamma)函数

    如何通俗的理解伽马(gamma)函数 - 直觉,求导和示例 我为什么要在乎garmma分布? 使用伽马函数定义了许多概率分布,例如伽马分布,Beta分布,狄利克雷分布,卡方分布和学生t分布等. 对于数 ...

  6. 电容或电感的电压_如何通俗的理解电流,电压,电阻,电容和电感电工技术知识学习干货分享...

    点击上方↑↑↑『电工技术知识学习』关注本公众号可以免费进微信群咨询技术问题 猜您喜欢的文章 82条电气专业术语详解,这资料就该人手一份 接触器如何选择?电气性能参数有哪些 收集最全的电工口诀,不用到处 ...

  7. 【线性代数】通俗的理解奇异值以及与特征值的区别,还有奇异值分解及其应用

    奇异值分解,就是把矩阵分成多个"分力".奇异值的大小,就是各个"分力"的大小. 之前在介绍矩阵特征值与特征向量的时候,也是以运动作为类比. 一.通俗理解奇异值 ...

  8. 如何计算近似纳什均衡_如何通俗的理解纳什均衡点?

    导读:如何通俗的理解纳什均衡点? 一.市场上有2家企业A和B,都是卖纸的,纸的成本都是2元钱,A和B都卖5块钱. 有一天A降价到4块钱,于是A销量大增,B销量大减.B看到了后,降价到3块钱,于是B销量 ...

  9. 如何通俗地理解相似矩阵

    如何通俗地理解相似矩阵 同学们大家好,今天我们来学习相似矩阵. 1 简单印象 设 都是 阶方阵,若有可逆矩阵 ,使得: 则称 为相似变换矩阵(Similarity transformation mat ...

  10. 如何通俗地理解傅立叶变换?

    声明下,下面都是用傅立叶级数来阐述,文章最后会说明下傅立叶级数和傅立叶变换之间的关系. 让我们从比较容易懂的解释开始吧. 1 直观解释 1666年牛顿发现太阳光经三棱镜的折射后可呈现彩色光,称为光的色 ...

最新文章

  1. 扒一扒 @SpringBootApplication 注解背后的奥秘!
  2. 新版数采仪问题解决全记录-升级失败问题
  3. 从Python脚本判断服务器不可达,到Zabbix报警
  4. 关于Linux的虚拟内存管理
  5. iOS socket 套接字编程
  6. shopex证书无法安装解决方法探讨
  7. 前端学习(1297):第三方模块gulp
  8. windows 下 git 禁用 CRLF 转换 LF
  9. ubuntu安装ftp_如何在 Ubuntu 20.04 上安装 Webmin
  10. 用免费WiFi 连接消费者,Zenreach 获 3000 万美元B轮融
  11. sql server 比较大小
  12. 学习spring必须java基础知识-动态代理
  13. 构筑城市生命线:应急管理需要新思路,全域能力成关键
  14. 精选1000个机械原理动图
  15. 前端实现在线预览文档(pdf、doc文件)
  16. Linux内核入门-- likely和unlikely
  17. React 高阶组件HOC使用总结
  18. takken android apk,银钢梦想之旅|TAKKEN 出击秘境探索第二季
  19. 错误与异常 之 try...catch语句
  20. 龙王传说古月_《龙王传说》古月娜“三块逆鳞”,谁碰谁死,唐舞麟只是其中一个...

热门文章

  1. 视频上传接口测试实践
  2. 6PSS并联结构的运动学正逆解推导
  3. 使用webots对并联结构进行仿真
  4. C/C++基础编程基础专项题库
  5. 在word中快速得到数学公式
  6. coreldraw怎样定数等分_cdr怎样将一个圆形平均划分为三等分?
  7. Flask深度学习模型服务端部署
  8. python的基础列表_python基础入门 列表
  9. Android低功耗蓝牙通讯
  10. 导入项目时遇到的plugin with id com.android.application not found问题解决方案