Zum Inhalt

Class ColorCell

Bases: Agent

Represents a single cell (a field in the grid) with a specific color.

Attributes:

Name Type Description
color int

The color of the cell.

Source code in src/agents/color_cell.py
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
class ColorCell(Agent):
    """
    Represents a single cell (a field in the grid) with a specific color.

    Attributes:
        color (int): The color of the cell.
    """

    def __init__(self, unique_id: int, model: Model, pos: tuple, initial_color: int):
        """
        Initializes a ColorCell, at the given row, col position.

        Args:
            unique_id (int): The unique identifier of the cell.
            model (mesa.Model): The mesa model of which the cell is part of.
            pos (Tuple[int, int]): The position of the cell in the grid.
            initial_color (int): The initial color of the cell.
        """
        super().__init__(unique_id, model)
        # self.pos will be set by the grid when we place the agent
        self._row = pos[0]
        self._col = pos[1]
        self.color = initial_color  # The cell's current color (int)
        self._next_color = None
        self.agents = []    # TODO change to using mesas AgentSet class!
        self.areas = []    # TODO change to using mesas AgentSet class!
        self.is_border_cell = False
        # Add it to the models grid
        model.grid.place_agent(self, pos)

    def __str__(self):
        return (f"Cell ({self.unique_id}, pos={self.pos}, "
                f"color={self.color}, num_agents={self.num_agents_in_cell})")

    @property
    def row(self):
        """The row location of this cell."""
        return self.pos[0]

    @property
    def col(self):
        """The col location of this cell."""
        return self.pos[1]

    @property
    def num_agents_in_cell(self):
        """The number of agents in this cell."""
        return len(self.agents)

    def add_agent(self, agent):
        self.agents.append(agent)

    def remove_agent(self, agent):
        self.agents.remove(agent)

    def add_area(self, area):
        self.areas.append(area)

    def color_step(self):
        """
        Determines the cells' color for the next step.
        TODO
        """
        # _neighbor_iter = self.model.grid.iter_neighbors(
        #     (self._row, self._col), True)
        # neighbors_opinion = Counter(n.get_state() for n in _neighbor_iter)
        # # Following is a tuple (attribute, occurrences)
        # polled_opinions = neighbors_opinion.most_common()
        # tied_opinions = []
        # for neighbor in polled_opinions:
        #     if neighbor[1] == polled_opinions[0][1]:
        #         tied_opinions.append(neighbor)
        #
        # self._next_color = self.random.choice(tied_opinions)[0]
        pass

    def advance(self):
        """
        Set the state of the agent to the next state.
        TODO
        """
        # self._color = self._next_color
        pass

col property

The col location of this cell.

num_agents_in_cell property

The number of agents in this cell.

row property

The row location of this cell.

__init__(unique_id, model, pos, initial_color)

Initializes a ColorCell, at the given row, col position.

Parameters:

Name Type Description Default
unique_id int

The unique identifier of the cell.

required
model Model

The mesa model of which the cell is part of.

required
pos Tuple[int, int]

The position of the cell in the grid.

required
initial_color int

The initial color of the cell.

required
Source code in src/agents/color_cell.py
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
def __init__(self, unique_id: int, model: Model, pos: tuple, initial_color: int):
    """
    Initializes a ColorCell, at the given row, col position.

    Args:
        unique_id (int): The unique identifier of the cell.
        model (mesa.Model): The mesa model of which the cell is part of.
        pos (Tuple[int, int]): The position of the cell in the grid.
        initial_color (int): The initial color of the cell.
    """
    super().__init__(unique_id, model)
    # self.pos will be set by the grid when we place the agent
    self._row = pos[0]
    self._col = pos[1]
    self.color = initial_color  # The cell's current color (int)
    self._next_color = None
    self.agents = []    # TODO change to using mesas AgentSet class!
    self.areas = []    # TODO change to using mesas AgentSet class!
    self.is_border_cell = False
    # Add it to the models grid
    model.grid.place_agent(self, pos)

advance()

Set the state of the agent to the next state. TODO

Source code in src/agents/color_cell.py
80
81
82
83
84
85
86
def advance(self):
    """
    Set the state of the agent to the next state.
    TODO
    """
    # self._color = self._next_color
    pass

color_step()

Determines the cells' color for the next step. TODO

Source code in src/agents/color_cell.py
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
def color_step(self):
    """
    Determines the cells' color for the next step.
    TODO
    """
    # _neighbor_iter = self.model.grid.iter_neighbors(
    #     (self._row, self._col), True)
    # neighbors_opinion = Counter(n.get_state() for n in _neighbor_iter)
    # # Following is a tuple (attribute, occurrences)
    # polled_opinions = neighbors_opinion.most_common()
    # tied_opinions = []
    # for neighbor in polled_opinions:
    #     if neighbor[1] == polled_opinions[0][1]:
    #         tied_opinions.append(neighbor)
    #
    # self._next_color = self.random.choice(tied_opinions)[0]
    pass