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