我仍然在为不死者帖子破解我的旧红宝石(我知道,我知道,停止尝试将帖子从死去的查克手中夺回)。但是代码已经有点失控了,现在我正在研究一种遗传算法,以创造生死攸关的终极战斗,而适应性是战斗持续多长时间。
所以,我已经掌握了它的基础知识;如何调整游戏的属性以及如何获取解决方案的适应度,我想不通的是如何存储适应度,以便我知道以前尝试过组合的时候。
我无法找到太多的遗传密码来查看,更不用说我可以很好地阅读以判断发生了什么的代码。有谁知道这通常是如何完成的,或者只是一个可以帮助我指出正确方向的算法?
我仍然在为不死者帖子破解我的旧红宝石(我知道,我知道,停止尝试将帖子从死去的查克手中夺回)。但是代码已经有点失控了,现在我正在研究一种遗传算法,以创造生死攸关的终极战斗,而适应性是战斗持续多长时间。
所以,我已经掌握了它的基础知识;如何调整游戏的属性以及如何获取解决方案的适应度,我想不通的是如何存储适应度,以便我知道以前尝试过组合的时候。
我无法找到太多的遗传密码来查看,更不用说我可以很好地阅读以判断发生了什么的代码。有谁知道这通常是如何完成的,或者只是一个可以帮助我指出正确方向的算法?
我想不通的是如何存储健身,以便我知道我之前尝试过的组合。
通常在 GA 解决方案中,您不关心生成相同的“解决方案”,您关心的是当您的“分数”的提高率稳定时。
现在,如果您想记录/跟踪“解决方案”历史记录,很多人都想知道它何时重新出现,但我认为您的“游戏”有一些随机性,因此您希望对象重复运行。
在 GA 中,如果适应度测试需要很长时间,您不想重新评估解决方案。使用哈希表存储您的健康分数并将哈希键设为染色体。使用“兽人机动”;首先检查缓存,如果在那里检索它并继续,否则计算它并将其放入哈希中以备下次使用。
如果您想要一个完整的 GA 示例,您可以从英国谢菲尔德大学的进化计算团队获得免费的开源 Matlab GA 工具箱,可在此处获得:
http://www.sheffield.ac.uk/acse/research/ecrg/gat.html
即使您不想查看 matlab 代码,工具箱附带的手册也对 GA 的工作原理进行了很好且易于理解的描述,这可能会帮助您编写 Ruby 代码。