首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在染色体上设置基因限制

在染色体上设置基因限制
EN

Stack Overflow用户
提问于 2015-04-11 15:03:57
回答 1查看 163关注 0票数 4

我目前正在试验的JGAP 3.6为一个简单的地牢游戏生成水平。这个问题涉及到使用染色体表示法,其中每个基因包含一个整数值,它表示房间的类型,例如0=起始室,1=怪物室,等等。

问题是,我想确保在一个水平上只有一个起始空间(在一个染色体中只有一个0的基因)。我读过javadocs,特别是染色体和基因类,但没有找到直接的方法来做到这一点。我也考虑过使用定制的基因,但这似乎是无用的,因为我认为这种“验证”需要由染色体类而不是基因类来完成。

我目前对这个问题的解决方案是在对不满足上述条件的染色体进行健康评估时给予很大的惩罚。有什么想法、解决方案、建议或评论吗?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-20 10:21:01

最简单的方法是限制Configuration设置中的基因值。

在第一个基因中只有一个起始室的basig示例可能是:

代码语言:javascript
复制
sampleGenes[0] = new IntegerGene(conf, 0, 0);  // Starting room
sampleGenes[1] = new IntegerGene(conf, 1, 5);  // Monster room 1
sampleGenes[2] = new IntegerGene(conf, 1, 5);  // Monster room 2
sampleGenes[3] = new IntegerGene(conf, 1, 5);  // Monster room 3

这确保了你只能得到一个值为0的基因,但也有它的局限性。你必须决定什么基因将是开始的空间,它不能被取消。

另一种方法是按你的建议去做。创建一个FitnessFunction,该Chromosomes的值大于等于零的一个基因对其进行惩罚。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29579340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档