对于信息不完整的游戏,特别是像 Bridge 和 Doppelkopf 这样的技巧游戏,是否有通用策略?
我对为此类游戏实施 AI 策略的方法很感兴趣。
赏金是针对特定策略的最佳描述的答案。
对于信息不完整的游戏,特别是像 Bridge 和 Doppelkopf 这样的技巧游戏,是否有通用策略?
我对为此类游戏实施 AI 策略的方法很感兴趣。
赏金是针对特定策略的最佳描述的答案。
我想为纸牌游戏 Doppelkopf 提供一些具体信息,作者示例性地询问了这些信息。2012 年,Sievers 撰写了一篇硕士论文,他在 Doppelkopf 博弈中采用了UCT算法。
UCT通常假设一个完美的信息博弈,因此他首先解决“卡片分配”问题,即根据一些已知的卡片来猜测每个玩家的卡片分配。
解决了这个问题后,他尝试了两种方法来执行算法,并解决了卡片分配问题:
1) 猜测每个 UCT-tree 的卡片分配并查看多棵树的平均值。他将这种策略集合称为 UCT。
2) 取一棵 uct 树,并为每次推出一个新任务猜测。在 UCT 的选择阶段,您只需忽略所有不一致的孩子。他将此策略称为单一UCT。
我的感觉是 2) 使 AI 变得更强大,但它似乎更弱,他在2015 年的后续会议论文中更清楚地指出了这一点。
受到 AlphaGo 成功的启发,我和一个朋友开始了他的学士论文项目,他使用基于字符的 LSTM 制作了一个策略神经网络来指导 UCT 算法的选择过程。他的学士论文只涵盖了 ensemble-UCT 的一些测试结果,但我已经对单个 UCT 播放器进行了测试,它使 AI 变得更强大。我想这是因为单个 UCT 播放器从更有效地减少搜索空间中受益更多。
所以这个答案或多或少与@charley 给出的相同,但更具体一些。
我认为 Expectimax 通常用于这些类型的问题。该策略是最小化对手得分的最坏情况期望值。
您拥有“不完整信息”的问题往往可以通过“专家系统”或过滤机制得到很好的解决。请记住,“博弈论”仅涉及“优化结果”(以牺牲其他一切为代价优化某事),因此即使是专家系统之类的方法也可以编入实际的用户交互游戏中。
“不完整信息”的“专家系统”示例是: 我需要一辆新车。 宇宙从所有“已知”汽车开始,或者可能是一组动态(可能是随机)生成的“可能”汽车(例如,不同的功能/型号、不同的制造商、不同的能力等)。然后,系统可以问我问题, 像:
问:什么最重要?
重要的是“我不知道”——它必须是每个问题的选项,因为答案将导致“过滤”操作(例如,从可用汽车中删除可能的汽车)或“排名”操作(例如,将一些排序为“首选”而不是其他)。
因为它特别适用于游戏引擎,所以你会建立一个“可能性的宇宙”,比如你可以走下去的走廊、板上的瓷砖、每一个可能的方向、每一个可以使用的“武器”、每一个可能的“敌人”个人”或“敌人团体”等。
然后,根据游戏动态,您的工作只是:
这种类型的 AI 运行良好的原因与“模糊数学”领域(一个很好的 Google 搜索本身)有关,您可以在其中智能地应用您拥有的不完整信息,而无需考虑(或污染您的系统)您的信息没有,加上不“信任”任何信息的原子单元(因为过滤和排序往往会随着时间的推移“平均掉”错误)。
如果您在过滤和排序上加上“时间系数”,(旧问题的答案越来越被认为是“可疑的”,而被“过滤掉”或“排序到底部”的旧项目正在增加概率回归游戏),那么您可以获得一个非常有趣、动态和无限运行的游戏。
而且,那个“动态”和“无限运行”的游戏是在你添加一些游戏所具有的随机组件之前。像 Minefield 和 Battleship 和 Stratego 这样的游戏在游戏运行过程中大多不会改变,所以你的“本地化和时间衰减答案”对于(非常)长时间运行的游戏来说可能就足够了。但是,如果您随机生成新的敌人,或者您的敌人四处移动,或者“棋盘设置”中存在其他一些随机组件(例如海潮,某些路径仅有时可用),那么这会增加一个全新的复杂程度.
遮蔽路径的海潮可能是伪常规或伪随机时间表。但是,“专家系统”或“过滤”概念表明您有一组(可能是无限的)“事件”(其中“海洋潮汐”是一个“事件”),并且您同样应用过滤和排序选择 RIGHT NOW 事件(在您使用过滤和排序来决定应该发生“事件”之后,而不是所有其他非事件选项)。
我不知道任何一般策略,但我已经实现了一个带有隐藏动作和体面 AI 的游戏。
人工智能试图通过查看所有可能的攻击目标并弄清楚这些动作似乎集中在哪个目标上来弄清楚人类在做什么。如果可能的话,人工智能会尝试增援,如果无法坚持下去,人工智能会尝试撤离。
虽然有时可以通过同时攻击两个目标来诱骗它,但这通常意味着攻击较弱,除非您已经获胜,否则效果不佳。
我给的大多数人都无法以平价击败它,这已经足够艰难了。