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

c# – 遗传算法中的比赛评估,第1张

概述现在,每个遗传C#库(A.Forge,Genetic Algorithm Framework,GeneticSharp)似乎只评估一个染色体,然后使用各种选择方法之一来创建新一代. 由于我的问题涉及到两个认知相互作用,所以单独评估自己的健身状况有点困难.虽然游戏很简单,可以创建一些表面的障碍(AI不直接交互,但障碍被发送给每个其他游戏),这将允许我获得一些抽象的健身,但这不会是“真正的”交易. 图 现在,每个遗传C#库(A.Forge,genetic Algorithm Framework,geneticSharp)似乎只评估一个染色体,然后使用各种选择方法之一来创建新一代.

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

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

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

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

所以而不是像这样流程:

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

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

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

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

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

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

总结

以上是内存溢出为你收集整理的c# – 遗传算法中的比赛评估全部内容,希望文章能够帮你解决c# – 遗传算法中的比赛评估所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1260298.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存