Esempio n. 1
0
    def _default_agents(self):
        agents = Agents(agent_type=self.agent_type)
        obstacles = geom_to_linear_obstacles(self.field.obstacles)

        # Add new spawns to the field for the leaders
        self.field.spawns.extend([
            rectangle(25, 45, 10, 10),
            rectangle(80, 65, 10, 10),
            rectangle(75, 35, 10, 10),
            rectangle(35, 5, 10, 10),
        ])

        for i in range(self.size_leaders):
            group_leader = AgentGroup(
                agent_type=self.agent_type,
                size=1,
                attributes=self.attributes(target=i, is_follower=False))

            agents.add_non_overlapping_group(
                group_leader,
                position_gen=self.field.sample_spawn(i + 1),
                obstacles=obstacles)

        group_herding = AgentGroup(
            agent_type=self.agent_type,
            size=self.size_herding,
            attributes=self.attributes(target=NO_TARGET, is_follower=True))

        agents.add_non_overlapping_group(
            group_herding,
            position_gen=self.field.sample_spawn(0),
            obstacles=obstacles)

        return agents
def agents_three_circle(size=10):
    agents = Agents(agent_type=ThreeCircle)
    group = AgentGroup(agent_type=ThreeCircle,
                       size=size,
                       attributes=attributes)
    agents.add_non_overlapping_group(
        group, position_gen=lambda: np.random.uniform(-10.0, 10.0, 2))
    return agents
Esempio n. 3
0
def test_agent_agent_block_list(benchmark, size, agent_type, algorithm):
    # Grow the area with size. Keeps agent density constant.
    area_size = np.sqrt(2 * size)
    agents = Agents(agent_type=agent_type)
    group = AgentGroup(agent_type=agent_type, size=size, attributes=attributes)
    agents.add_non_overlapping_group(
        group,
        position_gen=lambda: np.random.uniform(-area_size, area_size, 2))
    benchmark(agent_agent_block_list, agents.array)
    assert True
    def _default_agents(self):
        agents = Agents(agent_type=self.agent_type)

        group = AgentGroup(agent_type=self.agent_type,
                           size=self.size,
                           attributes=self.attributes)

        agents.add_non_overlapping_group(
            group, position_gen=self.field.sample_spawn(0))

        return agents
    def _observe_agents(self, change):
        if self.agent_type is not None:
            agents = Agents(agent_type=self.agent_type)

            group = AgentGroup(agent_type=self.agent_type,
                               size=self.size,
                               attributes=self.attributes)

            agents.add_non_overlapping_group(group,
                                             position_gen=lambda: np.array(
                                                 (0, 0)))

            self.agents = agents
    def _default_agents(self):
        agents = Agents(agent_type=self.agent_type)

        group1 = AgentGroup(size=self.size // 2,
                            agent_type=self.agent_type,
                            attributes=self.attributes1)
        group2 = AgentGroup(size=self.size // 2,
                            agent_type=self.agent_type,
                            attributes=self.attributes2)

        agents.add_non_overlapping_group(
            group=group1, position_gen=self.field.sample_spawn(0))
        agents.add_non_overlapping_group(
            group=group2, position_gen=self.field.sample_spawn(1))

        return agents
    def _default_agents(self):
        agents = Agents(agent_type=self.agent_type)

        for spawn, name in enumerate(
            ['finlandiahall', 'foyer', 'helsinkihall']):
            group = AgentGroup(agent_type=self.agent_type,
                               size=getattr(self, f'size_{name}'),
                               attributes=self.attributes(has_target=True,
                                                          is_follower=False))

            agents.add_non_overlapping_group(
                group,
                position_gen=self.field.sample_spawn(spawn),
                obstacles=geom_to_linear_obstacles(self.field.obstacles))

        return agents
    def _default_agents(self):
        agents = Agents(agent_type=self.agent_type)

        group_leader = AgentGroup(agent_type=self.agent_type,
                                  size=self.size_leaders,
                                  attributes=self.attributes(is_leader=True))

        agents.add_non_overlapping_group(
            group_leader, position_gen=self.field.sample_spawn(0))

        group_herding = AgentGroup(agent_type=self.agent_type,
                                   size=self.size_herding,
                                   attributes=self.attributes(is_leader=False))

        agents.add_non_overlapping_group(
            group_herding, position_gen=self.field.sample_spawn(0))

        return agents
Esempio n. 9
0
    def _default_agents(self):
        agents = Agents(agent_type=self.agent_type)

        group_active = AgentGroup(
            agent_type=self.agent_type,
            size=self.size_leaders,
            attributes=self.attributes(has_target=True, is_follower=False))

        group_herding = AgentGroup(
            agent_type=self.agent_type,
            size=self.size_herding,
            attributes=self.attributes(has_target=False, is_follower=True))

        for group in (group_active, group_herding):
            agents.add_non_overlapping_group(
                group,
                position_gen=self.field.sample_spawn(0),
                obstacles=geom_to_linear_obstacles(self.field.obstacles))

        return agents
    def _default_agents(self):
        agents = Agents(agent_type=self.agent_type)

        group_leader = AgentGroup(agent_type=self.agent_type,
                                  size=self.size_leaders,
                                  attributes=self.attributes(is_leader=True))

        agents.add_non_overlapping_group(
            group_leader,
            position_gen=lambda: np.array((self.horizontal_ratio * self.width,
                                           self.vertical_ratio * self.height)))

        group_herding = AgentGroup(agent_type=self.agent_type,
                                   size=self.size_herding,
                                   attributes=self.attributes(is_leader=False))

        agents.add_non_overlapping_group(
            group_herding, position_gen=self.field.sample_spawn(0))

        return agents
    def _observe_agents(self, change):
        if self.agent_type is not None:
            agents = Agents(agent_type=self.agent_type)

            group = AgentGroup(agent_type=self.agent_type,
                               size=1,
                               attributes=partial(self.attributes,
                                                  orientation=0.0))

            agents.add_non_overlapping_group(
                group, position_gen=lambda: self.start_pos1)

            group = AgentGroup(agent_type=self.agent_type,
                               size=1,
                               attributes=partial(self.attributes,
                                                  orientation=np.pi))

            agents.add_non_overlapping_group(
                group, position_gen=lambda: self.start_pos2)

            self.agents = agents
Esempio n. 12
0
def test_agents(agent_type, attributes):
    agents = Agents(agent_type=agent_type)
    group = AgentGroup(size=SIZE, agent_type=agent_type, attributes=attributes)
    agents.add_non_overlapping_group(
        group=group, position_gen=lambda: np.random.uniform(XMIN, XMAX, 2))
    assert True
Esempio n. 13
0
    def _default_agents(self):
        agents = Agents(agent_type=self.agent_type)

        # Generate iterators for group of leaders.
        #target_exits = [0,1,0]
        #cells = [913,695,652]
        target_exits = []
        cells = []
        n_guides = len(target_exits)

        speed_left = "fast"
        speed_lower = "fast"
        speed_right = "fast"
        speed_upper = "fast"

        # Exiting agents in left spawn
        group_follower_spawn_left = AgentGroup(
            agent_type=self.agent_type,
            size=getattr(self, 'size_spawn_left'),
            attributes=self.attributes(familiar=2, has_target=True, is_follower=True))

        agents.add_non_overlapping_group(
            speed_left,
            "spawn_left",
            group_follower_spawn_left,
            position_gen=False,
            position_iter=iter([]),
            spawn=0,
            obstacles=geom_to_linear_obstacles(self.field.obstacles))

        # Exiting agents in lower spawn
        group_follower_spawn_lower = AgentGroup(
            agent_type=self.agent_type,
            size=getattr(self, 'size_spawn_lower'),
            attributes=self.attributes(familiar=3, has_target=True, is_follower=True))

        agents.add_non_overlapping_group(
            speed_lower,
            "spawn_lower",
            group_follower_spawn_lower,
            position_gen=False,
            position_iter=iter([]),
            spawn=0,
            obstacles=geom_to_linear_obstacles(self.field.obstacles))

        # Exiting agents in right spawn
        group_follower_spawn_right = AgentGroup(
            agent_type=self.agent_type,
            size=getattr(self, 'size_spawn_right'),
            attributes=self.attributes(familiar=0, has_target=True, is_follower=True))

        agents.add_non_overlapping_group(
            speed_right,
            "spawn_right",
            group_follower_spawn_right,
            position_gen=False,
            position_iter=iter([]),
            spawn=2,
            obstacles=geom_to_linear_obstacles(self.field.obstacles))

        # Exiting agents in upper spawn
        group_follower_spawn_upper = AgentGroup(
            agent_type=self.agent_type,
            size=getattr(self, 'size_spawn_upper'),
            attributes=self.attributes(familiar=1, has_target=True, is_follower=True))

        agents.add_non_overlapping_group(
            speed_upper,
            "spawn_upper",
            group_follower_spawn_upper,
            position_gen=False,
            position_iter=iter([]),
            spawn=3,
            obstacles=geom_to_linear_obstacles(self.field.obstacles))

        if n_guides != 0:
            init_pos = self.generate_leader_pos(cells, n_guides)
            print(init_pos)
            # init_pos = [[8, 6]]
            target_exits = iter(target_exits)
            init_pos = iter(init_pos)

            # Guides in Variance Dilemma
            group_leader = AgentGroup(
                agent_type=self.agent_type,
                size=n_guides,
                attributes=self.attributes_leader(target_iter=target_exits, has_target=True, is_follower=False))

            agents.add_non_overlapping_group(
                "group_leader",
                group_leader,
                position_gen=True,
                position_iter=init_pos,
                spawn=0,
                obstacles=geom_to_linear_obstacles(self.field.obstacles))

        return agents