From 47aa2ba5324b4b007fb8db7fc89b449037338206 Mon Sep 17 00:00:00 2001 From: shinedday <shinedday@gmail.com> Date: Tue, 11 May 2021 09:23:30 +0200 Subject: [PATCH] Add seed method --- pyAmakCore/classes/environment.py | 9 +++++ pyAmakCore/exception/override.py | 8 ++++- pyAmakCore/tests/memory_leak/main.py | 6 +++- pyAmakCore/tests/seed/main.py | 54 ++++++++++++++++++++++++++++ 4 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 pyAmakCore/tests/seed/main.py diff --git a/pyAmakCore/classes/environment.py b/pyAmakCore/classes/environment.py index ce59b09..06ff972 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 5200055..455dd26 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 189fad6..0210fbd 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 0000000..6a81632 --- /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() -- GitLab