def _choose_best_battle(self, legal_territories_to_attack): score = {} curr_score = features.evaluate_battle(self.map_layout, self.player_status, self.enemy_status) for (src, dest) in legal_territories_to_attack: battle = (src, dest) # score[random.random()] = battle score[self.be.evaluate_action(battle, self.map_layout, self.player_status, self.enemy_status)] = battle if len(score) == 0 or max(score) - curr_score <= 1: return None return score[max(score)]
def evaluate_action(self, action, map_layout, player_status, enemy_status): # 0.0005 simulated_outcomes = self._simulate(action, player_status, enemy_status) return sum([prob*features.evaluate_battle(map_layout, sim['player_status'], sim['enemy_status']) for (prob, sim) in simulated_outcomes.iteritems()])