1 前言

本人在于4月22号在量化投资公众号上看到了九坤投资举办的比赛,抱着拿个offer的心态参加了第三届第三期的德州扑克AI对抗赛,并侥幸获得第一名(运气还是占了比较大的成分),现分享自己的方案。
比赛链接为:比赛链接

2 德州扑克规则

这里简单介绍一下德扑规则。一开始每人都会有自己的两张起手牌(只有自己能看见),第一轮会出现三张公共牌,第二轮发第四张,第三轮发第五张。每一轮都可以根据自己的牌型选择下注,跟注,加注,弃牌。在最后一轮结束时如果还有两位以上的选手在场需要翻出手牌比大小。

3 方案介绍

3.1 方案简介

本人采取的方案主要是通过计算目前的胜率和下注的赔率综合决策的。

3.2 胜率计算

对于每轮自己的胜率计算,我是采用蒙特卡洛模拟方法去模拟未来的公共牌和对手的手牌来计算的。这里计算胜率只考虑一个对手,对于场上存在多个对手时,胜率计算可以累乘。比如通过模拟得到的胜率是0.8,场上剩下3人,那么你的胜率就是0.8*0.8=0.64。后面我发现如果这么计算的话会导致自己入场的次数很少,盈利能力变弱,决赛我计算最终的胜率仅考虑场上只有两个人存在(可能是因为基本到最后阶段场上只有两个人在比拼)。

一般来说如果有人在场上加注比较大时,拿小牌的人90%概率不会跟注,在计算胜率的模拟阶段时我没有考虑剔除这些小牌(太复杂了,而且时间有限)。在计算胜率的时候可能可以采用排列组合的方法,这样算出来会更准确一下,碍于不想动脑子就直接用模拟的方法了。

3.3 赔率计算

赔率就是你的收入与你投入的一个比值。如果你投入1000就能获得3000的收益那么这个赔率就是3。有些时候,如果我的胜率不高,但是赔率高的话我会考虑进场。但我不会仅考虑胜率和赔率,如果胜率低赔率高,但是需要加注量很大我也不会考虑进场。我自己设置了胜率和加注量在一个合理的范围才会入场,防止一次损失过多(但也容易被针对)。

在赔率计算的时候,我会考虑一个弃牌率,如果自己加注了会有一些人跟注也有一些人弃牌,我会把跟注的筹码也加入底池中。这个弃牌率我设置成了0.5,同时我设置了场上最少存在的人数,无公共牌时场上最少3人,有公共牌时场上最少2人。

这个赔率计算我不会考虑已经自己已经放进去的筹码,而是考虑自己将要放进去的筹码。比如我第一轮放进去80,第二轮我就不会认为这80是我投进去的。

3.4 什么情况跟注

我会跟注主要有以下情况:1.胜率高,且跟注筹码在一个合理范围。不同胜率,筹码的合理范围不一样,防止一次亏损太多。2.赔率合适,且跟注筹码在一个合理范围,如果赔率很高胜率很低,跟注筹码大我也不会考虑跟注。如果胜率/赔率的倒数>1时我认为是合适的赔率。比如胜率0.3,赔率是4,胜率/赔率的倒数=0.3/(1/4)>1,此时可以考虑进场。

但我这种跟注策略也有明显的缺点,有时候如果碰到激进的人,下注量很大,即使我的胜率高也容易被偷鸡。

3.5 什么情况加注

在无公共牌的时候,我的加注量比较小,因为如果加注太多,后面胜率低就容易亏损大。基本上胜率在0.5以上我会考虑进行加注,胜率越高加注量越大。

在有公共牌的时候,我会先计算赔率,如果我的胜率很高,赔率也很高,我会尝试加注期望对手也加注,把赔率降下来,提高能够获得的收益。具体加注多少我是通过比较胜率和赔率来计算的。如果我的胜率/赔率的倒数大于某个阈值时加注,这个阈值我设置成了1.2。举个例子,如果我的胜率为0.8,赔率为3,那么胜率/赔率的倒数=0.8/(1/3)>1.2,此时适合加注,加注到胜率/赔率的倒数差不多等于1.2时为止。当然这么做会导致有时候加注量太大,这里我根据胜率,设置了加注量不能大于某个值,防止亏损太多。

3.6 AI决策流程

Step 1: 模拟计算胜率

Step 2: 计算赔率(考虑弃牌率)

Step 3: 综合加注量、胜率、赔率考虑是否加注、跟注或弃牌。

(1) 如果胜率高,赔率高,有公共牌时利用3.5规则加注,无公共牌时根据概率的大小情况加注。

(2) 如果胜率低,但赔率高且加注量小则跟注。

(3) 如果加注量大,赔率高但胜率低则弃牌。

(4) 如果加注量很大,虽然胜率高但不是特别高,也弃牌。

4 比赛中的一些调整

(1) 决赛的第一轮中经过几局的比拼,我发现策略的入场次数比较少,而且经常对手下注量很大就容易弃牌,于是我就在计算概率之后,手动加0.1。事实也证明策略还比较有效,第一轮从倒数第二爬到第一(当然运气也有很大一部分因素)。

(2) 在决赛的第二轮末,因为当时pnl排名第一,害怕翻车,求稳,于是将策略选取了全部give up策略。

5 其他一些尝试方案

(1) 我记录了大家的操作,想针对大家的操作调整我的策略。但是可能有些人会在比赛中会调整自己的策略,而且有点复杂,时间有限就放弃了。

(2) 我本想在决赛的时候针对莽撞的选手手动调高自己的胜率,但是这种策略实行起来有危险,如果你的位置比较靠前胜率不高但是跟注,后面稳重的选手也跟注的话你可能就会有较低的胜率较大的损失。如果场上仅存在莽撞选手和你,但这种情况比较少。

6 方法展望

(1)在不同轮数的胜率计算需要剔除对手肯定不会跟进的手牌类型,可以根据对手加注情况猜测对手手牌。

(2)在不同的位置可以有不同的打法。比如在后置位,前面没有加注可以尝试加注让对手弃牌。

(3)使用强化学习算法。但使用强化学习工作量大,建模难度比较高。

对量化、数据挖掘、深度学习感兴趣的可以关注公众号,本人不定期分享有关这些方面的研究。


个人知乎:
https://www.zhihu.com/people/e-zhe-shi-wo/activities

九坤德州扑克第一名方案分享相关推荐

  1. 零基础入门NLP - 新闻文本分类,正式赛第一名方案分享

    零基础入门NLP - 新闻文本分类,正式赛第一名方案分享:https://mp.weixin.qq.com/s/7WpZUqdlItBToLYuRLm44g

  2. 室内场景识别任务的参赛攻略!第一名经验分享,Malena.

    室内场景识别任务的参赛攻略!第一名经验分享,Malena. 一.赛题分析 室内场景识别在计算机视觉领域是一个具有挑战性的问题,大多数适用于室外场景的分类模型在室内领域的表现都比较差,其困难在于尽管某些 ...

  3. 【十一届软件杯】遥感解译赛道:变化检测任务——预赛第四名方案分享

    十一届软件杯遥感解译赛道--预赛第四名方案分享 本Notebook为基于软件杯官方Baseline更改的项目,结合个人理解,进行了一些优化和更改,分数会比Baseline要高一点,并且将可以继续优化的 ...

  4. 腾讯广告算法大赛 | 初赛第一名心得分享

    腾讯广告算法大赛初赛第一名揭晓, 这只队伍可不得了, 单看队名以为是一个人, 其实它集结了三大高校的精英选手! 今天,他们将从三个方面全方位传授比赛经验. 小板凳儿排排坐!干货记起来~ 大家好,我们是 ...

  5. 阿里天池大赛脱敏多标签文本分类初赛20名方案分享

    本次数据为脱敏文本,相当一种新语言了,直接用中文预训练的模型是不行的,故我们需要通过自己训练一个预训练模型. 做法就是将训练集,测试集放一起,构建专属词表,进行MLM无监督训练,训练属于脱敏文字的预训 ...

  6. 机场客流量的时空分布预第一名方案

    向AI转型的程序员都关注了这个号

  7. Deepsort_V2 2020中兴捧月阿尔法赛道多目标检测和跟踪初赛第一名

    2020中兴捧月阿尔法赛道多目标检测和跟踪初赛第一名方案 初赛:多目标跟踪:指标MOTA和MOTP, 后期的大量实验证明检测算法相对于跟踪更重要. 数据集分析: 1.人群密集稀疏场景: 2.场景(白天 ...

  8. 完胜四名专业级德州扑克玩家?AI软件Libratus何以称雄?

    全文共2786字,预计学习时长8分钟 来源:Pexels 科技世界正在以我们无法想象的速度千变万化. 当激励机制还为人类所掌控,而我们作为人类-技术关系中唯一开拓者的日子已经一去不复返了. 如今,情况 ...

  9. 依图要修AI语音双学位,左手摸底考第一名成绩单,右手开放平台方案

    李根 发自 凹非寺  量子位 报道 | 公众号 QbitAI 依图,又展示出新前途. 这家以"图"起家的AI公司,现在宣布修个"语音"双学位,而且出场便是学霸的 ...

最新文章

  1. VC下提前注入进程的一些方法2——远线程带参数
  2. 刘锋 吕乃基:互联网中心化与去中心化之争
  3. python创建数组放入矩阵_python创建数组并存入数据库
  4. 【alibaba-cloud】Gateway网关
  5. 前端一HTML:十八:元素的显示方式
  6. C#中的String编码转换
  7. 顺序表应用5:有序顺序表归并
  8. 转 程序员学习的革命-如何使用大脑
  9. 【实习之T100开发】T100 单档程序开发(1)开发流程
  10. jdk下没有java源码_openJDK之如何下载各个版本的openJDK源码
  11. 几种线程池的实现算法分析
  12. 极客大学架构师训练营 编程的本质与未来 第三课 听课总结
  13. vs2017python配置opencv cv2_VS2017中配置opencv教程
  14. piano+apk+android,PianOli | F-Droid - Free and Open Source Android App Repository
  15. 优点电子签章系统无法解除_电子签章常见问题解答
  16. 以太网与工业以太网的区别
  17. Linux网络编程(Socket)(一)
  18. 东航mu座位分布图机翼_东航MU2357飞机座位大概几号座位在飞机机翼边上
  19. Windows里面比较好用的在线读书笔记软件
  20. java 红包接口开发_java调用微信现金红包接口的心得与体会总结

热门文章

  1. 跨境电商平台都有哪些
  2. java web 发送消息_java集成WebSocket向指定用户发送消息
  3. 2020 必须收藏的vscode主题【清爽的前端配置 vue】
  4. 中石油计算机图形学第二次在线,石油华东《计算机图形学》2020年秋季学期在线作业(二)...
  5. 模拟浏览器整理电影榜单
  6. 深度学习:人工智能的核心
  7. howlerjs 音乐播放插件
  8. Laravel 视图 Composer ViewComposers
  9. 浙江科技学院c语言考试试卷,浙江科技学院c语言-1-C试卷A.doc
  10. Ubuntu下使用搜狗输入法候选字显示乱码问题的解决