存档

‘算法-AI’ 分类的存档

三国杀人工智能思考1

2010年7月27日 admin 1 条评论

先以标准版为对象:
1.人物关系表
relations_table,人物和在场所有角色的关系,关系是发动攻击,计算局面的一个基本条件之一,一开始可以简单的设置主公和所有人关系为0,忠臣和主公关系为100,内奸和主公20, 反贼则为-100 和别人关系为0,当出现杀,牵,乐等伤害性操作时候关系上升,当出现无懈,青囊等帮助性操作的时候关系上升,上升和下降按照操作的不同加权计算.此关系还需要关联变化,也就是攻击敌人的就是朋友,攻击朋友的就是敌人.攻击时候,按照关系升序优先攻击关系差的,对于主公需要考虑局势,显然主公和他人的关系都是明确的,攻击主公显然就是暴露身份.
2.权值
血量,手牌,技能,装备都需要分配权值,对于不同的技能而言,对血量,手牌,装备的权值是不同的.显然爆发型的武将对连弩的要求很高,而对张飞是个无用之物.所以我们也很难找到一个简单的公式来计算不同的牌型和技能的关系,考虑到牌型和武将技并非很庞大,所以直接建个cards_skills_weight二维关系表倒是简单易行的方法,与对血量而言武将看重程度应该是差不多的(华佗需做个修正).
3.局面记录
局面记录是游戏中各种状态的程序描述,记录血量,装备牌,手牌,手牌应该是别人不知道的,但是对于高AI来说,通过奸雄,牵羊,五谷等方式获得的手牌应该算是明牌,剩下的牌在需要的时候可以计算出某种牌出现的概率,总牌数4*13*2 其中装备牌17张 2八卦阵 6马 9武器锦囊牌34张 4无中生有 6过河拆桥 5顺手牵羊 3无懈可击 2借刀杀人 3决斗 3南蛮入侵 3乐不思蜀 2五谷丰登 1桃园结义 1万箭齐发 1闪电 基本牌53张 15闪 30杀 8桃 这些是基本数据。
4.局面估值
三国杀的局面可以直接量化出来,主公要杀死反贼和内奸,忠诚和主公一样,内奸杀所有人,反贼杀主公,每一个角色都有自己的目标也有利益范围,这就可以通过估价量化来。主要是对每一个角色的手牌,血量进行加权计算,得出各方的实力表,每出一张牌其实就是对局面做了一次修改,修改的目的是力求对本方的利益最大化,对对方的利益最小化。有的时候我们不能直接只算一次局面,而是计算多次出牌最终的局面。对于一把手牌,对可出的牌依次做判断,并且在之前的判断基础上再次判断,得出来的就是一个树状的策略描述结构,而且每个叶节点对应一个局面估值,这个树可以先称之为α-β策略树在不考虑和队友配合的情况下,可以按照最小最大的原则做出牌的策略。
5.最小最大原则
什么是最小最大原则?我的理解是不能把别人/计算机想的太2了。别人只剩下一滴血,一张手牌,默认的闪的概率是14.4%左右,你出杀有85.6%的几率命中,但是对方只剩下一张手牌的时候,留下闪的概率其实是很大的一般而言比如原来此人弃了3张牌,连手牌4张,那么他有闪的概率其实是14.4%*4 出杀命中的概率只有42.3%。那么算局面的时候要用最差局面中的最好状态来计算。
先写这么多,在下一篇思考2中会就α-β树深度和遍历,α-β树剪枝算法等做一些简单的描述

Popularity: 50% [?]

分类: 算法-AI 标签: