遗传算法 - 染色体可以是树吗?

Genetic Algorithms - Can chromosomes be trees?

我正在写学位论文,我正在尝试创建一个 GA 以程序化的方式为游戏创建关卡。

即使 GA 不是最好的技术,也是可能的。

无论如何,因为我从未与他们合作过,所以我正在阅读一些关于 GA 介绍的书籍。

问题是,是否有必要将染色体表示为位,或者它们可以是任何类型的数据结构?我问这个问题是因为在我看来,使用树以程序方式创建关卡并使用 GA 对其进行评估看起来不错,但是当我阅读有关 GA 的内容时,他们在那里的大多数示例中都使用了位。

如果您能够解决和捍卫您定义为交叉操作的内容,您的提案可能是可行的。此外,除非您在遗传 material 中引入不对称性,否则树应该是平衡的,此时线性编码可以携带相同的有效信息。除非有充分的理由不这样做,否则我会坚持使用位或字符串,因为这样的表示是文献和现有库中的标准。

当然!只要您提供合适的适应度、变异和(可能)交叉运算符,您就可以使用任何您想要的数据结构。

当然!如果你想让你的遗传算法使用你的个体的更复杂的表示,而不是字符串或固定大小的数组,那么它被称为 Genetic Programming (GP)。

在GP中,个体通常表示为树:

甚至作为代码行: Code generation by genetic algorithms

有关详细信息,请参阅: What are the differences between genetic algorithms and genetic programming?

最重要的是,我强烈推荐这本书: 现场指南 遗传编程