计算机(软件)学院
人工智能大作业项目报告
人工智能五子棋
姓 名:
专 业:计算机科学与技术
指点教师:
日 期:
目录1、项目背景··················································12、所用技术··················································13、项目整体介绍·············································2(1)项目核心 - 知识的推理、搜索技术与可视化················2(2)项目外围 - 自然语言处理、分词与滚动词云················24、项目核心算法介绍·········································35、项目成果··················································46、课程总结··················································7
项目背景 本学期人工智能导论课程的重点知识点重点包含:知识的暗示与推理、搜索技术、设备学习、互联网智能、自然语言处理等几个重点方面,为了充分表现半学期败兴学习的知识,将所学知识初步应用于实践之中,这次课程的最后大项目咱们选取做基于人工智能的五子棋对战系统,重点集中于博弈推理模块,力求让人工智能在博弈过程中有最好的表现。同期,咱们还兼顾了自然语言处理,动态可视化的对弈过程,滚动术语词云等技术,恰当地应用所学知识与技术。
所用技术
咱们用到了知识的暗示、搜索技术、推理技术、可视化技术、设备学习、互联网智能技术和自然语言处理技术等。
技术的运用概况:
知识暗示:黑白棋子位置坐标的暗示。
推理技术:经若干次搜索,推理出使己方得分高敌方得分低最优解。
搜索技术:搜索己方得分最高分并搜索对方下一步最高分。
可视化:黑白棋子动态博弈和动态词云展示。
设备学习:按照经验学习持续加强博弈水平。
互联网智能技术:从网上爬取专业术语和五子棋技巧。 自然语言处理:从爬取得到的五子棋技巧中利用jieba进行分词并绘制出相关五子棋技巧的词云。
项目整体介绍项目核心 - 知识的推理、搜索技术与可视化
在一个智能对弈系统中,人工智能有着绝对的优良,经过持续地学习知识、累积经验、修改权值,其工作效率能够持续加强,可信度会持续改善。思虑到在对弈的前两步咱们不会有输赢的趋势,因此前两步咱们会在棋子的周边随机下棋。从第三步起始,系统就要扫描全部棋局,构建博弈树,接着用深度优先算法评定自己是不是占优良。同期还会按照自己的优劣势选取进攻还是防守,在区别情境下,系统选取的落子位置亦会有所区别。针对每一个点击事件,咱们将其转化为棋盘之中可视化的黑白棋子交替博弈,经过坐标推算其位置,经过算法供给若干可能的应对办法,最后,经过搜索技术在可能解中快速找到最优解,并推理出指定的下棋位置。可视化的对弈过程,搜索、推理以及详细的博弈分析算法既在程序之中得以表现,亦在可见于对弈的过程之中。当然在交互页面上,咱们亦同期做了悔棋、选取先手等功能,这是为了用户能够更好地运用这个系统体验与设备博弈的过程。
(2)项目外围 - 自然语言处理、分词与滚动词云 自然语言处理既是人工智能的核心技术,又是计算机科学和语言科学的分支学科,它推动着语言智能的连续发展和突破,并越来越多的应用于各行各业。在本学期人工智能导论课程中,包含了分词、标注、句法分析等基本的自然语言处理技术,这在咱们的程序中有所表现。首要,关于网络上五子棋的技巧大大都是凌乱的,咱们利用爬虫收集了网络上有阅读价值的有些数据,并恰当地编排了格式将它们展示出来。同期,咱们将五子棋中的有些专业术语,例如阴线、阳线、交叉点等,做成为了一个圆形的滚动词云,当鼠标停在某一个术语上时会暂定转动,并展示其为红色。最后,咱们完成为了分词功能,按照一段五子棋技巧文本,进行分词,并形成一个分词结果的词云照片。在五子棋对战的页面中,咱们经过按钮的方式将玩法技巧以及词云图加入到了项目之中,从而形成一个完整的五子棋对战。即用户既能够与电脑对弈,亦能够认识五子棋的关联知识以及有些下棋技巧。
项目核心算法介绍
本项目的核心是五子棋的最优落子位置的选取和棋子在棋盘上的动态表示。
首要,最重要的算法便是五子棋的落子位置的选取。咱们按照经验和在对弈过程中的各样状况的持续试探最后得到日前各个棋型最恰当的权值分布。而后,在对弈初的前两步并不会显现输赢的趋势,因此,为了更好地使得之后的棋局更富有竞争性,咱们在前两步将会在已下棋子的周边随机落子。在之后的对弈过程中,将会进行全棋盘的扫描,经过最初得到的各样棋型的权值,在横、竖、左斜和右斜四种方向上分别得到对应得分之后相加,即为每一个空格的己方落子得分。在每一个预测的己方落子位置之上,将会继续搜索全局,根据一样的办法得到在我方下一步落子之后敌方的最优落子得分。接下来,将会按照搜索到的多组己方的敌方得分经过推理得到一个令己方得分尽可能高,使敌方得分尽可能低的最优落子位置。 其次,针对棋盘棋子的可视化和动态表示。首要,咱们先经过测绘计算出棋盘的像素体积、棋盘上面第1个横线和竖线的位置和棋盘上面格与格之间的间隔体积。而后按照棋盘格之间的距离根据合适的体积调节棋子的体积。而后,在鼠标点击棋盘触发落子事件时,经过对鼠标点击坐标按照之前的测绘结果进行恰当的计算得到在一定范围内都能匹配到棋盘上对应格子的坐标(这儿是格子的坐标,并非位置像素坐标)。当此为空格时将对应棋子的照片按照坐标的计算得到安置位置。当计算机落子时,按照算法得到的最优落子位置(格子的坐标)一样经过计算得到安置位置。针对悔棋功能,咱们设置了一个存放落子的栈,触发悔棋功能时,将会从栈中取出两枚棋子并将其在棋盘上表示的照片删除。
项目成果
项目成果的部分图示: 对弈棋盘:
五子棋术语词云:
五子棋技巧:
技巧中和五子棋关联词语形成的词云:
课程总结
人工智能导论课程是入门人工智能行业的基本课程,最后的大作业项目中,表现了针对课程的学习成果。当然,本学期所学知识并非仅此罢了,例如遗传算法、粒子群算法、蚁群算法等优化算法、知识暗示的框架暗示法、几类经典的的设备学习模式、模糊推理的过程、经过例题练习,查看神经网络学习结果与反馈机制的关系等,这些都给咱们留下了很深的印象;其次,许多技术的实现都触及到了非常美观的可视化页面,提高了咱们针对人工智能课程的兴趣;最后,感谢老师半年败兴对咱们的悉心教诲,为咱们今后的学习生涯掌灯。
|