五子棋
clhmw
这个作者很懒,什么都没留下…
展开
-
五子棋AI设计——从门外到门内不得不说的事儿1
这学期选了人工智能原理,上课的时候完全没搞懂老师要讲什么,所以听课听得云里雾里的,幸好有几个小实验,可以帮助理解人工智能的精髓。第一个实验就是基于带alpha-beta剪枝的MinMax搜索的五子棋AI设计。好久没有写过MFC界面了,所以在pudn上down了几个例程,测试了一下,选了两个比较规范的工程作为开发的基础。第一天:Naive AI——一个称不上AI的AI比对着选好的工程进行原创 2012-06-08 09:48:35 · 2826 阅读 · 1 评论 -
五子棋AI设计——从门外到门内不得不说的事儿2
第二天:防守,堵堵堵为了提高对五子棋游戏的感性认识,我又在网上找了几个写的很好的五子棋游戏,与电脑进行了若干次对弈。作为一个门外汉,防守总是最好的选择。那么在什么条件下防守,在什么位置防守,这些位置如何确定……在这一系列的问题的驱动下,我开始学习模拟对象的AI部分。首先我选择了总是防守,所以在这一天,我的第一个问题解决了。那么在什么位置放手呢?之前定义了棋盘用points[i][j]表原创 2012-06-08 11:42:19 · 2085 阅读 · 0 评论 -
五子棋AI设计——从门外到门内不得不说的事儿3
第三天——进攻防守,视情况而定在第二天,AI可以防守了,但是我们设计AI绝对不是为了让AI被动挨打,而是适时地主动出击。那么,是时候回答第二天的遗留问题——什么条件下进攻,什么条件下防守?第二天,我们提出了阴线评估函数的概念,并且成功的利用阴线评估函数指导AI进行防守。那么是不是需要一个新的什么函数来指导进行呢?好吧,在试图构思这个新函数之前,让我们再看看阴线评估函数。在阴线评估函数中原创 2012-06-16 00:02:20 · 1614 阅读 · 2 评论 -
五子棋AI设计——从门外到门内不得不说的事儿4
第四天——看得远胜算更大经过三天的不断改进,我们的AI算是入门了,如何提高呢——高人指点说,“看得远,胜算才能更大。”道理确实如此,高人所说的“看得远”就是前瞻了,如何前瞻呢?前瞻之后如何决策?先说说什么是前瞻吧。前瞻就是把所有可能的局面都推算出来,然后给每个局面打个分,从中选出一个最有利于自己的走法来作为当前的走法。但是如何选择呢?为了方便说明问题,我们先以3x3的棋盘为例。以图1来说说原创 2012-06-18 00:08:54 · 1880 阅读 · 0 评论 -
五子棋AI设计——从门外到门内不得不说的事儿6
第6天——评价的准才能胜券在握在博弈类游戏中,都可以使用博弈搜索求解最优解,但是最优解的质量如何取决于评估器的质量,也就是说AI对棋局态势的感知能力。在不考虑时间时,我们可以让AI前瞻若干步直到终局,终局评估器设计起来就很简单,AI胜利给个正1,AI败北给个负1,平局给个0。完全博弈树的叶节点的数量很大,因此产生终局的时间代价是不能容忍的,我们只能让AI前瞻有限步。如何对中间局进行评价,可原创 2012-08-09 22:45:30 · 1743 阅读 · 0 评论 -
五子棋AI设计——从门外到门内不得不说的事儿5
第五天——可以看得更远,可以思考的更快看得远,胜算更大;看得远,产生的棋局越多,需要判断的状态就越多,AI的思考时间就越长。从游戏性角度出发,我们不仅希望AI能够胜利,更希望它的思考时间在可以容忍的范围内。图1 前瞻1步的博弈树现在的问题是——如何在数量无比庞大的状态中快速的找到最优的走子策略。在博弈搜索中,博弈树叶节点的值为当前状态的得分。如图1所示博弈树中,B节点的值为12原创 2012-08-09 21:54:09 · 1983 阅读 · 1 评论 -
五子棋AI设计——从门外到门内不得不说的事儿7
第7天——结7作为一个神奇的数字,许许多多具有特殊意义的事情往往会发生在第7日。作为一个小连载,课程内的五子棋系列就在这里作结吧。从门外到门里,虽然只有一步之遥,但是我们还是走了好几天。简单回顾一下我们的历程:第一天:Naive AI——一个称不上AI的AI第二天:防守,堵堵堵(阴线评估器)第三天:进攻防守,视情况而定(利用阴线评估器的信息来决策)第四天:看原创 2012-08-10 00:09:57 · 1211 阅读 · 1 评论