2010.05.27 今天第一次战胜了电脑(仅仅在某个地图)。
前些天,包括明天,都在为学车等事情忙,空了一段时间,今天按照以前的想法把AI改了一下。把寻路部分改成计算每个资源点到每个坦克的距离的了,然后贪心得找。这样不会存在坦克很傻很傻地放着旁边的矿不去占。同学说用KM匹配可以做得更好,想了一下,的确是这样,牺牲少量的资源来达到后来的更快的得到资源,但是真的是最好的么,如果牺牲了10的资源,但是只却换了2round的提高,是否划得来,这个问题还得思考。
目前坦克的开火条件是碰到敌人就开火,如果好多敌人也是挑ID最小的那个,显然不合理。设想是这样改进,对于Pioneer来说,除非对面是Pioneer,它才会开火(根据博弈原理,(*^__^*) ),否则当血量足够的情况下(对方攻击力小于我血量),碾过去当然最优了。还有如果是混战状态,就是有很多人可以打,我方坦克打谁的问题。如果按照杀敌数最多来考虑,就相当于BIN PACKING问题了,只不过是溢出的那种装箱问题,O(∩_∩)O~,没白跟HAN老师学。这么考虑的话,岂不是得搜索(先不去想DP了),5^5,3000多,复杂度很小。这是下一步要实现的之一。
关于路径的问题,一直感觉不是每个矿都值得去占领,总得凭个优先级出来,先是这样想的,周围的资源越多的资源,那么可以优先占领,离坦克近的资源,优先占领。那个周围还有说法,如果已经是自己的了,或者已经有人去抢了,当然这反面的优先率就得降低了,又是一个动态的问题。全部放在回合1解决,会不会超时啊……不过就算这样KM匹配一样可以用。
先优化开火,后优化路径。