V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
icybee
V2EX  ›  分享创造

分享一个德州扑克的 solver

  •  6
     
  •   icybee · 2021-02-25 00:23:46 +08:00 · 6738 次点击
    这是一个创建于 1128 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我对于德州扑克 ai 的接触始于 2019 年,那个时候我还在上研究生,当时有个挺有意思的老板通过 icyChessZero 这个项目找到我,问我有没有兴趣为他开发德州扑克的 ai,他可以给我报销机器钱,还可以有一点点的报酬,当时我正好在看很多关于德扑 ai 的论文,本来也有这个打算,于是想都没想就接了这个活,也开始了我和德州扑克 ai 真正的交集。虽然到 2020 年最后我写的德州扑克 solver 并没有被采用,最后老板还是选择了名声更大的一个项目进行合作,但是这中间构建德州扑克 solver 的过程是有趣的,这个 solver 我也终于在今年春节期间把代码整理清楚并且开源,算是不旺我花费在德扑 ai 上的这些时间,开源的这个项目也是目前据我所知最完善的德州扑克开源 solver,虽然它没有界面,功能也不能称得上尽善尽美,但是比起 1000 刀的 piosolver,它不要钱啊:

    https://github.com/bupticybee/TexasHoldemSolverJava

    国内用 solver 打德州的应该还比较少,但是国外现在如果不用 solver 去打线上德州基本就是“鱼”,就是送钱天使,但是专业的 solver 又很贵(便宜的上百刀),于此同时市面上有没有一个好的德州扑克的开源 solver,所以这个项目应该来说是有点价值的。

    我甚至还专门做了一个 B 站视频介绍这个开源项目:

    https://www.bilibili.com/video/BV1s5411N7gf

    由于国外目标用户也很多,我甚至操着塑料英语厚着脸皮做了一个英文油管的视频:

    https://www.youtube.com/watch?v=tf34v0fCvi0

    我甚至还到专门的德州论坛上去介绍自己的软件,还是收获了一些鼓励的,请允许我得瑟一下摘抄几句:

    • Thank you so much! This can be a game changer, bringing high level tools to low stakes players. I will follow your project and hopefully help in the future :)
    • This is huge! I don't know how to thank you enough! I was saving for piosolver so I defintely will give this a try. reply

    如果有玩德州比较深的应该知道这个项目的意义,如果你不玩德州,也没关系~哈哈留下你的 star 就好~

    28 条回复    2021-06-24 16:12:05 +08:00
    PMR
        1
    PMR  
       2021-02-25 07:49:36 +08:00 via Android
    前面 本想点 star fork



    后面来个球 star? 让了
    kop1989
        2
    kop1989  
       2021-02-25 09:24:17 +08:00
    关于这个我有一个问题请教 lz 。

    德州扑克是不是每局完成后重新洗牌的?如果重新洗牌,是不是对应桌面上所有牌(明牌、暗牌、未发的牌)的概率就是每局固定的?那么既然牌面概率是每局固定的,其他人的筹码分配策略也未知(假设这个 ai 没有针对对方 id 的学习功能)那么 ai 的统计学意义在哪?或者说这个 ai 与发牌概率计算器的区别在哪里?
    CallMeReznov
        3
    CallMeReznov  
       2021-02-25 09:36:39 +08:00
    java shell python,好家伙,搁这套娃呢
    anzu
        4
    anzu  
       2021-02-25 09:37:48 +08:00
    需要猜对手的手牌概率然后求解,对高玩比较有用。
    doveyoung
        5
    doveyoung  
       2021-02-25 10:07:27 +08:00
    想知道,AI 能判断出来对方是在诈唬吗
    bigtan
        6
    bigtan  
       2021-02-25 10:08:15 +08:00 via iPhone
    牛逼啊,难怪各种平台 pgo 越来越多
    icybee
        7
    icybee  
    OP
       2021-02-25 11:05:14 +08:00 via Android
    @CallMeReznov 哈哈用 py 写的原型然后代码迁移到 java,结果没全部迁移完
    icybee
        8
    icybee  
    OP
       2021-02-25 11:05:29 +08:00 via Android
    @PMR 让了是啥意思呀⊙_⊙
    icybee
        9
    icybee  
    OP
       2021-02-25 11:06:04 +08:00 via Android
    @doveyoung cfr 的算法原理保证长远不会输,所以从数学原理上是可以的
    icybee
        10
    icybee  
    OP
       2021-02-25 11:08:41 +08:00 via Android   ❤️ 1
    @kop1989 差别非常大,但是一两句话说不完,建议看下 An introduction to counterfactual regret minization 这篇文章,总的来说德州扑克 solver 的算法求的是纳什均衡策略而不是胜率,这是完全不同的两个东西
    kop1989
        11
    kop1989  
       2021-02-25 11:09:30 +08:00
    @icybee #10 非常感谢提点,有方向了
    icybee
        12
    icybee  
    OP
       2021-02-25 11:12:49 +08:00 via Android
    @kop1989 你要是想要方向的话我可以整理一个我自己看的论文 list 给你
    icybee
        13
    icybee  
    OP
       2021-02-25 11:36:14 +08:00 via Android
    @bigtan 怎么说呢,国内国外平台都是,没有点工具就上基本会被认为是送钱天使,其实对德州发展很不好
    wzb0909
        14
    wzb0909  
       2021-02-25 11:36:17 +08:00
    @icybee 啊我也想要论文。
    然后,@kop1989,你想要的应该更多是玩法和规则,网上有个入门教程还不错,https://hopkinspokercourse.com
    icybee
        15
    icybee  
    OP
       2021-02-25 11:36:45 +08:00 via Android
    @wzb0909 好的我中午整理一下
    wzb0909
        16
    wzb0909  
       2021-02-25 11:39:40 +08:00
    @icybee 哎以前有一阵子我也很感兴趣,但是学理论没有打牌好玩,就一直玩一直玩,然后输了钱也不爱学理论了。。。
    icybee
        17
    icybee  
    OP
       2021-02-25 11:43:34 +08:00 via Android
    @wzb0909 我其实不这么觉得,因为德州扑克本身就是一个很有挑战的问题,可以说是近几年来算法的一个桂冠,自己打起来不一定觉得好玩,但是让机器去做这个事情,其实是蛮有意思的
    icybee
        18
    icybee  
    OP
       2021-02-25 13:35:30 +08:00   ❤️ 5
    @wzb0909 @kop1989 主要看的是这么几篇论文:
    cfr 算法本身:An introduction to counterfactual regret minization
    mccfr(在开源项目里也有实现):Monte Carlo Sampling for Regret Minimization in Extensive Games.
    cfr+(在开源项目里也实现了) :Solving Large Imperfect Information Games Using CFR+
    discounted cfr(在开源项目里也实现了) : Solving Imperfect-Information Games via Discounted Regret Minimization
    Libratus(冷扑论文) : Superhuman AI for heads-up no-limit poker: Libratus beats top professionals
    Pluribus(德州六人扑克):Superhuman AI for multiplayer poker
    deepstack(加入了神经网络):DeepStack: Expert-Level Artificial Intelligence in No-Limit Poker
    123jiayue
        19
    123jiayue  
       2021-02-25 13:57:58 +08:00 via Android   ❤️ 1
    以前看那些打十几桌的低级别的基本也和机器人差不多 风格紧一点等鱼就是很累资金管理正常也是能赚 不过现在玩家水平高了不少没那么多鱼了😄
    pkwenda
        20
    pkwenda  
       2021-02-25 16:17:52 +08:00
    晚上打两把试试
    icybee
        21
    icybee  
    OP
       2021-02-25 18:42:18 +08:00 via Android
    @pkwenda 欢迎使用,有问题可以提 issue
    icybee
        22
    icybee  
    OP
       2021-02-26 11:35:51 +08:00 via Android
    @anzu 不完全是,手牌概率有其他软件可以算,cfr 算法也可以从 preflop 就开始算 range
    acidsweet
        23
    acidsweet  
       2021-02-26 18:14:41 +08:00
    感觉很多人德州都没基础阿,德州永远都不能猜出对手准确的手牌,只能猜范围;
    solver 是 GTO 在软件上的实现;而 GTO 并不是什么必胜的策略,它是纳什均衡在德州上的应用,也就是一种确保自己不被剥削的策略;
    关于这个有机会可以写一些科普文章给大家
    icybee
        24
    icybee  
    OP
       2021-02-26 21:39:29 +08:00
    @acidsweet 这个认识有一部分是不对的,其实也不能说不对,只是说当前市面上的工具都不支持,通过类似类似 deepstack 的 CFR-D 加上 continue-resolving 可以在纳什均衡内求得对方的手牌范围的,不需要猜,但是对于你说的第二点,他没法去剥削这个倒是真的,我感觉这块可能可以加上强化学习的元素,强化学习擅长剥削,感觉这两者的结合很可能是之后德州扑克 ai 的发展方向
    xcm153
        25
    xcm153  
       2021-03-01 20:11:52 +08:00
    老哥用这个程序后,真正实战过吗,胜率如何
    icybee
        26
    icybee  
    OP
       2021-03-02 14:04:24 +08:00
    @xcm153 这是一个 solver,不是一个全自动 bot,我校对过它和 piosolver 的结果,是完全相同的
    jokerlin
        27
    jokerlin  
       2021-05-04 14:14:11 +08:00
    @icybee 赞!想知道楼主用实现的版本用的是什么哪篇论文的算法
    icybee
        28
    icybee  
    OP
       2021-06-24 16:12:05 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   980 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 20:13 · PVG 04:13 · LAX 13:13 · JFK 16:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.