前言:
  本文将谈谈如何评估测试炸金花的AI, 其实这个也代表一类的问题, 德州扑克也是类似的解法. 本文将谈谈两种思路, 一种是基于基准AI对抗评估, 另一种是基于测试集(人工选定牌谱). 由于炸金花/德州是一类信息不完全的游戏, 而且运气在局数少的情况下, 占据很大比例, 波动有些大. 因此基于测试集来评估, 可能更好, 更准确.
  总而言之, 好的AI, 在优势下赢得越多, 在劣势下输得越少, ^_^.

相关文章:
  德州扑克AI--Programming Poker AI(译). 
  系列文章说来惭愧, 之前一直叫嚷着写德州AI, 不过可惜懒癌晚期, 一直没去实践, T_T. 相比而言,***简单很多, 也更偏重于运气和所谓的心理对抗.
  系列文章:
  1. 炸金花游戏的模型设计和牌力评估 
  2. 炸金花游戏的胜率预估 
  3. 基于EV(期望收益)的简单AI模型
  4. 炸金花AI基准测试评估
  5. 动态收敛预期胜率的一种思路

基准AI的选定:
  基准AI来评估新AI的好坏, 这个有点绕, 感觉像先有鸡, 还是先有蛋的问题. 但应该属于迭代发展的例子, 就好像最老一代的C编译器由汇编编写, 然后用C语言编写新一代的C编译器, 继而在用c语言开发再新一代的C编译器...., 最终C语法支持越来越强, 性能越来越强大.
  对于这个基准AI, 我们可以如下设定基础规则:
  1. 随机选择see操作
  看牌see的最佳时期, 这个难以定论, 这边引入随即决策看牌, 几回合后强制看牌.
  2. 提升对手手牌范围, 明注每操作一轮提升, 明注主动raise提升, PK胜利提升.

玩家默认牌力为高high/弱对子
玩家明注check一轮, 牌力 += 1
玩家明注raise, 牌力 += 2
玩家主动pk胜利, 牌力 += 1
玩家被动pk胜率, 牌力 += 2

  3. 根据手牌胜率, 决定check/raise/pk/pack

p >= 0.65, 选择check/raise
p >= 0.5 && p < 0.65, 60%选择pk, 40%选择check
p >= 0.4 && p < 0.5, 70%选择pk, 30%选择pack
p >= 0.2 && p < 0.4, 30%选择pk, 70%选择pack
p <= 0.2, 选择pack

  任何有一定均衡性的游戏, 都有风格相克的问题, 所以基准AI对抗也有过拟合的问题.

基于测试集:
  这需要人工选一些有代表意义的牌谱, 牌谱覆盖正反case, 同时能满足一定的概率分布, 这个测试牌谱需要领域专家来完成. 除了牌谱选定外, 对每个牌谱, 需要人为的设定阈值条件和策略规则.这边的牌谱以及规则设定都是基于理性的.
  1. 正向case
  AI手牌牌力强, 敌方手牌牌力弱/稍弱, 这些情况下, AI能取得到的最大价值.
  2. 反向case
  AI手牌牌力弱, 敌方手牌牌力强, 这些情况下, AI能尽量的少输.
  这边举几个列子吧, 确实这个挺难以展开的.
  AI手牌为同花, 测试牌谱为弱对子, AI需要谨慎的处理raise, 因为一旦raise, 会导致对方提前pk或者pack, 这样能取到的价值较少了.
  AI手牌为同花, 测试牌谱为顺子, AI在谨慎处理后, 发现对方牌力不小, 可以raise, 提高可获取的价值.
  这边做个小广告吧, poker logic, 这边的测试来评估玩家水平, 进而衍生为评估AI, 这种方式我觉得是评估AI强弱的正道.

  

总结:
  本文谈到了两种方式去评估AI, 一种是基于基准AI, 一种是就要牌谱测试集, 我个人更倾向于第二种. 由领域专家选定的牌谱在指导和评估AI的能力, 更具说服力.
  对待博彩游戏, 希望大家娱乐心态行娱乐之事, 切勿赌博, ^_^.

转载于:https://www.cnblogs.com/mumuxinfei/p/10307537.html

炸金花游戏(4)--炸金花AI基准测试评估相关推荐

  1. 炸金花游戏(1)--炸金花游戏的模型设计和牌力评估

    前言: 好久没写博客了, 今天来补上一篇, 是关于炸金花游戏模型的设计和牌力评估. 其核心思想和之前谈到过的德州模型很像, 本文也想为炸金花游戏这个系列开个头, 希望后面能写写AI相关的文章. 相关文 ...

  2. 炸金花游戏(2)--炸金花游戏的胜率预估

    前言: 我也是突然心血来潮, 想写写炸金花这类游戏的AI实现. 本文算是这一系列的第二篇, 主要写炸金花的胜率预估, 主要基于蒙特卡罗的思想, 胜率是炸金花AI的核心决策数据, ^_^. 相关文章: ...

  3. 炸金花游戏(3)--基于EV(期望收益)的简单AI模型

    前言: 炸金花这款游戏, 从技术的角度来说, 比德州差了很多. 所以他的AI模型也相对简单一些. 本文从EV(期望收益)的角度, 来尝试构建一个简单的炸金花AI. 相关文章: 德州扑克AI--Prog ...

  4. 炸金花游戏(5)--动态收敛预期胜率的一种思路

    前言: 前面几篇炸金花的文章, 里面涉及到了一个核心问题, 就是如何实现对手的牌力提升, 以及胜率的动态调整. 这个问题是EV模型, 以及基准AI里最重要的核心概念之一. 本文将尝试实现一个版本, 望 ...

  5. php金花游戏,PHP实现炸金花游戏比赛

    这篇文章主要介绍了PHP实现炸金花游戏比赛的方法,实例分析了炸金花游戏的实现原理与相关算法技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了PHP实现炸金花游戏比赛的方法.具体分析如下: ...

  6. Python实现炸金花游戏的示例代码

    本文主要介绍了Python实现炸金花游戏的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下.编程学习资料点击领取. 今天的第二个作品,哈哈哈哈,搞起来感觉还挺 ...

  7. php竞赛,PHP实现炸金花游戏比赛

    这篇文章主要介绍了PHP实现炸金花游戏比赛的方法,实例分析了炸金花游戏的实现原理与相关算法技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了PHP实现炸金花游戏比赛的方法.具体分析如下: ...

  8. 以web形式实现模拟炸金花游戏

    1.实现方式 * web形式,采用前端html+css,后台PHP的方式实现模拟的炸金花游戏* 纸牌数据的显示以图片的显示控制有php实现 2.样例展示 3.代码展示 4.功能说明 * 1.前端采用h ...

  9. 详细的Python炸金花游戏代码

    ** 详细的Python炸金花游戏代码 ** 觉得有用请点个赞吧 #!/usr/bin/env python # -*- coding: utf-8 -*- ''' # @Time: 2022/07/ ...

最新文章

  1. winform解析json
  2. python stdout stderr 一起输出_Python捕获stdout/stderr并在看到outpu的同时记录到文件
  3. Linux系统文件类型
  4. 15分钟实现AI端计算模型训练、加速与部署 | 百度EasyDL公开课
  5. Java 实现日期 Date 的赋值
  6. java也可以做黑客?
  7. 国内各大音乐平台歌曲分享
  8. 计算机原理 信息化教学设计,小学数学信息化教学设计
  9. 那桃林深处最美的风景
  10. iOS 开发之动画篇 - 从 UIView 动画说起
  11. java读取外部配置文件_SpringBoot读取外部配置文件的方法
  12. Anaconda使用conda连接网络时,出现网络错误CondaHTTPError(包括Anaconda安装与入门)
  13. 【ZOJ 4097 The 19th Zhejiang University Programming Contest H】Rescue the Princess【边双连通缩点+LCA】
  14. Excel导入SQL(VB.NET版)
  15. MATLAB中改变默认工作路径的方法
  16. windows - 更改用户账户名称(windows10)
  17. 双击.bat文件闪退
  18. 10 数据库与身份认证
  19. 图文结合,手把手教你ubuntu18-live-server-amd64服务器版的安装、配置静态ip以及换源
  20. 如何快速定位自己热爱的工作

热门文章

  1. 中鑫优配周末重磅利好 周一大盘如何走
  2. 构建基于词典的Lucene分类器
  3. 苹果新Apple TV出现Bug如何解决?
  4. jdbc localhost mysql_JDBC连接MySQL
  5. python爬虫精选11集(selenium进阶总结【selenium的cookies处理、ip代理、useragent替换】)
  6. c#企业微信在线支付
  7. PS 2021安装插件提示”无法加载,未经签署“怎么办?ps2021插件未经正确签署解决办法!
  8. condition_variable的使用以及与锁的关系
  9. 频谱细化matlab程序,分享FFT频谱细化程序(处理单频点信号)
  10. Posix API总结