建立德州扑克从头开始玩AI ..

时间:2009-02-03 06:17:33

标签: java lisp artificial-intelligence poker jatha

我有兴趣用Java构建Texas Hold'Em AI引擎。这是一个长期项目,我计划投资至少两年。我还在上大学,还没有建立任何雄心勃勃的东西,并希望解决一个长期存在我兴趣的问题。我是人工智能领域的新手。从我在大学的数据结构课程中,我知道基本的构建模块,如BFS和DFS,回溯,DP,树,图等。我正在学习正则表达式,为SCJP和SCJD学习,我将很快采取(密集) )统计课程。

问题:

- 我从哪里开始?我应该选哪些书?玩扑克游戏程序的人工智能是什么样的?我可以从哪个开源项目中获取页面? Java中有哪些优秀的AI资源?我也有兴趣学习Lisp,Jatha好吗?

9 个答案:

答案 0 :(得分:30)

答案 1 :(得分:5)

众所周知,扑克AI很难做到正确,因为人类无法预测。它通常分为两部分。

1)计算你手牌成为胜利者的几率。

2)根据1制定投注策略。

我建议首先阅读第1部分的大量统计数据。乍一看似乎很容易,但它实际上非常复杂(并且错误会让你的AI崩溃)。然后转到第2部分的遗传算法。投注策略主要是遗传算法。他们根据过去的成功和失败以及一些随机化来调整自己,以免变得可预测。

答案 2 :(得分:3)

我用Java编写了德州扑克视频扑克引擎

此代码是Texas Hold'em的核心引擎,没有视图和其他人

http://github.com/phstc/javapokertexasholdem

答案 3 :(得分:2)

此外,让遗传算法调整神经网络的权重,这决定了决策逻辑。这种方法非常适合扑克AI。

我像这样制作了自己的AI。起初,我创造了大约1000名玩家,他们根本不知道如何玩游戏。根据他们在手中的最初运气,他们的适应性被加权并且创造了新一代。新的“大脑”比上一代表现更好。

最终,最好的人打得非常好。

答案 4 :(得分:2)

正如已经推荐的那样,扑克理论这本书是玩游戏以及构建AI的真正无价的信息来源。你应该买它,因为它不会花那么多钱。

阿尔伯塔大学的研究小组目前掌握着最先进的技术,尽管他们时不时会出现激烈的竞争。 (并非所有的扑克机器人和人工智能研究都是公开的,因为在互联网扑克中使用一个结果的诱惑,尽管这是禁止的。)

首先,您应该决定首先要解决的扑克类型。尽管最好的人类仍然可以用最好的AI进行真正的战斗,但是两个玩家德州扑克已经解决了。人工智能具有超越人类的主要优势,拥有对过去手的无限完美记忆,基于此的模式的完美分析,并且因为它们是机器,它们不像几乎所有人偶尔那样倾斜。

修正德州扑克可能是最容易破解的,所以你可能想要从1-1固定德州扑克开始,然后决定下一步你要做什么。

以下是改变正确策略(以及您的AI)的一些方面:

  • 现金游戏与a不同 比赛 - 球员数量 使决策不同。
  • 扑克 不是唯一的扑克。奥马哈,梭哈 和其他人存在并且广泛存在 播放。
  • 固定限额不同于 底池限制,与No。不同 限制。
  • 为了击败你所需要的最好的东西,你需要涵盖最好的球员在比赛时想到的许多非常微妙的事情。为了击败低风险的业余比赛,这些事情都不算数。

如果您决定参加无限注德州扑克,您可能需要查看三本书系列哈灵顿的德州扑克和一本书无限注扑克 - 理论与实践即可。阅读了很多关于扑克的书籍,我可以说这些书与扑克理论相结合已经足够了。

答案 5 :(得分:2)

我不确定你对哪个游戏感兴趣,但典型的方法是创建一个小得多的游戏抽象版本,解决那个小游戏,然后将真实游戏情境映射回抽象游戏以生成咨询。大多数学术论文都跳过了这个过程的细节,倾向于提出有关收敛,利用和竞争结果的结果。

但是,有一些公开的代码库可以提供完整的实现。其中最好的是Fell Omen:

http://www.deducer.org/pmwiki/pmwiki.php?n=Main.ArtificialIntelligencePoker

这是一个基本的完整策略机器人,它使用虚拟游戏来优化抽象游戏的策略。这是一个很好的起点,因为它相当简单,完整,并且代表了抽象游戏方法的良好表现。

如果您有兴趣开发扑克AI,我建议您阅读2007年以及UA扑克组和Tuomas Sandholm学生的所有内容:

http://www.cs.cmu.edu/~sandholm/

http://poker.cs.ualberta.ca/publications.html

答案 6 :(得分:1)

我在本科生中写了一个Hold'Em AI。它并不是特别先进,我使用了Q-Value机器遍历了许多状态并更新了每个州的Q值。

我发现阿尔伯塔大学的AI扑克项目是避免陷阱的宝贵信息来源。

正如上面的一张海报所述,第一步是确定一系列可确定的扑克规则 - 可以以编程方式开发一对一的扑克。

我陷入的一个陷阱是早期没有建立可重新配置性。例如,能够切换学习/游戏的等级。

我很想知道你如何让我在gmail.com发送邮件stevekeogh

答案 7 :(得分:0)

只是添加到上面的链接中,要实现的一个重要事项是http://en.wikipedia.org/wiki/Kelly_criterion,这将有助于在给定一系列投注的预期赔率的情况下找出投注的最佳大小。 对于人类,可能存在判断赔率的错误,但是如果你的AI程序可以基于任何算法吐出一些预期的归一化赔率,那么这种用于平衡优势赌徒的风险和奖励的投注技术将是一个很好的廉价解决方案

答案 8 :(得分:-1)

我听到的一个有趣的结果是,如果你将投注选项限制为弃牌,支票和全押,你可以写一个赢得一对一的AI,概率至少为49%,如果你赢得49.5%这是(IIRC)先行。

我不知道这个人工智能会更容易写出那个知道下注多少的人,但这是值得深思的:选择投注金额只占获胜概率的1.5%。