遗传算法及其matlab实现
遗传算法,模拟达尔文的自然选择和遗传学的机理的生物进化的计算模型。其实,遗传算法用到生物学的知识不多,一些中学的生物知识就足以应付。 其实,接触遗传算法是有一种熟悉的感觉。因为假期涉猎了机器学习,其中接触的第一个相关的算法就是梯度下降算法。(有关这个算法,以后再记录),这个算法的作用就是通过求偏导,使梯度不断下降,最终达到了一个局部的最优解。但是问题来了,在很多工业生产实践中,通常是不可微,不连续的,此时这些算法如梯度下降、牛顿法就有些力不从心了。进而一些智能算法就出现了,其中就有遗传算法,这些算法能够经过多次的迭代、概率的变化从而逐渐逼近 全局最优解 。 遗传算法依循“适者生存,优胜劣汰”的原则,通过模拟生物在自然选择中的进化过程,依靠选择,交叉,变异等机制对染色体 进行组合,实现染色体的不断更新,其中每条染色体对应一个解,每次迭代筛选群体中满足适应度的后代。 一、我们要进行编码,编码通常有两种。 1,实数编码:直观,无需解码,但是容易收敛,从而过早陷入局部最优解。简单理解来说,就是两个解之间的尺度太大了。 2,二进制编码:稳定性高,种群多样性大,不直观。 而我们在问题求解时倾向于用二进制编码的。二进制编码更有利于遗传算法的理解。 举一例子,如果x的定义范围是[0,4],则我们常规的编码成二进制是[0000,0100],那么解的可取范围就是,0000,0001,0010,0011