C# 遗传算法中的锦标赛评价

C# 遗传算法中的锦标赛评价,c#,genetic-algorithm,geneticsharp,C#,Genetic Algorithm,Geneticsharp,现在,每个遗传C#库(A.Forge,genetic Algorithm Framework,GeneticSharp)似乎只评估单个染色体,然后使用各种选择方法中的一种来创建新一代 因为我的问题涉及到两个人工智能之间的对抗,所以单独评估他们的健康状况有点困难。虽然游戏很简单,可以制造一些表面上的障碍(人工智能不直接交互,但障碍会发送给游戏中的其他人),让我获得一些抽象的适应度,但这不是“真正的”交易 这些库似乎也没有提供另一个接口,我可以实现这样的评估方法。是否有其他框架允许这一点,或者我需要

现在,每个遗传C#库(A.Forge,genetic Algorithm Framework,GeneticSharp)似乎只评估单个
染色体
,然后使用各种选择方法中的一种来创建新一代

因为我的问题涉及到两个人工智能之间的对抗,所以单独评估他们的健康状况有点困难。虽然游戏很简单,可以制造一些表面上的障碍(人工智能不直接交互,但障碍会发送给游戏中的其他人),让我获得一些抽象的适应度,但这不是“真正的”交易


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

每个遗传算法库都应该有一些方法来定义适应度函数,这才是您真正想要的。NET公开了该接口。GeneticSharp公开了界面。是的,你必须自己编写适应度函数——这是你的问题领域特有的部分。你可以让它变得简单或复杂

在每个染色体通过适应度函数并分配一个分数后,系统使用您喜欢的任何选择标准(锦标赛、轮盘赌等)来选择哪些染色体通过交叉和/或变异进入下一代

因此,与其说流程是这样的:

  • 当代染色体配对
  • 每对染色体起一个循环
  • 赢家创造下一代
  • 遗传算法的工作原理如下:

  • 每一条染色体进行一轮并得到一个分数
  • 选择算法使用该分数来选择总的赢家
  • 赢家创造下一代
  • 本质上,每一条染色体都已经在与其他染色体竞争,只是比你我玩游戏更抽象的一步而已

    您可能会操纵适应度函数,将当前人口中的随机其他成员作为对手拉进来。最好是使用上一代最好的染色体作为整个当代的对手


    为你的染色体分配点数,以便在游戏中取得进一步进展,并为对手制造障碍奖励点数(如果这是游戏中与正常游戏不同的独特动作)。返回染色体的最终分数作为适应度函数输出。

    对于C#中的GA,我通常自己写。在任何情况下,适合度评估都是最难编写的部分。与其从头开始,为什么不放弃这些项目中的一个,帮助他们实现您需要的功能。您能展示一下您使用GeneticSharp迄今为止尝试过的代码吗?