基于java的五子棋人机博弈实现【字数:11428】
目录
摘 要 III
关键词 III
ABSTRACT IV
KEY WORDS IV
引言 1
1 绪论 1
1.1 研究背景 1
1.1.1 社会背景 1
1.1.2 五子棋背景 2
1.2 研究现状 2
1.3 研究目的 3
1.4 研究意义 3
1.5 本文工作 3
2 相关技术理论介绍 4
2.1 开发平台介绍 4
2.2 五子棋相关知识 4
2.3 传统评估函数原理介绍 5
2.4 极大极小值算法与αβ剪枝算法原理介绍 5
2.4.1 极大极小值算法 5
2.4.2 AlphaBeta剪枝算法 6
3 改进的五子棋人机博弈算法介绍 8
3.1 算法改进思路 8
3.2 优化后的综合人机博弈算法原理介绍 8
4 核心算法实现及性能比较 10
4.1 五子棋胜负判定算法实现 10
4.2 评估函数实现 11
4.2.1 基础棋型的定义 11
4.2.2 提取序列 13
4.2.3 判断棋型 13
4.2.4 计算点位棋型分值 13
4.2.5 计算总分值 13
4.2.6 获取全局估值表 13
4.3 剪枝搜索算法实现 14
4.4 机器人对弈的实现 14
4.5 测试改进前后算法性能 14
4.5.1 测试环境 14
4.5.2 测试方法 15
4.5.3 测试结果 15
4.5.4 测试结果分析 20
5 总结 20
致谢 21
参考文献 21
基于JAVA的五子棋人机博弈实现
摘 要
为满足用户在单人条件下进行高质量五子棋对弈的需求,本课题设计并实现 *51今日免费论文网|www.51jrft.com +Q: ^351916072^
了一款五子棋人机博弈Java程序。本程序采用Java语言编写,通过评估函数与极大极小值搜索算法的结合,对最优落点进行判断,并采用了Java Swing工具包对可视化界面进行设计与实现。
此程序中对五子棋人机智能的评估函数进行了优化,相较于传统的一维线性评估函数,该程序可以结合多方向的棋型进行综合评估,使其判断棋型优劣的准确性得到了提高,可以实现“双三”、“冲四”等制胜手段,此外增加了攻守权重的设计使人机拥有下棋“风格”的设定。另外,此程序采用了改进的αβ剪枝的方法对极大极小值搜索算法进行优化,有效提高了程序对最优解的搜索效率。
本程序的主要模块包括游戏模块、人机模块、用户模块。其中游戏模块主要实现五子棋对弈过程中所需的回合计时、棋谱记录、胜负判断、悔棋等相关功能;人机模块主要实现了棋型判别、棋型得分评估、最优落点搜索等功能;用户模块主要实现了用户进行开始、落子、认输等操作的功能。此外,本程序还包括可视化模块。本程序中,以游戏模块为核心,当程序启动后,游戏模块有序调用其他模块提供的接口,从而完整实现五子棋对弈的整个过程。
经过本人及多名志愿者的实际运行测试,该五子棋人机博弈程序具有较强的棋力,其中除了“激进”模式下人类在先手条件下更易获胜外,其它模式中人类均很难获胜;而若是机器先手,则无论何种模式人类均极难取胜。
目录
原文链接:http://www.jxszl.com/jsj/wljs/606887.html