SC AI 估值函数

SC AI还是没有进展。

最近在想办法找出合适的估值函数。生命值,兵数,总输出。这些固然没有问题了。然而最重要的位置信息,却得不出合适的估值函数。如果不能建立好的模型的话,一切算法都是空谈。。。

今天忽然想到的,其实是跟以前的想法一致,不过换了一种方式在思考问题。

micro radar for the SC AI
图中环状圈表示中心的蓝色单位距离每个红色(敌军)单位的距离。在这个距离内,每增加一个敌对单位减1分,每增加一个友方单位加1分

假如能够测量出每个单位攻击一轮所需要的时间,该单位能够移动多少距离,则更好。以此可以计算出优势或者劣势能够保持多少轮,从而得出优势或者劣势多少单位的HP。

另外忽然发现开全图的比赛情况,你甚至可以知道对手每个单位的目标是什么。这样甚至就无需猜测,并且被设置成敌军目标的单位,其实反而掌握了主动权——他往哪里移动,敌人就会追到哪里。并且由于大家的移动速度都是相等的,被追击的单位有权利选择在什么位置开战——他停在哪里,就在哪里开战。因此问题就可以简化成,(对某一个单兵而言)在什么位置开战,对我方更有利(比如获得更大的优势或者使敌人获得更大的劣势)。

还有最近在考虑的就是一些图论的模型是否可以放到这个里面来。比如最小生成树。最小生成树在这个AI里面看似有某种意义。至少他指示了所有兵力集结到同一个地点的最短方案。他也可以表示友军之间互相援助的行动路线。但是其他的意义呢。现在还看不清楚。

另一个图论的模型是steiner tree,  它表示了将一坨兵拆成两个组的方法,使得拆开后的两个组的最小生成树最小。或许这个模型可以用于暴露敌人的弱点。当然steiner tree是NPC问题,所以把它拿进来可能对比赛也没什么帮助。不过话又说回来比赛过程中出现的单位数量也不会特别多,尤其是开始的时候。所以即使使用最蠢的算法,或者使用较平庸的近似算法,对AI有帮助也是有可能的。

但是究竟怎样帮助。。暂时还没想清楚。。