1 牛角棋博弈软件设计
1.1 系统总体结构
根据牛角棋博弈系统的功能需求分析,将系统进行模块划分,系统总体功能结构如图1所示。
1.2 招法生成
招法生成模块提供了在局面中选出所有可行招法的功能,从而为正确地展开博弈树提供了支持。
1.2.1 牛角棋的数字化描述
为了让计算机下棋,首先就要将所有的棋局元素,包括棋盘、棋子、棋局、着法、规则、知识等通过数字化(编码)成为数据元素,而各种数据元素再以特定的关系构成相应的数据结构进行存储和处理。
牛角棋的棋盘和棋子编码如图2所示。12个棋位编码为0~11,红子用0表示,两黑子分别用1和2表示。这样初始棋局便可有两种形式的表示:
(1)棋位向量(0,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,2);
(2)棋子向量(11,10,0)。
1.2.2 招法的形式化描述
用表示红蓝3枚棋子在第n步时的棋位,第n步时刻的棋位向量的形式化描述为状态Sn:
式中qn+1为第n+1时刻的招法。
由于红子走子方向不受限制,可上可下,可横走,只能走向空位,不得跳跃。所以红方棋子可以表述为:
蓝方的棋子走棋方向受到限制,只能上不能下,可以横走,只能走向空位,不得跳跃。故蓝方的两枚棋子可以描述为:
1.2.3 预置表招法生成
预置表可看作一个可快速检索到满足某些简单条件的、预先生成的招法列表的知识库。
对照图2棋盘的编码方式,参照牛角棋的规则,一种预置招法表的设计方案如图3所示。
preTable是三维的预置表,其中的两个高维度分别代表了2个条件:
(1)棋子的颜色是什么;
(2)棋子处在什么位置上。
在明确上述两个条件的具体值之后,就可以获得全部可行着法的列表。由于预置表是频繁访问的数据,所以,预置表占用的空间不应太大,而且执行时应以能够载入内存为宜,所以针对具体棋类还须因地制宜地采用一些技巧。
1.3 搜索控制
在解决机器博弈问题中,搜索是机器博弈的核心,他控制着系统各个模块的调用,他效率的高低直接影响搜索的速度,是决定整个博弈系统棋力高低的首要因素。
首先,他调用招法生成模块,对当前局面产生所有可能的招法并将产生的招法保存到招法列表中。然后,判断当前局面是否有获胜方,如果有获胜方返回当前局面的估值;否则再判断是否是叶子节点,如果是叶子节点,调用估值模块对当前局面进行估值并将其返回;如果不是叶子节点则按照当前招法走一步棋并且调用自身将刚生成的节点展开,此过程一直持续下去直到分出胜负或者搜索到叶子节点。接着,按照走法将当前局面撤销,退到没有走棋时的局面。然后判断是否需要剪枝。以上过程反复执行,将庞大的博弈树一层一层展开以搜索最佳招法,并将其输出。
在NiosⅡ系统中,使用递归调用的方式来实现搜索算法,使用负极大值算法(Negamax algorithm),并且采用固定深度的深度优先搜索,同时配合α-β剪枝技术来搜索最佳招法。
1.4 局面评估
对叶子结点所对应的局面打分是估值函数的职责,通过对局面的量化值来表示局面的好坏,而博弈树的其他节点的值则通过算法从叶子节点返回得到。函数的输入是待评估的函数,输出是一个数值。
博弈树的叶子结点是需要调用估值函数加以估值的结点。而博弈树的中间结点和根节点的分值,均可利用极大极小原理从叶子节点的取值倒推出来。除了残局阶段,搜索树中的大部分叶子结点,都是未分胜负的结点,需要估值函数对该局面做出评价,并以数值的形式反映优劣程度。一般地,将所有特征的取值的加权和作为估值函数值。局面p的估值函数V(p),一般形式如下:
式中:fi表示特征;wi表示权值。
需要注意到是,对于负极大值算法中叶子节点的估值必须对那一方走棋敏感,评估模块设置使能信号,在搜索状态机发出评估使能信号后,评估模块立即对当前局面进行评估并在一定的延时后返回局面的评估值。如果评估使能信号无效,评估模块的输出保持在高阻态,不对局面进行评估。
2 牛角棋博弈系统硬件设计
本系统的处理器为NiosⅡ嵌入式软核处理器。NiosⅡ是Altera公司提出的数字系统SoPC解决方案,使得处理器可配置到可编程逻辑器件之中,因此被称为软核处理器。NiosⅡ软核处理器与常见的微控制器相似,它们都是在一个芯片上包含了处理器、存储器、以及输入/输出电路等功能模块。相对于微控制器,NiosⅡ软核处理器最大的特点为它是一种软核、可配置的系统。软核表示处理器的目标器件只有在下载设计文件后才具备处理器的功能;可配置意味着处理器系统的组成和性能可以根据需要进行调整。另外,系统还包含计时模块和PLL分频模块,硬件系统主要包括NiosⅡ快速型内核、SDRAM、三态桥(tristate bridge)cfi控制器、sysid和并行输入输出(pio)。对系统的各个模块添加和配置完成之后,可以使用SoPC Builder自动配置各个模块的的地址和系统的中断。
3 测试结果
该设计采用的开发板为A1tera公司的DE2 FPGA开发板,板上的FPGA为CycloneⅡ系列,芯片的型号为EP2C35F672C2。
SoPC系统配置完成以后,在原理图中将系统各个模块的硬件系统进行连接,生成硬件系统原理图。之后,对系统进行综合、时序分析等操作,完成硬件系统的调试。接着对FPGA的引脚进行锁定,然后将硬件系统全编译生成FPGA配置文件用于配置FPGA。在使用QuartusⅡ将SoPC系统硬件配置到FPGA之后即可在NiosⅡIDE中对系统的软件进行在线调试。
博弈树的搜索最大层数设置为15层,对系统重新进行编译成功以后将FPGA配置文件和软件一起下载到FPGA上进行验证,图4为验证过程中的一些局面。其中(a)为游戏开始时的局面,蓝方2枚棋子和红方棋子的棋位分别为11,10,0,图中显示的是十六进制,此时机器等待用户选择走棋方;(b)为游戏过程中的一个局面,此时蓝方2枚棋子和红方棋子的棋位分别为9,6,4;(c)是游戏结束时的局面,此时红子被蓝子憋在牛角尖处无法移动,蓝方获胜,LEDG7闪亮。
在SoPC系统中,设置的最大搜索层数为15层。从上面的结果可以看出,每个局面搜索时间最大为2 s,满足系统设计是的性能要求:最大搜索深度大于10层;每个局面最大搜索时间最大不超过3 s。针对系统的智能性和速度方面的测试结果如表1所示。选10个人每人做10次实验,共计100次实验,对实验结果进行综合分析得到数据如表1所示。
从上面结果可以看出:系统的智能性还有待提高,这主要是为了使系统搜索更快而降低搜索层数导致的结果。
4 结语
本文以牛角棋的博弈过程为研究载体,论述了机器博弈系统的设计和实现过程。实验结果表明本文方法具有较好的智能性和实时性。随着现代集成技术的发展,FPGA的规模和速度不断提高。更加丰富的逻辑资源和嵌入了RAM块,使得利用FPGA技术设计复杂度很高的棋类博弈系统(如中国象棋)成为可能。
上一篇:基于光电显示用透明导电膜及玻璃(ITO)的原理
下一篇:变频电源的功能种类介绍
推荐阅读最新更新时间:2023-10-17 15:14
Vishay线上图书馆
- 选型-汽车级表面贴装和通孔超快整流器
- 你知道吗?DC-LINK电容在高湿条件下具有高度稳定性
- microBUCK和microBRICK直流/直流稳压器解决方案
- SOP-4小型封装光伏MOSFET驱动器VOMDA1271
- 使用薄膜、大功率、背接触式电阻的优势
- SQJQ140E车规级N沟道40V MOSFET
- 英飞凌推出符合ASIL-D标准的新型汽车制动系统和电动助力转向系统三相栅极驱动器 IC
- 南芯科技推出80V升降压转换器,持续深耕工业储能市场
- 法雷奥与罗姆联合开发新一代功率电子领域
- 贸泽电子开售能为电动汽车牵引逆变器提供可扩展性能的 英飞凌HybridPACK Drive G2模块
- Vishay推出采用eSMP®系列SMF(DO-219AB)封装的全新1 A和2 A Gen 7 1200 V FRED Pt®超快恢复整流器
- Littelfuse推出高性能超级结X4-Class 200V功率MOSFET
- 恩智浦发布首个超宽带无线电池管理系统解决方案
- 非常见问题解答第223期:如何在没有软启动方程的情况下测量和确定软启动时序?
- Vicor高性能电源模块助力低空航空电子设备和 EVTOL的发展
- PC产业驶入创新超车道,英特尔蓉城撬动AI新引擎
- 与产业聚力共赢,英特尔举行新质生产力技术生态大会
- “新”享5G-A万兆网络前沿体验 高通携手产业伙伴亮相第二届链博会
- 英飞凌推出符合ASIL-D标准的新型汽车制动系统和电动助力转向系统三相栅极驱动器 IC
- 南芯科技推出80V升降压转换器,持续深耕工业储能市场
- 法雷奥与罗姆联合开发新一代功率电子领域
- 贸泽电子开售能为电动汽车牵引逆变器提供可扩展性能的 英飞凌HybridPACK Drive G2模块
- 德州仪器新型 MCU 可实现边缘 AI 和先进的实时控制, 提高系统效率、安全性和可持续性
- 瑞萨推出高性能四核应用处理器, 增强工业以太网与多轴电机控制解决方案阵容
- 研华全新模块化电脑SOM-6833助力5G路测设备升级