【转载】基于蒙特卡洛猜牌-极大极小搜索-alpha-beta剪枝-AI斗地主

AI中的搜索(二)——对抗搜索(最小最大搜索Minimax、Alpha-Beta剪枝搜索、蒙特卡洛树搜索MCTS) AI中的搜索主要分为两大类:启发式搜索和对抗搜索 启发式搜索 https://blog.youkuaiyun.com/hxxjxw/article/details/105849145 对抗搜索 对抗搜索也称为博弈搜索 主要有三种搜索方法 最小最大搜索(Minimax Search) Alpha-Beta剪枝搜索(Pruning Search) 蒙特卡洛树搜索(Monte-Ca... 阅读详情

蒙特卡洛树搜索
全称 Monte Carlo Tree Search(MCTS),是一种人工智能问题中做出最优决策的方法,一般是在组合博弈中的行动(move)规划形式。它结合了随机模拟的一般性和树搜索的准确性。MCTS 受到快速关注主要是由计算机围棋程序的成功以及其潜在的在众多难题上的应用所致。超越博弈游戏本身,MCTS 理论上可以被用在以 {状态 state,行动 action} 对定义和用模拟进行预测输出结果的任何领域。

原文地址

一、程序设计

MCTS通过很多次模拟真实对局,当模拟的次数足够多,(利用大数定律)模拟后获得的最佳收益的节点,就接近于理论上真实的最佳收益节点。那么这个节点所包含的Action(行动)就是当前state(状态)下最佳的选择。以斗地主来为例,MCTS就是在当前各家手牌的情况下,在符合斗地主规则和出牌常规的情况下框定可选的行动,进行n次模拟对局,每次对局都执行不完全相同的行动,记录和更新每种行动带来的收益,最终选择收益最佳的行动(出牌、跟牌或不出)。

一般情况下MCTS适用于二人零和完全信息博弈游戏。然而斗地主是3人游戏,并且是非完全信息博弈游戏,MCTS能适用吗?
我们先来尝试简化这个问题。首先,如果斗地主是明牌的,在规则允许的情况下,每个玩家的可选行动对其他玩家都是透明的,那就变成了3人完全信息博弈游戏。其次,斗地主中3个人分为两派,可以将2个农民和1地主之间的博弈,看成2人零和游戏。这样来考虑之后,斗地主就变成了MCTS擅长的“二人零和完全信息博弈游戏”了,理论上应该是可以实现的。

MCTS循环
每一次MCTS树搜索分为4个步骤:
1.选择(selection):从非叶子节点中选择未完全扩展的节点进行扩展;如果叶子节点都已扩展,选择UCT最高的节点。
2.扩展(extension):
选择第一个未尝试的行动。
用这个行动创建一个新的MCTS节点。其中父节点为当前节点,游戏状态为执行行动之后的游戏状态,此行动作为节点引发的行动。
将扩展出来的新节点加入MCTS树上。
返回新节点。
3.模拟(simulation):推演游戏过程,最终返回游戏结果信息(一般包括游戏得分,胜方等)。
4.反馈(backpropagation):反向传播游戏结果,更新各节点的q和n。
重复进行以上4个步骤足够多的次数,就可以通过选择UCT最高的节点作为下一步行动。

二、效果实现

AI 对局

请添加图片描述

其他效果省略

三、核心算法

本次毕设系统在设计中,主要采用Nodejs html javascript css结合的方式实现前端扑克牌对局,其中Nodejs主要实现对局算法的实现以及接收界面端用户操作的数据,实现用户线上对局的总体功能点。

核心算法实现


class AI{
    
    
    constructor(param) {
    
    
        param = param || {
    
    };
        this.player = param.player;
        this.game = param.game;
    }
    classify(pokerList){
    
    
        pokerList.sort(this.sortFunction);
        if(pokerList.length===0){
    
    
            return {
    
    1: [],2: [],3: [],4: []};
        }
        let lastPoker = pokerList[0];
        let curList = [lastPoker]
围棋AI,蒙特卡洛树搜索 目录 一、AI算法 1.1蒙特卡罗方法(Monte Carlo method) 1.2. 蒙特卡洛树搜索(Monte Carlo Tree Search,MCTS) 1.3 Upper Confidence Bounds(UCB) 正文 1.1蒙特卡罗方法(Monte Carlo method) 像圆周率计算实验一样,用通过概率实验所求的概率估计来估计一个未知量,这样的方法统称为蒙特卡罗方法(Monte Carlo method)。 在现实世界中,大量存在一些复杂性过程,由于这类模型.. 阅读详情

相关推荐

人工智能作业 极大极小值和剪枝算法 tictactoe游戏

import copy import math # import sys # 导入sys模块 # sys.setrecursionlimit(3000000) # 将默认的递归深度修改为3000 import random X = "X" O = "O" EMPTY = None def Counter(board): CounterX = 0 CounterO = 0 CounterE = 0 ConuterList = [] # if termina.

weixin_52547624的博客 339

PHP实现蒙特卡罗算法(附完整源码)

PHP实现蒙特卡罗算法(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 234

蒙特卡洛树搜索:人工智能游戏的制胜法宝

蒙特卡洛树搜索由Rémi Coulom于2006年首次提出,作为围棋引擎Crazy Stone的核心组件。Crazy Stone在当时表现出色,引起了学术界的广泛关注。从宏观角度来看,蒙特卡洛树搜索的主要目的是:给定一个游戏状态,选择最有希望的下一步走法。在接下来的内容中,我们将详细探讨MCTS的工作机制,解释"最有希望的走法"究竟意味着什么。同时,我们也会不时回顾AlphaGo/Zero,说明DeepMind的AI系统采用了何种MCTS变体。

步子哥的博客 1605

斗地主AI代碼

愛玩棋牌斗地主機器人(AI)代碼,參考用!!!!

数据科学常见模型总结(二)-倾向性得分匹配模型

PSM的核心思想是从未受干预的用户群体中,找到和干预对象一模一样的用户,这样就可以把因果效应归因到干预上。

wudelong0112的专栏 4891

TSMaster如何用珠海创芯CAN卡实现高效CAN通信(附完整驱动安装指南)

本文详细介绍了如何使用TSMaster软件与珠海创芯CAN卡实现高效CAN通信,包括驱动安装、系统配置、ControlCAN.dll替换及TSMaster集成配置等关键步骤。通过实战指南和故障排除技巧,帮助工程师快速搭建稳定可靠的CAN通信测试环境,适用于汽车电子和工业控制等领域。

weixin_29201859的博客 481

Verilog仿真必备:FSDB dump命令全解析与实战配置指南

本文深入解析了Verilog仿真中FSDB波形记录的核心命令与实战配置技巧。针对大规模SoC验证场景,详细介绍了如何通过$fsdbDumpvars、$fsdbDumpfile等命令实现信号精准捕获、文件体积控制和动态启停,并提供了智能化的分层dump策略,帮助工程师在保证调试信息完整性的同时,大幅提升验证效率并有效管理波形数据。

cnn8visionary的博客 349

MPU6050模块DIY翻车实录:ID能读但数据全为零?原来是这个10uF电容惹的祸

本文详细记录了MPU6050模块调试过程中遇到的ID能读但数据全为零的问题排查过程。通过对比不同参考设计,发现CPOUT引脚10uF电容选择不当是导致数据异常的根源,更换为官方推荐的2.2nF电容后问题解决。文章为硬件开发者提供了宝贵的电路设计经验。

weixin_29158047的博客 319

SMR实战指南:从GWAS数据到eQTL分析的完整流程

本文提供了基于汇总数据的孟德尔随机化(SMR)实战指南,详细解析了如何从GWAS汇总数据出发,整合eQTL数据,完成从数据准备、BESD格式转换到最终SMR与HEIDI分析的完整流程。文章重点阐述了核心操作步骤、常见避坑技巧与结果解读,旨在帮助遗传学研究者高效掌握这一分析基因表达与复杂性状潜在因果关系的强大工具。

weixin_29246195的博客 1068

4.图像sensor的特性和驱动解析

例子:sensor驱动自己提供操作曝光时间的函数和获取曝光时间的函数,然后将这个函数注册到ISP库和3A算法库,3A算法库根据外部光照强度计算出一个Sensor曝光时间的设置值,ISP库得到这个设置值,然后通过Sensor之前注册的回调函数,把这个值设置到Sensor的硬件寄存器中去,实现整个过程。是为 ISP 配置正确的输入时序。(1)修改驱动源码(sambashar\Hi3518E_SDK_V1.0.3.0\package\mpp\component\isp\sensor\ar0130)

weixin_53762042的博客 3566

SCSA,scCATCH,SciBet,SingleR 四种注释方法比较

以下是和四种细胞类型注释方法的详细对比,从。

qq_40256654的博客 1215

Qt入门教程【Core篇】singal and slot信号与槽

Qt中信号与槽singal and slot

小鱼酱的博客 2449

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: 【转载】基于大数据架构实现景点游客数据分析平台,全国景点游客数据管理系统
下一篇: 【转载】基于Python+深度学习+神经网络实现高度可用的生活垃圾分类机器人程序
tinyfox_z
博客等级 码龄5年 26粉丝 3原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tinyfox_z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值