Skip to content

Commit cb139b1

Browse files
committed
fix ss_polars
1 parent 647f5b6 commit cb139b1

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

examples/sugarscape_ig/ss_polars/agents.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,13 @@ def __init__(
3535
self.add(agents)
3636

3737
def eat(self):
38+
# Only consider cells currently occupied by agents of this set
3839
cells = self.space.cells.filter(pl.col("agent_id").is_not_null())
39-
self[cells["agent_id"], "sugar"] = (
40-
self[cells["agent_id"], "sugar"]
41-
+ cells["sugar"]
42-
- self[cells["agent_id"], "metabolism"]
43-
)
40+
mask_in_set = cells["agent_id"].is_in(self.index)
41+
if mask_in_set.any():
42+
cells = cells.filter(mask_in_set)
43+
ids = cells["agent_id"]
44+
self[ids, "sugar"] = self[ids, "sugar"] + cells["sugar"] - self[ids, "metabolism"]
4445

4546
def step(self):
4647
self.shuffle().do("move").do("eat")

examples/sugarscape_ig/ss_polars/model.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,19 @@ def __init__(
3333
sugar=sugar_grid.flatten(), max_sugar=sugar_grid.flatten()
3434
)
3535
self.space.set_cells(sugar_grid)
36-
self.sets += agent_type(self, n_agents, initial_sugar, metabolism, vision)
36+
# Create and register the main agent set; keep its name for later lookups
37+
main_set = agent_type(self, n_agents, initial_sugar, metabolism, vision)
38+
self.sets += main_set
39+
self._main_set_name = main_set.name
3740
if initial_positions is not None:
3841
self.space.place_agents(self.sets, initial_positions)
3942
else:
4043
self.space.place_to_empty(self.sets)
4144

4245
def run_model(self, steps: int) -> list[int]:
4346
for _ in range(steps):
44-
if len(list(self.sets.df.values())[0]) == 0:
47+
# Stop if the main agent set is empty
48+
if len(self.sets[self._main_set_name]) == 0: # type: ignore[index]
4549
return
4650
empty_cells = self.space.empty_cells
4751
full_cells = self.space.full_cells

0 commit comments

Comments
 (0)