From aedb32f3025d4b8e4a0025e746ad50e7032aba6b Mon Sep 17 00:00:00 2001 From: Vaibhav Sharma <88285949+vbv-shm@users.noreply.github.com> Date: Wed, 27 Nov 2024 03:43:02 +0530 Subject: [PATCH] Update app.py Update model.py [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Update agents.py [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Update agents.py Update agents.py [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Update agents.py Update configurations.py [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- benchmarks/configurations.py | 4 ++-- mesa/examples/basic/schelling/agents.py | 16 +++++++++++----- mesa/examples/basic/schelling/app.py | 2 +- mesa/examples/basic/schelling/model.py | 6 +++--- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/benchmarks/configurations.py b/benchmarks/configurations.py index 95bb41c806a..7083900532e 100644 --- a/benchmarks/configurations.py +++ b/benchmarks/configurations.py @@ -35,7 +35,7 @@ "parameters": { "height": 40, "width": 40, - "homophily": 3, + "homophily_ratio": 0.3, "radius": 1, "density": 0.625, }, @@ -47,7 +47,7 @@ "parameters": { "height": 100, "width": 100, - "homophily": 8, + "homophily_ratio": 0.8, "radius": 2, "density": 0.8, }, diff --git a/mesa/examples/basic/schelling/agents.py b/mesa/examples/basic/schelling/agents.py index ac0664e6da4..e6562989911 100644 --- a/mesa/examples/basic/schelling/agents.py +++ b/mesa/examples/basic/schelling/agents.py @@ -20,13 +20,19 @@ def step(self) -> None: self.pos, moore=True, radius=self.model.radius ) + type_of_neighbors = [neighbor.type == self.type for neighbor in neighbors] + # Count similar neighbors - similar = sum(neighbor.type == self.type for neighbor in neighbors) - # Count total neighbors - total_neighbors=len(self.model.grid.get_neighbors(self.pos,moore=True)) - + similar = sum(type_of_neighbors) + + # Count total neighbors + total_neighbors = len(type_of_neighbors) + # If unhappy, move to a random empty cell: - if total_neighbors!=0 and similar/total_neighbors < self.model.homophily_ratio: + if ( + total_neighbors != 0 + and similar / total_neighbors < self.model.homophily_ratio + ): self.model.grid.move_to_empty(self) else: self.model.happy += 1 diff --git a/mesa/examples/basic/schelling/app.py b/mesa/examples/basic/schelling/app.py index 56c0547ac6f..36b43fac7cf 100644 --- a/mesa/examples/basic/schelling/app.py +++ b/mesa/examples/basic/schelling/app.py @@ -26,7 +26,7 @@ def agent_portrayal(agent): }, "density": Slider("Agent density", 0.8, 0.1, 1.0, 0.1), "minority_pc": Slider("Fraction minority", 0.2, 0.0, 1.0, 0.05), - "homophily": Slider("Homophily", 3, 0, 8, 1), + "homophily_ratio": Slider("Homophily_ratio", 0.3, 0, 1, 0.1), "width": 20, "height": 20, } diff --git a/mesa/examples/basic/schelling/model.py b/mesa/examples/basic/schelling/model.py index 3ee0746c073..ab78f53bc48 100644 --- a/mesa/examples/basic/schelling/model.py +++ b/mesa/examples/basic/schelling/model.py @@ -13,7 +13,7 @@ def __init__( width: int = 40, density: float = 0.8, minority_pc: float = 0.5, - homophily: int = 3, + homophily_ratio: float = 0.3, radius: int = 1, seed=None, ): @@ -24,7 +24,7 @@ def __init__( height: Height of the grid density: Initial chance for a cell to be populated (0-1) minority_pc: Chance for an agent to be in minority class (0-1) - homophily: Minimum number of similar neighbors needed for happiness + homophily_ratio: Ratio of similar neighbors to total neighbors needed for happiness radius: Search radius for checking neighbor similarity seed: Seed for reproducibility """ @@ -35,7 +35,7 @@ def __init__( self.width = width self.density = density self.minority_pc = minority_pc - self.homophily = homophily + self.homophily_ratio = homophily_ratio self.radius = radius # Initialize grid