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

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

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

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

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

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

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

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

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

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

640?wx_fmt=png&wxfrom=5&wx_lazy=1

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

0?wx_fmt=gif&wxfrom=5&wx_lazy=1

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

步骤2:位置评估

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

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

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

640?wx_fmt=png&wxfrom=5&wx_lazy=1

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

0?wx_fmt=gif&wxfrom=5&wx_lazy=1

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

步骤3:使用Minimax搜索树

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

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

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

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

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

640?wx_fmt=png&wxfrom=5&wx_lazy=1

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

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

步骤4:α-β剪枝搜索

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

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

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

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

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

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

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

640?wx_fmt=png&wxfrom=5&wx_lazy=1

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

步骤5:改进评估功能

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

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

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

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

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

0?wx_fmt=gif&wxfrom=5&wx_lazy=1

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

结论

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

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

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

本文作者:王新民 
原文发布时间:2017-04-01 
相关文章
|
4月前
|
传感器 机器学习/深度学习 人工智能
【AI 现况分析】AI 如何落地到机器人技术上?
【1月更文挑战第27天】【AI 现况分析】AI 如何落地到机器人技术上?
|
10天前
|
机器学习/深度学习 人工智能 自动驾驶
【AI 初识】人工智能在机器人和自动化中的作用是什么?
【5月更文挑战第3天】【AI 初识】人工智能在机器人和自动化中的作用是什么?
|
17天前
|
人工智能 Ubuntu 机器人
AI电销机器人系统源码部署之:freeswitch安装Linux
在Linux服务器上安装FreeSWITCH的简要步骤:更新软件包,安装依赖(如build-essential,libssl-dev等),下载v1.10.7源代码,解压并配置,编译,然后运行`./bootstrap.sh -j`,`./configure`,`make`,`make install`。启动FreeSWITCH服务,配置SIP用户和路由,测试连接与通话,并确保防火墙打开SIP(5060)和RTP端口。注意,实际部署可能需按需求调整。
|
20天前
|
人工智能 机器人
【好玩AI】【Prompt】情人节了,用GPT写个【骂醒恋爱脑】的机器人跟自己对话吧
【好玩AI】【Prompt】情人节了,用GPT写个【骂醒恋爱脑】的机器人跟自己对话吧
38 0
|
20天前
|
人工智能 安全 机器人
AI电销机器人系统源码部署:freeswitch安装Windows
在Windows上安装FreeSWITCH:访问官网下载安装程序,运行并按提示安装;选择安装路径和组件;等待安装完成;配置FreeSWITCH,修改设置;启动服务;测试其功能;如遇问题,参考官方文档或进行调试故障排除。记得定期更新维护以保证稳定安全。
|
25天前
|
机器学习/深度学习 人工智能 机器人
[译][AI 机器人] Atlas的电动新时代,不再局限于人类运动范围的动作方式
波士顿动力宣布液压Atlas机器人退役,推出全新电动Atlas,旨在实现更广泛的实际应用。这款全电动机器人将拓展人类运动范围,解决复杂工业挑战。现代汽车公司将参与其商业化进程,作为测试应用场景。波士顿动力计划与创新客户合作,逐步迭代Atlas的应用,打造高效、实用的移动机器人解决方案。Atlas将结合强化学习和计算机视觉等先进技术,通过Orbit软件平台进行管理,未来将在真实世界中发挥超越人类能力的作用。
|
2月前
|
人工智能 机器人 芯片
英伟达最强 AI 芯片、人形机器人模型炸场!黄仁勋放言英语将成最强大编程语言
在2024年的GTC大会上,英伟达创始人黄仁勋揭幕了新一代AI芯片Blackwell,号称是史上最强AI芯片,目标是推动AI领域的重大进步。
|
2月前
|
人工智能 机器人 Go
人类发明及研究AI机器人是在作死吗?
生化武器、X战警,当时看电影时只是感觉电影很精彩,佩服导演的脑洞大,制作团队技术精湛。但自从 alpha go、chatGPT 越来越多的AI 场景被大众认知,越来越相信总有一天这个美丽的蓝色星球未来的主人会变成机器人,人类将不复存在。
43 3
|
3月前
|
人工智能 自然语言处理 机器人
自然语言开发AI应用,利用云雀大模型打造自己的专属AI机器人
如今,大模型层出不穷,这为自然语言处理、计算机视觉、语音识别和其他领域的人工智能任务带来了重大的突破和进展。大模型通常指那些参数量庞大、层数深、拥有巨大的计算能力和数据训练集的模型。 但不能不承认的是,普通人使用大模型还是有一定门槛的,首先大模型通常需要大量的计算资源才能进行训练和推理。这包括高性能的图形处理单元(GPU)或者专用的张量处理单元(TPU),以及大内存和高速存储器。说白了,本地没N卡,就断了玩大模型的念想吧。 其次,大模型的性能往往受到模型调优和微调的影响。这需要对模型的超参数进行调整和优化,以适应特定任务或数据集。对大模型的调优需要一定的经验和专业知识,包括对深度学
自然语言开发AI应用,利用云雀大模型打造自己的专属AI机器人
|
4月前
|
人工智能 自然语言处理 搜索推荐
ai智能机器人的话术设计思路可供参考(一)
设计AI智能机器人的话术是一个复杂而综合的过程,涉及多个方面的思考和决策。以下是一些设计思路,以确保AI智能机器人的话术能够实现最佳效果: 1. 用户导向:将用户放在设计的核心位置,充分理解用户需求,思考用户可能提出的问题和意图。通过分析用户的行为模式、关注点和痛点,设计对应的话术,提供准确、个性化的回答和解决方案。 2. 语境感知:通过使用自然语言处理(NLP)和上下文理解技术,让AI机器人能够感知语言及交互的语境。这样机器人就能更准确地理解用户的指令和问题,回答更具针对性和连贯性的内容,提升用户体验。 3. 逐步引导:当用户提出问题时,设计机器人的话术应该能够逐步引导用户提供更多的信息,以