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 democracy_sim/participation_agent.py
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
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, 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)
        # The "pos" variable in mesa is special, so I avoid it here
        self._row = pos[0]
        self._col = pos[1]
        self.color = initial_color  # The cell's current color (int)
        self._next_color = None
        self.agents = []
        self.areas = []
        self.is_border_cell = False

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

    @property
    def col(self):
        """The col location of this cell."""
        return self._col

    @property
    def row(self):
        """The row location of this cell."""
        return self._row

    @property
    def position(self):  # The variable pos is special in mesa!
        """The location of this cell."""
        return self._row, self._col

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

position property

The location of 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 democracy_sim/participation_agent.py
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
def __init__(self, unique_id, 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)
    # The "pos" variable in mesa is special, so I avoid it here
    self._row = pos[0]
    self._col = pos[1]
    self.color = initial_color  # The cell's current color (int)
    self._next_color = None
    self.agents = []
    self.areas = []
    self.is_border_cell = False

advance()

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

Source code in democracy_sim/participation_agent.py
300
301
302
303
304
305
306
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 democracy_sim/participation_agent.py
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
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