Autonomous vehicle 杂谈_04
一. 浅谈什么是遗传算法?
- 所谓的人工智能,就是让计算机拥有人的智慧和能力。以机器学习(深度学习)为例,其就是在模仿人的学习过程,通过不断地学习来获取知识,从而在遇到新的事物时,可以根据已经学得的知识做出一系列的判断。而遗传算法则是另外一种对人(生物)的模仿,其模仿的对象就是人(生物)的进化学说和遗传学说。也就是通过不断地竞争、繁殖、进化来获取“全局最优解”。
二. 举个例子(寻找最短路径 - - TSP商旅问题)理解遗传算法
-
什么是TSP商旅问题?
问题内容为“给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路。” 如下图所示,假设你从城市A出发,要去往剩下的B、C、D三座城市,怎么走会让你走的路径最短呢?
也许你会觉得这个问题不就是单纯的排列组合么,看着并不难,但是如果当你要去往的城市变得越来越多,这个时候怎么样才能智能且不重复的去完成这个排列组合的工作呢?这个时候就可以体现出遗传算法的魅力了。 -
遗传算法的实际应用
如下图所示的TSP商旅问题:
遗传算法的求解最短距离方法就是:-
首先随机生成N组路线作为染色体的祖先群落,并把每一组路线设定为一个染色体。而这组路径的总长度则被定义为了一个叫做适合度值的结果。
-
基因互换和基因变异生成新的染色体。
基因互换:
在祖先群落中随机选取a,b两组,从a组中随机截取一段基因序列,在b组中剔除掉相同的基因,同时将b组剩余基因连接,在将a组中截取的部分接入,这样就形成了一个新染色体了。
基因变异:
在祖先群落中随机选取一组染色体,从中截取一段基因序列,打乱其排列顺序,在插回,从而形成新的染色体。
(注:基因互换和基因变异的方法并不唯一,而是可以根据业务需求自定义设计) -
在进行完基因互换以及基因变异之后(其实也就是新生成了N组新的染色体),我们就需要将生成的这N组染色体与之前的祖先群落合并在一起,并按照适合度的大小进行排序,之后再从这个合并后的群落中选取出:适合度较小的N组染色体(TSP结果较优),并用这组新的群落替换掉之前的祖先群落,然后循环之前的步骤。
-
那么可以预见的就是,每次循环,我们都期待获得适合度值更低,更优化的序列解,当我们设置一个循环次数的上限,对于达到上限返回的最优染色体序列解,我们就可以将其视为此类问题的有效解。也就是说,当我们掌握了如何设计基因,染色体序列,以及背后的互换、变异机制后,遗传算法就能运用到更加广泛的领域了。
三. 遗传算法的用途
- 机器人路径规划:不光可以找到从A点到B点的最短距离(点状线),也可以合理规避道路上的障碍物(灰色方块)。
- 自动生成诗词、音乐、图画:本质上就是模仿已经有的“数据库”,生成适合度值无限接近已有“数据库”的对象。
四. 感悟与分享
- 遗传算法的本质其实并不复杂,但要想获取优质的算法结果就需要设计相对复杂的基因互换和基因变异操作,以及通过一次又一次反复迭代与进化。
- 参考资料:
https://www.bilibili.com/video/BV19U4y1G7dU
https://www.zhihu.com/question/19885905
如有问题,敬请指正。欢迎转载,但请注明出处。