mirror of
https://github.com/illiumst/marl-factory-grid.git
synced 2025-07-05 17:11:35 +02:00
Merge branch 'main' into unit_testing
# Conflicts: # marl_factory_grid/environment/factory.py # marl_factory_grid/utils/config_parser.py # marl_factory_grid/utils/states.py
This commit is contained in:
@ -56,15 +56,18 @@ class Factory(gym.Env):
|
||||
self.level_filepath = Path(custom_level_path)
|
||||
else:
|
||||
self.level_filepath = Path(__file__).parent.parent / h.LEVELS_DIR / f'{self.conf.level_name}.txt'
|
||||
self._renderer = None # expensive - don't use; unless required !
|
||||
|
||||
parsed_entities = self.conf.load_entities()
|
||||
self.map = LevelParser(self.level_filepath, parsed_entities, self.conf.pomdp_r)
|
||||
|
||||
# Init for later usage:
|
||||
self.state: Gamestate
|
||||
self.map: LevelParser
|
||||
self.obs_builder: OBSBuilder
|
||||
# noinspection PyTypeChecker
|
||||
self.state: Gamestate = None
|
||||
# noinspection PyTypeChecker
|
||||
self.obs_builder: OBSBuilder = None
|
||||
|
||||
# expensive - don't use; unless required !
|
||||
self._renderer = None
|
||||
|
||||
# reset env to initial state, preparing env for new episode.
|
||||
# returns tuple where the first dict contains initial observation for each agent in the env
|
||||
@ -74,7 +77,7 @@ class Factory(gym.Env):
|
||||
return self.state.entities[item]
|
||||
|
||||
def reset(self) -> (dict, dict):
|
||||
if hasattr(self, 'state'):
|
||||
if self.state is not None:
|
||||
for entity_group in self.state.entities:
|
||||
try:
|
||||
entity_group[0].reset_uid()
|
||||
@ -87,12 +90,16 @@ class Factory(gym.Env):
|
||||
entities = self.map.do_init()
|
||||
|
||||
# Init rules
|
||||
rules = self.conf.load_env_rules()
|
||||
env_rules = self.conf.load_env_rules()
|
||||
entity_rules = self.conf.load_entity_spawn_rules(entities)
|
||||
env_rules.extend(entity_rules)
|
||||
|
||||
env_tests = self.conf.load_env_tests() if self.conf.tests else []
|
||||
|
||||
# Parse the agent conf
|
||||
parsed_agents_conf = self.conf.parse_agents_conf()
|
||||
self.state = Gamestate(entities, parsed_agents_conf, rules, env_tests, self.conf.env_seed, self.conf.verbose)
|
||||
self.state = Gamestate(entities, parsed_agents_conf, env_rules, env_tests, self.map.level_shape,
|
||||
self.conf.env_seed, self.conf.verbose)
|
||||
|
||||
# All is set up, trigger entity init with variable pos
|
||||
# All is set up, trigger additional init (after agent entity spawn etc)
|
||||
@ -160,7 +167,7 @@ class Factory(gym.Env):
|
||||
# Finalize
|
||||
reward, reward_info, done = self.summarize_step_results(tick_result, done_results)
|
||||
|
||||
info = reward_info
|
||||
info = dict(reward_info)
|
||||
|
||||
info.update(step_reward=sum(reward), step=self.state.curr_step)
|
||||
|
||||
|
Reference in New Issue
Block a user