Sve*_*ven 11 c# genetic-algorithm geneticsharp
现在,每个遗传C#库(A.Forge,遗传算法框架,GeneticSharp)似乎只评估单个Chromosome,然后使用各种选择方法之一来创建新一代.
由于我的问题涉及两个人工智能相互对抗,所以单独评估他们的健康状况有点困难.虽然游戏很简单,可以创造一些表面障碍(人工智能不会直接互动,但障碍会发送到彼此的游戏中),这样可以让我获得一些抽象的健身,但这不是"真正的"交易.
这些库似乎也没有提供另一个我可以实现这种评估方法的接口.是否有其他框架允许这样或者我需要从头开始?
每个遗传算法库都应该有一些方法来定义一个适应度函数,这正是你所寻找的.AForge.NET公开了IFitnessFunction接口.GeneticSharp公开了IFitness接口.是的,您必须自己编写健身功能 - 这是您的问题区域独有的部分.您可以根据需要将其设置为简单或复杂.
在每条染色体经过适应度函数并分配得分后,系统会使用您喜欢的任何选择标准(锦标赛,轮盘赌等)来挑选哪些染色体通过交叉和/或突变进入下一代.
所以不是像这样流程:
遗传算法的工作方式如下:
从本质上讲,每条染色体已经与其他染色体竞争,只比你更抽象一步,我会玩游戏.
您可能可能会使用适应度函数来将当前群体中随机的其他成员作为对手.更好的方法是使用上一代最好的染色体作为整个当代的对手.
为你的染色体分配点以进一步在游戏中前进,并为对手产生障碍奖励积分(如果这是与游戏中正常游戏玩法分开的独特动作).将染色体的最终得分作为适应度函数输出返回.
| 归档时间: |
|
| 查看次数: |
1073 次 |
| 最近记录: |