只需五步!手把手教你搭建国际象棋AI机器人

简介:
本文来自AI新媒体量子位(QbitAI)

在编程之前,我们先了解一些基本的概念,来帮助我们创建一个简单的象棋AI机器人:移动生成、棋局评估、最大最小搜索和α-β剪枝搜索过程这四个概念。

在每个步骤中,我们将会在已有的程序上加入上述经典的象棋编程优化技术,来进行改进我们的象棋机器人。同时我会向大家演示各种优化参数是怎么影响算法的下棋风格和计算速度的。

作者Lauri Hartikka提到:“我已经无法战胜我创造出来的象棋机器人。我觉得导致这个结果的原因不是因为我下棋技术太烂,就是算法已经足够优秀。”

步骤1:移动生成和棋局可视化

我们将使用chess.js库实现移动生成功能,并使用chessboard.js来可视化棋局。chess.js库基本上实现了象棋的所有规则。基于这个应用库,我们可以在给定某个棋局状态下计算出所有合法操作。

图1:对移动生成功能进行可视化:起始位置作为输入,输出是该棋局的所有可能移动.

使用这些库将有助于我们专注于最核心的任务:创建找到最佳走法的算法。接下来先创建一个函数,该函数能从棋局中所有可能的移动中返回一个随机移动的结果。

虽然加入这个函数的机器人还不是一个高超的象棋玩家,但这是一个很好的开始,因为我们已经可以与其进行对战。

图2:黑色方块代表下一步所有的合法移动

步骤2:位置评估

现在我们来试试看一下在确定位置上双方的哪个棋子具有更高的评估强度。实现这一点的最简单的方法是使用下表来计算棋局中的相对强度。

通过这个评估表,我们可以创建一个算法,能够让棋子选择具有最高评估分数的移动方向。

目前已经有了不错的进展,因为我们的算法现在已经可以尽可能吃掉对方的棋子。

图3:借助简单的评估功能,双方进行游戏

步骤3:使用Minimax搜索树

接下来,我们要利用Minimax(极大极小)搜索树算法,它可以从多种选择中确定最佳方法。

在该算法中,能将递归树的所有可能移动探索到给定深度,并且在递归树的子节点处评估该位置的好坏。

之后,我们将子节点的最小值或最大值返回给父节点,父节点通过下步将移动白棋还是黑棋来选择合适值。也就是说,我们试图尽可能地减少或最大限度地提高每一级的评估值。

图4:在人为选择位置时,可视化极大极小算法。白棋的最佳走法是b2-c3,此时能够达到评估为-50的位置

通过加入极大极小算法,我们的算法了解象棋的基本策略。

评估极大极小算法的有效性,在很大程度上取决于计算性能可以实现的搜索深度。我们接下来的工作是通过优化算法来加大搜索深度。

步骤4:α-β剪枝搜索

α-β剪枝搜索是极小极大算法的一种优化方法,允许我们忽略搜索树中的一些分支,这有助于我们在使用相同的计算资源时更深入地评估极大极小搜索树。

α-β剪枝搜索的原理是是如果我们找到比已经发现的动作更糟糕的情况,那我们可以停止评估搜索树那一部分的情况。

α-β剪枝搜索不会影响极大极小算法的结果,而是大大加速其计算过程。

如果我们碰巧刚开始就得到了产生最优操作的路径,那么α-β剪枝算法也更有效。

图6:我们不需要关注使用α-β剪枝搜索所删去的分支,以及是否按照规定顺序访问搜索树

使用α-β剪枝搜索,我们可以显着提升极大极小算法的计算速度,如下例所示:

图7:如果我们要执行深度为4的Minmax算法,使用α-β剪枝的优化算法和正常算法所需要评估的位置数

步骤5:改进评估功能

初始的评估功能非常简单,因为我们只能计算在棋局上发现的信息。为了改善这一点,我们将棋子的位置也作为评估的一个因素。在实际情况中,棋盘中心的棋子比棋盘边缘的棋子更好,因为它有更多的选择,显得更加活跃。

我们将使用在维基象棋编程中提出的一种棋子价值表。

图8:对棋子价值表进行可视化,我们可以根据棋子的位置减少或增加评估值。

通过如上改进,我们已经获得了象棋机器人,至少已经能够与业余玩家进行对战了。

图9:加上评估方法和α-β剪枝优化的极大极小算法表现,设置搜索深度为3。

结论

对于一个简单的象棋机器人,它的优点是不会产生愚蠢的错误操作。但是它仍然缺乏对象棋的战略性理解。

通过上面介绍的方法,我们能够创建一个象棋机器人,可以和你一起玩象棋。最终的实现代码只有200行,这意味着这个算法的基本概念实现起来非常简单,你可以在GitHub上查看象棋机器人的最终版本。

我们还可以对这个算法进行深入的改进,例如移动排序、更快的移动生成和对残局的具体评估等。如果您想了解更多关于象棋机器人的信息,请查看维基上象棋项目程序,去探索更多关于搜索算法的优化程序。

本文作者:王新民 
原文发布时间:2017-04-01 
相关文章
|
5月前
|
人工智能 安全 机器人
无代码革命:10分钟打造企业专属数据库查询AI机器人
随着数字化转型加速,企业对高效智能交互解决方案的需求日益增长。阿里云AppFlow推出的AI助手产品,借助创新网页集成技术,助力企业打造专业数据库查询助手。本文详细介绍通过三步流程将AI助手转化为数据库交互工具的核心优势与操作指南,包括全场景适配、智能渲染引擎及零代码配置等三大技术突破。同时提供Web集成与企业微信集成方案,帮助企业实现便捷部署与安全管理,提升内外部用户体验。
611 12
无代码革命:10分钟打造企业专属数据库查询AI机器人
|
6月前
|
人工智能 自然语言处理 安全
AI尝鲜:dify搭建AI对话机器人
本实验介绍如何在Dify中设置知识库并创建智能应用作为对话机器人,实现AI对话功能。例如查询电动汽车电池过充电保护试验的环境温度条件。实验步骤包括:一、安装Dify并通过计算巢部署;二、设置模型供应商,选择通义千问并配置API KEY;三、创建知识库,导入文件并设置文本分段与清洗规则;四、创建智能体,添加知识库和模型;五、与智能体对话,测试查询功能。通过这些步骤,您可以构建一个基于专有知识库的AI对话系统。
|
2月前
|
人工智能 机器人 Serverless
安诺机器人 X 阿里云函数计算 AI 咖啡印花解决方案
当云计算遇见具身智能,AI咖啡开启零售新体验。用户通过手机生成个性化图像,云端AI快速渲染,机器人精准复刻于咖啡奶泡之上,90秒内完成一杯可饮用的艺术品。该方案融合阿里云FunctionAI生图能力与安诺机器人高精度执行系统,实现AIGC创意到实体呈现的闭环,为线下零售提供低成本、高互动、易部署的智能化升级路径,已在商场、机场、展馆等场景落地应用。
安诺机器人 X 阿里云函数计算 AI 咖啡印花解决方案
|
2月前
|
机器学习/深度学习 人工智能 机器人
AI Compass前沿速览:Nano Bananary、MCP Registry、通义DeepResearch 、VoxCPM、InternVLA·M1具身机器人
AI Compass前沿速览:Nano Bananary、MCP Registry、通义DeepResearch 、VoxCPM、InternVLA·M1具身机器人
|
2月前
|
人工智能 Java 机器人
基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API
Spring AI Alibaba集成Ollama,基于Java构建本地大模型应用,支持流式对话、knife4j接口可视化,实现高隐私、免API密钥的离线AI服务。
1805 1
基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API
|
7月前
|
人工智能 算法 数据可视化
机器人训练师狂喜!Infinite Mobility:上海AI Lab造物神器1秒生成可动家具,成本只要1分钱
上海AI Lab推出的Infinite Mobility采用程序化生成技术,可高效生成22类高质量可交互物体,单个生成仅需1秒且成本低至0.01元,已应用于机器人仿真训练等领域。
291 2
机器人训练师狂喜!Infinite Mobility:上海AI Lab造物神器1秒生成可动家具,成本只要1分钱
|
2月前
|
存储 人工智能 监控
LangGraph实战:从零构建智能交易机器人,让多个AI智能体像投资团队一样协作
如今的量化交易已远超传统技术指标,迈向多智能体协作的新时代。本文介绍了一个基于 **LangGraph** 构建的多智能体交易系统,模拟真实投资机构的运作流程:数据分析师收集市场情报,研究员展开多空辩论,交易员制定策略,风险团队多角度评估,最终由投资组合经理做出决策。系统具备记忆学习能力,通过每次交易积累经验,持续优化决策质量。
571 8
LangGraph实战:从零构建智能交易机器人,让多个AI智能体像投资团队一样协作
|
2月前
|
存储 人工智能 机器人
科技云报到:西湖大学、智元机器人都选它,存储成为AI下一个风口
科技云报到:西湖大学、智元机器人都选它,存储成为AI下一个风口
106 1
|
3月前
|
存储 人工智能 机器人
别再只做聊天机器人:AI 应用商业闭环的工程落地指南,免费体验中
本文介绍了如何通过阿里云百炼平台创建一个星座运势分析AI智能体,并集成支付宝MCP服务实现支付闭环。解决AI产品无法直接变现的问题,完成“服务-支付-交易”全流程闭环,帮助开发者快速实现商业化。
|
4月前
|
人工智能 弹性计算 运维
通勤路上修故障?钉钉机器人+ OOS AI 助手实现 7×24 小时运维自由
通过钉钉机器人配置阿里云 OOS AI 助手,您可以直接在钉钉群内发送文字指令,实现免登录、跨设备、秒级响应的阿里云运维操作。

热门文章

最新文章

下一篇
oss云网关配置