66from math import ceil
77from typing import Dict , List
88
9+ from maro .simulator .utils import random
10+
911from .entities import (
1012 CimBaseDataCollection , CimRealDataCollection , CimSyntheticDataCollection , NoisedItem , Order , OrderGenerateMode ,
1113 PortSetting , VesselSetting
1214)
1315from .port_buffer_tick_wrapper import PortBufferTickWrapper
14- from .utils import (
15- apply_noise , buffer_tick_rand , get_buffer_tick_seed , get_order_num_seed , list_sum_normalize , order_num_rand
16- )
16+ from .utils import BUFFER_TICK_RAND_KEY , ORDER_NUM_RAND_KEY , apply_noise , list_sum_normalize
1717from .vessel_future_stops_prediction import VesselFutureStopsPrediction
1818from .vessel_past_stops_wrapper import VesselPastStopsWrapper
1919from .vessel_reachable_stops_wrapper import VesselReachableStopsWrapper
@@ -60,9 +60,6 @@ def __init__(self, data_collection: CimBaseDataCollection):
6060 self ._vessel_plan_wrapper = VesselSailingPlanWrapper (self ._data_collection )
6161 self ._reachable_stops_wrapper = VesselReachableStopsWrapper (self ._data_collection )
6262
63- # keep the seed so we can reproduce the sequence after reset
64- self ._buffer_tick_seed : int = get_buffer_tick_seed ()
65-
6663 # flag to tell if we need to reset seed, we need this flag as outside may set the seed after env.reset
6764 self ._is_need_reset_seed = False
6865
@@ -245,7 +242,7 @@ def reset(self):
245242
246243 def _reset_seed (self ):
247244 """Reset internal seed for generate reproduceable data"""
248- buffer_tick_rand . seed ( self . _buffer_tick_seed )
245+ random . reset_seed ( BUFFER_TICK_RAND_KEY )
249246
250247 @abstractmethod
251248 def get_orders (self , tick : int , total_empty_container : int ) -> List [Order ]:
@@ -272,9 +269,6 @@ class CimSyntheticDataContainer(CimBaseDataContainer):
272269 def __init__ (self , data_collection : CimSyntheticDataCollection ):
273270 super ().__init__ (data_collection )
274271
275- # keep the seed so we can reproduce the sequence after reset
276- self ._order_num_seed : int = get_order_num_seed ()
277-
278272 # TODO: get_events which composed with arrive, departure and order
279273
280274 def get_orders (self , tick : int , total_empty_container : int ) -> List [Order ]:
@@ -303,7 +297,7 @@ def get_orders(self, tick: int, total_empty_container: int) -> List[Order]:
303297 def _reset_seed (self ):
304298 """Reset internal seed for generate reproduceable data"""
305299 super ()._reset_seed ()
306- order_num_rand . seed ( self . _order_num_seed )
300+ random . reset_seed ( ORDER_NUM_RAND_KEY )
307301
308302 def _gen_orders (self , tick : int , total_empty_container : int ) -> List [Order ]:
309303 """Generate order for specified tick.
@@ -339,7 +333,7 @@ def _gen_orders(self, tick: int, total_empty_container: int) -> List[Order]:
339333 for port_idx in range (self .port_number ):
340334 source_dist : NoisedItem = self .ports [port_idx ].source_proportion
341335
342- noised_source_order_number = apply_noise (source_dist .base , source_dist .noise , order_num_rand )
336+ noised_source_order_number = apply_noise (source_dist .base , source_dist .noise , random [ ORDER_NUM_RAND_KEY ] )
343337
344338 noised_source_order_dist .append (noised_source_order_number )
345339
@@ -356,7 +350,7 @@ def _gen_orders(self, tick: int, total_empty_container: int) -> List[Order]:
356350
357351 # apply noise and normalize
358352 noised_targets_dist = list_sum_normalize (
359- [apply_noise (target .base , target .noise , order_num_rand ) for target in targets_dist ])
353+ [apply_noise (target .base , target .noise , random [ ORDER_NUM_RAND_KEY ] ) for target in targets_dist ])
360354
361355 # order for current ports
362356 cur_port_order_num = ceil (orders_to_gen * noised_source_order_dist [port_idx ])
0 commit comments