示例#1
0
 def reset(self) -> None:
     if self._loaded:
         outputs = self._communicator.exchange(self._generate_reset_input())
         if outputs is None:
             raise UnityCommunicatorStoppedException("Communicator has exited.")
         self._update_behavior_specs(outputs)
         rl_output = outputs.rl_output
         self._update_state(rl_output)
         self._is_first_message = False
         self._env_actions.clear()
     else:
         raise UnityEnvironmentException("No Unity environment is loaded.")
示例#2
0
 def step(self) -> None:
     if self._is_first_message:
         return self.reset()
     if not self._loaded:
         raise UnityEnvironmentException("No Unity environment is loaded.")
     # fill the blanks for missing actions
     for group_name in self._env_specs:
         if group_name not in self._env_actions:
             n_agents = 0
             if group_name in self._env_state:
                 n_agents = len(self._env_state[group_name][0])
             self._env_actions[group_name] = self._env_specs[
                 group_name].create_empty_action(n_agents)
     step_input = self._generate_step_input(self._env_actions)
     with hierarchical_timer("communicator.exchange"):
         outputs = self.communicator.exchange(step_input)
     if outputs is None:
         raise UnityCommunicatorStoppedException("Communicator has exited.")
     self._update_behavior_specs(outputs)
     rl_output = outputs.rl_output
     self._update_state(rl_output)
     self._env_actions.clear()