突变 (遗传算法)
在遗传算法里面,突变是用来维持算法里面,族群(population)里面每一个世代的染色体到下一个世代时,还能够维持遗传多样性的一个遗传算子(genetic operator)。这个算子设计上雷同于生物学方面的突变(这也就是这个命名的由来)。
有一种经典的突变算子范例,会牵涉到将染色体里面任意位元从原来的状态改掉的几率。常用来实做这种突变算子的方法是对染色体字串的每个位元分别产生一个随机变数。这个随机变数用来告诉我们这个特定的位元是否要被修改。这种突变的过程叫做单点突变(single point mutation),因为他的设计基于生物学上的点突变。其他的突变方式包含倒置(inversion)和浮点突变(floating point mutation)。 当基因的设计以排列问题的形式限制,那突变的方式就会变成交换,倒置或者打乱。
遗传算法里面突变的目的在于维持并且提升多样性。突变应该要能够借由避免让族群里的染色体过于相近,来防范算法掉入区域极值,因此减慢或者停止进化过程。相同的理由也可以用来解释为何大多数遗传算法的系统避免只使用最适合的染色体来产生下一代 ,而是在一些比较适合的里面随机(或者半随机)的选择出一些来产生下一代。
参见
- 遗传算法