首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遗传算法中的竞赛评价

遗传算法中的竞赛评价
EN

Stack Overflow用户
提问于 2015-08-17 12:19:00
回答 1查看 1.3K关注 0票数 11

现在,每个遗传C#库(A.Forge、遗传算法框架、GeneticSharp)似乎只对单个Chromosome进行评估,然后使用各种选择方法中的一种来创建新一代。

因为我的问题涉及到两个认可机构之间的竞争,所以很难单独评估他们的健康状况。虽然游戏很简单,足以造成一些肤浅的障碍( AI不直接交互,但障碍是互相发送的游戏),这将允许我得到一些抽象的健身,但这将不是“真正的”交易。

库似乎也没有提供另一个接口,我可以实现这样的评估方法。是否还有其他允许这样做的框架,还是我需要从头开始?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-22 17:33:41

每个遗传算法库都应该有一些方法来定义一个适应度函数,这正是你想要的。AForge.NET公开IFitnessFunction接口。GeneticSharp公开IFitness接口。是的,你必须自己编写健身功能--这是问题区域特有的部分。你可以让它变得简单或复杂。

在每个染色体经过适合度函数并被分配一个分数后,系统使用你喜欢的任何选择标准(锦标赛、轮盘赌轮等等)。选择哪些染色体通过交叉和/或突变传给下一代。

因此,与其像这样流动的过程:

  1. 当前世代染色体的匹配
  2. 每对染色体都有一个圆圈。
  3. 胜利者创造下一代

遗传算法是这样工作的:

  1. 每个染色体打一轮,得到一个分数。
  2. 选择算法使用这个分数来挑选整体获奖者。
  3. 胜利者创造下一代

从本质上讲,每条染色体都在和其他染色体竞争,比你我玩游戏要抽象一步。

你很可能会操纵健身功能来随机吸引其他成员作为对手。更好的做法是使用上一代最好的染色体作为整个世代的对手。

在游戏中给你的染色体分配点数,为对手制造障碍(如果这是一个独立于游戏中正常游戏的不同动作)。返回染色体的最终分数作为适应度函数输出。

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

https://stackoverflow.com/questions/32050232

复制
相关文章

相似问题

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