5

我正在尝试开始使用 Jenetics JAVA 库进行遗传算法,但从我的 GA 有限背景中有些东西我不明白;

据我了解,GA 会生成一组m元素数组,其中每个数组都是要评估的潜在解决方案,一旦评估,就会对潜在解决方案进行排序,并选择最好的解决方案来创建新的群体,等等。但我发现一个Jenetics 中的解决方案(基因型)是一个数组列表,其中每个数组都是我理解的潜在解决方案,每个数组也可以有不同的长度,我不明白为什么要使用这种结构而不是基因向量。

参见手册第六页,第 3.1.3 节。

如果可能的话,我想知道这是为什么。我希望这个问题已经足够清楚了。

4

2 回答 2

2

潜在解决方案(表型/基因型)的“阵列”收集在种群中。基因型代表了一种可能的解决方案。不要被基因型的二维结构所迷惑,它应该为您建模更复杂的问题提供额外的灵活性。基因型仍然代表一种可能的解决方案和群体中的一个个体。

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

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

还可以查看手册中的域模型,图 3.1 。第 6.1 节试图给你额外的编码示例。

算法,

于 2015-06-21T12:13:10.193 回答
1

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

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

基因库重组作用于整个种群而不是单个单位并进化种群。它可能会或可能不会保持相同的结构。

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

  • 在自然界中,首先有更简单的有机体,然后它们进化成更复杂的有机体。

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

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

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

考虑以下示例:

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

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

要使 GA 从 15 更改为 16,所有 5 位都应更改。因此,GA 存在邻域离散数的问题。改善这一点的一种方法是使用格雷码,它可以让您在所有解决方案之间的距离为 1。

于 2015-06-20T10:33:54.027 回答