现在,每个遗传C#库(A.Forge、遗传算法框架、GeneticSharp)似乎只对单个Chromosome进行评估,然后使用各种选择方法中的一种来创建新一代。
因为我的问题涉及到两个认可机构之间的竞争,所以很难单独评估他们的健康状况。虽然游戏很简单,足以造成一些肤浅的障碍( AI不直接交互,但障碍是互相发送的游戏),这将允许我得到一些抽象的健身,但这将不是“真正的”交易。
库似乎也没有提供另一个接口,我可以实现这样的评估方法。是否还有其他允许这样做的框架,还是我需要从头开始?
发布于 2015-08-22 17:33:41
每个遗传算法库都应该有一些方法来定义一个适应度函数,这正是你想要的。AForge.NET公开IFitnessFunction接口。GeneticSharp公开IFitness接口。是的,你必须自己编写健身功能--这是问题区域特有的部分。你可以让它变得简单或复杂。
在每个染色体经过适合度函数并被分配一个分数后,系统使用你喜欢的任何选择标准(锦标赛、轮盘赌轮等等)。选择哪些染色体通过交叉和/或突变传给下一代。
因此,与其像这样流动的过程:
遗传算法是这样工作的:
从本质上讲,每条染色体都在和其他染色体竞争,比你我玩游戏要抽象一步。
你很可能会操纵健身功能来随机吸引其他成员作为对手。更好的做法是使用上一代最好的染色体作为整个世代的对手。
在游戏中给你的染色体分配点数,为对手制造障碍(如果这是一个独立于游戏中正常游戏的不同动作)。返回染色体的最终分数作为适应度函数输出。
https://stackoverflow.com/questions/32050232
复制相似问题