跳转到内容

染色体 (遗传演算法)

维基百科,自由的百科全书

遗传演算法里面,一个染色体(chromosome,有时候也叫做基因,genome)是一些引数构成的集合,用来定义遗传演算法尝试解决问题的各种答案可能。 染色体常常使用一个简单的字串来表示,不过有很多种其他的资料结构也可以使用。

染色体设计

[编辑]

染色体的设计跟引数使用是根据被解决问题的特殊需求来设定的。一个简单的范例是,我们假设一个问题是要找出一个整数,介于0和255之间,且能给出这个函数的极大值。(一般这个问题不会使用遗传演算法,因为直接计算可以很快的找到解答。不过我们这里只是作个简单的范例。)我们所有可能的解答是0到255的整数,而这一些可能都可以用一个8位元的二进位字串来表示。 因此,我们就可以选用8位元的二进位字串来作为我们的染色体。这样的话,如果在我们族群(population)里面其中一个染色体代表的答案是155这个整数,那染色体本身可能就是10011011这个字串。

更实际一点的问题是我们可能想要解决一个旅行推销员问题。对这个问题,我们的目的是要找出一个距离最短,让我们的推销员可以拜访完所有城市的顺序。假设我们现在有六座城市,分别是 A、B、C、D、E、和F。那么一个照顺序列出拜访城市的字串可能就是一个不错的染色体设计。这样设计的话,像是DFABEC就是我们可能在族群内遇到的其中一个染色体。

会在遗传演算法里面使用到的突变运算元(mutation operator)和交配运算元(crossover operator)对整个族群的影响也必须要在设计染色体的时候给予考量。

参考资料

[编辑]