首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对于零和游戏的AI来说,什么是好的健身功能?

对于零和游戏的AI来说,什么是好的健身功能?
EN

Stack Overflow用户
提问于 2017-10-22 07:18:51
回答 1查看 269关注 0票数 4

我正在为一个零和4人棋盘游戏制作一个人工智能。这实际上不是零和(这4名玩家将“死亡”当他们失去他们的全部生命,所以会有一个球员谁死了第一,第二,第三和一个球员谁幸存下来。然而,我告诉AI,只有生存算作一场胜利,其他任何事情都是一场失败),经过一些研究后,我想我会使用一个极小极大算法结合一个启发式函数。我偶然发现了这个问题,并决定和这个问题的操作一样--编写一个给我最佳权重的进化算法。

然而,我的启发函数与这个问题的运算函数不同。我的重9重,速度慢得多,所以我不能让代理商玩1000场比赛(时间太长了),也不能用交叉的方法培育他们(我怎么做9重的交叉?)

所以我决定想出自己的方法来决定自己的健康和繁殖。这个问题只是关于健身功能。

这是我的尝试。

首次尝试

对于随机生成的50个代理中的每个代理A,从种群中再选择3个代理(与A本身替换,但不是同一个代理),并让4个代理玩一个游戏,其中A是第一个玩家。选择另一个3并玩一个游戏,其中A是第二个玩家,依此类推。对于这4场比赛中的每一场,如果A先死了,它的体能不会改变。如果A第二次死亡,那么它的健身能力就会增加1,如果它第三次死亡,那么它的健身能力就会增加2,如果它存活了,那么它的健身能力就会增加3,因此,我得出的结论是,一个人能得到的最高健身值是12 (生存/胜利所有4场比赛-> 3+3+3+ 3)。

我运行了7代,从第一代开始,最高的健康水平高达10。我计算了前10名经纪人的平均健康状况,但7代人的平均健康水平没有增加。它甚至减少了一点。

我认为这不起作用的原因是因为一定有一些代理人运气好,有些表现不佳的代理人作为对手。

第二次尝试

游戏设置和我的第一次尝试是一样的,但是我没有测量每一场比赛的结果,而是决定测量那个特工在死前做了多少动作。

7代后,前十名的平均体能确实增加了,但仍然没有我想的那么多。

我认为这个失败的原因是游戏是有限的,所以在你死前你可以做的动作是有限的,表现最好的经纪人几乎都达到了这个极限。没有增长的余地。另一个原因是幸存的球员和第三位死亡的球员的体能差别很小。

我想要的

根据我对EAs的理解(如果我错了,请纠正我),平均体能应该增加,表现最好的个体的体能不应该随着时间的推移而下降。

我的两次尝试都失败了。由于对手是随机选择的,第1代中表现最好的代理人可能会在下一代得到更强的对手,从而使其适应度降低。

备注

在我的尝试中,代理商每代玩200场游戏,每代需要3个小时,所以我不想让他们玩太多的游戏。

我怎么能写这样的健身功能呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-26 22:50:37

七代人似乎不足以获得有用的结果。尤其是对于一款游戏,我希望像200+这样的一代更现实一些。你可以做很多事情:

  • 实施精英主义,以确保最佳个人的生存。
  • 进化的力量来源于重复的变异和交叉,所以我建议每代人只玩几个游戏(比如说,5~ 10),至少在开始的时候,然后进化种群。你甚至可能想每代只玩一场游戏。
  • 在这方面,您可以采用持续发展的策略。这意味着,一旦代理人死亡,他们就会受到突变,一旦代理人获胜,他们就能生育后代。或者两者的任何组合。关键是比赛还在进行,每个人都可以和其他人比赛。这有点“有机”,因为它没有严格定义的代,但是它应该加快进程(特别是如果您可以并行化评估)。

我希望这能帮上忙。你所引用的帖子中被接受的答案对你实现交叉的方式有很好的建议。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46871501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档