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

问题描述

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

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

解决方案

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

时间: 2024-09-17 03:32:38

cocos2d-x-alphaBeta算法做象棋还是很笨而且很卡,有没有好的AI算法效率还不错的的相关文章

事务-数据库中做减法会对数据库造成很大压力吗?

问题描述 数据库中做减法会对数据库造成很大压力吗? 这样比如买一本书同时会有很多人买,在控制书的数量的时候我的想法, 每次有人买书的时候数据库进行这样的一个减法操作 booknum = booknum-1 然后在购买事务提交之前 我在代码中进行一个判断就是booknum是否大于0如果不是则回滚返回购买失败反之就执行成功 这种方法会比用时间戳比较带来的压力更大吗? 时间戳就是 在表中再加一个列用时间戳来表示 当你差booknum的时候把时间戳带上 update的时候把这个时间戳和数据库的比较 如果

陈大年:免费很贵创新很累 我如何做WiFi万能钥匙

陈大年:免费很贵创新很累 我如何做WiFi万能钥匙 责任编辑:editor004 作者:陈大年 |  2016-10-11 11:22:38 本文摘自:创事记 欢迎关注"创事记"的微信订阅号:sinachuangshiji 文/陈大年 全球9亿用户,月活跃用户5.2亿,4亿热点,40亿日均连接成功次数--连尚网络旗下WiFi 万能钥匙已经被很多平台的数据显示出来,它是手机用户最喜欢的三大 APP 之一.近日,腾讯安卓生态研究院(AERI)对外发布最新月度应用宝"星APP榜&q

wordpress-用WordPress做了个网站,Google很容易搜到,百度就是不行。

问题描述 用WordPress做了个网站,Google很容易搜到,百度就是不行. 我用WordPress做了个站点,然后发现在Google上很容易搜索关键词可以搜到,但是相同关键词在百度上就是不行,百度上只有输入非常全的检索词才能够搜的到.这个是为什么? 解决方案 百度本来就慢,等等吧,不然你可以先给百度提交网址( http://www.baidu.com/search/url_submit.htm )试试.

java-新手做毕业设计,有个问题很棘手,快来大神

问题描述 新手做毕业设计,有个问题很棘手,快来大神 想给坦克大战添加一个更改键位的功能,各位大神有什么好的想法 解决方案 我觉得你像更改键位,其实就是重新绑定事件的按钮改为更改后的按钮. 解决方案二: public void keyPressed(KeyEvent e) { //按键键盘监听 int key = e.getKeyCode(); switch (key) { case KeyEvent.VK_R: tc.tanks.clear(); tc.bullets.clear(); tc.t

面试其实很好,很强大-----我的百次面试经验

从跨入计算机这一行来说,我已经经历过上百次面试了,大部分都是java方面的面试. 给我印象比较深刻的有很多,在这里我总结一下,希望给广大程序员有所帮助. 1.第一次面试2003年初考研,通过笔试,3月份底的时候去中科院软件研究所互联网实验室面试,说实话,能进入面试环节本来就很奇迹了(考研只准备了100天,考完后估算专业成绩,就感觉不可能有戏).对于面试环节,也没有做充分准备,心里也是空空的,也不知道计算机专业的人士到底学到了啥,所以到了面试环节,我心里特别虚.面试前有一个笔试,我全然不知道怎么答

【吴恩达推荐】40岁开始学习,4周编写第一个AI算法的经验谈

我不是程序员,也不是数学家.大学时上过一门必修的计算机科学课程,而我只是勉强通过--那已经是20多年前的事情.然而,现在,在我40多岁的时候,我坐在门廊上与我的新朋友 Python 和 Numpy 作战,自愿地尝试建立我的第一个神经网络.事情是怎么变成这样的? 有一天我突发奇想:我意识到AI可能是最搅乱我的孩子们的生活的一种发展.在运营一家数据分析公司7年之后,我很想深入了解AI.因此,我决定参加一门深度学习和神经网络课程,该门课的老师是前百度首席科学家.斯坦福大学教授 Andrew Ng. 在

php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法

php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法.用法很简单,代码里有详细注释说明,一看就懂 <?php /* * 经典的概率算法, * $proArr是一个预先设置的数组, * 假设数组为:array(100,200,300,400), * 开始是从1,1000 这个概率范围内筛选第一个数是否在他的出现概率范围之内, * 如果不在,则将概率空间,也就是k的值减去刚刚的那个数字的概率空间, * 在本例当中就是减去100,也就是说第二个数是在1,900这个范围内筛选的. * 这样 筛选到最终,总

一段很小但很实用的CSS打印类(附例子及效果图)

css|打印 <html><head><title>Untitled Document</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><style>.tdp{    border-bottom: 1 solid #000000;    border-left:  1 solid #000000

Facebook利用AI算法“纠偏”360度照片

据外媒VentureBeat报道,Facebook今日向外表示,为了给用户提供更好的360度视频观看体验,其将利用AI算法来对这些内容进行调整,避免因为图片倾斜破坏呈现效果. 据悉,在今日举办的@Scale大会上,Facebook设立了一个系统,通过深度神经网络来尝试纠正上传后的照片中常见的错误.例如,拍摄360度照片的人不会将相机完美的和地平线保持水平位置,拍出来的照片可能存在倾斜等问题.而如果利用VR设备观看这些图像和视频,则会有难以阅读或打破沉浸感等问题. 据VentureBeat 的 B