大家好,今天给大家分享一下MiniGame中,紫冬智剑基准AI对坦克行为的建模。
基准AI代码及代码教程见:http://turingai.ia.ac.cn/ai_center/show?mid=4
首先分析一下坦克算子的特点:
• 机动性强,装甲防护能力较强(复合装甲)。
• 可行进间射击,配合武器冷却时间可具有不间断的移动火力压制能力,装备大号直瞄炮对敌方装甲单位杀伤力高,尤其是战车。
• 对步兵的毁伤能力不强。
在构建坦克行为模型时,我们主要聚焦在坦克的行进(Action.Move)。
陆战兵棋游戏中,地形成为约束行为的关键因素。反斜面战术是山地作战的经典战术,在朝鲜战争中志愿军有着充分的运用。通过在山体的反斜面处构筑工事,可以避免大多数直瞄火力,也可以减小曲射火力的密集度。
在MiniGame中,所有算子的武器都是直瞄火力,非常适合反斜面这种战术选点。借鉴反斜面的思想,我们可以将坦克的行为拆解为两个阶段,当坦克算子冷却已完成的时候,可以冲向高地对目标算子实施打击,打击完成坦克算子冷却过程中,可以撤下回到反斜面点保护自己免于敌方算子的打击,遮蔽我方行为。
下面考虑出击点的选取。出击点首先与坦克的打击目标相关。坦克的基本打击顺序如下:战车>坦克>步兵。由于坦克的行进间射击能力,坦克的决策密度应该是越高越好,比如一次射击后冷却后,在冷却时间就可以获取新的态势规划新的目标,也即,不应该规划长程任务,否则就没有办法发挥出坦克的火力优势。出击点的选取半径我们定在两格,这是因为考虑各种因素后,半径太小选不出候选点。考虑的因素如下:候选点尽量只与选取的目标通视,避免被其他敌方算子伏击;候选点处的打击攻等比较高,通常这也意味着海拔比较高,也就是棱线处,一方面可以保证战果,另一方面高度差也可以降低我方战损;候选点最好是遮蔽地形(居民地、森林),提高自己被打击时的不利修正。这样就可以综合保证我方战果与战损的和大于零。
对于坦克的撤下,选取距离为一,不与盘面算子及不可见算子的历史位置通视的点作为候选的躲避点,最好是遮蔽地形。设想坦克的躲避行为是一个马尔科夫过程,坦克一直被敌方追着打时,其能够做到边躲边射击,最终回到一个比较安全的点。
以上可以看作是坦克的基本行为模型。
在MiniGame中,显然夺控点也是一个重要的得分项。因此,在坦克的出击模型中我们可以增加一个default条件,当没有合适的攻击位置时,坦克可以向夺控点行进,以完成夺控动作。这样基于基本行为模型,我们就可以设计出一套坦克打击/躲避/夺控的策略。可以看出,坦克总体的决策风格其实是偏向于后手决策的。即不追求前出抢点守点,而是希望能够在掌握足够多信息后获得累进相对战果。这一点在MiniGame2及MiniGame3中有所体现。步兵或者战车提供视野,然后坦克再做出决策。
集思广益,不知道大家还能够给出什么样的意见及建议。希望能够多多交流。
戴松
中国科学院自动化研究所 智能系统与工程研究中心