【问题标题】:Find optimal/good-enough strategy and AI for the game 'Proximity'?为游戏“Proximity”找到最佳/足够好的策略和 AI?
【发布时间】:2010-05-06 01:07:20
【问题描述】:

'Proximity' 是一款类似于奥赛罗、围棋和冒险的领土统治策略游戏。 两名玩家,使用 10x12 六角网格。 Brian Cable 于 2007 年发明的游戏。

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

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

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

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

  1. 最小化你的周界似乎是一个很好的策略,可以防止翻转并最大限度地减少最坏情况下的损坏
  2. 就像在围棋中一样,在阵型中留下漏洞是致命的,只有六角网格更是如此,因为你可以在一次移动中失去多达 6 个方格的军队
  3. 低编号的瓷砖是一种负担,因此请将它们放置在远离您的主要区域、靠近棋盘边缘并分散的地方。您还可以使用数量较少的瓷砖来填补阵型中的漏洞,或者在对手不会打扰进攻的外围取得小幅收益。
  4. 由三块组成的三角形很坚固,因为它们相互加强,并且还减小了周长
  5. 每个图块最多可以翻转 6 次,即当其相邻图块被占用时。对编队的控制可以来回流动。有时,您会丢失阵型的一部分并堵住任何孔,以使该部分板“死”并锁定您的领土/防止进一步的损失。
  6. 低编号的牌是显而易见的但价值较低的负债,但如果高编号的牌被翻转(这更难),它们可能会成为更大的负债。一个 20 军队的棋子的幸运游戏可以导致 200 的摆动(从 +100 到 -100 军队)。因此,瓷砖放置将具有进攻性和防御性的考虑。

评论 1,2,4 似乎类似于极小极大策略,其中我们最小化最大预期可能损失(通过对对手可以从 1..20 获得的值 ß 的一些概率考虑进行修改,即只能翻转的结构ß=20 的瓷砖“几乎坚不可摧”。) 我不清楚 cmets 3、5、6 对最佳策略的影响。 对围棋、国际象棋或黑白棋选手的 cmet 感兴趣。

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

【问题讨论】:

  • 我错过了这个问题吗?
  • 我认为问题很明确:“战略和人工智能:...讨论 a) 最优算法,然后 b) 如何构建人工智能。”
  • @smci 讨论不是一个问题,而是一个维基
  • [@Mike & Lirik,如果你对动词的选择提出质疑]“给我找出最优算法”(并猜想它为什么是最优的)或“你认为哪种算法是最优的?”这两个都相当于“讨论最优算法”。那么,有人想冒险回答吗?
  • 这款游戏与西洋双陆棋非常相似,因为它本质上是相同的游戏,但游戏空间要大得多。 “最优”算法是expecti-max。等我有机会实现游戏后再回答第二个问题。

标签: artificial-intelligence game-theory


【解决方案1】:

这里是 U of A GAMES 小组的前成员。

那个分支因子太疯狂了。比围棋差得多。

基本上,你被圈套了。

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

为了在本世纪末之前完成单层搜索,您将需要一些非常激进的前向修剪技术。尽早放弃可证明的最佳移动,并专注于建立良好的移动顺序。

【讨论】:

  • 好的,但显然内置的 AI 使用非常基本的启发式算法并且几乎没有内存和 CPU 完成了一项可靠的工作。因此,让我们开始观察启发式的行为方式(就像我在 cmets 1..6 中的尝试)。
  • 好吧,我看到了分支因素并认为游戏结束了;) 计算机围棋出现如此多问题的原因相同。然而,你所说的让我觉得无论你搜索多少层,都有大量的动作显然很糟糕。所以我认为你应该使用类似于 gnubackgammon 进行前向修剪的迭代加深方法:搜索 1 层的所有移动,然后排序。将前 N 个动作 + M 个动作保留在 X 内。然后将所有这些剩余的候选动作搜索到 2 层。泡沫冲洗重复。这个领域可能是我对 *-Minimax 研究的一个有趣的后续。
【解决方案2】:

对于一般算法,我建议您查看阿尔伯塔大学 AI 游戏组所做的研究:http://games.cs.ualberta.ca 那里的许多算法保证找到最优策略。但是,我怀疑您是否真的有兴趣找到最佳选择,除非您想在韩国销售该游戏,否则以“足够好”为目标:D

根据您的描述,我已经将游戏理解为具有完全可观察性的两人游戏,即没有隐藏单位和完全确定性,即玩家的行动结果不需要滚动,那么您应该看看真实的-由阿尔伯塔大学的家伙提出的时间有界搜索极小极大导数。但是,能够同时限制值函数的备份深度可能是为您的游戏添加“难度级别”的好方法。他们一直在对搜索空间进行抽样以改进价值​​函数估计。

关于您描述的“策略”部分:在我提到的框架中,您必须将该知识编码为评估函数。查看 Michael Büro 和其他人(也在 U Alberta 小组中)的工作,以获取此类知识工程的示例。

另一种可能性是将问题作为强化学习问题提出,其中对手的动作被编译为“后态”。在 Barto & Sutton 的书上查看:http://webdocs.cs.ualberta.ca/~sutton/book/the-book.html 但是,这种编译产生的 RL 问题的价值函数可能证明有点难以以最佳方式解决 - 状态的数量会像氢弹一样爆炸。但是,如果您了解如何使用因式表示,事情会容易得多。你的“策略”也许可以编码为某种塑造功能,这将大大加快学习过程。

编辑:该死的英语介词

【讨论】:

  • miquel,我确实说过“最佳”,但我也说过“每转 5 秒的时间限制”。所以我应该说“足够好”。我没有说任何内存或 CPU 限制,但让我们谈谈什么是合理的,比如 1MB 内存和无磁盘。至于这个游戏是否是确定性的,理论上如果你可以处理由于每个回合所有 1..20 个可能的瓦片强度而导致的分支因子爆炸,时间约为 200 个瓦片放置选择(比围棋差)所以在实践中它是不完全确定,你需要一个启发式 - 可能是一个应用概率加权(假设 Minimax)
  • 我错过了关于时间限制的部分 :-) 游戏模型是确定性的。但这并不意味着您用来求解的算法也必须如此。 (在人工智能研究中,我们对模型和算法有所不同)。我提到的作品基本上执行蒙特卡洛抽样,通过推出一系列戏剧来获得良好的估计——我鼓励你看看它们。关于启发式:是的,您需要一个好的启发式,但在我看来,您已经弄清楚了哪些是游戏状态最重要的特征。您只需要将它们组合起来。
  • 游戏不是确定性的。由于图块的随机绘制,它是一个随机域。
  • 错过了“随机绘制的瓷砖”位。
  • [...]您将需要一些非常激进的前向修剪技术。尽早抛出可证明的最佳移动,并专注于建立良好的移动顺序。[...]例如使用“放松”游戏模型,消除瓷砖绘制中的不确定性:-)
猜你喜欢
  • 2012-07-27
  • 1970-01-01
  • 1970-01-01
  • 2020-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-12
相关资源
最近更新 更多