人工智能之人机博弈(1)

  每个程序猿的心中都有一个AI梦,而人机博弈是最简单的一种AI形式。

  看了阿尔法狗和李世石之战后,就一直在研究AI的一些知识,包括传统的人机博弈算法,以及阿尔法狗的蒙特卡罗加神经网络的算法。甚至还重温了高等数学的知识。

  为了给家里小朋友学棋,花了一个多月的休息的时间,开发了这个国际跳棋软件。支持人机对战,经专家们测试,AI棋力达到中等以上棋手的水平。

  对国际跳棋感兴趣的朋友,可以到下面地址下载试用一下。暂时不开源,等我完善了程序,再考虑开源出来。并写一些文章总结和分享开发的过程。

   下载地址: http://pan.baidu.com/s/1slOSvgh

    1, 支持人机对弈,AI有超过10个以上的难度等级,经专家们认定,AI有中级以上棋手的棋力。

2, 可以选择100格和64格两种模式。

3,支持教学模式,可以自定义棋局,加载和保存棋谱。可以让AI破解残局。

4 ,能清楚显示每步的吃子路线,棋局结束,可以回看对弈过程。

5,非商业软件,完全免费,并在不断完善中。

   6,开发语言为C#,采用传统的人机博弈和静态估计的算法。具体实现我将会在后续文章中介绍。
        开发过程中,得到了中国国跳协会的老师和一些国际跳棋大师们很多帮助和支持,还有很多网友帮忙测试并给出好的建议,在此表示感谢。

  国际跳棋简介:

  跳棋是世界上最古老、最普及的智力游戏之一。关于跳棋的第一本书早在一五三一年就已经在威尼斯出版。在跳棋基础上发展起来的国际跳棋在许多国家受到欢迎。国际跳棋联合会已经有五十多个会员国。        

  世界棋类最发达的国家俄、美、英、法、德的教育专家都曾经指出:国际跳棋经过4千年发展,棋子外形一致,仅为两色,升王容易处理,这与没有地域性专用文字或图形样式的局限有关,规则明晰,棋理深邃,名谱众多,趣味盎然,能迅速开发学生智力,培养学生意志和品性。积累丰富的比赛经验,达到临危不乱、冷静细致、精密计算,最后时刻在极其困难的局面下战胜对手的能力。儿童会因为喜欢此项活动,进取意识强烈,变得更爱思考,处事更加有大局观,做事变得有条理。

时间: 2024-10-16 16:12:58

人工智能之人机博弈(1)的相关文章

机器人霸占了你的工作不用怕,人工智能引爆人机协同好生态

不管你是乐观主义者还是悲观主义者,人工智能时代悄悄来了. Yee君前段时间看到一张图,因为版权原因没有办法放在这里,画面左边是机器臂在有条不紊地安装零件,右边是隔壁车间,还没有被机器人替代的流水线部分,工人在埋头苦干. 很有画面感,也很有视觉冲击,会心一笑之后,是对体力劳动者未来的担忧. 但综合看,Yee君还是相当乐观的. 机器人促使人类发挥出潜能,掌握独特的人类劳动技能. 机器人替代重复重体力劳动,但也可能带来了一系列新的工作岗位,蓬勃发展. (一)当机器人替代工厂流水线工作时,劳动者转向从所

人机博弈-吃跳棋游戏(三)代移动

我们能够根据国际象棋的规则吃,创建移动生成器.基本逻辑是,假定一个拉伸己方蠕虫的存在,这是可能没有其他的致密气.这是不是对其他部分可以落子.在其他情况下.必须坚持 另一片落子,考虑到特殊情况,当自己可以提其他片,自己可以下到那里没有气.和一般吃跳棋.胜,无法形成劫争.所以走法生成器就相对非 常简单. 对于怎样确定己方是不是存在一气的棋串,能够利用上一节介绍的算气算法. int CMoveGenerator::CreatePossibleMove(BYTE position[GRID_NUM][G

人机博弈-吃子棋游戏(四)搜索算法

博弈树搜索技术简介: 博弈树的搜索算法,负值极大搜索,alpha-beta搜索,渴望搜索,PVS极窄窗口搜索等.通常来说,搜索算法常常和以下技术联合在一起. 如下: 1.置换表,记录已经搜索过的棋局,避免再次搜索. 2.吃子启发,优先试下能够吃对方棋子的走法. 3.杀手启发,历史启发简化版. 4.历史启发,优先试下历史统计数据得出的比较好的走法. 5.静止期搜索,继续对某些叶子结点搜索,避免水平线效应. 6.迭代加深搜索,根据搜索时间,状态.决定是否继续搜索. 有兴趣的朋友可以深入研究一下上述技

人机博弈,吃子棋游戏(二)如何算气

算法过程如下,输入计算棋气的起始子,检查我方棋子其周边的空白,并查看此空白是否已经计算过气了,如果没有计算过气加一,如果已经计算则略过,进而递归调用计算我方棋子上下左右子的气,最后算法会返回棋串的子数和气数.算法注释十分详尽. 这个计算棋子气的算法,参考http://www.cnblogs.com/tuanzang/archive/2013/02/27/2935861.html,结合我们自身的应用需要优化和修改.这篇博文介绍了更多关于围棋的算法,有兴趣的朋友可以进一步阅读. 原文suanqi函数

人机博弈-吃子棋游戏(三)走法生成

我们可以根据吃子棋的规则,创建走法生成器,主要的逻辑是,如果己方存在一气的棋串,则可以无需紧对方的气,也就是可以不用贴着对方的棋子落子.其他情况下,必须贴 着对方的棋子落子,考虑到某些特殊情况,当己方能提对方棋子时,己方就可以下到没有气的地方,并且一般的吃子棋,先提子者胜,无法形成劫争.所以走法生成器就相对非 常简单. 对于如何确定己方是不是存在一气的棋串,可以利用上一节介绍的算气算法. 1 int CMoveGenerator::CreatePossibleMove(BYTE position

人机博弈-吃子棋游戏(二)算气

算法过程如下,输入计算棋气的起始子,检查我方棋子其周边的空白,并查看此空白是否已经计算过气了,如果没有计算过气加一,如果已经计算则略过,进而递归调用计算我方棋子上下左右子的气,最后算法会返回棋串的子数和气数.算法注释十分详尽. 这个计算棋子气的算法,参考http://www.cnblogs.com/tuanzang/archive/2013/02/27/2935861.html,结合我们自身的应用需要优化和修改.这篇博文介绍了更多关于围棋的算法,有兴趣的朋友可以进一步阅读. 原文suanqi函数

人机博弈,吃子棋游戏(一)

(1)什么是吃子棋? 吃子棋,是小孩子学围棋的入门棋,其规则部分取自于围棋,但比围棋简单很多. (2)吃子棋的行棋规则? 1.吃子棋,在行棋时,若一方棋子没有被打吃,则其必须落子在能够紧对方棋子气的位置. 2.吃子棋,当一方棋子处于被打吃的状态,则可以逃命,而不用紧对方棋子的气. 3.吃子棋,当一方棋子被吃提,则输赢即分,吃子方胜. 4.吃子棋,一般有两种赢棋方式,双打吃和征吃. 5.吃子棋,起手棋必须位于天元. (3)应用设计思路 设计此应用的总体思路如下: DATA: 1.棋盘表示 2.棋子

对弈类游戏的人工智能(2)--学习算法

前言: 对弈类游戏的智能算法, 网上资料颇多, 大同小异. 我写这篇文章, 一方面是对当年的经典<<PC游戏编程(人机博弈)>>表达敬意, 另一方面, 也想对自己当年的游戏编程人生做下回顾. 上一篇博文:对弈类游戏的人工智能(1)--评估函数+博弈树算法, 着重讲述了评估函数+博弈树, 本文着重讲述学习算法, 以及性能优化和游戏性问题. 分析: 评估函数的引入, 为游戏AI提供了理论基础. G(s) = a1 * f1(s) + a2 * f2(s) + ... + an * fn

对弈类游戏的人工智能(一)

前言: 对弈类游戏的智能算法, 网上资料颇多, 大同小异. 我写这篇文章, 并非想做互联网的搬运工. 而是想对当年的经典<<PC游戏编程(人机博弈)>>表达敬意, 另一方面, 也想对自己当年的游戏编程人生做下回顾. 这边我们以黑白棋游戏为例, 从博弈和学习两方面来阐述游戏AI的编写要点. 本文侧重于讲述博弈(评估函数+博弈算法). 博弈: 以前看围棋比赛, 常有人评价棋手水平高: 大局观强(评估局面好), 算路精准(计算步数深, 实战效果好). 他山之石可以攻玉, 对弈类游戏的AI