凯发娱乐城

注册游戏账号

新葡京娱乐城

进入游戏大厅

博天堂娱乐城

真人棋牌游戏开户

您现在的位置:真钱棋牌游戏 > 游戏问答 > 正文

使用DouZero玩欢乐斗地主

来源:http://www.789yule.net 作者:游戏问答

真人棋牌游戏

博天堂

  前段时间快手团队开发的斗地主AI——DouZero开源了,听到这个消息我可是十分振奋,立即下载源码学习一下,其实,就是想基于这个DouZero项目做一个“成熟”的AI——用来帮我打欢乐斗地主。(文末有项目地址与演示视频链接)DouZero分析
1.DouZero介绍DouZero项目地址:https://github.com/kwai/DouZero
在线Demo地址:https://www.douzero.org/
原理我就不过多说明,有兴趣的可以查看论文:https://arxiv.org/abs/2106.06135
运行程序,评估胜率只需三步:进入项目目录,
pip3 install -r requirements.txt # 安装依赖 python3 generate_eval_data.py # 生成评估用的数据 python3 evaluate.py # 开始评估运行结果是以胜率的形式展现。 关于如何训练以及更多参数设置,请查看DouZero项目的说明文档。
当然现在这样对实际应用是没有直接帮助的,所以要改造一下,利用训练好的AI来帮我们出牌。
2.DouZero源码分析项目结构十分清晰,douzero目录包含主要代码文件,baselines目录放置预训练模型。根目录下的evaluate.py为入口,拿到参数后传递到douzero/evaluation/simulation.py中的evaluate()函数,再将数据分配给多个进程调用mp_simulate()函数。
使用DouZero玩欢乐斗地主
项目结构mp_simulate()函数中,players为三个生成的AI,代表斗地主中的三个角色。GameEnv()类表示游戏环境,控制一局游戏流程的进行与结束。
使用DouZero玩欢乐斗地主
mp_simulate()函数看到这里,整个项目就清晰了,可以着手按照需求定制AI了。
DouZero定制
首先,三个AI互斗肯定是不可行的,我们只需要一个,并且代表了玩家的角色。只要给这个AI输入开局时我的手牌和三张底牌,并且告诉它谁是地主,再输入每轮中其他两人的出牌,那么AI就能够给出最优出牌决策。
对于生成AI,可以控制只生成玩家角色对应的AI。开局时获取玩家的位置(地主上家、地主、地主下家),并用0, 1, 2分别表示。
对于获取手牌等信息,DouZero项目中有对扑克牌进行转换。注意到在DouZero与rlcard-showdown两个项目中,这种对应关系有些许差异,这是因为将10用T来代替就可以将扑克牌用一串字符串来表示,便于参数传递。因此本项目也采取这种做法。
# DouZero EnvCard2RealCard = {3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, 11: J, 12: Q, 13: K, 14: A, 17: 2, 20: X, 30: D} RealCard2EnvCard = {3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, J: 11, Q: 12, K: 13, A: 14, 2: 17, X: 20, D: 30} # rlcard-showdown EnvCard2RealCard = {3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: T, 11: J, 12: Q, 13: K, 14: A, 17: 2, 20: X, 30: D} RealCard2EnvCard = {3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, T: 10, J: 11, Q: 12, K: 13, A: 14, 2: 17, X: 20, D: 30}对于预测胜率,DouZero项目中并未给出,但是在rlcard-showdown中能看到该参数,由deep.py文件中DeepAgent()类的act()函数计算得到。best_action_confidence = y_pred[best_action_index]感谢Couwisdet指点,变量y_pred是预测的所有合法动作的Q值,取其中最大的一个对应的策略即为最优策略。对于WP模型,取值在[-1, 1],可以按比例换算成胜率,如下:win_rates = {} win_rate = max(best_action_confidence, -1) win_rate = min(win_rate, 1) win_rate = str(round(float((win_rate + 1) / 2), 4))控制台版本
1.用法这个版本仅仅通过控制台进行交互。使用DouZero玩欢乐斗地主
控制台版本开局的时候玩家要把自己的手牌,地主的位置,三张底牌手动输入进去。手牌输入按照333456789TJQKA2XD的形式,然后输入玩家的角色:0-地主上家, 1-地主, 2-地主下家,最后输入三张底牌,例如2XD。然后就开始轮流出牌,在其它两个人出牌后都需要将对应的牌输入,用于AI决策,这样在轮到玩家出牌时,AI就能告知最优策略。不出的话,直接Enter即可,会返回空列表。同理棋牌手游开发,当AI返回空列表时表示不出。这么做的优点就是,逻辑简单,并且工作量少哇。主要是想第一时间测试AI在实战斗地主中的实力。缺点很明显,十分拼手速,并且没有撤销机制与输入检测,如果着急输错了,那么程序就会崩溃。2.分析去除了不必要的文件以及参数,根目录只保留start.py用于启动。evaluate()函数要求输入玩家手牌、玩家角色、三张底牌。由于原先评估代码中太多处涉及对其他角色手牌的操作如删除和检测,为避免大量改动原项目代码,需要为其他两个角色分配手牌。这里就将整幅牌减去玩家手牌,再按角色分配给它们。为避免其他玩家出牌时,在其手牌中找不到该牌,将在其他玩家手牌中删除刚出的牌改为在其他玩家手牌中删除与刚出的牌等量的牌。这么做的依据是:AI决策时只需要考虑其他角色手牌数量而不需要知道具体是什么牌。创建AI时根据玩家角色来创建,并且在env.step()中,调用act()函数获取AI决策前判断一下当前是否为玩家出牌,是则通过AI决策,否则由玩家输入。当任意角色手牌数量为0时则代表游戏结束。 俗话说得好,一个成熟的AI,是应该能够自己看牌出牌的。于是我又改出了pyqt5版本,实现部分自动化操作。pyqt5版本
1.用法打开欢乐斗地主,需要窗口模式下最大化运行,并且要求屏幕分辨率1920x1080,程序窗口需要移至右下角,不能遮挡手牌、地主标志、底牌、历史出牌使用DouZero玩欢乐斗地主
pyqt5版本在抢地主结束后,手牌出现、底牌出现、地主角色确认,点击开始,耗时几秒完成扑克牌的识别。窗口内显示识别结果,地主角色使用淡红色标出。识别完成自动开始记录出牌。观察AI建议的出牌,在游戏中手动选择并打出。游戏结束后会弹出对话框提示输赢。识别错误或无反应导致错过出牌,可通过结束按钮停止本局。至于游戏,就自己手动打完吧。2.分析利用pyqt5设计一个简单的窗体用于展示出牌信息使用DouZero玩欢乐斗地主
主窗口使用pyautogui来实现自动化。借鉴了cardRecorder项目的部分代码以及模板图片,用于识别扑克牌。使用DouZero玩欢乐斗地主
图片模板通过pyautogui.locateAll()函数将所有扑克牌的模板图片与屏幕特定区域的截图进行对比,获取手牌、底牌与出牌。由于出牌区域显示的牌较小,因此使用一大一小两套模板。而底牌则更小,通过resize()函数将截图区域放大,在进行模板比对。pyautogui.locateOnScreen用于白块检测与“不出”检测,“地主”检测,用来自动识别出牌流程。这里仍有一点Bug,例如王炸时出牌特效时间较长,有一定几率导致只能识别出一个王。但是缩短等待时间又会导致两人连续“不出”时无法自动切换到下一个人出牌的状态。另外,由于像素级操作过于局限,并且识别过程容易出错,有小几率Bug,因此放弃完全自动化的想法,即通过pyautogui来点击屏幕自动出牌。总结
至少现在,这个AI可以辅助我们出牌了,虽然AI的思路可能跟我们完全不一样。要注意到,斗地主是个运气成分很强的游戏,牌好的时候,闭着眼睛打也能赢。牌烂的时候,高手也救不了(例如被“春天”)。所以只有在自己的牌不好也不烂的时候,AI的优势才能被明显体现出来。综合来看,在发完牌后,自己没有把握打赢又不至于直接认输的情况下,用AI辅助是不错的选择。毕竟,它天生自带记牌器,能够合理配合,做农民的时候是个不错的队友。github项目地址:DouZero_For_HappyDouDiZhu演示视频链接:AI杀疯了!用人工智能DouZero打欢乐斗地主使用DouZero玩欢乐斗地主
徽水悠悠的视频·4664 播放CGPAY钱包,使用DouZero玩欢乐斗地主

  • 原文标题:使用DouZero玩欢乐斗地主
  • xpj

    9you娱乐城

    特别推荐

    
  • 谷歌搜索留痕推广
  • 谷歌搜索留痕排名技术
  • 谷歌快速排名
  • 留痕方法
  • 谷歌搜索快速方法
  • google搜索留痕程序
  • 谷歌快速排名
  • 澳门太阳城
  • 最大博彩公司
  • 谷歌搜索关键词排名
  • 搜索留痕程序
  • 谷歌排名出售
  • 谷歌蜘蛛池排名
  • 搜索留痕软件
  • 缅甸果敢赌场
  • 电子游艺规则
  • 谷歌留痕推广
  • google引流程序
  • 谷歌快速排名
  • google引流程序
  • 留痕推广
  • 大西洋城赌场
  • 买球地址
  • 搜索留痕
  • 搜索留痕程序出售
  • 谷歌蜘蛛池排名技术
  • 留痕程序
  • 如何提高google搜索排名
  • 数字币博彩
  • 洗钱方法
  • Google留痕收录
  • 最新谷歌搜索留痕排名
  • 搜索留痕
  • Google留痕收录
  • google搜索留痕
  • 数字币博彩网站
  • 足球投注平台
  • 博彩推广话术
  • 推广引流方法
  • 引流方法
  • 博彩推广话术
  • 网上博彩推广引流
  • 数字币赌场
  • 皇冠现金网
  • 蜘蛛池排名
  • 谷歌蜘蛛池
  • 留痕程序出售
  • google搜索留痕程序
  • 比特币网上赌场
  • 洗钱平台
  • 搜索留痕
  • 博彩推广方式
  • 网上博彩推广
  • 快速排名
  • 搜索留痕程序
  • bbin平台大全
  • 体育博彩公司排名
  • 留痕排名技术
  • 最新谷歌关键词排名
  • 推广渠道
  • 谷歌快速排名
  • 博彩推广
  • 世界杯赌球地址
  • 皇冠博彩公司
  • 谷歌排名出售
  • 博彩引流渠道
  • 搜索留痕程序
  • google搜索留痕
  • 引流渠道
  • 果敢网上赌场
  • 世界杯赌球
  • 搜索留痕方法
  • 博彩搜索留痕
  • 博彩引流
  • 博彩引流
  • 搜索留痕
  • 缅甸网上赌场
  • 欧洲杯赌球
  • 谷歌搜索排名
  • 留痕程序
  • 网上博彩推广引流
  • 留痕技术
  • 搜索留痕技术出售
  • 澳门威尼斯人网上赌场
  • 外围博彩
  • 博彩网站推广
  • 推广引流
  • 留痕程序出售
  • 谷歌推广引流技术
  • 推广引流方法
  • 美国在线赌场
  • 沙巴体育投注平台
  • 最新谷歌搜索留痕
  • 谷歌蜘蛛池排名技术
  • 网站推广方法
  • 留痕程序出售
  • 博彩推广方法
  • 菠菜论坛
  • 买球平台
  • 谷歌搜索留痕
  • 蜘蛛池排名
  • 博彩公司推广渠道
  • 谷歌搜索留痕
  • 博彩公司推广渠道
  • 真钱游戏
  • 网上赌球地址
  • 赌球平台推荐
  • 赌球网址
  • 博彩包网
  • 买球app
  • 澳门博彩公司
  • 威尼斯人赌场
  • 博彩平台推荐
  • 美国博彩网站
  • 缅甸实体赌场
  • 柬埔寨网上赌场
  • 柬埔寨在线赌场
  • 韩国博彩
  • 支持人民币的博彩公司
  • 世界五大比特币交易所
  • 欧易是哪个国家的
  • 中币跑路
  • 亚洲博彩公司
  • 合法网上赌场
  • 马尼拉赌场
  • 支持人民币的博彩公司
  • 大陆博彩平台
  • 澳门新葡京娱乐城
  • 老挝赌场
  • 世界赌场排名
  • 网上博彩公司排行
  • 菠菜论坛
  • 东南亚赌博网站
  • 虚拟币博彩
  • 澳门百家乐网址
  • 网上博彩导航
  • 区块链百家乐游戏
  • 马来西亚博彩公司
  • 越南赌场
  • 区块链百家乐
  • 香港娱乐场
  • 澳大利亚赌博网站
  • 足球赔率
  • 菲律宾网上赌场
  • 数字币博彩网站
  • 足球投注网站
  • 百家乐论坛
  • 皇冠体育博彩公司
  • 网上赌博网站
  • 网上博彩推广话术
  • 谷歌搜索快速方法
  • 网上博彩推广话术
  • 数字币赌场
  • 皇冠博彩公司
  • 世界杯博彩公司
  • 英国博彩公司
  • 网上博彩合法化
  • 新加坡赌场
  • 比特币网上赌场
  • 怎么洗钱
  • 加密货币博彩平台
  • 世界杯赌球网址
  • 网上赌球地址
  • 博彩推广方式
  • 印度尼西亚博彩公司
  • 国际包网
  • bbin平台直营
  • 亚洲体育博彩平台
  • 越南博彩公司
  • 百家乐路单
  • 澳门博彩官网
  • 博彩网推荐
  • 澳门太阳城网址
  • 百家乐网址
  • 世界杯赌球网址
  • 皇冠博彩网址
  • 洗钱方法
  • 买球网站
  • 欧洲杯赌球平台
  • 皇冠现金网
  • 外围赌球平台
  • 果敢赌场
  • 买球技巧
  • 全球最大博彩公司
  • 电子游艺
  • 真人电子游戏
  • 骰宝游戏规则
  • 亚洲体育博彩平台
  • 澳门在线赌场
  • 缅甸赌场地址
  • 赌球平台
  • 赌场如何赢钱
  • 世界杯买球网站
  • 真人牌九游戏
  • 世界杯买球官网
  • 时时彩平台
  • 六合彩预测
  • 威尼斯人网上赌场
  • 外围赌球网站
  • 赌博网址
  • 彩票群
  • 微信赌博群
  • 韩国首尔赌场
  • 赌钱游戏
  • 美国网上赌场
  • bbin官网
  • 沙巴体育官网
  • 博彩平台推荐
  • 数字币博彩网站
  • 比特币网上赌场
  • 世界赌场名单
  • 美国赌场攻略
  • 菠菜论坛排名
  • 菠菜论坛排名
  • 缅甸网上赌场
  • 支持人民币的博彩公司