def testActionFlipping(self): cfg = config.Config() for action in football_action_set.full_action_set: # Flipping twice should give the same action. action_id = observation_rotation.flip_single_action( observation_rotation.flip_single_action(action, cfg), cfg) self.assertEqual(action, action_id)
def _get_actions(self): obs = self._env.observation() self.stateHist.append(obs) left_actions = [] right_actions = [] left_player_position = 0 right_player_position = 0 for player in self._players: adopted_obs = self._convert_observations(obs, player, left_player_position, right_player_position) left_player_position += player.num_controlled_left_players() right_player_position += player.num_controlled_right_players() a = self._action_to_list(player.take_action(adopted_obs)) assert len(adopted_obs) == len( a), 'Player provided {} actions instead of {}.'.format( len(a), len(adopted_obs)) if not player.can_play_right(): for x in range(player.num_controlled_right_players()): index = x + player.num_controlled_left_players() a[index] = observation_rotation.flip_single_action( a[index], self._config) left_actions.extend(a[:player.num_controlled_left_players()]) right_actions.extend(a[player.num_controlled_left_players():]) actions = left_actions + right_actions self.actionHist.append(left_actions) return actions
def _get_actions(self): obs = self._env.observation() players_and_relative_obs_pairs, agent_obs = self.get_players_and_relative_obs_pairs( obs=obs) # assert 0, obs left_actions = [] right_actions = [] for player, adopted_obs in players_and_relative_obs_pairs: a = self._action_to_list(player.take_action(adopted_obs)) assert len(adopted_obs) == len( a), 'Player provided {} actions instead of {}.'.format( len(a), len(adopted_obs)) if not player.can_play_right(): for x in range(player.num_controlled_right_players()): index = x + player.num_controlled_left_players() a[index] = observation_rotation.flip_single_action( a[index], self._config) left_actions.extend(a[:player.num_controlled_left_players()]) right_actions.extend(a[player.num_controlled_left_players():]) actions = left_actions + right_actions return actions, agent_obs