2 qq 21899851 qq_21899851 于 2016.03.12 18:58 提问

alphaBeta算法做象棋还是很笨而且很卡,有没有好的AI算法效率还不错的

有没有对算法非常了解的大神,小弟在学做一个cocos2dx象棋游戏中使AI困难模式的算法使用alphaBetaSearch搜索算法,不过本人对这个算法的了解不是很深,整个游戏框架基本搭建完成,但是就算使用了减枝优化后,实际运行的时候还是卡的有点久AI才做出反应,有没有在此基础上还可以优化的方法。有懂算法的大神可以点播一下么。

我总觉得按他们那个alphaBeta算法做象棋AI还是很笨,我随随便便就下赢了,我是想这个作为我的论文的,到时候答辩要是他们专挑这些毛病,说什么AI怎么这么笨啊什么的我觉得就很不爽。。。。。。。。。。哎。。。我们那些老师就喜欢挑刺所以我想尽力做到接近目前我能理解的完美,有木有好的算法呢。

1个回答

Lc_BoYi
Lc_BoYi   2016.03.16 17:15

我所了解的博弈算法有这几种alphaBeta,蒙特卡洛,UCT,前者适合于对弈过程中估值函数明了所采用的一种穷举算法(极大极小值),alphaBeta实在该算法上的改进。如果你的象棋用这种算法的话你的估值函数就需要写的好,要提升速度的话就要在剪支上面花点功夫。比如加入先验知识库。
蒙特卡洛采用的是一种随机的模拟的算法,就是在对每个节点进行模拟的时候其双方的走步都是随机的,当模拟深度截止的时候就结束模拟返回当前局面的估值,对每个节点都模拟相同的次数,当所有节点都模拟完成后采取估值最高的节点。
UCT是在蒙特卡洛上的改进,主要是在“对每个节点都模拟相同的次数”这里做改变。它尽量选取估值高的节点进行模拟,同时也会少量的模拟胜率低的。这样就把模拟次数充分的利用在胜率搞的节点上。
象棋方面的博弈程序,我了解的大部分就是用的数据库做的,将大量的局面以数据形式保存到数据库里面,在下棋的时候就去参考数据库。前不久的围棋程序alphaGo就是采用的着用方式,当然他还有神经网络学习系统。
如果你不想做太深的话就在估值方面和剪支方面下点功夫吧,还可以引入残局库。后面的两种算法一般是用于非完全信息博弈里面的。具体你自己去百度。

Lc_BoYi
Lc_BoYi 回复白丶衣: 对cocos2d-x不了解 不好意思
2 年多之前 回复
qq_21899851
qq_21899851 嗯,您说得思想确实是这样的,只是我现在使用的是cocos2d-x做游戏开发,这个引擎链接数据库还有一定的隔阂。数据库目前接触较少确实也需要多多的了解。谢谢您,如果您对cocos2d-x的数据库连接方面有例子的话可以告诉下吗或者告诉下这些资料的具体地点。嗯感谢您的回复
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
详解alpha-beta算法
最近在做中国象棋对弈程序,用到了alpha-beta算法。这个
象棋AI算法(二)
参考文献:http://bbs.blueidea.com/thread-3047030-1-1.html 前言: 原文大神是用html5+js写的关于象棋AI的博客,里面重点讲了棋子的着法,自己设计的评估函数和简单的Minmax理论,没有具体的讲搜索算法,本文是对原文的学习和分析补充 一,棋子的着法 com.bylaw ={}      首先创建一个数组,用于存
象棋AI算法(一)
参考文献:http://www.xqbase.com/computer/search_minimax.htm http://www.xqbase.com/computer/search_alphabeta.htm 最近想做一个象棋游戏,但是AI把我难住了。这是这几天的成果: 象棋程序通过使用“搜索”函数来寻找着法。搜索函数获得棋局信息,然后寻找对于程序一方来说最好的着法。
黑白棋AI算法
自己制作的黑白棋AI算法 采用了alha-beta剪枝和比较准确的估值算法,有比较墙的智能水平
常见棋类AI人工智能算法
中国象棋明棋的思路 中国象棋明棋的实现思路是这样的,整个博弈树太大,因此采用有限深度搜索,用叶子节点的局面函数值根据极大极小原理(我方选分数极大值的走法,对方选分数极小值的走法)倒推出当前节点的分数,这个分数就是当前局面优劣判断的近似值,只要局面函数选得好、搜索的深度足够,近似值就可以很接近真实值。至于α-β剪枝、迭代加深搜索、历史启发、杀手启发、空步裁剪、循环局面判断……这些只不过为了提高搜索
中国象棋源码 ---深入浅出的AI算法详解
中国象棋源码,基于王小春《PC游戏编成--人机对弈》 版权归原作者所有 。
中国象棋AI算法研究
软件:象棋旋风6.2设置一个困局,人很容易看出最优着法,测试象棋软件的局面评估算法先上图:如图:显然这是黑方的一个困局,虽然比红方多一个车和两个馬,但都被困住了,此时人工对局正确着法显然是:兵二平三,将6平5,兵三平四,将5退1,兵四进一,将5退1,兵四进一;7步绝杀显然,这是最优着法,其它着法绝杀步数都比7步多,搞不好还可能和棋。下面我们来看看软件的着法:--------------------...
有AI的重力四子棋
这里展示了一个有AI的重力四子棋d
一款开源的中国象棋人工智能程序
源码地址: https://github.com/xiongfang/Chinese-Chess 工程:Unity项目。可以用Unity引擎打开 语言:C# 算法:神经网络算法+遗传算法 目录结构: Assets/Fonts 字体资源 Assets/Models 所有模型资源,包括象棋和棋盘模型 Assets/NGUI NGUI插件 Assets/Ot
基于Alphabet剪枝的五子棋AI
之前无聊写的,代码在附件里,仅供参考- - AB剪枝只有2层,所以AI战斗力很渣。。 AB.java class AB { static int round=1; static int n=Jframe.n; static int G[][]=new int[20][20]; static int INF=10000; static void copy(int a[][],int