我心中的智能斗地主AI,而非单纯一个牌型分析算法

我心中的智能斗地主AI,而非单纯一个牌型分析算法
作者: 暗夜、Bingo、流潮,转载请注明来源。
备注:个人见解 
整体思路图:
我心中的智能斗地主AI,而非单纯一个牌型分析算法_第1张图片

神经网络直观图:
我心中的智能斗地主AI,而非单纯一个牌型分析算法_第2张图片
实现过程(含部分源代码):
1、出牌方式
主动出牌,即首发起方,每轮出牌的出牌发起人,可以在现有手牌里任意出牌,主动出牌比被动出牌变量多,因为你出什么牌将影响接下来的牌局走向。
  被动出牌,被动出牌有一定的限制性,受制于上线出牌牌型,与主动出牌比较变量想对较少。
2、牌型分析
牌型按照从大到小不计算面值依次为火箭、炸弹、三顺、双顺、三条、对子、单牌,四带二排除。
分析方法可以按照 权值、手数进行提取,本人分析牌型是按照手数提取,出牌略带权值计算,决定一些出牌转折点的走向。
具体分析参考本人实例:
① 按照牌型大小提取出 火箭和除火箭剩下的所有牌型,比如3333444456788,结果:{array(3333,4444),array(4444567,3333567)},按照此类方法把各牌型全部分析完毕。
参考图:
我心中的智能斗地主AI,而非单纯一个牌型分析算法_第3张图片
② 计算手数,从火箭开始判断,无火箭取炸弹,无炸弹取三顺,以此类推取得最佳最少手数。
③ 四、五、六项遍历解析法,此法无权值分数计算,也是最笨最有效的方法,即按照①②的结果对剩余牌进行手数计算,返回每项的最佳出牌组合和相应手数,如图:我心中的智能斗地主AI,而非单纯一个牌型分析算法_第4张图片唯一的缺点是效率慢,全部遍历不实际,可以选取重要的牌型遍历。
PS:分析包含过滤重复、最佳提取、手数比较、排除等。


3、出牌、AI
用一句话来概述AI:人脑的思考过程用代码实现。
这里用到了神经网络,我并非专业全能程序员,我所理解的神经网络就如同我师傅对我所说,看一群蚂蚁中的其中一只看不出什么,要看整个蚁群的走向,神经网络也是如此,每一个蚂蚁都是一个变量,不同变量组成不同结果,结果是不可预测的。
人之所以会思考,也是具有神经网络,只不过人脑神经元的数量和执行效率是目前电子远远比不上的,所以,只能把一部分神经元结合成一个神经元,斗地主AI的实现过程对于这种专业技术来说显得微不足道,只要掐准其中一部分比较重要的神经元来决策策略即可,那么,斗地主AI就很容易的实现了原始神经网络机制,也就具备了一些“策略”,看起来不那么像电子产。
① 首先,赋予AI眼睛、嘴巴、鼻子等,给AI最大限度的可接收信息,比如:地主是谁、地主剩余手牌数量、同伙是谁、同伙剩余手牌数量、自己是不是地主、自己的牌是否有大于对方的牌,有的话哪一组最合适;还有最重要的部分就是记牌分析,出多少,剩多少,剩了什么都要记录分析。备注:自主学习系统本人还没有接触,听一起做事的朋友小Q说写过一个,但是程序崩溃,这也是下一步将要主重参考的环节。
②  然后,根据上面的入口信息分析、筛选,比如当地主还剩1张牌时,最大限的出对牌,直至出完手牌,这里用到了容错概念,比如,手牌并非全部对牌,或者在此过程中同伙 跟了牌,AI就会再此基础上再次分析同伙是不是全是对牌,如果不是,利用记牌器分析出谁的权值大,当分析完毕结果不理想时,容错就起到了作用,进而整个AI转向到另一个神经元来分析,最终并非一个结果,就像有了性格一样,而非严格按照代码逻辑进行判断,对于不同的神经元,根据不同的上级神经元传递的信息来赋值不同的权值,接着进行下一个神经元。
③ 最后,返回结果,AI做出相应操作。
我心中的智能斗地主AI,而非单纯一个牌型分析算法_第5张图片
斗地主AI只能最大限度的提高机器人胜率,绝对不能像阿法狗那种,自主学习就能越来越高的提高胜率,因为起点不同,结果不同,斗地主的胜率是起始手牌决定的,算法AI只是辅助胜率。

有想法的朋友不妨一起交流一下 QQ群:
567817566。
 备注:本人不才,高手前辈请勿耻笑,更愿意请老师们前辈们帮助我学习成长!


你可能感兴趣的:(自学路)