【发布时间】:2017-10-30 07:11:06
【问题描述】:
我正在写我的学位论文,我正在尝试创建一个 GA,以便以程序方式为游戏创建关卡。
即使遗传算法不是最好的技术,也是可能的。
无论如何,由于我从未与他们合作过,所以我正在阅读一些关于 GA 介绍的书籍。
问题是,是否有必要将染色体表示为位,或者它们可以是任何类型的数据结构?我问这个问题是因为在我看来,使用树以程序方式创建关卡并使用 GA 评估它们看起来不错,但是当我读到 GA 时,它们在大多数示例中都使用了位。
【问题讨论】:
我正在写我的学位论文,我正在尝试创建一个 GA,以便以程序方式为游戏创建关卡。
即使遗传算法不是最好的技术,也是可能的。
无论如何,由于我从未与他们合作过,所以我正在阅读一些关于 GA 介绍的书籍。
问题是,是否有必要将染色体表示为位,或者它们可以是任何类型的数据结构?我问这个问题是因为在我看来,使用树以程序方式创建关卡并使用 GA 评估它们看起来不错,但是当我读到 GA 时,它们在大多数示例中都使用了位。
【问题讨论】:
绝对!如果您希望遗传算法使用更复杂的个体表示,而不是字符串或固定大小的数组,则称为Genetic Programming (GP)。
在 GP 中,个体通常表示为树:
或者甚至是代码行: Code generation by genetic algorithms
有关详细信息,请参阅: What are the differences between genetic algorithms and genetic programming?
最重要的是,我强烈推荐这本书: A Field Guide to Genetic Programming
【讨论】:
如果您能够解决和捍卫您定义为交叉操作的内容,那么您的提案可能是可行的。此外,除非您在遗传物质中引入不对称性,否则树应该是平衡的,此时线性编码可以携带相同的有效信息。我会坚持使用位或字符串,除非有很好的理由不这样做,因为这样的表示是文献和现有库中的标准。
【讨论】:
绝对!只要您提供合适的适应度、变异和(可能)交叉运算符,您就可以使用任何您想要的数据结构。
【讨论】: