一 目标指引推理
在一个目标空间中进行推理可以采用两种方法:从初始状态开始的正向推理;或者从目标开始的反向推理。由于在RTS游戏中,任一状态都有大量的走法,所以反向推理显得更为高效。
很多时候,目标是无法直接达到的,这个时候就需要将目标分解成无数小的目标,依次实现。
二 效用模型
在对目标进行分解后,需要对目标链进行选择,分配优先级。要实现优先级算法,需要先明白如下概念:
1、效用模型
每个行动都会给目标带来效用,而边际效用指花费1单元的代价在该行动上能够带来的效用。
同人类对普通消费的观念一样,AI也总是追求最大的边际效用的。
2、成本
要计算目标的边际效用,先要计算目标的成本。
目标的成本包括资源成本和时间成本。另外还包含一个非常重要而又很容易忽略的机会成本。
3、生产可能性
检查各种可能的选择的方法,是建立一个N维的生产可能性曲面。
4、目标成本与任务成本
要计算一个目标的成本,除了要计算它本身的建设成本,还要加上从现在的状态开始,为了建造该目标,而事先建造的所有子目标的成本。
5、多任务
很多建筑都是单任务的,一个时间只能做一件事,考虑算法时需考虑这个因素。
三 组合
步骤:
1、确定一个或一组目标。
2、将目标分解成一系列子目标。
3、生成通往每个目标的任务链。
4、判定每个目标和子目标的效用。
5、将每个目标的效用值都反向传递,并一路相加,以确定最初子目标的优先级。
6、对子目标的效用值归一化。
7、找到效用最大的子目标。
8、确定该子目标的任务序列能否执行。不能则不安排该任务。
9、重复7和8,知道安排完所有的任务序列,或无法安排更多的任务序列。
10、响应游戏世界的变化
11、任务序列完成后删除。