您好 我在哪里可以找到有关如何为此游戏实施AI的一些信息。 从来没有做过任何类型的人工智能。
寻找最佳和简单方法的建议 感谢
答案 0 :(得分:10)
正如在几乎所有的棋盘游戏中一样,你必须(a)评估一个位置有多好,以及(b)寻找能够带来对你有利的位置的动作。
奥赛罗与国际象棋等其他比赛略有不同,因为(a)有点困难。你不能轻易分辨哪些位置是好的,因为表格可以很快转变。但是,如果你刚刚开始,一个好的启发式是
对于(b),您可以使用标准游戏树搜索算法,例如Minimax或Alpha-Beta Pruning。有许多不同的可供选择。
编写Logistello的迈克尔·伯罗(Michael Buro)撰写了几篇关于这一主题的精彩文章,后者是(前身为?)最强大的othello演奏节目之一。为了说明一个位置有多好,他将板上的模式(每个等级,每个文件,所有对角线形成模式)与之前由程序学习的数据库中的模式进行比较。为了搜索理想的结果,他使用了一种名为Multi-Prob Cut的搜索算法。可能有用的链接:
答案 1 :(得分:2)
Russel / Norvig"人工智能 - 现代方法"是了解博弈论,ai,启发式和相关内容的良好起点。看看这里:http://aima.cs.berkeley.edu/
答案 2 :(得分:2)
嗯,实际上,奥赛罗是一个游戏的例子,其中Minmax / Negamax不能很好地运作,因为你需要启发式来评估奥赛罗很难的中间游戏状态。看看蒙特卡罗树搜索(MCTS)。这应该很好。实际上,我实现了一个非常简单的机制,受到MCTS的启发,它击败了我迄今为止测试的所有在线AI(当AI在很短的时间内移动:2秒)。 该机制的工作原理如下: (a)获得当前玩家的所有可能动作 (b)随意选择其中一个 (c)以完全随机(有效)的动作交替玩游戏直到游戏结束。 (d)重视游戏结果 (e)将此值添加到步骤(b)中选择的移动的总核心 (f)将步骤(b)所选择的访问次数加1 (g)如果还剩下时间,跳到(b)(我给了算法2秒) (h)以最高平均分数(总分数/访问次数)进行移动
一些优化是非常明显的,比如立即移动,如果只有一个有效或限制随机模拟的数量以及时间限制(如每次有效移动约2000)。
同样,这不是MCTS,而只是MCTS的最后一部分,但效果很好。
问候, rattlehead
答案 3 :(得分:1)
negamax或minimax算法很简单,应该可以正常工作。
为了获得更高的游戏性,你需要添加一些启发式游戏,但是简单的两个移动negamax实现起来很快并且很快。
答案 4 :(得分:0)
Logistello的源代码可用here,这是十年前镇上最好的游戏。