From d1a4abcca6766342eae2af737d0857d28f79e8a1 Mon Sep 17 00:00:00 2001 From: abhinavKumar0206 Date: Tue, 14 Apr 2026 21:51:39 +0530 Subject: [PATCH] fix(emperor-dilemma): replace relative imports and fix unseeded random calls - Replace relative imports (from .model / from .agents) with absolute imports (from emperor_dilemma.model / from emperor_dilemma.agents) so Solara can resolve modules correctly when running app.py - Remove top-level `import random` in model.py; replace random.sample() and random.uniform() with self.random equivalents so the RNG seed passed via the rng parameter is actually honoured Fixes #337 Co-Authored-By: Claude Sonnet 4.6 --- examples/emperor_dilemma/app.py | 3 +-- examples/emperor_dilemma/model.py | 9 +++------ 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/examples/emperor_dilemma/app.py b/examples/emperor_dilemma/app.py index 5c6c9edab..2baa5155b 100644 --- a/examples/emperor_dilemma/app.py +++ b/examples/emperor_dilemma/app.py @@ -1,3 +1,4 @@ +from emperor_dilemma.model import EmperorModel from mesa.visualization import ( CommandConsole, Slider, @@ -7,8 +8,6 @@ ) from mesa.visualization.components.portrayal_components import AgentPortrayalStyle -from .model import EmperorModel - # Colors matching Figure 2 COLOR_COMPLY_QUIET = "#F0F8FF" # AliceBlue COLOR_DEVIATE_QUIET = "lightgray" # Light Gray diff --git a/examples/emperor_dilemma/model.py b/examples/emperor_dilemma/model.py index f32348448..368dcf8f2 100644 --- a/examples/emperor_dilemma/model.py +++ b/examples/emperor_dilemma/model.py @@ -1,11 +1,8 @@ -import random - +from emperor_dilemma.agents import EmperorAgent from mesa import Model from mesa.datacollection import DataCollector from mesa.discrete_space.grid import OrthogonalMooreGrid -from .agents import EmperorAgent - class EmperorModel(Model): """The Emperor's Dilemma Model. @@ -81,7 +78,7 @@ def init_agents(self): by = (start_y + (i // int(num_believers**0.5 + 1))) % self.height believer_coords.add((bx, by)) else: - believer_coords = set(random.sample(all_coords, num_believers)) + believer_coords = set(self.random.sample(all_coords, num_believers)) for x, y in all_coords: if (x, y) in believer_coords: @@ -89,7 +86,7 @@ def init_agents(self): conviction = 1.0 else: p_belief = -1 - conviction = random.uniform(0.01, 0.38) + conviction = self.random.uniform(0.01, 0.38) agent = EmperorAgent(self, p_belief, conviction, self.k)