Esempio n. 1
0
 def make_world(self):
     world = World()
     # set any world properties first
     world.dim_c = 2
     num_agents = 3
     num_landmarks = 3
     num_obstacles = 2
     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 = size_agents
     # 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 = size_landmarks
     # add obstacles
     world.obstacles = [Landmark() for i in range(num_obstacles)]
     for i, landmark in enumerate(world.obstacles):
         landmark.name = 'obstacles %d' % i
         landmark.collide = True
         landmark.movable = False
         landmark.size = size_obstacles
         landmark.boundary = False
     world.landmarks += world.obstacles
     # make initial conditions
     self.reset_world(world)
     return world
Esempio n. 2
0
 def make_world(self):
     world = World()
     # set any world properties first
     world.dim_c = 2
     num_agents = 1
     num_landmarks = 1
     num_obstacles = 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 = True
         agent.silent = True
         agent.size = 0.08
     # 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
     # add obstacles
     world.obstacles = [Landmark() for i in range(num_obstacles)]
     for i, obstacle in enumerate(world.obstacles):
         obstacle.name = 'obstacle %d' % i
         obstacle.collide = True
         obstacle.movable = False
         obstacle.size = 0.30
         obstacle.boundary = False
     # make initial conditions
     self.reset_world(world)
     return world
    def set_boundaries(self, world):
        boundary_list = []
        landmark_size = 1
        edge = 1 + landmark_size
        num_landmarks = int(edge * 2 / landmark_size)
        for x_pos in [-edge, edge]:
            for i in range(num_landmarks):
                l = Landmark()
                l.state.p_pos = np.array([x_pos, -1 + i * landmark_size])
                boundary_list.append(l)

        for y_pos in [-edge, edge]:
            for i in range(num_landmarks):
                l = Landmark()
                l.state.p_pos = np.array([-1 + i * landmark_size, y_pos])
                boundary_list.append(l)

        for i, l in enumerate(boundary_list):
            l.name = 'boundary %d' % i
            l.collide = True
            l.movable = False
            l.boundary = True
            l.color = np.array([0.75, 0.75, 0.75])
            l.size = landmark_size
            l.state.p_vel = np.zeros(world.dim_p)

        return boundary_list
    def make_world(self, use_reputation=True):
        self.world = world = World()
        self.use_reputation = use_reputation

        world.dim_c = 2

        self.food_source = food_source = Landmark()
        food_source.name = 'food-source'
        food_source.collide = True
        food_source.movable = False
        food_source.size = 0.2
        food_source.boundary = False
        food_source.color = np.array([.3, .9, .3])

        self.nest = nest = Landmark()
        nest.name = 'nest'
        nest.collide = True
        nest.movable = False
        nest.size = 0.2
        nest.boundary = False
        nest.color = np.array([.9, .7, .5])

        world.landmarks = [food_source, nest]

        # Add agents.
        world.agents = \
            [Pleb(food_source, nest) for i in range(5)]
        #-    [Spy()  for i in range(3)]

        self.reset_world(world)
        return world
    def make_world(self, use_reputation=True):
        self.world = world = World()
        self.use_reputation = use_reputation

        world.dim_c = 2

        self.food_source = food_source = Landmark()
        food_source.name = 'food-source'
        food_source.collide = False
        food_source.movable = False
        food_source.size = .09
        food_source.boundary = False
        food_source.color = GREEN

        self.nest = nest = Landmark()
        nest.name = 'nest'
        nest.collide = False
        nest.movable = False
        nest.size = .09
        nest.boundary = False
        nest.color = BROWN

        world.landmarks = [food_source, nest]

        # Add agents.
        self.plebs = [Pleb(food_source, nest) for i in range(2)]
        self.spies = [Spy() for i in range(1)]
        world.agents = self.plebs + self.spies

        self.reset_world(world)
        return world
Esempio n. 6
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
Esempio n. 7
0
    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
        self.food_ate = 0
        self.good_ate = 0

        # 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
            agent.ate = 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 = True
            landmark.movable = False
            landmark.size = 0.1
            landmark.boundary = False
            landmark.ate = 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
            landmark.ate = 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.15
            landmark.boundary = False
            landmark.ate = 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
Esempio n. 8
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
    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
    def make_world(self, mode):
        """
        - mode0: Pretrain from room2 to room1
        - mode1: Pretrain from room1 to target
        - mode2: Train from room2 to target
        """
        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
            agent.color = np.array([1.0, 0.0, 0.0]) if i == 0 else np.array(
                [0.0, 1.0, 0.0])

        # add boxes
        self.box = Landmark()
        self.box.name = 'box'
        self.box.collide = True
        self.box.movable = True
        self.box.size = 0.25  # Radius
        self.box.initial_mass = 3.
        self.box.color = np.array([0.25, 0.25, 0.25])
        world.landmarks.append(self.box)

        # add targets
        self.target = Landmark()
        self.target.name = 'target'
        self.target.collide = False
        self.target.movable = False
        self.target.size = 0.05
        self.target.color = np.array([0.25, 0.25, 0.25])
        world.landmarks.append(self.target)

        # add borders
        self.add_borders(world)

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

        # 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 = self.num_agents
     num_landmarks = self.num_agents
     num_obstacles = 12
     # generate one-hot encoding for unique hidden goals
     self.one_hot_array = list(itertools.product([0, 1], repeat=num_landmarks))
     # generate colours for goal identification
     for _ in range(num_landmarks):
         self.colours.append(np.random.uniform(-1, +1, 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.10
         agent.color = self.colours[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
         landmark.color = self.colours[i]
         landmark.id = self.one_hot_array[2**i]
         self.occupied_landmarks.append(0)
     # add obstacles
     world.obstacles = [Landmark() for i in range(num_obstacles)]
     for i, obstacle in enumerate(world.obstacles):
         obstacle.name = 'obstacle %d' % i
         obstacle.collide = True
         obstacle.movable = False
         obstacle.size = 0.40
         obstacle.boundary = False
         obstacle.color = np.array([0.25, 0.25, 0.25])
         # self.create_wall(world, obstacle, 10, -0.2, -1, -0.2, -0.2)
     # make initial conditions
     for i, agent in enumerate(world.agents):
         agent.state.p_pos = np.array(self.sample_position())
         if i > 0:
             self.check_for_spawn_clash(world.agents, agent)
         agent.state.p_vel = np.zeros(world.dim_p)
         agent.state.c = np.zeros(world.dim_c)
         self.assign_goals(i, agent)
     self.reset_world(world)
     return world
    def make_world(self):
        world = HazardousWorld()

        # set scenario-specific world parameters
        world.collaborative = True
        world.systemic_rewards = True
        world.identical_rewards = self.identical_rewards
        world.dim_c = 0  # observation-based communication
        world.connection_reward = _CONNECTION_REWARD
        world.termination_reward = _TERMINATION_REWARD
        world.render_connections = True

        # add landmarks. terminals first then hazards (if any)
        # world.origin_terminal_landmark = RiskRewardLandmark( risk_fn=None, reward_fn=RadialReward(1.0, 0.0))
        # world.destination_terminal_landmark = RiskRewardLandmark( risk_fn=None, reward_fn=RadialReward(1.0, 0.0))
        world.origin_terminal_landmark = Landmark()
        world.destination_terminal_landmark = Landmark()
        world.landmarks = [
            world.origin_terminal_landmark, world.destination_terminal_landmark
        ]

        world.hazard_landmarks = []
        for i in range(self.num_hazards):
            lm = RiskRewardLandmark(risk_fn=RadialRisk(_HAZARD_SIZE,
                                                       self.hazard_risk),
                                    reward_fn=RadialReward(_HAZARD_SIZE, 0.0))
            lm.silent = True
            lm.deaf = True
            lm.ignore_connection_rendering = True
            world.hazard_landmarks.append(lm)
            world.landmarks.append(lm)

        for i, landmark in enumerate(world.landmarks):
            landmark.name = 'landmark_%d' % i
            landmark.collide = False
            landmark.movable = False
            landmark.size = _LANDMARK_SIZE
            # properties for landmarks
            if isinstance(landmark, RiskRewardLandmark) and landmark.is_hazard:
                #TODO: make colors heatmap of risk probability over all bounds
                landmark.color = np.array([
                    landmark.risk_fn.get_failure_probability(0, 0) + .1, 0, 0
                ])
            else:
                landmark.color = np.array([0.25, 0.25, 0.25])

        # 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 = self.num_agents
        num_landmarks = 1
        world.collaborative = False

        # add agents
        world.agents = [Agent(iden=i) 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.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
            landmark.size = 0.03

        # make initial conditions
        self.reset_world(world)
        world.dists = []
        return world
Esempio n. 14
0
 def make_world(self):
     world = World()
     # set any world properties first
     world.dim_c = 3
     num_landmarks = 3
     world.collaborative = True
     # 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
Esempio n. 15
0
 def make_world(self):
     # world = World(self.scripted_agents, self.observation)
     world = World(None, self.observation)
     self.np_rnd = np.random.RandomState(0)
     # set any world properties first
     world.dim_c = 2
     num_good_agents = 3
     num_adversaries = 2
     world.num_adversaries = num_adversaries
     num_agents = num_adversaries + num_good_agents
     num_landmarks = 2
     self.world_radius = 1
     # add agents
     world.agents = [Agent(), Agent(), Agent(), Agent(), Agent()]
     # world.agents = [Agent(), Agent(), Agent(), Agent(action_callback)]
     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
Esempio n. 16
0
 def make_world(self):
     world = World()
     # set any world properties first
     world.dim_c = 2
     num_agents = 3
     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.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
     # add noise field
     noise_field = create_noise_field(world.dim_p)
     world.landmarks.append(noise_field)
     # make initial conditions
     self.reset_world(world)
     return world
Esempio n. 17
0
    def make_world(self, n_agents=3, use_dense_rewards=False):
        world = World()
        world.use_dense_rewards = use_dense_rewards

        # set any world properties first
        num_agents = n_agents
        num_landmarks = 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.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 *= 3

        # make initial conditions
        self.reset_world(world)

        return world
Esempio n. 18
0
    def make_world(self, use_dense_rewards=True):
        world = World()
        world.use_dense_rewards = True  # We always use_dense_rewards in this task

        # set any world properties first
        num_landmarks = 3
        num_agents = 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.clip_positions = np.array([[-world.scale, -world.scale],
                                             [world.scale, world.scale]])
            agent.collide = False
            if i == 0:
                agent.role = "runner"
            elif i == 1:
                agent.role = "pursuer"
            else:
                raise ValueError(
                    'There should only be two agents in this scenario')
        # 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 *= 4
            landmark.is_activated = False
        # make initial conditions
        self.reset_world(world)
        return world
Esempio n. 19
0
 def make_world(self):
     world = World()
     # set any world properties first
     world.dim_c = 2
     num_agents = 1
     num_landmarks = 20
     world.observing_range = 0.7
     world.min_corridor = 0.06
     world.collaborative = True
     # add agents
     world.agents = [Agent() for _ 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.03
     # add landmarks
     world.landmarks = [Landmark() for _ in range(num_landmarks)]
     for i, landmark in enumerate(world.landmarks):
         landmark.name = 'landmark %d' % i
         landmark.collide = False
         landmark.movable = False
         landmark.size = np.random.uniform(0.1, 0.2)
         if i == (len(world.landmarks) - 1):
             landmark.size = 0.03
     # make initial conditions
     self.reset_world(world)
     return world
 def make_world(self):
     world = World(is_dynamic=False, position_scale=50000.0)
     world.discrete_action_space = True
     world.dt = 1.0
     n_landmarks = 1
     # 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
         agent.fusioned_sa = LandMarkObservation(n_landmarks, agent, world)
         agent.platform_action = HeadingAction()
         agent.fire_action = FireAction(2)
         agent.max_speed = 350.0  # 700.0
         agent.min_speed = 0.8 * agent.max_speed
         agent.accel = [1.0 * 9.81, 8.0]
         agent.sensor = Sensor([2 * np.pi / 3], [100000.0], [2.5e-5])
     # add landmarks
     world.landmarks = [Landmark() for i in range(n_landmarks)]
     for i, landmark in enumerate(world.landmarks):
         landmark.name = 'landmark %d' % i
         landmark.collide = False
         landmark.movable = False
         # landmark.rwr = Rwr(max_range=200000.0, min_range=2.5e-5)
     # make initial conditions
     self.reset_world(world)
     return world
Esempio n. 21
0
 def make_world(self):
     world = World()
     # set any world properties first
     world.dim_c = 2
     num_good_agents = 3
     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
Esempio n. 22
0
 def make_world(self, args):
     world = World()
     # set any world properties first
     world.dim_c = 2
     world.num_agents = args.num_agents
     world.num_landmarks = args.num_landmarks
     world.step_unknown = args.step_unknown
     world.unknown_decay = args.unknown_decay
     world.decay_episode = args.decay_episode
     world.critic_full_obs = args.critic_full_obs
     world.num_reset = 0
     # 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.15
     # add landmarks
     world.landmarks = [Landmark() for i in range(world.num_landmarks)]
     for i, landmark in enumerate(world.landmarks):
         landmark.name = 'landmark %d' % i
         landmark.collide = False
         landmark.movable = False
     world.select_goal = np.random.randint(0, world.num_landmarks)
     world.agents[0].goal = world.landmarks[world.select_goal]
     # 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 = 5
        num_adversaries = 3
        num_landmarks = 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 = 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
Esempio n. 24
0
    def make_world(self):
        world = World()
        # set any world properties first
        world.dim_c = 2
        world.agents_num = self.num_agents
        num_landmarks = 0
        # 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.index = i

            agent.collide = True
            agent.silent = True

            ##########################
            agent.adversary = True if i < self.num_adversaries else False

            agent.size = agent_size if agent.adversary else adver_size
            # agent.accel = 3.0 if agent.adversary else 4.0
            agent.accel = 200.0 if agent.adversary else 250.0
            agent.max_speed = agent_speed * 10 if agent.adversary else adver_speed * 10  #v = speed /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 = 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 = 5
        world.collaborative = True

        # this will be the furthest any agent can move in any direction
        world.size = 5

        # 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  # I think this is irrelevant?
        # speaker
        world.agents[0].movable = False
        # listener (discrete)
        world.agents[1].silent = True
        world.agents[1].hopper = 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  # I think this is irrelevant?
        # make initial conditions
        self.reset_world(world)
        return world
Esempio n. 26
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
Esempio n. 27
0
 def make_world(self):
     world = World()
     # set any world properties first
     world.dim_c = 2
     world.num_agents = num_agents = 1
     world.num_goals = num_goals = 1
     world.num_obstacles = num_obstacles = 1
     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.1
     # add landmarks
     world.landmarks = [
         Landmark() for i in range(num_goals + num_obstacles)
     ]
     for i, landmark in enumerate(world.landmarks):
         if i < num_goals:
             landmark.name = 'goal %d' % i
             landmark.collide = True
             landmark.movable = False
         else:
             landmark.name = 'obstacle %d' % (i - num_goals)
             landmark.size = 0.1
             landmark.collide = True
             landmark.movable = False
     # make initial conditions
     self.reset_world(world)
     return world
 def make_world(self, num_agents_inpt=2, num_adversaries_inpt=1):
     world = World()
     # set any world properties first
     world.dim_c = 2
     num_agents = num_agents_inpt
     world.num_agents = num_agents_inpt
     num_adversaries = num_adversaries_inpt
     num_landmarks = num_agents - num_adversaries_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 = False
         agent.silent = True
         agent.adversary = True if i < num_adversaries else False
         agent.color = np.array([0.0, 0.0, 0.0]) if i < num_adversaries else np.array([1.0, 1.0, 0.0])
         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
Esempio n. 29
0
    def make_world(self, mode=0):
        world = World()
        self.mode = mode

        # set any world properties first
        world.dim_c = 2
        num_agents = 2
        num_landmarks = 2
        world.collaborative = True
        assert num_agents == 2, "This env is only for two 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 = False
            agent.silent = True
            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

        # 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 = 3
     num_landmarks = 0
     world.collaborative = False
     # 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.08
     # add edges
     world.edges = []
     for i in range(len(world.agents)):
         world.edges.append(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.collide = False
         landmark.movable = False
     # make initial conditions
     self.reset_world(world)
     return world