基于java的五子棋人机对战系统及机器学习【字数:10877】
目录
摘要 1
关键字 1
Abstract 1
Key words 1
引言 1
1 开发工具与环境准备 2
1.1 工具介绍 2
1.1.1 JavaFX 2
1.1.2 Gym 3
1.1.3 Tensorflow 3
1.2 预先准备(黑体小四号) 3
2 人机五子棋对战系统 3
2.1 界面设计 3
2.2 算法介绍 3
2.1.1 极大极小值搜索(Minimax算法) 3
2.2 算法的代码实现 6
2.2 五子棋的价值评估 7
2.3 五子棋系统实现 7
2.3.1 Piece类 9
2.3.2 ChessBoard类 9
2.3.3 Robot类 13
2.3.4 Main类 14
2.4 系统及功能展示: 15
3 机器学习 16
3.1 机器学习及相关技术介绍 16
3.1.1 强化学习 17
3.1.2 Q learning算法 17
3.1.2 Deep Q Network算法 18
3.2 五子棋环境编写 19
3.3 DQN网络建立 22
3.4 智能体训练 26
3.5 *景先生毕设|www.jxszl.com +Q: @351916072@
结果分析 29
3.6 MCTS与深度学习的改良 29
4 成果与展望 29
基于Java的五子棋人机对战系统及机器学习
信息与计算科学 李逸扬
引言
Gomoku;JavaFX;Maximum and minimum search;Machine Learning
引言
下棋在人类历史上有着举足轻重的地位,各种棋类的发展更是凝聚了历代棋手的智慧与心血,自然也成了人工智能的挑战之一,同时成为了人工智能发展的标志。
早在第二次世界战争还没结束时,计算机科学图灵就研究计算机下棋,于1947年编了第一个下棋程序。
后来有很多计算机领域从业者投身到人工智能下棋的研究中来,如20世纪80年代末加拿大阿尔伯塔大学的跳棋程序 Chinook;贝尔实验室的专用象棋机器 Belle。而真正让世人了解人工智能的是Deep Blue深蓝,1997年5月11日,“深蓝”对阵卡斯帕罗夫,并成为了第一位战胜当时世界冠军的机器。
让当代人更加切身认识AI的则是近年来与围棋选手的对战,包括中国著名选手柯洁。
AlphaGo是由谷歌旗下的DeepMind团队开发的利用深度学习研究围棋的人工智能,围棋一直被认为是人类脑力中一块不可击败阵地,因为其棋盘之大,棋型之多变让计算机望而却步,即使是十年前的人工智能也只能达到围棋刚懂规则的小朋友的水平,因此当AlphaGo打败人类职业围棋选手李世石,同时也是一位围棋冠军时,一个击败人类职业围棋选手、第一个战胜围棋世界冠军的人工智能机器人,立刻获得了极高的关注。
2016年3月,AlphaGo与围棋世界冠军、职业九段棋手李世石进行围棋人机大战,以4比1的总比分获胜;2016年末2017年初,一位名叫“Master”的账号在中国围棋网上注册,与中日韩数十位围棋高手进行快棋对决,连续60局无一败绩,正如很多人推测的一样,这位“Master”便是AlphaGo;2017年5月,在中国乌镇围棋峰会上,它与排名世界第一的世界围棋冠军柯洁对战,以3比0的总比分获胜。围棋界公认AlphaGo的棋力已经超过人类职业围棋顶尖水平,在GoRatings网站公布的世界职业围棋排名中,其等级分曾超过排名人类第一的棋手柯洁。
2017年5月27日,在AlphaGo与柯洁的人机围棋大战落幕后,DeepMind队宣布AlphaGp将退出围棋比赛。2017年10月18日,DeepMind团队公布了另一款更强的围棋人工智能,代号AlphaGo Zero。它能够搜集大量围棋对弈数据和名人棋谱,学习并模仿人类下棋,通过自我博弈的方式进步,令世人更为震惊。如今,DeepMind已向更加现实的领域进军,把人工智能与机器学习利用到诸如医疗、城市建设等领域。
而在国内,2006年8月,中国人工智能学会联合其他学会和有关部门,在北京举办了“庆祝人工智能学科诞生50周年”大型庆祝活动。在活动上,东北大学研制的“棋天大圣”象棋软件获得机器博弈冠军;“浪潮天梭”超级计算机以11:9的成绩战胜了中国象棋大师。这些赛事的成功举办,彰显了中国人工智能科技的长足进步,也向广大公众进行了一次深刻的人工智能基本知识普及教育。
未来的AI一定不止停留在下棋上,它一定会被广泛的运用在现实世界的各行各业比如最近火热的无人驾驶、远程医疗以及图像、语音识别这种真正意义上的非完全信息类的真实环境里。在真实世界,AI遇到的问题错综复杂,很难找到一个统一的规则、统一的函数就能帮助其理解环境并作出相应的行为。棋牌只是人工智能非常早期的演练而已,是一个测试智能算法的很好的试验地。
原文链接:http://www.jxszl.com/jsj/jsjkxyjs/562878.html