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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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, 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): 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
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 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
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): 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