34

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

问题:

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

4

9 回答 9

32

以下可能证明是有用的:

于 2009-02-03T06:35:23.277 回答
6

众所周知,扑克人工智能很难做对,因为人类下注是不可预测的。它通常分为两部分。

1)计算你的手成为赢家的几率。

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

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

于 2009-02-03T06:29:36.330 回答
3

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

此代码是德州扑克的核心引擎,没有视图和其他

http://github.com/phstc/javapokertexasholdem

于 2010-11-02T21:26:21.570 回答
2

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

我像这样制作了自己的AI。起初,我创建了大约 1000 名玩家,他们根本不知道如何玩这款游戏。根据他们最初的运气,他们的体能被加权并创造了新一代。新的“大脑”比上一代玩得更好。

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

于 2009-05-07T11:01:55.087 回答
2

正如已经推荐的那样,《扑克理论》一书对于玩游戏和构建 AI 来说是非常宝贵的信息来源。您可能应该购买它,因为它不会花费那么多。

阿尔伯塔大学的研究小组目前是最先进的,尽管他们时不时出现激烈的竞争。(并非所有该领域的扑克机器人和人工智能研究都是公开的,因为人们很容易在互联网扑克中使用自己的结果,尽管这是被禁止的。)

首先你应该决定你要先解决什么样的扑克。两人德州扑克已经基本解决,尽管最好的人类仍然与最好的 AI 进行真正的战斗。与人类相比,人工智能的主要优势在于对过去的手有无限完美的记忆,基于此对模式进行完美的分析,而且由于它们是机器,它们不会像几乎所有人类偶尔那样倾斜。

固定德州扑克可能是最容易破解的,因此您可能希望从 1-1 固定德州扑克开始,然后决定下一步要做什么。

以下是改变正确策略(和你的人工智能)的一些方面:

  • 现金游戏与锦标赛不同 - 玩家的数量使决策不同。
  • 德州扑克不是唯一的扑克。奥马哈、梭哈等存在并被广泛使用。
  • 固定限注不同于底池限注,底池限注又不同于无限注。
  • 为了击败最好的球员,你需要涵盖很多最好的球员在比赛时考虑的非常微妙的事情。要击败低风险的业余比赛,这些都不重要。

如果您决定参加无限注德州扑克,您可能需要查看三本书的系列Harrington on Hold'em和一本无限注扑克 - 理论与实践。读了很多扑克书,我可以说这些书结合扑克理论已经足够了。

于 2009-06-25T07:55:11.007 回答
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

于 2012-05-17T15:30:59.880 回答
1

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

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

正如上面的一张海报所说,第一步是确定几个可确定的扑克规则——一对一的扑克可以通过编程方式开发。

我陷入的一个陷阱是没有在早期构建可重构性。例如能够切换学习/玩耍的等级。

我很想听听你是如何在 gmail.com 上给我发邮件的 stevekeogh

于 2009-02-03T09:44:57.233 回答
0

只是添加到上面的链接中,要实施的重要事项之一是http://en.wikipedia.org/wiki/Kelly_criterion,这将有助于根据一系列投注的预期赔率计算出最佳投注规模。对于人类来说,赔率的判断可能会出错,但如果你的人工智能程序可以根据任何算法吐出一些预期的标准化赔率,那么这种为优势赌徒平衡风险和回报的下注规模技术将是一个很好的廉价解决方案.

于 2012-05-14T07:13:20.357 回答
-1

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

我不知道这个AI更容易写一个知道下注的AI,但它值得深思:选择下注的金额仅占获胜概率的1.5%。

于 2009-02-03T07:34:13.937 回答