diff --git a/pyAmakCore/classes/environment.py b/pyAmakCore/classes/environment.py index ce59b09f9ddefe7cd24c6e0505f253b5fd367904..06ff97236235c47ee56263bea333b9c0cf50075e 100644 --- a/pyAmakCore/classes/environment.py +++ b/pyAmakCore/classes/environment.py @@ -1,6 +1,8 @@ """ Environment class """ +from random import seed + import sys import pathlib sys.path.insert(0, str(pathlib.Path(__file__).parent)) @@ -15,12 +17,19 @@ class Environment(Schedulable): """ def __init__(self) -> None: + self.set_seed() super().__init__() self.scheduler: Scheduler = None self.on_initialization() # tell scheduler that init is done self.give_token_syncro() + def set_seed(self): + """ + This method set the seed for all random in the system, it should be override to set a custom seed + """ + seed() + def add_scheduler(self, scheduler: Scheduler) -> None: """ set scheduler pointer to scheduler diff --git a/pyAmakCore/exception/override.py b/pyAmakCore/exception/override.py index 5200055905fe0e1359629f08522cb425f3f8e495..455dd26731c65c7596e5045dd33114843c91905c 100644 --- a/pyAmakCore/exception/override.py +++ b/pyAmakCore/exception/override.py @@ -7,9 +7,15 @@ class ToOverrideWarning: """ Warning raised a method that should be override is called """ + __enable_warning = True def __init__( self, name: str ) -> None: - print("[WARNING] : Method " + name + " was called without being override.") + if ToOverrideWarning.__enable_warning: + print("[WARNING] : Method " + name + " was called without being override.") + + @classmethod + def enable_warning(cls, condition: bool) -> None: + cls.__enable_warning = condition diff --git a/pyAmakCore/tests/memory_leak/main.py b/pyAmakCore/tests/memory_leak/main.py index 189fad630707dcfbb9f06245fb3368bceadd0324..0210fbd3dc99c0d843fa42de40e0bced3df3e700 100644 --- a/pyAmakCore/tests/memory_leak/main.py +++ b/pyAmakCore/tests/memory_leak/main.py @@ -16,7 +16,7 @@ class SimpleAmas(Amas): def on_initial_agents_creation(self) -> None: for i in range(10): - self.add_agent(Agent(self)) + self.add_agent(SimpleAgent(self)) class SimpleEnv(Environment): @@ -35,4 +35,8 @@ amas.start() """ There are no visible memory leak in pyAmakCore +""" +""" +TODO : +We could test add agent / get most critical neighbor ... also """ \ No newline at end of file diff --git a/pyAmakCore/tests/seed/main.py b/pyAmakCore/tests/seed/main.py new file mode 100644 index 0000000000000000000000000000000000000000..6a8163203a1d4307096fc4f39a64c34d51918745 --- /dev/null +++ b/pyAmakCore/tests/seed/main.py @@ -0,0 +1,54 @@ +from random import randint, seed +from time import sleep + +from pyAmakCore.classes.amas import Amas +from pyAmakCore.classes.environment import Environment +from pyAmakCore.classes.agent import Agent +from pyAmakCore.exception.override import ToOverrideWarning + + +class SimpleAgent(Agent): + """ + test + """ + def on_act(self) -> None: + print(randint(0, 100)) + + + +class SimpleAmas(Amas): + """ + test + """ + + def on_initialization(self) -> None: + ToOverrideWarning.enable_warning(False) + + def on_initial_agents_creation(self) -> None: + for i in range(10): + self.add_agent(SimpleAgent(self)) + + def on_cycle_begin(self) -> None: + pass + # print(randint(0, 100)) + + def on_cycle_end(self) -> None: + if self.get_cycle() == 30: + sleep(300) + + +class SimpleEnv(Environment): + """ + test + """ + + def set_seed(self): + seed(30) + + +env = SimpleEnv() +amas = SimpleAmas(env) + +amas.put_token() + +amas.start()