def __init__(self, n_agents=1, with_finish_zone=True, synchronized_activation=True, dampening=0.75): self.n_agents = n_agents self.n = n_agents """ Environment configuration """ self.with_finish_zone = with_finish_zone self.synchronized_activation = synchronized_activation self.dampeding = dampening """ Build required entities """ self.agents = [Entities.Agent() for _ in range(self.n_agents)] self.landmarks = [Entities.Landmark() for _ in range(self.n_agents)] """ Build per agent action space """ self.action_space = [gym.spaces.Box(-1.0, 1.0, (2,)) for _ in range(self.n_agents)] """ 2 : agent position 2 : agent velocity 2 * (n_agents - 1) : relative position to other agents 2 * n_agents : relative position to landmarks n_agents : landmark flags """ obs_dim = 2 + 2 + 2 * (n_agents - 1) + 2 * n_agents + n_agents """ If we are using finish zones : 2 : relative position to finish zone 1 : finish zone radius """ if with_finish_zone: obs_dim = obs_dim + 2 + 1 self.finish_zone = Entities.FinishZone() """ Build per agent observation space """ self.observation_space = [gym.spaces.Box(low=0, high=0, shape=(obs_dim,)) for _ in range(self.n_agents)] self.render_geoms = None self.render_geoms_xform = None self.viewer = None self.rebuild_geoms = False