五子棋AI:实现逻辑与相关背景探讨(上)bu

news/2024/9/20 5:12:08/文章来源:https://www.cnblogs.com/westworldss/p/18401620

合集 - 五子棋AI:遗传算法(1)1.五子棋AI:实现逻辑与相关背景探讨(上)09-07收起

绪论

本合集将详细讲述如何实现基于群只能遗传算法的五子棋AI,采用C++作为底层编程语言
本篇将简要讨论实现思路,并在后续的文中逐一展开

了解五子棋

五子棋规则


五子棋是一种经典的棋类游戏,规则简单却充满策略性。游戏在一个19×19的棋盘上进行(也可以使用13×13或15×15的棋盘)。游戏的目标是率先在棋盘上连成五个相同颜色的棋子(横向、纵向或斜向)。

基本规则:

  1. 棋子:游戏使用两种颜色的棋子,通常为黑白两色。
  2. 落子:玩家轮流在棋盘上放置自己的棋子。
  3. 胜利条件:第一个在直线上(横向、纵向或对角线)连成五个棋子的玩家获胜。

五子棋操作简单,规则易懂,但需要很高的策略和技巧才能赢得比赛。

人类玩家是如何下五子棋的?

以下是一些五子棋对决的思路:

控制中心区域

  • 中心位置的重要性:棋盘中心的控制对游戏至关重要。控制中心区域可以给你更多的机会去创建和阻止对方的五子连线。

创建威胁

  • 连线威胁:尽量让对方必须防守而不能专注于自己的进攻。
  • 双活三:如果形成两个三子连线,并且这两个连线不会被对方轻易阻挡,就能够在几步内取得胜利。

防守对方的连线

  • 观察对方的棋子布局:注意对方棋子的排列,尤其是对方试图形成的三子、四子连线。
  • 及时阻挡:如果对方有连续的三子或四子的排列,应该优先阻挡对方的连线。

预判对方策略

  • 猜测对方意图:了解对方的策略,预测对方的下一步棋,提前做出相应的防御或进攻。

AI应该如何模仿?

为了让AI棋手学会下五子棋,甚至超越人类玩家的水平,首先应当有以下步骤:

  1. 理解棋盘信息:将棋盘的状态转换为程序能够处理的格式。这通常包括将棋盘上每个位置的状态(如空白、黑子或白子)编码为特定的数据结构,以便程序可以进行分析和处理。
  2. 设定行为集合:定义AI可以执行的操作范围。在五子棋中,AI可以在棋盘上任意未被占据的位置落子。
  3. 设定决策模式:确定AI的决策方式。本例中,AI采用贪心策略,即在每一步中选择预期回报最高的行动。贪心策略通过评估每个可能的落子位置的即时收益,选择对当前局势最有利的行动。

理解棋盘信息

理论上来讲,能够给AI提供的信息越多,那么AI做出的决策质量就越高,对于棋盘信息可以以格子为单位,评估该格子对于己方、和敌方的价值。

举例来说,如果在此处落子,敌方可以构成五子连珠,那么对于地方而言这是非常高价值的格子,那么在己方回合,当务之急是在此处落子,阻止对方胜利,除非在其它位置落子己方可以胜出。

对此,我们可以对棋盘上每一个可行位置进行打分,评估其对于己方、敌方的价值。

如何定义该位置对己方的价值?


一枚棋子可以在四个方向上与其它棋子连成五子,即:水平、竖直、对角线、主对角线

description
可以采用如下方法判断在某一具体方向上的价值

  1. 在四个方向中选择某一方向
  2. 向正方向、负方向分别查找4格,如遇到空格或敌方棋子则提前停止
  3. 统计己方棋子个数,以及两端的被遮拦情况。

例如对于下图,在该处落子后,形成水平方向上的两子连珠,且一端有遮拦一端无遮拦

description
一共可能形成如下几种情形,我们可以依据经验公式评估其价值。

子数 1子 2子 3子 4子 5子
无遮拦 MAX
一端遮拦 - -
两端遮拦 - - - -

'-' 表明该位置在该方向上具有的价值较低,不予考虑。然而,如果其他方向上的情况更有利,那么该位置的价值仍然可能非常高。。

接下来,我们可以讨论棋子在多个方向上的价值,一般来说,仅需要考虑最高价值的两个方向。

这是因为两个活三(无遮拦的三子连珠)足以致胜,三个活三并没有明显优势。

价值 最优方向 次优方向
Lv1 MAX ?
Lv1 ?
Lv2
Lv3
Lv3 -
Lv4
Lv4 -
Lv4 - -

“?” 指代任意情况,例如(MAX-?)对应了(MAX-MAX)、(MAX-①)、(MAX-②)、(MAX-③)、(MAX-'-')

该定义方式将行为的优先级分为了四个等级

  • Lv1:下子直接取胜,或在一回合内取胜。
  • Lv2:下在大概率在若干回合内取胜。
  • Lv3:能够迫使对方一直防御。
  • Lv4:收益较低。

如何综合攻防?


若要综合攻防,必须将具体位置对敌方的价值考虑进去。倘若某一位置对敌方来说是高价值的,那我们在此处落子可以破坏敌方阵型,削弱敌方价值,同样我们可以给出如下价值表

综合价值排序 己方价值 敌方价值 对应的奖励数值
1 Lv1 ? 220
2 ? Lv1 216
3 Lv2 ? 212
4 Lv2 28
5 Lv3 24
6 Lv4 20

“?” 指代任意情况,例如(Lv1-?)对应了(Lv1-Lv1)、(Lv1-Lv2)、(Lv1-Lv3)、(Lv1-Lv4)
在进行判断时,应当从上往下逐一判断。

这里给出的奖励数值仅供参考。

总结


在本小节中,我们精心构建了一种全新的综合评估方法,旨在全面衡量棋盘上的每个格子对于己方和敌方的战略价值。通过设计一系列精细的量化指标,我们赋予了AI/计算机深入解读棋盘格局的能力,使其能够准确判断每个格子的具体价值。这一方法为AI/计算机制定决策提供了坚实的数据支撑。

行为集规定与决策制定

为了使AI做出高效的决策,我们首先需要定义一套合适且简洁的行为集合。这意味着AI在做出选择时,不必每次都逐一考虑棋盘上的所有位置。在此基础上,我们需要开发一种策略,帮助AI从众多可能的决策中筛选出最为恰当的一个。通过这种方式,AI能够在复杂的环境中迅速而准确地做出最佳决策。

ROI 感兴趣区域


倘若上一轮你在棋盘中心落子,那么下一轮你不应当在棋盘的最角落落子。

一般来说,在落子时,只有与已有棋子(无论是己方还是敌方)邻接的位子才具有价值,首先我们定义邻接。

考虑棋盘上只有一子的情形,规划出与其具有高价值“联动”的区域如下:

description
可以给出更具体的定义:

倘若一个格子位于另一格子的水平、竖直、主对角线或副对角线方向上,并且两格子距离小于等于2,那么称这两个格子为邻接关系。进一步的,称距离为1为强邻接,距离为2为弱邻接。

进一步的,我们定义感兴趣区域如下:

满足以下要求之一的空格子为感兴趣区域:

  1. 该格子是棋盘正中心
  2. 该格子与至少一个己方棋子所处格子存在邻接关系。
  3. 该格子与至少一个敌方棋子所处格子存在强邻接关系。

下图给出了己方落子ROI区域的示例,其中红色为己方棋子,蓝色为对方棋子,灰色表示感兴趣区域。
description

决策进行


在进行决策前,我们可以评估感兴趣区域中所有格子的价值,假定ROI中格子的个数是N,格子的价值分别是x0,x1,...,xN−1,我们可以采用下述两种方法选择决策

硬最大值 hardmax

选择奖励最大的决策,即

h(x)=arg⁡maxixi软最大值 hardmax
不同于硬最大值,软最大值以一定几率接受非最优解,其包含一个常量K,常量K越大表示对低价值决策的接受程度越大,当常量K→0时,软最大值退化为硬最大值;当常量K→+∞时,软最大值退化为随机抽取

softmax(xi)=exi/K∑j=1Nexj/K### 结语

下一篇中我们将继续讨论如何训练AI。

在最后,给出一个流程图供大家参考,在后文中我将详细讨论。

description
本博客参考veee加速器。转载请注明出处!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/793599.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[nacos] Nacos 3 应用场景及高频问题(FAQ)

场景:指定NACOS注册中心中spring cloud微服务应用的IP spring:cloud:nacos:discovery:ip: 127.0.0.1修改完成、并重启服务之后在nacos查看的地址如下:场景:curl请求NACOS常用功能接口测试版本nacos-client : 2.0.3 nacos-server : 2.1.2推荐文献https://nacos.io/zh-cn/docs…

ios16.2版本以上mui的picker选择器显示异常的修复方案

问题描述 mui picker ios16.2系统及以上,选择器滚动错误错乱,显示异常但是可以正常选择用多个ios手机测试了,凡是升级到16.2及以上的均会产生这个的问题。使用官方的示例,放到升级到16.2的ios手机上测试,问题同样存在https://www.dcloud.io/hellomui/examples/picker.html…

解决升级到 Delphi 12 后遇到 SQLite 不兼容的问题

今天升级到 Delphi 12 后,编译运行原来的项目,出现“[FireDAC][Phys][SQLite][sqlite3]-303.Capability is not supported”的错误。经过查找文档,发现是FireDAC SQLite 版本更新导致的。RAD Studio 12.0 支持 SQLite 3.42,同时保留了使用 FireDAC 加密(FDE)的 SQLite 3.…

远程下载上传命令(绕过大小限制)

远程下载上传命令(绕过大小限制) python起http服务python3 -m http.server 5003python2 -m SimpleHTTPServer 5003 上传时遇到限制上传大小时: 编码base64:certutil -encode yb.exe 1.txt可以把1.txt拆成三个txt,分块上传后,再使用 copy c:\*txt c:\123.txt //把c盘根目…

[C#基础2/21] C#注释与文件结构

Notion原笔记页面 1. 注释C# 支持两种不同形式的注释。 单行注释以 // 开头,并在该代码行末尾结束。 多行注释以 /* 开头,以 */ 结尾。 下面的代码示例演示了每种注释: // This is a single line comment./* This could be a summary of all thecode thats in this class.Yo…

中位值,不能用平均值

北京平均工资出炉啦!这些职业收入最高! 北京生活 近日,北京人社局发布了 《2024年北京市人力资源市场 薪酬状况报告(二季度)》 咱们打工人赶紧了解一下 北京的薪酬水平 在找工作的时候也好有个参考 北京2024年人力资源市场薪酬状况报告(二季度)8月31日,北京市人社局…

发布页说明(必看)

作为一枚INFJ的大学生,有时候比较忙(呜呜),博客园更新可能不太及时 最新的笔记可以在星途-Notion笔记看到 如果你有好的建议或者学习路线,文章纠正等等balabala,或者想讨论游戏开发相关的技术,亦或是闲聊,欢迎发送邮箱至starrytracesky@outlook.com群星的轨道终将交汇.…

[nacos] Nacos 1 架构与原理

1 NACOS 架构与原理 架构推荐文献https://nacos.io/en-us/docs/architecture.html基本架构逻辑架构服务管理:实现服务CRUD、域名CRUD、服务健康检查、服务权重管理等。 配置管理:实现配置的CRUD、版本管理、灰度管理、监控管理、推送轨迹、聚合数据等。 元数据管理:提供元数…

真人模特失业?AI虚拟试衣一键成图,IDM-VTON下载介绍

在电商行业竞争尤为激烈的当下,除了打价格战外,如何有效的控制成本,是每个从业者都在思考的问题 IDM-VTON是一个AI虚拟换装工具,旨在帮助服装商家解决约拍模特导致的高昂成本问题,只需一张服装图片,就可以生成各种身穿该服装的模特,大大简化了传统的产品展示过程 IDM-VT…

用空间清理调理风13重要物品14别人的杂物15杂乱与风水符号学

13 重要物品 在清理杂物时,别忘了大件东西。你一直讨厌的那件可怕的旧家具、堵塞客厅的三角钢琴、你从来不用的卷起来的地毯、后院生锈的汽车、角落里积满灰尘的十年前瑞士奶酪植物。 有些东西非常大,搬动它们是一项挑战,所以你要学会看穿它们的艺术,就像它们不再存在一样。…

秸秆禁烧烟火识别系统

秸秆禁烧烟火识别系统一旦检测到烟雾,秸秆禁烧识别系统将自动监测监控画面中是否存在秸秆焚烧处理,不用人工干涉。当秸秆禁烧烟火识别系统监测到火苗时,系统会自动报警,通知监控管理中心,提示相关人员及时处理。与此同时,将警报截屏和视频保存到数据表中,自动汇总。秸秆…