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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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