c# – 遗传算法中的比赛评估

前端之家收集整理的这篇文章主要介绍了c# – 遗传算法中的比赛评估前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
现在,每个遗传C#库(A.Forge,Genetic Algorithm Framework,GeneticSharp)似乎只评估一个染色体,然后使用各种选择方法之一来创建新一代.

由于我的问题涉及到两个认知相互作用,所以单独评估自己的健身状况有点困难.虽然游戏很简单,可以创建一些表面的障碍(AI不直接交互,但障碍被发送给每个其他游戏),这将允许我获得一些抽象的健身,但这不会是“真正的”交易.

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

解决方法

每个遗传算法库应该有一些方法来定义一个适合度函数,这是真正的你正在寻找的. AForge.NET公开了 IFitnessFunction界面. GeneticSharp公开了 IFitness界面.是的,您必须自己编写健身功能 – 这是您的问题区域唯一的部分.你可以使它像你想要的那样简单或复杂.

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

所以而不是像这样流程:

>匹配当代染色体
每条染色体对都发生一轮
获奖者创造下一代

遗传算法的工作原理如下:

每个染色体都发生一轮并得分
>选择算法使用该分数来挑选总体获胜者
获奖者创造下一代

实质上,每个染色体已经与其他染色体竞争,只比您更抽象一步,我会玩一个游戏.

您可能会采用健身功能,将当前人口中随机的其他成员作为对手.更好的是使用上一代最好的染色体作为整个当代的对手.

分配点到您的染色体进一步进行游戏和奖励积分为对手产生障碍(如果这是独特的动作,与游戏中的正常游戏分开).返回染色体的最终得分作为适应度函数输出.

猜你在找的C#相关文章