diff --git a/maro/data_lib/cim/utils.py b/maro/data_lib/cim/utils.py index 579b939c8..5dc773dcf 100644 --- a/maro/data_lib/cim/utils.py +++ b/maro/data_lib/cim/utils.py @@ -5,8 +5,6 @@ from typing import List, Union # we keep 4 random generator to make the result is reproduce-able with same seed(s), no matter if agent passed actions -from maro.simulator.utils import random - ORDER_INIT_RAND_KEY = "order_init" ROUTE_INIT_RAND_KEY = "route_init" ORDER_NUM_RAND_KEY = "order_number" @@ -14,11 +12,6 @@ DATA_CONTAINER_INIT_SEED_LIMIT = 4096 -random.create_instance(ORDER_INIT_RAND_KEY) -random.create_instance(ROUTE_INIT_RAND_KEY) -random.create_instance(ORDER_NUM_RAND_KEY) -random.create_instance(BUFFER_TICK_RAND_KEY) - def clip(min_val: Union[int, float], max_val: Union[int, float], value: Union[int, float]) -> Union[int, float]: """Clip value between specified range diff --git a/maro/simulator/utils/sim_random.py b/maro/simulator/utils/sim_random.py index 59eb70d27..960b75a11 100644 --- a/maro/simulator/utils/sim_random.py +++ b/maro/simulator/utils/sim_random.py @@ -86,6 +86,13 @@ def reset_seed(self, key: str) -> None: rand = self._rand_instances[key] rand.seed(self._seed_dict[key]) + def clear(self) -> None: + """Clear all existing random keys. + """ + self._rand_instances = OrderedDict() + self._seed_dict = {} + self._seed = int(time.time()) + random = SimRandom() """Random utility for simulator, same with original random module.""" diff --git a/tests/cim/test_cim_scenario.py b/tests/cim/test_cim_scenario.py index d981fb381..7c10da636 100644 --- a/tests/cim/test_cim_scenario.py +++ b/tests/cim/test_cim_scenario.py @@ -8,6 +8,8 @@ import yaml +from maro.simulator.utils import random + os.environ["MARO_STREAMIT_ENABLED"] = "true" os.environ["MARO_STREAMIT_EXPERIMENT_NAME"] = "cim_testing" @@ -37,6 +39,8 @@ def __init__(self, *args, **kwargs): self._reload_topology: str = TOPOLOGY_PATH_CONFIG self._business_engine: Optional[CimBusinessEngine] = None + random.clear() + def _init_env(self, backend_name: str) -> None: os.environ["DEFAULT_BACKEND_NAME"] = backend_name self._env = Env(