我目前工作的一个人工智能的纸牌游戏Wizard。 精灵是一款诡计多端的游戏,每位玩家在实际比赛开始前都会陈述他相信他会采取多少技巧。AI设计纸牌游戏
在阅读了一些论文和Artificial Intelligence: A Modern Approach的一些部分后,我决定首先用开放卡设计我的游戏算法,以便每个玩家都有完整的信息。 所以我刚刚开始并使用UCB选择策略实施了蒙特卡洛树搜索算法。我用java实现了所有的东西,它似乎运行的很好,但我的机器人还没有达到最佳状态。特别是预测你得到的技巧似乎是一项艰巨的任务,为此我使用了相同的MCTS。因此,基本上我的算法扩展了游戏的当前状态(例如,2个玩家放置了他们的出价),创建了一个新节点(例如3个玩家放置了他们的出价),然后随机播放,直到游戏结束。然后通过节点评估和备份分数。
我认为提高算法是,下一步启发式添加到树搜索,所以,这将很可能导致损失从一开始就被忽略分支。
我的问题是:你认为这是一个好办法?还有哪些其他方法会有希望,或者您还有其他方法吗?
我知道这个游戏是“拧你的邻居”。我相信只要考虑有多少卡比你的卡高,你就可以拿出相当不错的玩法。假设一张牌是一张牌:如果你拥有王牌王牌,那么你的一次擒杀的可能性是100%,而如果你有任何非王牌王牌,你可以认为这是25%(或者如果你是50%预计领先,但要知道你可能会开始使用树搜索......还可以让你更准确地计算出百分比,通过知道当你打算玩特定卡牌时卡牌剩下的概率)。 – erisco
如果您只想对算法提供反馈,而不是实际的编码/实现,您可能在计算机科学StackExchange站点获得更好的运气。 –
我一直希望调查MCTS玩卡片游戏,因为它看起来非常合身。有趣的是,你没有看到很好的结果。你的想法在卡牌游戏中加入一些启发式似乎仍然符合MCTS的精神,并且人们会认为这会有所帮助。 –