如何制作一个可以测试我的tic tac toe AI是否完美的功能?

时间:2012-12-06 02:50:16

标签: c# optimization recursion artificial-intelligence greedy

鉴于每个董事会成员国,我的A.I.将返回1个准确移动的地方。

我还创建了一个函数,循环使用A.I。

进行所有可能的播放

所以它是一个递归函数,让A.I.为一个给定的棋盘移动,然后让另一个游戏进行所有可能的移动,并在每个可能的移动中使用新的棋盘自己调用递归函数。

我这样做的时候A.I先行,而另一个先行......然后将它们加在一起。我结束了418次可能的胜利和115次可能的关系,以及0次可能的失败。

但现在我的问题是,如何最大限度地赢得胜利?我需要将这个统计数据与某些东西进行比较,但我无法弄清楚要将它与之进行比较。

1 个答案:

答案 0 :(得分:0)

您可以将此视为具有未知最佳解决方案的优化问题。然后,您可以使用某种形式的meta-heuristic算法(例如genetic algorithmPSO)将变体应用于您的AI,直到找到最佳值。有趣的是,这些算法可能不一定会返回“最佳”,但它仍然有助于获得比以前更好的东西。

通常,元启发式算法需要适应度函数,它基本上比较解决方案以找到最佳解决方案。在您的情况下,您可以使用赢取比率作为适应度函数。已经达到了418/115比率,您可以将其作为“基线”,以便比较未来的解决方案。

不幸的是,我明白我提出的建议可能过于牵强(你可能会寻找更简单的东西),或者它可能过于笼统。

不幸的是,我不确定您可以使用任何统计数据来查看它是否完美。我很快就有一个想法就是假设: - 完美的比赛只会带来胜利或平局。

你的递归算法已经返回了这个。现在的问题是,是否有可能增加胜利数量?然后,您可以假设: - 如果两个玩家都玩得很完美,结果将永远是平局(猫的游戏)。

基于这个假设,再加上对先前假设的评估,这意味着如果你的AI(我们称之为Bob)是完美的,那么在鲍勃与鲍勃的比赛中,结果必须始终是平局。

我意识到这仍然无法帮助你增加获胜次数(如果可能的话),但它提供了另一个可以使用的指标 - 至少确保在Bob vs Bob游戏中,没有优势有赢家的情况(这意味着你的AI不完美)。