基于机器学习的五子棋人机对战系统的设计与实现毕业论文
2020-04-12 14:15:59
摘 要
此次设计旨在设计出一种能够在对战中学习提高的五子棋对战系统。希望能够改变人机对战中,电脑一成不变的下棋思路,从而使玩家获得更多的乐趣。系统的核心功能是人与电脑的五子棋对战以及通过对战而改变电脑在下棋时侧重的因素。在此基础上,添加了本地双人对战、调整游戏难易度(也就是电脑在选择棋路时的搜索深度)、保存棋谱以及载入棋谱等功能。使得游戏内容更加丰富。
论文是对整体设计的分析,系统编写使用的语言是cpp。系统在设计时主要分为三部分。首先是实现基础的五子棋对战功能,设计棋盘的界面,棋子的样式和落子的方式;通过代码编写,赋予系统判断胜负的能力,规定好五子棋的规则,使其能够按照我们设定的方式进行游戏。之后要教给电脑如何下五子棋,也就是通过各种条件,去判断在何种情况下,应将棋子下到哪个位置,通过研究各个棋子位置的优劣,比较之后加以选择。最后,要让电脑能在对战之后逐步提升对落子位置优劣的判断能力,已实现自我学习的功能。在主要功能基础上,让系统能够保存当前时刻的棋谱,并在之后载入进去,使得使用者能更方便的进行游戏。此次设计是在Visual Studio 2010上进行运行,设计的结果直接通过运行后的界面进行演示。在测试后,此次设计能良好运行,并能实现上述功能,设计具有一定使用价值。
关键词:五子棋;机器学习;cpp;VS2010
Abstract
This design aims to design a can enhance the learning in games gobang combat system. Hoping to change the way the machines play in games, and give the player more fun. The core function of the system is the gobang games between man and computer and to change the factors that the computer focuses on when playing gobang. On the basis of these, it added functions such as double players model, adjusting the difficulty of the game (that is, the search depth of the computer when selecting the path), saving and loading the chess manuals. Make the game more rich.
The thesis is an analysis of the overall design. The language used in the system writing is CPP. The system is designed in three parts. First is to realize the functions of gobang games, design of checkerboard, the style of the pieces and how they move s, by writing the code, giving the system the ability to determine the winner, the rules of the game, and allowing it to play the game inhuman’s way.And then you have to teach AI how to play the game, which is to determine where you're going to be in all sorts of conditions, and AI will determine where to go, by the strengths and weaknesses of the pieces of the position. Finally, to enable the computer to gradually increase the judgment ability of the position after the matches, the function of self-learning should be realized. On the basis of main functions, the system is able to save the current chess manuals, and then load them into the system, so that users can play games more conveniently. The design is designed to run in Visual Studio 2010, and the design results can be directly shown when it is running. After the test, the design can run well, and can achieve the functions. This design has a certain useful value.
Key words: gobang;machine learning;CPP;VS2010
目录
摘 要 I
Abstract II
第1章 绪论 1
1.1 研究的目的及意义 1
1.2 国内外发展历程概述与研究现状分析 1
1.3 本文主要的研究工作及章节安排 2
1.4 本章小结 2
第2章 五子棋软件总体设计方案 3
2.1 系统开发环境的确定 3
2.2 系统功能分析与划分 3
2.3 系统总体设计方案分析 3
2.3.1 界面设计方案分析 4
2.3.2五子棋游戏规则的设计 4
2.3.3AI的决策功能设计 4
2.3.4 AI的学习功能设计 5
2.4 本章小结 5
第3章 五子棋游戏的设计 6
3.1 定义五子棋基本规则 6
3.1.1 游戏胜利的定义方法 6
3.1.2落子功能的实现方法 7
3.2 双方执棋的选择 8
3.3 游戏界面的设计 9
3.3.1 棋盘棋子的设计 9
3.3.2 功能按钮界面的设计 10
3.3.3 数据信息的显示 11
3.4本章小结 11
第4章 游戏AI的设计 12
4.1 决策树的构建 12
4.1.1 构建决策树的思想 12
4.1.2 决策树的生成算法 12
4.2 分枝划分标准 13
4.3 搜索算法的方案设计 14
4.3.1 搜索算法的实现思想 14
4.3.2 最大最小值搜索方法 15
4.4 决策树的剪枝 15
4.4.1 预剪枝 15
4.4.2 后剪枝 16
4.5 决策判断依据的设计 16
4.5.1落子位置价值的确定 17
4.5.2 价值模块的实现 17
4.6 AI决策算法的实现 24
4.7 本章小结 25
第5章 学习功能模块 26
5.1 递归算法 26
5.2 学习功能算法的实现 27
5.3 本章小结 27
第6章 测试结果与分析 28
6.1游戏界面结果 28
6.1.1 游戏整体界面测试 28
6.1.2 各按钮功能的测试 28
6.2 游戏运行结果 30
6.3 记录历史功能检测 31
6.4 本章小结 31
第7章 总结设计工作 32
参考文献 33
附录A 部分程序代码 34
附录B 界面图 39
致 谢 41
第1章 绪论
1.1 研究的目的及意义
机器学习(Machine Learning,ML)是当今世界重点发展的技术,在各行各业都扮演着越来越重要的角色。计算机能在各种工作中极大提高工作效率并节省人力,人们自然就会想象由机器完全代替人完成工作的画面。而机器学习的发展,正在将这一想法推向可能。而alpha go与围棋大师李世石的激战,则证明了这一可能,同时也掀起了机器学习的热潮
机器学习是研究计算机如何实现人类般的学习行为的学科。学习的本质即是,通过外界环境向系统提供的信息,以这部分信息为蓝本,修改自己现有的知识库,提高解决相应工作的能力。而机器进行这种学习行为,所需要的就是构建外界信息改变内部知识库的方法。本文所涉猎的是较为基础的学习策略,直接将得到的信息转化为我们需要的部分进行利用。
五子棋容易上手且富有趣味性,许多人在闲暇之余能借此得到放松。本文的设计希望能将机器学习与五子棋联系起来,能在原有的五子棋AI搜索算法的基础上,加以改变,融入学习能力,从而让一个人游玩的时候也能享受到双人对战般的感觉。
在我们平时与电脑进行游戏时就会发现,我们如果每次都下在同一个地方,那么电脑也会进行不变的选择,如果玩家整局都与之前下的方式一样,那么玩家就会获得一个同样的胜利。改变电脑固定的下棋方法,能让玩家在游玩之时享受到更多的乐趣,更具变化性的对手与一成不变的木头人之间,孰优孰劣一目了然。
1.2 国内外发展历程概述与研究现状分析
机器学习其概念是从上世纪五十年代开始被提出,在那一时期,许多学者对机器学习的发展抱有极大的热情,但经过一段时间的发展,人们发现在起初取得一些成绩之后,只能在原地踏步,找不到进一步的方法使得人们的热情逐渐消逝。到了八九十年代,机器学习的热情又在逐渐被点燃,诸如随机森林等集成分类方法和概率图模型等成果的出现,使得机器学习得到了持续的发展。现在的机器学习正迎来了其发展的黄金时期,我国很多高等院校已经将机器学习作为一门课程供学生学习,足以见得国家发展机器学习的决心。
五子棋软件利用搜索算法已经能达到很高的水平,穷举出所有解决方案,选择其中的最优解,利用这种方式每一步都走最好的情况,或是计算未来几步的走法,综合考虑出最好的方案,不过其搜索深度越大,对计算机性能的要求越高,因为每多计算一步计算量就要成倍增加。剪枝算法使得五子棋软件趋于完整,解决了庞大的计算量的问题。而算杀算法,就是剪枝到极限,寻求直接计算至胜利的算法。可以说,五子棋软件的制作已经较为成熟。不过,本文希望能将机器学习融入到五子棋软件中,利用较新的技术,优化五子棋软件。
1.3 本文主要的研究工作及章节安排
五子棋软件的设计是此次设计的系统的基础,能良好的运行五子棋游戏是实现后续功能的保障。这次设计使用cpp语言,直接在电脑上显示界面,进行游戏。在此基础之上,设计出进行游戏的电脑AI,通过其搜索深度的不同,将难度分为容易,中等和难三个等级。之后实现,电脑调节权重的功能。最后将棋谱等功能加入进去。
本文包含以下几个章节:
- 介绍了本文的课题背景,对国内外发展历程与研究现状进行了简要的叙述,总结了本文主要的研究工作,并说明了本文的章节安排。
- 提出本文设计的实现功能、各个部分的功能和设计思路。
- 设计五子棋的基础功能,包括界面设计,五子棋规则,黑子白子的选择等。
- 设计进行游戏的AI,搜索树的设计以及难度选择。
- 设计学习功能模块。
- 调试结果与分析
- 总结毕业设计工作
1.4 本章小结
本章介绍了本文的课题背景,对国内外发展历程与研究现状进行了简要的叙述。通过查阅的文献资料,对机器学习进行了解;分析五子棋系统的实现方法,找出现有的不足,总结了本文主要的研究工作;对设计的工作过程进行一个简单的概述,勾勒出本文的章节安排。
第2章 五子棋软件总体设计方案
通过上一章的分析,对当前的类似系统功能、发展现状有了一定的了解,本章具体分析该系统具体所要实现的功能并确定各功能部分的划分,为之后的编写奠定基础。
2.1 系统开发环境的确定
本次设计所使用的语言为cpp,在Visual Studio软上运行。其为一个完整的开发工具集。微软开发这项产品拥有计算能力强,灵活高效,代码管理能力强等优点,并且对于C 语言较为友好,使得本次设计能够更轻松的进行。
2.2 系统功能分析与划分
了解五子棋规则,以及国内外发展历程与现状,最终确定此次设计需要实现以下功能。
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示:
课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。