第一部分:基础和过程
遗传算法(GA)存在的本质:就是以达尔问进化论为基础的随机全局搜索和优化方法。在核心一点说就是物竞天择、适者生存。
在这个自然界,包括我们所在的社会,又何尝没有不知不觉无时无刻不遵守着这一规则。
根据这个世界的“真理”,可以结合很多算法解决很多问题。
再开始之前要明确几个名词的意义:
染色体:相当于解决问题的方案,包括基因型和表现型;基因型代表染色体内部表现,表现型代表外部表现。
适应度:判断解决方案的好坏,根据情况判断,不一定是越大越好。
选择:按照一定的概率在群体中根据适应度情况对个体进行选择。
交叉:将染色体同一位置两部分进行交叉组合。
变异:在复制过程中产生的差错导致产生新染色体、
编码:从染色体外部到内部的映射。
解码:染色体内部到外部的映射。
实现过程:
首先要进行编码(找到问题的潜在存在的解),在随机初始化一个种群,种群内部的每一个个体就是编码;对其进行解码,使用适应度函数进行计算,使用选择函数选择出比较好的(这样使优劣体现出来);随机使个体进行变异,繁衍后代;这样迭代下去,劣质的种群会消灭,留下来的只有优的种群。
网上最多的例子就是“袋鼠跳“的例子,通俗来讲就是,为了挑选出能调到最高的山上的袋鼠,第一步,随机的将这些袋鼠分布在山上,有的可能在山下有的可能在山腰上,总之山的高度是一层比一层高,生存机制是只有不断往上才能活下来,那么随着时间的推移在山下的袋鼠会不断死亡越高的袋鼠越能活下来,而且袋鼠之间也会交配,之前山下的袋鼠可能跑到山上的袋鼠进行结合变异等一系列操作生出新的品种的袋鼠,那么这个袋鼠就有可能跳的比其上一辈还要高,那上一辈就会被淘汰,子辈就可以活下来,那么反复迭代之后,最后在最高处的袋鼠,就是我们要求的最优解,而比这个山峰矮的袋鼠,虽然也是山峰但是其实是局部最优解就会将其淘汰。其实遗传算法就是这么一个过程,只不过被抽象化而已。
具体的过程和代码的编写分析我会在后续进行一个深入的剖析和记录!