src_code/controllers/basic_controller_interactive.py [148:172]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        n_actions_no_attack = 6
        #Compute focus fire rate
        target_id = th.clamp(chosen_actions - n_actions_no_attack, min=-1)
        max_id = self.args.n_actions - n_actions_no_attack
        num_agents_attack = []
        for i in range(max_id):
            num_agents_attack.append(th.sum(target_id == i).item())
        #Compute average distance
        inputs = batch["obs"][:, t]
        bs = batch.batch_size
        individual_feats_size = (self.input_shape-self.n_agents-self.input_alone_shape+1) // (self.n_agents - 1) - 4
        all_feats_size = individual_feats_size + 4
        n_enemies = (self.input_shape-individual_feats_size-self.n_agents-self.args.n_actions-all_feats_size*(self.n_agents-1)) // all_feats_size
        enemy_ally_feats = inputs[:, :, -individual_feats_size-all_feats_size*(self.n_agents-1+n_enemies):-individual_feats_size]\
                            .reshape(inputs.shape[0], inputs.shape[1], self.n_agents-1+n_enemies, -1)
        #Compute enemy
        e_shootable = (enemy_ally_feats[:, :, :n_enemies, 0] > 0).long()
        e_visible = (enemy_ally_feats[:, :, :n_enemies, 1] > 0).long()
        e_distance = enemy_ally_feats[:, :, :n_enemies, 1]
        e_average_distance = th.sum(e_distance, dim=1)/(th.sum(e_visible, dim=1) + 1e-6)
        #Compute ally
        #Compute enemy
        a_visible = (enemy_ally_feats[:, :, :n_enemies, 0] > 0).long()
        a_distance = enemy_ally_feats[:, :, :n_enemies, 1] * a_visible
        a_average_distance = th.sum(a_distance, dim=1)/(th.sum(a_visible, dim=1) + 1e-6)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



src_code/controllers/basic_controller_interactive.py [628:652]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        n_actions_no_attack = 6
        #Compute focus fire rate
        target_id = th.clamp(chosen_actions - n_actions_no_attack, min=-1)
        max_id = self.args.n_actions - n_actions_no_attack
        num_agents_attack = []
        for i in range(max_id):
            num_agents_attack.append(th.sum(target_id == i).item())
        #Compute average distance
        inputs = batch["obs"][:, t]
        bs = batch.batch_size
        individual_feats_size = (self.input_shape-self.n_agents-self.input_alone_shape+1) // (self.n_agents - 1) - 4
        all_feats_size = individual_feats_size + 4
        n_enemies = (self.input_shape-individual_feats_size-self.n_agents-self.args.n_actions-all_feats_size*(self.n_agents-1)) // all_feats_size
        enemy_ally_feats = inputs[:, :, -individual_feats_size-all_feats_size*(self.n_agents-1+n_enemies):-individual_feats_size]\
                            .reshape(inputs.shape[0], inputs.shape[1], self.n_agents-1+n_enemies, -1)
        #Compute enemy
        e_shootable = (enemy_ally_feats[:, :, :n_enemies, 0] > 0).long()
        e_visible = (enemy_ally_feats[:, :, :n_enemies, 1] > 0).long()
        e_distance = enemy_ally_feats[:, :, :n_enemies, 1]
        e_average_distance = th.sum(e_distance, dim=1)/(th.sum(e_visible, dim=1) + 1e-6)
        #Compute ally
        #Compute enemy
        a_visible = (enemy_ally_feats[:, :, :n_enemies, 0] > 0).long()
        a_distance = enemy_ally_feats[:, :, :n_enemies, 1] * a_visible
        a_average_distance = th.sum(a_distance, dim=1)/(th.sum(a_visible, dim=1) + 1e-6)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



