为什么每个解决方案(或基因型)有多个染色体?

时间:2015-06-20 10:16:38

标签: java genetic-algorithm

我正在尝试开始使用Jenetics JAVA库进行遗传算法,而且我从GA有限的背景中无法理解这些内容;

据我所知,GA生成一组m元素的数组,其中每个数组都是一个待评估的潜在解决方案,一旦评估,潜在的解决方案将被排序,并选择最佳解决方案来创建新的人口但是我发现Jenetics中的解决方案(基因型)是一个数组列表,其中每个数组都是我理解的潜在解决方案,每个数组也可以有不同的长度,我不明白为什么使用这个结构而不是基因载体。

the manual第6页,第3.1.3节。

如果可能,我想知道为什么会这样。我希望这个问题足够明确。

2 个答案:

答案 0 :(得分:2)

"数组"在群体中收集潜在溶液(Phenotpyes /基因型)。基因型代表一种可能的解决方案。不要被基因型的二维结构所困惑,它应该为您提供额外的灵活性来建模更复杂的问题。基因型仍然代表一种可能的解决方案和人口的一个个体。

可以轻松创建经典二进制GA的基因型:

Genotype<BitGene> gt = Genotpe.of(BitChromosome.of(15));

另请参阅manual中的域模型,图3.1。第6.1节试图为您提供其他编码示例。

答案 1 :(得分:1)

您所描述的是基本遗传算法中的人口。有许多技术可以改进它,其中之一就是自适应编码。

您正在寻找的术语是在自适应编码技术下的(修饰的)基因库重组。

基因库重组在整个人口中运作,而不是单个单位并且进化人口。它可能会也可能不会保持相同的结构。

从生物学角度看这个想法:

  • 在自然界中,首先是更简单的生物,然后它们演变成更复杂的生物。

相同的动机可以与遗传算法一起使用。在乞讨时,有更简单的单位可以随时间演变 - 换句话说,解决方案的长度和结构不必是恒定的。

没有简单的方法可以对GA的信息进行通用编码,因此您必须针对手头的每个问题考虑它。您可能需要也可能不需要基因库重组,基本二进制编码或基本比例选择。这些选项在很大程度上取决于您尝试解决的问题,以及算法所采用的解决方案/时间的精确度。

表示基因载体的基本二进制编码很简单,但GA在寻找最近邻居方面效率低下有缺点。

请考虑以下示例:

  • 有解决方案15和16(01111,10000)

  • 这两个数字之间的汉明距离为5

对于GA从15更改为16,应更改所有5位。因此,GA存在邻居离散数的问题。改善这种情况的一种方法是使用格雷码,让所有解决方案之间的距离为1。