为游戏'Proximity'找到最佳/足够好的策略和AI?

时间:2010-05-06 01:07:21

标签: artificial-intelligence game-theory

' 邻近 '是一种类似于奥赛罗,围棋和风险的领土统治战略游戏。 两名玩家使用10x12六角网格。由 Brian Cable 于2007年发明的游戏。

似乎是讨论a)最佳算法然后b)如何构建AI的有价值的游戏 由于随机因素和疯狂的分支因子(20 ^ 120),策略将成为概率或基于启发式的。 所以客观地比较会很难。 每回合最多5秒的计算时间限制似乎是合理的=>这排除了所有蛮力尝试。(在专家级别上玩游戏的AI以获得感觉 - 它基于一些简单的启发式做得非常好)

游戏: Flash version hereiPhone version iProximity here以及网上其他地方的许多副本 规则:here

对象:在放置所有瓷砖后控制最多的军队。你从一个空的六边形开始。每回合你都会收到一个随机编号的瓷砖(价值在1到20个军队之间),以便放置在任何空置的板空间。如果此图块与任何ALLY图块相邻,则会增强每个图块的防御+1(最大值为20)。如果它与任何ENEMY瓦片相邻,如果它的数量高于敌方瓦片上的数量,它将控制它们。

对战略的思考:以下是一些初步想法;将计算机AI设置为Expert可能会教很多东西:

  1. 最小化你的周长似乎是一个很好的策略,以防止翻转和最小化最坏情况损坏
  2. 就像在Go中一样,在你的阵型中留下洞是致命的,只有十六进制网格才会这样,因为你可以在一次移动中失去最多6个方格的军队
  3. 低编号瓷砖是一种负担,因此请将它们远离主要区域,靠近板边缘并分散。你也可以使用低编号的瓷砖在你的阵型中堵塞洞穴,或者在对手不会打扰攻击的周界上获得小的增益。
  4. 三个三角形的形状很强,因为它们相互增强,并且还减小了周长
  5. 每个图块最多可翻转6次,即当其相邻图块被占用时。地层的控制可以来回流动。有时候你会丢失一部分地层并插上任何一个洞以使该板的那部分“死”并锁定在你的领土内/防止进一步的损失。
  6. 低编号的瓷砖是明显但低价值的负债,但是如果它们被翻转(那就更难),高编号的瓷砖可能是更大的负债。一个拥有20军瓦的幸运游戏可以导致200的挥动(从+100到-100军队)。因此,平铺位置将具有攻击和防御性考虑。
  7. 注释1,2,4似乎类似于极小极大战略,其中我们最小化最大预期可能的损失(通过一些概率考虑对手可以从1 ... 20得到的值来修改,即只能翻转的结构通过ß= 20瓷砖“几乎坚不可摧”。) 我不清楚评论3,5,6对最佳策略的影响。 对Go,Chess或Othello玩家的评论感兴趣。

    (续集ProximityHD for XBox Live, allows 4-player -cooperative or -competitive local multiplayer增加了分支因子,因为在任何给定时间你手中都有5个牌,其中你只能玩一个。盟友牌的加强量增加到每个盟友+2。)

2 个答案:

答案 0 :(得分:3)

这是A GAMES小组的前成员。

分支因素是疯狂的。比Go更糟糕。

基本上,你已经吵了。

这个游戏的问题在于,由于选择了随机区块,它不具有确定性。这实际上在树中的每个现有节点层之间添加了另一层节点。您将对我的publications on *-Minimax感兴趣,以了解在随机域中搜索的技术。

为了在本世纪末之前完成单层搜索,您将需要一些非常积极的前向修剪技术。尽可能地推出最好的窗户,并集中精力建立良好的移动顺序。

答案 1 :(得分:2)

对于一般算法,我建议您查看艾伯塔大学AI Games小组完成的研究:http://games.cs.ualberta.ca许多算法可以保证找到最佳策略。但是,我怀疑你是否真的有兴趣找到最佳目标,除非你想在韩国出售该游戏,否则“足够好”:D

根据你的描述,我已经将游戏理解为具有完全可观察性的双人游戏,即没有隐藏的单位和完全确定性,即玩家的行动结果不需要滚动,那么你应该看看真实的由U Alberta家伙提出的时间限制搜索极小极大衍生物。但是,能够对值函数的备份深度进行绑定也许是为游戏添加“难度级别”的好方法。在对搜索空间进行抽样以改进价值​​函数估计时,他们一直在做一些工作 - 有点可疑。

关于您描述的“战略”部分:在我提到的框架中,您必须将该知识编码为评估函数。看看MichaelBüro和其他人的工作 - 也在U Alberta小组中 - 作为这种知识工程的例子。

另一种可能性是将问题视为强化学习问题,其中敌人的行动被编译为“后遗症”。看看Barto& Sutton书:http://webdocs.cs.ualberta.ca/~sutton/book/the-book.html然而,由于这样的编译导致的RL问题的值函数可能有点难以最佳地解决 - 状态的数量将像H-Bomb一样爆炸。但是,如果您看到如何使用因式表示,事情就会容易得多。而你的“策略”也许可以被编码为一些整形功能,这将大大加快学习过程。

编辑:该死的英语介词