Ejemplo n.º 1
0
    def make_world(self):
        world = World()
        # set any world properties first
        world.dim_c = 2
        num_good_agents = 2
        num_adversaries = 1
        num_agents = num_adversaries + num_good_agents
        num_landmarks = num_agents - 1
        # add agents
        world.agents = [Agent() for i in range(num_agents)]
        for i, agent in enumerate(world.agents):
            agent.name = 'agent %d' % i
            agent.collide = False
            agent.silent = True
            agent.adversary = True if i < num_adversaries else False
            agent.size = 0.15

        # add landmarks
        world.landmarks = [Landmark() for i in range(num_landmarks)]
        for i, landmark in enumerate(world.landmarks):
            landmark.name = 'landmark %d' % i
            landmark.collide = False
            landmark.movable = False
            landmark.size = 0.08

        # make initial conditions
        self.reset_world(world)
        return world
Ejemplo n.º 2
0
 def make_world(self,
                num_agents_inpt=2,
                num_adversaries_inpt=1,
                num_landmarks_inpt=2):
     world = World()
     # set any world properties first
     world.dim_c = 2
     num_agents = num_agents_inpt
     num_adversaries = num_adversaries_inpt
     num_landmarks = num_landmarks_inpt
     # add agents
     world.agents = [Agent() for i in range(num_agents)]
     for i, agent in enumerate(world.agents):
         agent.name = 'agent %d' % i
         agent.collide = True
         agent.silent = True
         if i < num_adversaries:
             agent.adversary = True
         else:
             agent.adversary = False
     # add landmarks
     world.landmarks = [Landmark() for i in range(num_landmarks)]
     for i, landmark in enumerate(world.landmarks):
         landmark.name = 'landmark %d' % i
         landmark.collide = False
         landmark.movable = False
     # make initial conditions
     self.reset_world(world)
     return world
Ejemplo n.º 3
0
    def make_world(self):
        world = World()
        # set any world properties first
        world.dim_c = 2
        self.num_agents = 16
        self.num_good_agent = 4  # Cannot see landmark
        self.num_comm_agents = self.num_agents - self.num_good_agent  # Needs to split up

        num_landmarks = self.num_comm_agents

        # define vision
        self.adv_vision_count = 4  # Comm agent vision
        self.gd_vision_count = 2  # Need to capture agent
        self.land_vision_count = 6

        # add agents
        world.agents = [Agent() for i in range(self.num_agents)]
        for i, agent in enumerate(world.agents):
            agent.name = 'agent %d' % i
            agent.collide = False
            agent.silent = True
            agent.adversary = True if i < self.num_comm_agents else False
            # agent.adversary = True if i < num_adversaries else False
            agent.size = 0.15
        # add landmarks
        world.landmarks = [Landmark() for i in range(num_landmarks)]
        for i, landmark in enumerate(world.landmarks):
            landmark.name = 'landmark %d' % i
            landmark.collide = False
            landmark.movable = False
            landmark.size = 0.08

        # make initial conditions
        self.reset_world(world)
        return world
Ejemplo n.º 4
0
    def make_world(self, roverSpec: RoverSpec):

        world = World()
        self.env_spec = roverSpec
        num_poi = roverSpec.poi_count
        num_agents = roverSpec.agent_count
        reward_type = roverSpec.reward_type

        # add agents
        world.agents = [RoverAgent() for i in range(num_agents)]
        for i, agent in enumerate(world.agents):
            agent.name = 'agent %d' % i
            agent.collide = False
            agent.silent = True
        # add landmarks
        world.landmarks = [RoverLandmark() for i in range(num_poi)]
        for i, landmark in enumerate(world.landmarks):
            landmark.name = 'poi %d' % i
            landmark.collide = False
            landmark.movable = False

        # make initial conditions
        self._reset_world(world, True)
        self.reward_type = reward_type
        # self._obs_normalize(world)
        return world
Ejemplo n.º 5
0
    def make_world(self):
        world = World()
        # set any world properties first
        world.dim_c = 2
        num_agents = 5
        num_landmarks = 5

        # add agents
        world.agents = [Agent() for i in range(num_agents)]
        for i, agent in enumerate(world.agents):
            agent.name = 'agent %d' % i
            agent.collide = True
            agent.silent = True
            agent.size = 0.05
            agent.index = i

        # add landmarks
        world.landmarks = [Landmark() for i in range(num_landmarks)]
        for i, landmark in enumerate(world.landmarks):
            landmark.name = 'landmark %d' % i
            landmark.collide = False
            landmark.movable = False
        # make initial conditions
        self.reset_world(world)
        self.timestep = 0
        return world
    def make_world(self, **kwargs):
        """ Generate new world instance

        Parameters
        ----------
        kwargs: dict

        Returns
        -------
        world: World
        """

        world = World()
        world.dim_c = kwargs.get('dim_c', 0)

        num_a_agents = kwargs.get('num_a', 0)
        num_b_agents = kwargs.get('num_b', 0)

        if num_a_agents == 0 or num_a_agents == 0:
            raise Exception(
                'Number of agents should larger than 0, [A-Agents : B-Agents] = {0} : {1}'
                .format(num_a_agents, num_b_agents))

        world.agents = [Agent() for _ in range(num_a_agents + num_b_agents)]

        for i, agents in enumerate(world.agents):
            assert isinstance(agent, Agent)
            agent.name = 'agent %d' % i
            agent.index = 0 if i < num_a_agents else 1
            agent.collide = True

        self.reset_world(world)
        return world
    def make_world(self, num_agents=2, num_landmarks=3, num_obstacles=1):
        world = World()
        # set any world properties first
        world.dim_c = 2
        '''
        num_agents = 2
        num_landmarks = 2
        # add agents
        world.agents = [Agent() for i in range(num_agents)]
        for i, agent in enumerate(world.agents):
            agent.name = 'agent %d' % i
            agent.collide = True
            agent.silent = True
            agent.size = 0.10
        # add landmarks
        world.landmarks = [Landmark() for i in range(num_landmarks)]
        for i, landmark in enumerate(world.landmarks):
            landmark.name = 'landmark %d' % i
            landmark.collide = False
            landmark.movable = False
        '''

        world = self.setup_world(world, num_agents, num_landmarks,
                                 num_obstacles)

        # make initial conditions
        self.reset_world(world)
        return world
Ejemplo n.º 8
0
    def make_world(self, **kwargs):
        self.before_make_world(**kwargs)

        world = World()
        world.np_random = self.np_random

        # add agents
        world.agents = [Agent() for _ in range(1)]
        for i, agent in enumerate(world.agents):
            agent.name = 'agent %d' % i
            agent.collide = False
            agent.silent = True
            self.change_entity_attribute(agent, **kwargs)

        # add landmarks
        world.landmarks = [Landmark() for _ in range(1)]
        for i, landmark in enumerate(world.landmarks):
            landmark.name = 'landmark %d' % i
            landmark.collide = False
            landmark.movable = False
            self.change_entity_attribute(landmark, **kwargs)

        # make initial conditions
        self.reset_world(world)
        return world
    def make_world(self):

        self.viewers = [None]

        # set any world properties first
        world = World()
        world.dim_c = 2
        num_agents = 3
        rew_landmarks = 3
        car_landmarks = 6
        num_landmarks = car_landmarks + rew_landmarks

        # add agents
        world.agents = [Agent() for i in range(num_agents)]
        for i, agent in enumerate(world.agents):
            agent.name = 'agent %d' % i
            agent.collide = True
            agent.silent = True
            agent.size = 0.1
            agent.accel = 2
            agent.max_speed = 1

        # add landmarks
        world.landmarks = [Landmark() for i in range(num_landmarks)]
        for i, landmark in enumerate(world.landmarks):
            landmark.name = 'landmark %d' % i
            landmark.car = True if i < car_landmarks else False
            landmark.size = 0.1 if landmark.car else 0.02
            landmark.collide = True if landmark.car else False
            landmark.movable = True if landmark.car else False

        # make initial conditions
        self.reset_world(world)

        return world
Ejemplo n.º 10
0
    def make_world(self):
        world = World()
        # set any world properties first

        # world.dim_c is equal to communication channel dimensionality
        #### in this class the number of communication channel's dimension is changed to 10 channel per each agent
        world.dim_c = 10

        # add agents
        world.agents = [Agent() for i in range(2)]
        for i, agent in enumerate(world.agents):
            agent.name = 'agent %d' % i
            agent.collide = False

            # physical motor noise amount
            # agent.u_noise = 1e-1
            # communication noise amount
            # agent.c_noise = 1e-1
        # add landmarks
        world.landmarks = [Landmark() for i in range(3)]
        for i, landmark in enumerate(world.landmarks):
            landmark.name = 'landmark %d' % i
            landmark.collide = False
            landmark.movable = False
        # make initial conditions
        self.reset_world(world)
        return world
 def make_world(self):
     world = World()
     # set any world properties first
     world.dim_c = 2
     num_agents = 20
     #num_landmarks = 3
     world.collaborative = True
     # add agents
     world.agents = [Agent() for i in range(num_agents)]
     for i, agent in enumerate(world.agents):
         agent.name = 'agent %d' % i
         agent.collide = True
         agent.silent = True
         agent.size = 0.02
     """
     # add landmarks
     world.landmarks = [Landmark() for i in range(num_landmarks)]
     for i, landmark in enumerate(world.landmarks):
         landmark.name = 'landmark %d' % i
         landmark.collide = False
         landmark.movable = False
         landmark.size = 0.05
     """
     # make initial conditions
     self.reset_world(world)
     return world
Ejemplo n.º 12
0
 def make_world(self):
     world = World()
     # set any world properties first
     world.dim_c = 2
     num_good_agents = 1
     num_adversaries = 3
     num_agents = num_adversaries + num_good_agents
     num_landmarks = 2
     # add agents
     world.agents = [Agent() for i in range(num_agents)]
     for i, agent in enumerate(world.agents):
         agent.name = 'agent %d' % i
         agent.collide = True
         agent.silent = True
         agent.adversary = True if i < num_adversaries else False
         agent.size = 0.075 if agent.adversary else 0.05
         agent.accel = 3.0 if agent.adversary else 4.0
         #agent.accel = 20.0 if agent.adversary else 25.0
         agent.max_speed = 1.0 if agent.adversary else 1.3
     # add landmarks
     world.landmarks = [Landmark() for i in range(num_landmarks)]
     for i, landmark in enumerate(world.landmarks):
         landmark.name = 'landmark %d' % i
         landmark.collide = True
         landmark.movable = False
         landmark.size = 0.2
         landmark.boundary = False
     # make initial conditions
     self.reset_world(world)
     return world
 def make_world(self):
     world = World()
     # set any world properties first
     world.dim_c = 3
     num_landmarks = 3
     # add agents
     world.agents = [Agent() for i in range(2)]
     for i, agent in enumerate(world.agents):
         agent.name = 'agent %d' % i
         agent.collide = False
         agent.size = 0.075
     # speaker
     world.agents[0].movable = False
     # listener
     world.agents[1].silent = True
     # add landmarks
     world.landmarks = [Landmark() for i in range(num_landmarks)]
     for i, landmark in enumerate(world.landmarks):
         landmark.name = 'landmark %d' % i
         landmark.collide = False
         landmark.movable = False
         landmark.size = 0.04
     # make initial conditions
     self.reset_world(world)
     return world
Ejemplo n.º 14
0
 def make_world(self):
     world = World()
     # set any world properties first
     world.dim_c = 2
     num_good_agents = 5  # UAV Team
     num_adversaries = 1  # Target
     num_agents = num_adversaries + num_good_agents
     num_landmarks = 0
     desire_angle_form = 2 * np.pi / num_good_agents
     # add agents
     world.agents = [Agent() for i in range(num_agents)]
     for i, agent in enumerate(world.agents):
         agent.name = 'agent %d' % i
         agent.collide = True
         agent.silent = True
         agent.adversary = True if i < num_adversaries else False
         agent.size = 0.055 if agent.adversary else 0.05
         # agent.accel = 3.0 if agent.adversary else 4.0
         #agent.accel = 20.0 if agent.adversary else 25.0
         # agent.max_speed = 1.0 if agent.adversary else 1.3
         agent.max_speed = 1.3 if agent.adversary else 1  # adv is the target
         agent.attack = False  # add for locate which is attacked
     # add landmarks
     world.landmarks = [Landmark() for i in range(num_landmarks)]
     for i, landmark in enumerate(world.landmarks):
         landmark.name = 'landmark %d' % i
         landmark.collide = True
         landmark.movable = False
         landmark.size = 0.075
         landmark.boundary = False
     # make initial conditions
     self.reset_world(world)
     return world
Ejemplo n.º 15
0
 def make_world(self):
     world = World()
     # set any world properties first
     world.dim_c = 3
     num_landmarks = 3
     # add agents
     world.agents = [Agent() for i in range(2)]
     for i, agent in enumerate(world.agents):
         agent.name = 'agent %d' % i
         agent.collide = False
         agent.size = 0.075
     # speaker
     world.agents[0].movable = False
     # listener
     world.agents[1].silent = True
     # add landmarks
     world.landmarks = [Landmark() for i in range(num_landmarks)]
     for i, landmark in enumerate(world.landmarks):
         landmark.name = 'landmark %d' % i
         landmark.collide = False
         landmark.movable = False
         landmark.size = 0.04
     # make initial conditions
     self.reset_world(world)
     return world
Ejemplo n.º 16
0
    def make_world(self,
                   n_agents=3,
                   use_dense_rewards=False,
                   shuffle_landmarks=False,
                   color_objects=False):
        world = World()
        world.use_dense_rewards = use_dense_rewards
        self.shuffle_landmarks = shuffle_landmarks
        self.color_objects = color_objects

        # set any world properties first
        num_agents = n_agents
        num_landmarks = n_agents
        # add agents
        world.agents = [Agent() for i in range(num_agents)]
        for i, agent in enumerate(world.agents):
            agent.name = 'agent %d' % i
            agent.clip_positions = np.array([[-world.scale, -world.scale],
                                             [world.scale, world.scale]])
            agent.is_colliding = {
                other_agent.name: False
                for other_agent in world.agents if agent is not other_agent
            }
        # add landmarks
        world.landmarks = [Landmark() for i in range(num_landmarks)]
        for i, landmark in enumerate(world.landmarks):
            landmark.name = 'landmark %d' % i
            landmark.collide = False
            landmark.movable = False
            landmark.size *= 2

        # make initial conditions
        self.reset_world(world)
        return world
Ejemplo n.º 17
0
    def make_world(self):
        world = World()
        # set any world properties first
        # world.dim_c = 2
        self.num_agents = 4
        self.num_landmarks = 4
        print("NUMBER OF AGENTS:", self.num_agents)
        print("NUMBER OF LANDMARKS:", self.num_landmarks)
        world.collaborative = True

        # add agents
        world.agents = [Agent() for i in range(self.num_agents)]
        for i, agent in enumerate(world.agents):
            agent.name = 'agent %d' % i
            agent.collide = True
            agent.silent = True
            agent.size = 0.1  #was 0.15
            agent.prevDistance = None
        # add landmarks
        world.landmarks = [Landmark() for i in range(self.num_landmarks)]
        for i, landmark in enumerate(world.landmarks):
            landmark.name = 'landmark %d' % i
            landmark.collide = False
            landmark.movable = False
        # make initial conditions
        self.reset_world(world)
        return world
Ejemplo n.º 18
0
 def make_world(self):
     world = World()
     # set any world properties first
     world.dim_c = 0
     # First half will be vertical, second half will be horizontal
     num_agents = 4
     # Make sure number of agents is even for now
     assert num_agents % 2 == 0
     num_adversaries = 0
     num_landmarks = 2
     # add agents
     world.agents = [Agent() for i in range(num_agents)]
     for i, agent in enumerate(world.agents):
         agent.name = "agent %d" % i
         agent.collide = True
         agent.silent = True
         if i < num_adversaries:
             agent.adversary = True
         else:
             agent.adversary = False
     # add landmarks
     world.landmarks = [Landmark() for i in range(num_landmarks)]
     for i, landmark in enumerate(world.landmarks):
         landmark.name = "landmark %d" % i
         landmark.collide = False
         landmark.movable = False
     # make initial conditions
     self.reset_world(world)
     return world
Ejemplo n.º 19
0
 def make_world(self, args=None):
     world = World()
     # set any world properties first
     world.dim_c = 2
     num_good_agents = 1
     num_adversaries = 3
     num_agents = num_adversaries + num_good_agents  # deactivate "good" agent
     num_landmarks = 2
     # add agents
     world.agents = [Agent() for i in range(num_agents)]
     for i, agent in enumerate(world.agents):
         agent.name = 'agent %d' % i
         agent.collide = True
         agent.silent = True
         agent.adversary = True if i < num_adversaries else False  # last agent is good agent
         agent.size = 0.075 if agent.adversary else 0.05
         agent.accel = 3.0 if agent.adversary else 4.0
         #agent.accel = 20.0 if agent.adversary else 25.0
         agent.max_speed = 1.0 if agent.adversary else 1.3
         agent.action_callback = None if i < (num_agents -
                                              1) else self.prey_policy
         agent.view_radius = getattr(args, "agent_view_radius", -1)
         print("AGENT VIEW RADIUS set to: {}".format(agent.view_radius))
     # add landmarks
     world.landmarks = [Landmark() for i in range(num_landmarks)]
     for i, landmark in enumerate(world.landmarks):
         landmark.name = 'landmark %d' % i
         landmark.collide = True
         landmark.movable = False
         landmark.size = 0.2
         landmark.boundary = False
     # make initial conditions
     self.reset_world(world)
     self.score_function = getattr(args, "score_function", "sum")
     return world
Ejemplo n.º 20
0
    def make_world(self, n_preds=2, n_preys=1, use_dense_rewards=False, individual_reward=False):
        world = World()
        world.use_dense_rewards = use_dense_rewards
        self.individual_reward = individual_reward

        # set any world properties first
        num_agents = n_preds + n_preys
        num_landmarks = 0  # No landmark to avoid lucky catches since the prey is scripted and cannot avoid them
        # add policy for always_scripted agents
        self.runner_policy = RunnerPolicy()
        # add agents
        world.agents = [Agent() for i in range(num_agents)]
        for i, agent in enumerate(world.agents):
            agent.name = 'agent %d' % i
            agent.collide = True
            agent.adversary = False if i < n_preds else True
            agent.size = 0.04 if agent.adversary else 0.05
            agent.accel = 1.5 if agent.adversary else 1.
            agent.max_speed = 1.5 if agent.adversary else 1.
            agent.always_scripted = True if agent.adversary else False
            agent.clip_positions = np.array([[-world.scale, -world.scale], [world.scale, world.scale]])
            if agent.adversary and agent.always_scripted:
                agent.action_callback = self.runner_policy.action
        # add landmarks
        world.landmarks = [Landmark() for i in range(num_landmarks)]
        for i, landmark in enumerate(world.landmarks):
            landmark.name = 'landmark %d' % i
            landmark.collide = True
            landmark.movable = False
            landmark.size *= 2

        # make initial conditions
        self.reset_world(world)

        return world
    def reset_world(self, world: World):
        """Random initialize the world"""
        cam_range = 2

        for i, landmark in enumerate(world.landmarks):
            size = landmark.size
            landmark.state.p_pos = np.random.uniform(-cam_range + size,
                                                     cam_range - size,
                                                     world.dim_p)
            landmark.state.p_vel = np.zeros(world.dim_p)
            landmark.index = BALL_INDEX

        world.landmarks[1].state.p_pos = np.array([0., 0.])
        world.landmarks[1].size = self._agent_size
        world.landmarks[1].index = TARGET_INDEX

        # in this scenario, we set only one landmark as the target location
        for i, agent in enumerate(world.agents):
            size = agent.size
            agent.state.p_pos = np.random.uniform(-cam_range + size,
                                                  cam_range - size,
                                                  world.dim_p)
            agent.state.p_vel = np.zeros(world.dim_p)
            agent.size = self._agent_size
            agent.index = AGENT_INDEX

        world.target_location = np.array([0., 0.])
        world.collaborative = True
        self._last_distance = np.sqrt(
            np.sum(
                np.square(world.landmarks[0].state.p_pos -
                          world.landmarks[1].state.p_pos)))
 def make_world(self):
     world = World()
     # set any world properties first
     world.dim_c = 2
     num_agents = 3
     world.num_agents = num_agents
     num_adversaries = 1
     num_landmarks = num_agents - 1
     # add agents
     world.agents = [Agent() for i in range(num_agents)]
     for i, agent in enumerate(world.agents):
         agent.name = 'agent %d' % i
         agent.collide = False
         agent.silent = True
         agent.adversary = True if i < num_adversaries else False
         agent.size = 0.15
     # add landmarks
     world.landmarks = [Landmark() for i in range(num_landmarks)]
     for i, landmark in enumerate(world.landmarks):
         landmark.name = 'landmark %d' % i
         landmark.collide = False
         landmark.movable = False
         landmark.size = 0.08
     # make initial conditions
     self.reset_world(world)
     return world
Ejemplo n.º 23
0
    def make_world(self):
        """ Creates the world, the agents, the landmarks, the communication channels etc. These are for the time being all undifferentiated
        """
        world = World()
        self.world = world
        if self.communication:
            world.dim_c = self.comm_dim

        ### create the landmarks, among them the start and goal of VIP ###
        world.landmarks = self.create_landmarks(world, 12)

        ### create the agents ###
        for i in range(self.num_agents):
            if i == 0:
                agent = VIP(self)
            elif i <= self.num_bodyguards:
                agent = Bodyguard(self, self.communication, alpha=2, beta=2)
                agent.name = 'bodyguard %d' % (i)
            else:
                agent = Bystander(self)
                if i % 2 == 0:
                    agent = Bystander(self)
                agent.name = 'bystander %d' % (i - self.num_bodyguards)
                agent.accel = 3.0
                agent.max_speed = 1.0
            world.agents.append(agent)
        self.reset_world(world)
        return world
Ejemplo n.º 24
0
 def make_world(self):
     world = World()
     # set any world properties first
     world.dim_c = 2
     num_agents = 3
     num_landmarks = 3
     observing_range = 0.7
     world.observing_range = observing_range
     world.num_adversaries = num_agents
     world.collaborative = True
     world.neighbors_pred = 2
     world.neighbors_prey = 2
     # add agents
     world.agents = [Agent() for i in range(num_agents)]
     for i, agent in enumerate(world.agents):
         agent.name = 'agent %d' % i
         agent.collide = True
         agent.silent = True
         agent.size = 0.15
         agent.id = i
     # add landmarks
     world.landmarks = [Landmark() for i in range(num_landmarks)]
     for i, landmark in enumerate(world.landmarks):
         landmark.name = 'landmark %d' % i
         landmark.collide = False
         landmark.movable = False
     # make initial conditions
     self.reset_world(world)
     return world
Ejemplo n.º 25
0
 def make_world(self):
     world = World()
     # set any world properties first
     world.dim_c = 2
     num_good_agents = 1
     num_adversaries = 3
     num_agents = num_adversaries + num_good_agents
     num_landmarks = 2
     # add agents
     world.agents = [Agent() for i in range(num_agents)]
     for i, agent in enumerate(world.agents):
         agent.name = 'agent %d' % i
         agent.collide = True
         agent.silent = True
         agent.adversary = True if i < num_adversaries else False
         agent.size = 0.075 if agent.adversary else 0.05
         agent.accel = 3.0 if agent.adversary else 4.0
         #agent.accel = 20.0 if agent.adversary else 25.0
         agent.max_speed = 1.0 if agent.adversary else 1.3
     # add landmarks
     world.landmarks = [Landmark() for i in range(num_landmarks)]
     for i, landmark in enumerate(world.landmarks):
         landmark.name = 'landmark %d' % i
         landmark.collide = True
         landmark.movable = False
         landmark.size = 0.2
         landmark.boundary = False
     # make initial conditions
     self.reset_world(world)
     return world
Ejemplo n.º 26
0
    def make_world(self, **kwargs):
        """ Generate a world instance

        :param kwargs: dict, includes {'world_dim_c', 'num_agents', 'num_landmarks', 'num_adversaries'}
        :return: world, World, the world instance
        """

        world = World()
        world.dim_c = kwargs['world_dim_c']  # set communication channel size
        num_agents = kwargs['num_agents']  # set the number of agents
        num_landmarks = kwargs['num_landmarks']  # set the number of landmarks
        num_adversaries = kwargs[
            'num_adversaries']  # set the number of adversaries
        world.agents = [Agent() for _ in range(num_agents)]

        for i, agent in enumerate(world.agents):  # init agents' identification
            agent.name = 'agent %d' % i
            agent.collide = True
            agent.silent = True
            if i < num_adversaries:
                agent.adversary = True
            else:
                agent.adversary = False

        world.landmarks = [Landmark()
                           for _ in range(num_landmarks)]  # add landmarks
        for i, landmark in enumerate(world.landmarks):
            landmark.name = 'landmark %d' % i
            landmark.collide = False
            landmark.movable = False

        self.reset_world(world)  # make initial conditions
        return world
Ejemplo n.º 27
0
    def make_world(self, mode=2):
        """Define two agents, two boxes, and two targets.
        Note that world.goals are used only for hierarchical RL visualization only
        Mode0: Pre-train agents to move left box
        Mode1: Pre-train agents to move right box
        Mode2: Train agents to move both left and right box
        """
        world = World()
        self.mode = mode

        world.agents = [Agent() for i in range(2)]
        for i, agent in enumerate(world.agents):
            agent.name = 'agent %d' % i
            agent.collide = True
            agent.silent = True
            agent.size = 0.1

        self.boxes = [Landmark() for _ in range(2)]
        for i, box in enumerate(self.boxes):
            box.name = 'box %d' % i
            box.size = 0.25 
            box.collide = True
            box.index = i

            # Box modes for pre-training only
            if self.mode == 0 and box.index == 1:
                box.movable = False
            elif self.mode == 1 and box.index == 0:
                box.movable = False
            else:
                box.movable = True

            # Different box mass (Box1 is 3x heavier than Box0)
            if box.index == 0:
                box.initial_mass = 2.
            elif box.index == 1:
                box.initial_mass = 6.
            else:
                raise ValueError()
            world.landmarks.append(box)

        self.targets = [Landmark() for _ in range(2)]
        for i, target in enumerate(self.targets):
            target.name = 'target %d' % i
            target.collide = False
            target.movable = False
            target.size = 0.05
            target.index = i
            world.landmarks.append(target)

        world.goals = [Goal() for i in range(len(world.agents))]
        for i, goal in enumerate(world.goals):
            goal.name = 'goal %d' % i
            goal.collide = False
            goal.movable = False

        self.reset_world(world)
        
        return world
Ejemplo n.º 28
0
    def make_world(self, mode):
        world = World()
        self.mode = mode

        # add agents
        world.agents = [Agent() for i in range(2)]
        for i, agent in enumerate(world.agents):
            agent.name = 'agent %d' % i
            agent.collide = True
            agent.silent = True
            agent.size = 0.1

        # add boxes
        self.boxes = [Landmark() for _ in range(2)]
        for i, box in enumerate(self.boxes):
            box.name = 'box %d' % i
            box.size = 0.25
            box.collide = True
            box.index = i

            # Box movable for pretrain
            if self.mode == 0 and box.index == 1:
                box.movable = False
            elif self.mode == 1 and box.index == 0:
                box.movable = False
            else:
                box.movable = True

            # Different box mass
            if box.index == 0:
                box.initial_mass = 2.
            elif box.index == 1:
                box.initial_mass = 6.
            else:
                raise ValueError()
            world.landmarks.append(box)

        # add targets
        self.targets = [Landmark() for _ in range(2)]
        for i, target in enumerate(self.targets):
            target.name = 'target %d' % i
            target.collide = False
            target.movable = False
            target.size = 0.05
            target.index = i
            world.landmarks.append(target)

        # add goals (used only for vis)
        world.goals = [Goal() for i in range(len(world.agents))]
        for i, goal in enumerate(world.goals):
            goal.name = 'goal %d' % i
            goal.collide = False
            goal.movable = False

        # make initial conditions
        self.reset_world(world)

        return world
Ejemplo n.º 29
0
    def make_world(self):
        world = World()
        # set any world properties first
        world.dim_c = 2
        num_good_agents = 2
        num_adversaries = 2
        num_agents = num_adversaries + num_good_agents
        num_landmarks = 2

        num_walls=12

        # add agents
        world.agents = [Agent() for i in range(num_agents)]
        for i, agent in enumerate(world.agents):
            agent.name = 'agent %d' %i
            agent.name_id=i
            agent.collide = True
            agent.silent = True
            agent.shooting_angle=0
            agent.test=[0,0]
            agent.bonus=1
            agent.adversary = True if i < num_adversaries else False
            agent.size = 0.075 if agent.adversary else 0.05
            #agent.accel = 3.0 if agent.adversary else 4.0
            agent.accel = 20.0 if agent.adversary else 25.0
            agent.max_speed = 2.0 if agent.adversary else 2.0
        # # add landmarks
        # world.landmarks = [Landmark() for i in range(num_landmarks)]
        # for i, landmark in enumerate(world.landmarks):
        #     landmark.name = 'landmark %d' % i
        #     landmark.collide = True
        #     landmark.movable = False
        #     landmark.size = 0.2
        #     landmark.boundary = False

        # make initial conditions
        world.obstacles = [wall() for i in range(num_walls)]
        world.obstacles[0].xy=[[2200,0],[2500,800]]
        world.obstacles[1].xy=[[3700,1200],[4000,2000]]
        world.obstacles[2].xy=[[1500,1800],[2700,2100]]
        world.obstacles[3].xy=[[0,3100],[2000,3400]]
        for i in range(4):
            t=world.obstacles[i].xy
            world.obstacles[i+4].xy=[[5000-t[1][0],8000-t[1][1]],
                                    [5000-t[0][0],8000-t[0][1]]]
        world.obstacles[8].xy=[[-300,-300],[5300,0]]
        world.obstacles[9].xy=[[-300,-300],[0,8300]]
        world.obstacles[10].xy=[[5000,-300],[5300,8300]]
        world.obstacles[11].xy=[[-300,8000],[5300,8300]]
        
        for i in range(num_walls):
            world.obstacles[i].xy=np.array(world.obstacles[i].xy)/100*0.075



        self.reset_world(world)
        return world
 def make_world(self):
     world = World()
     # set any world properties first
     world.dim_c = 4
     #world.damping = 1
     num_good_agents = 2
     num_adversaries = 4
     num_agents = num_adversaries + num_good_agents
     num_landmarks = 1
     num_food = 2
     num_forests = 2
     world.neighbors_pred = 2  # number of neighbors per pred
     world.neighbors_prey = 2  # number of neighbors per prey
     world.num_adversaries = num_adversaries
     # add agents
     world.agents = [Agent() for i in range(num_agents)]
     for i, agent in enumerate(world.agents):
         agent.name = 'agent %d' % i
         agent.id = i
         agent.collide = True
         # agent.leader = True if i == 0 else False
         agent.leader = False
         # agent.silent = True if i > 0 else False
         agent.silent = True
         agent.adversary = True if i < num_adversaries else False
         agent.size = 0.075 if agent.adversary else 0.045
         agent.accel = 3.0 if agent.adversary else 4.0
         #agent.accel = 20.0 if agent.adversary else 25.0
         agent.max_speed = 1.0 if agent.adversary else 1.3
     # add landmarks
     world.landmarks = [Landmark() for i in range(num_landmarks)]
     for i, landmark in enumerate(world.landmarks):
         landmark.name = 'landmark %d' % i
         landmark.collide = True
         landmark.movable = False
         landmark.size = 0.2
         landmark.boundary = False
     world.food = [Landmark() for i in range(num_food)]
     for i, landmark in enumerate(world.food):
         landmark.name = 'food %d' % i
         landmark.collide = False
         landmark.movable = False
         landmark.size = 0.03
         landmark.boundary = False
     world.forests = [Landmark() for i in range(num_forests)]
     for i, landmark in enumerate(world.forests):
         landmark.name = 'forest %d' % i
         landmark.collide = False
         landmark.movable = False
         landmark.size = 0.3
         landmark.boundary = False
     world.landmarks += world.food
     world.landmarks += world.forests
     #world.landmarks += self.set_boundaries(world)  # world boundaries now penalized with negative reward
     # make initial conditions
     self.reset_world(world)
     return world
Ejemplo n.º 31
0
 def make_world(self):
     world = World()
     # set any world properties first
     world.dim_c = 2
     world.num_agents = 4
     world.num_goals = 4
     # world.num_obstacles = 2
     world.num_obstacles = 2
     world.collaborative = True
     # self.landmarkspeed = np.random.normal(size=2)
     # add agents
     world.agents = [Agent() for i in range(world.num_agents)]
     for i, agent in enumerate(world.agents):
         agent.name = 'agent %d' % i
         agent.collide = True
         agent.silent = True
         agent.size = 0.1
     # add goals
     world.landmarks = [
         Landmark() for i in range(world.num_goals + world.num_obstacles)
     ]
     p_vel = np.random.normal(size=2)
     for i, landmark in enumerate(world.landmarks):
         if i < world.num_goals:
             landmark.name = 'goal %d' % i
             landmark.collide = False
             landmark.movable = False
             landmark.state.p_vel = p_vel
         else:
             landmark.name = 'obstacle %d' % (i - world.num_goals)
             landmark.collide = True
             landmark.movable = False
     self.reset_world(world)
     return world
Ejemplo n.º 32
0
 def make_world(self):
     world = World()
     # set any world properties first
     world.dim_c = 2
     num_agents = 7
     num_preys = 3
     world.collaborative = False
     world.discrete_action = True
     world.num_agents_obs = 3
     world.num_preys_obs = 3
     # add agents
     world.agents = [Agent() for i in range(num_agents)]
     for i, agent in enumerate(world.agents):
         agent.name = 'agent %d' % i
         agent.collide = True
         agent.silent = True
         agent.size = 0.04
         agent.accel = 5.0
     # add landmarks
     world.preys = [Agent() for i in range(num_preys)]
     for i, prey in enumerate(world.preys):
         prey.name = 'prey %d' % i
         prey.collide = False
         prey.movable = True
         prey.silent = True
         prey.size = 0.05
         prey.accel = 7.0
     # make initial conditions
     self.reset_world(world)
     return world
Ejemplo n.º 33
0
    def make_world(self, **kwargs):
        self.before_make_world(**kwargs)

        world = World()
        world.np_random = self.np_random
        # cache kwargs in case needed in Env wrapper
        world.config = kwargs
        # set any world properties first
        world.collaborative = True
        # all entity positions are scaled/extended by size
        world.size = kwargs.get("world_size", 1)
        world.dim_c = kwargs.get("dim_c", 2)

        num_agents = kwargs.get("num_agents", 3)
        # num_good_agents = kwargs.get("num_good_agents", 1)
        # num_adversaries = kwargs.get("num_adversaries", 1)
        # num_agents = num_adversaries + num_good_agents
        num_landmarks = kwargs.get("num_landmarks", 2)
        num_balls = kwargs.get("num_balls", 1)

        # add agents
        world.agents = [SkilledAgent() for i in range(num_agents)]
        for i, agent in enumerate(world.agents):
            agent.name = 'agent %d' % i
            agent.collide = True
            agent.silent = kwargs.get("agent_silence", True)
            agent.size = 0.025
            # agent.adversary = True if i < num_adversaries else False
            # agent.type = "adversary" if agent.adversary else "agent"
            # agent.size = 0.075 if agent.adversary else 0.05
            # agent.accel = 3.0 if agent.adversary else 4.0
            # agent.max_speed = 1.0 if agent.adversary else 1.3
            self.change_entity_attribute(agent, world, **kwargs)

        # add landmarks
        world.landmarks = [Landmark() for i in range(num_landmarks)]
        for i, landmark in enumerate(world.landmarks):
            landmark.name = 'landmark %d' % i
            landmark.collide = True
            landmark.movable = False
            # landmark.size = 0.075
            self.change_entity_attribute(landmark, world, **kwargs)

        # add balls
        world.balls = [Landmark() for i in range(num_balls)]
        for i, landmark in enumerate(world.balls):
            landmark.name = 'ball %d' % i
            landmark.collide = True
            landmark.movable = True
            landmark.size = 0.2
            self.change_entity_attribute(landmark, world, **kwargs)

        # make initial conditions
        self.reset_world(world, **kwargs)
        return world
Ejemplo n.º 34
0
 def make_world(self):
     world = World()
     # add agents
     world.agents = [Agent() for i in range(1)]
     for i, agent in enumerate(world.agents):
         agent.name = 'agent %d' % i
         agent.collide = False
         agent.silent = True
     # add landmarks
     world.landmarks = [Landmark() for i in range(1)]
     for i, landmark in enumerate(world.landmarks):
         landmark.name = 'landmark %d' % i
         landmark.collide = False
         landmark.movable = False
     # make initial conditions
     self.reset_world(world)
     return world
 def make_world(self):
     world = World()
     # set any world properties first
     world.dim_c = 10        
     # add agents
     world.agents = [Agent() for i in range(2)]
     for i, agent in enumerate(world.agents):
         agent.name = 'agent %d' % i
         agent.collide = False
         # agent.u_noise = 1e-1
         # agent.c_noise = 1e-1
     # add landmarks
     world.landmarks = [Landmark() for i in range(3)]
     for i, landmark in enumerate(world.landmarks):
         landmark.name = 'landmark %d' % i
         landmark.collide = False
         landmark.movable = False
     # make initial conditions
     self.reset_world(world)
     return world
 def make_world(self):
     world = World()
     # set any world properties first
     world.dim_c = 4
     #world.damping = 1
     num_good_agents = 2
     num_adversaries = 4
     num_agents = num_adversaries + num_good_agents
     num_landmarks = 1
     num_food = 2
     num_forests = 2
     # add agents
     world.agents = [Agent() for i in range(num_agents)]
     for i, agent in enumerate(world.agents):
         agent.name = 'agent %d' % i
         agent.collide = True
         agent.leader = True if i == 0 else False
         agent.silent = True if i > 0 else False
         agent.adversary = True if i < num_adversaries else False
         agent.size = 0.075 if agent.adversary else 0.045
         agent.accel = 3.0 if agent.adversary else 4.0
         #agent.accel = 20.0 if agent.adversary else 25.0
         agent.max_speed = 1.0 if agent.adversary else 1.3
     # add landmarks
     world.landmarks = [Landmark() for i in range(num_landmarks)]
     for i, landmark in enumerate(world.landmarks):
         landmark.name = 'landmark %d' % i
         landmark.collide = True
         landmark.movable = False
         landmark.size = 0.2
         landmark.boundary = False
     world.food = [Landmark() for i in range(num_food)]
     for i, landmark in enumerate(world.food):
         landmark.name = 'food %d' % i
         landmark.collide = False
         landmark.movable = False
         landmark.size = 0.03
         landmark.boundary = False
     world.forests = [Landmark() for i in range(num_forests)]
     for i, landmark in enumerate(world.forests):
         landmark.name = 'forest %d' % i
         landmark.collide = False
         landmark.movable = False
         landmark.size = 0.3
         landmark.boundary = False
     world.landmarks += world.food
     world.landmarks += world.forests
     #world.landmarks += self.set_boundaries(world)  # world boundaries now penalized with negative reward
     # make initial conditions
     self.reset_world(world)
     return world