2

我想使用遗传算法来求解一个由两个线性方程组成的简单系统,其中包含两个变量。这主要是为了帮助我更好地了解它们的工作原理。

一切似乎都很简单,但我不确定如何在染色体中为这个问题编码可能的解决方案。

我将有两个变量,我想在染色体中编码以表示解决方案。如果每个变量都可以表示一个 8 位数字,我会制作一个 16 位二进制编码的染色体(1 和 0 的字符串)。

我只是不太确定这将如何工作。如果选择两个父母进行育种,如何从二进制字符串中随机选择基因导致可能更好的解决方案?这就是为什么我认为二进制字符串不起作用的原因,所以任何答案都将不胜感激!

4

1 回答 1

6

为什么不将数字用作数字?您不必在 GA 中使用二进制编码。有突变和交叉算子对实值编码很有效。正如您所说,这是一个学习示例。我建议您尝试这两种方法,实值编码应该更快地收敛。

对于二进制编码,我会使用单点交叉和位翻转突变。对于实值编码,我会使用 Blend-Alpha-Beta Crossover (BLX-ab) 或 Simulated Binary Crossover (SBX) 和 Normal Distributed Mutation。您可以在HeuristicLab中的 SingleObjectiveTestFunctions 上尝试其中一些以及更多运算符。

于 2013-05-26T16:39:53.987 回答