我正在学习我的学位论文,并且我试图创建一个GA来以程序的方式为游戏创建关卡。
即使GA不是最好的技术,也是可能的。
无论如何,由于我从未和他们合作过,所以我正在阅读有关GA概论的书籍。
问题是,有必要将染色体表示为位或它们可以是任何类型的数据结构吗?我问它是因为在我看来,使用树以程序方式创建关卡并使用GA来评估它们看起来很好,但是当我读到GA时,他们在大多数示例中使用了比特。
答案 0 :(得分:1)
如果您能够解决并捍卫您定义的交叉操作,您的提案可能是可行的。此外,除非您在遗传物质中引入不对称性,否则树木应该是平衡的,此时线性编码可以携带相同的有效信息。我会坚持使用比特或字符串,除非有充分的理由不这样做,因为这样的表示是文献和现有图书馆的标准。
答案 1 :(得分:1)
绝对!只要您提供合适的适应性,变异和(可能)交叉操作符,您就可以使用任何所需的数据结构。
答案 2 :(得分:1)
绝对!如果您希望遗传算法使用比字符串或固定大小数组更复杂的个体表示,则称为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