Artificial intelligence 一款纸牌游戏的人工智能设计

Artificial intelligence 一款纸牌游戏的人工智能设计,artificial-intelligence,Artificial Intelligence,我目前正在为纸牌游戏开发人工智能。 巫师是一种耍花招的游戏,在实际游戏开始之前,每个玩家都要说明他相信自己会耍多少花招 在阅读了一些论文和书中的一些部分之后,我决定首先设计我的算法,用于开放式纸牌游戏,这样每个玩家都有完整的信息。 所以我刚刚开始并实现了一个蒙特卡罗树搜索算法,使用UCB选择策略。我已经用java实现了所有东西,它看起来运行得很好,但我的机器人还没有达到最佳状态。特别是预测你得到的技巧似乎是一项艰巨的任务,为此我使用了与游戏相同的MCT 因此,基本上我的算法扩展了游戏的当前状态,

我目前正在为纸牌游戏开发人工智能。 巫师是一种耍花招的游戏,在实际游戏开始之前,每个玩家都要说明他相信自己会耍多少花招

在阅读了一些论文和书中的一些部分之后,我决定首先设计我的算法,用于开放式纸牌游戏,这样每个玩家都有完整的信息。 所以我刚刚开始并实现了一个蒙特卡罗树搜索算法,使用UCB选择策略。我已经用java实现了所有东西,它看起来运行得很好,但我的机器人还没有达到最佳状态。特别是预测你得到的技巧似乎是一项艰巨的任务,为此我使用了与游戏相同的MCT

因此,基本上我的算法扩展了游戏的当前状态,例如,2名玩家已出价创建一个新节点,例如,3名玩家已出价,然后随机玩到游戏结束。然后通过节点评估和备份分数

我认为改进算法的下一步将是,在树搜索中添加一些启发式,以便从一开始就忽略最有可能导致丢失的分支


我的问题是:你认为这是一个好方法吗?还有什么其他方法是有希望的,或者你有其他的技巧吗?

我不知道这个游戏,但我可以给你一些一般性的建议。蒙特卡罗方法是一个很好的解决方案,如果

搜索空间非常大,即棋盘游戏 你不知道如何建立一个强大的启发式 在这些条件下,MCTS是您所能做的最好的

但是,如果你能够构建一个强大的启发式函数,你就必须直接使用Min-Max/Alpha-Beta修剪算法或类似的算法。一般来说,通过这些算法,您可以获得更强的AIs

这是因为围棋我们使用MCT,但国际象棋我们仍然使用Min-Max

但该算法只占人工智能的10%。游戏AI编程中最困难和最美丽的部分是利用游戏机制来修剪搜索空间并构建最强的启发式:


例如,你可以从一个著名的纸牌游戏:扑克开始理解AIhttp://webdocs.cs.ualberta.ca/~games/poker/。然后你可以将这些技巧扩展到你的游戏中。

我知道这个游戏就像你的邻居。我相信只要考虑有多少张牌比你的牌高,你就可以打出相当好的牌。假设一张牌游戏:如果你有王牌的王牌,你的一个诡计的可能性是100%,而如果你有任何王牌的王牌,你可以认为如果是25%或50%,如果你预期领先,但要知道你可能开始使用树搜索。也可以让你更准确地计算出百分比,当你打算玩一张特定的牌时,你可以知道牌中剩余的牌的概率。在计算机科学StackExchange网站,你可能会有更好的运气,如果你只是想得到关于你的算法的反馈,而不是关于它的实际编码/实现。我一直希望调查纸牌游戏的MCT,因为它看起来非常适合。有趣的是,你没有看到很好的结果。你在纸牌游戏中加入一些启发的想法似乎仍然符合MCT的精神,人们会认为这会有所帮助。但是你如何处理不完美的信息呢?可能的交易空间是巨大的,我不再确定,如果我首先尝试用完美的信息来处理问题,然后再加上蒙特卡罗抽样,是否会得到好的结果。我的第一个计划是使用蒙特卡罗抽样生成可能的交易,并使用MCT解决每笔交易。然后,可以通过对所有样本进行平均来计算最佳移动。但我不认为,这会在合理的时间内产生好的结果。好吧,也许你不必检查每一个可能的交易。例如,在扑克AI中,由于博弈论和其他统计方法,我们能够避免检查每一笔可能的交易。这些优化严格依赖于游戏。