From 604c0c6f57b06267eb0c41243437fbf8105f27f2 Mon Sep 17 00:00:00 2001 From: Steffen Illium Date: Mon, 20 Nov 2023 14:59:37 +0100 Subject: [PATCH] Fixed agent observation and inventory init --- .gitignore | 5 +- .../configs/clean_and_bring.yaml | 73 +++++++++++++++++++ marl_factory_grid/configs/default_config.yaml | 2 +- .../environment/groups/agents.py | 6 ++ .../modules/clean_up/__init__.py | 2 +- marl_factory_grid/modules/clean_up/actions.py | 2 +- marl_factory_grid/modules/items/groups.py | 4 + random_testrun.py | 2 +- 8 files changed, 89 insertions(+), 7 deletions(-) create mode 100644 marl_factory_grid/configs/clean_and_bring.yaml diff --git a/.gitignore b/.gitignore index b0f4fdc..d699fd6 100644 --- a/.gitignore +++ b/.gitignore @@ -81,7 +81,7 @@ acs-*.bib # endnotes *.ent -# fixme +# f i x m e *.lox # feynmf/feynmp @@ -143,7 +143,6 @@ acs-*.bib # knitr *-concordance.tex -# TODO Comment the next line if you want to keep your tikz graphics files *.tikz *-tikzDictionary @@ -225,7 +224,7 @@ pythontex-files-*/ *.hst *.ver -# easy-todo +# easy-t o d o *.lod # xcolor diff --git a/marl_factory_grid/configs/clean_and_bring.yaml b/marl_factory_grid/configs/clean_and_bring.yaml new file mode 100644 index 0000000..aa99686 --- /dev/null +++ b/marl_factory_grid/configs/clean_and_bring.yaml @@ -0,0 +1,73 @@ +Agents: + Wolfgang: + Actions: + - Move8 + - DoorUse + - Clean + - Noop + Observations: + - Walls + - Doors + - Other + - DirtPiles + + Juergen: + Actions: + - Move8 + - DoorUse + - ItemAction + - Noop + Observations: + - Walls + - Doors + - Other + - Items + - DropOffLocations + - Inventory + +Entities: + DirtPiles: + coords_or_quantity: 10 + initial_amount: 2 + clean_amount: 1 + dirt_spawn_r_var: 0.1 + max_global_amount: 20 + max_local_amount: 5 + Doors: + DropOffLocations: + coords_or_quantity: 1 + max_dropoff_storage_size: 0 + Inventories: {} + Items: + coords_or_quantity: 5 + + +General: + env_seed: 69 + individual_rewards: true + level_name: rooms + pomdp_r: 3 + verbose: True + tests: false + +Rules: + # Environment Dynamics + EntitiesSmearDirtOnMove: + smear_ratio: 0.2 + DoorAutoClose: + close_frequency: 7 + + # Respawn Stuff + RespawnDirt: + respawn_freq: 30 + RespawnItems: + respawn_freq: 50 + + # Utilities + WatchCollisions: + done_at_collisions: false + + # Done Conditions + DoneOnAllDirtCleaned: + DoneAtMaxStepsReached: + max_steps: 500 diff --git a/marl_factory_grid/configs/default_config.yaml b/marl_factory_grid/configs/default_config.yaml index 4f6d3ee..d9ac1ad 100644 --- a/marl_factory_grid/configs/default_config.yaml +++ b/marl_factory_grid/configs/default_config.yaml @@ -3,7 +3,7 @@ Agents: Actions: - Noop - Charge - - CleanUp + - Clean - DestAction - DoorUse - ItemAction diff --git a/marl_factory_grid/environment/groups/agents.py b/marl_factory_grid/environment/groups/agents.py index 4d244b7..c324c5b 100644 --- a/marl_factory_grid/environment/groups/agents.py +++ b/marl_factory_grid/environment/groups/agents.py @@ -5,6 +5,12 @@ from marl_factory_grid.environment.groups.collection import Collection class Agents(Collection): _entity = Agent + @property + def obs_pairs(self): + pair_list = [(self.name, self)] + pair_list.extend([(a.name, a) for a in self]) + return pair_list + @property def spawn_rule(self): return {} diff --git a/marl_factory_grid/modules/clean_up/__init__.py b/marl_factory_grid/modules/clean_up/__init__.py index ec4d1e7..320bed4 100644 --- a/marl_factory_grid/modules/clean_up/__init__.py +++ b/marl_factory_grid/modules/clean_up/__init__.py @@ -1,4 +1,4 @@ -from .actions import CleanUp +from .actions import Clean from .entitites import DirtPile from .groups import DirtPiles from .rules import EntitiesSmearDirtOnMove, DoneOnAllDirtCleaned diff --git a/marl_factory_grid/modules/clean_up/actions.py b/marl_factory_grid/modules/clean_up/actions.py index cee83a3..dde5583 100644 --- a/marl_factory_grid/modules/clean_up/actions.py +++ b/marl_factory_grid/modules/clean_up/actions.py @@ -8,7 +8,7 @@ from marl_factory_grid.modules.clean_up import constants as d, rewards as r from marl_factory_grid.environment import constants as c -class CleanUp(Action): +class Clean(Action): def __init__(self): super().__init__(d.CLEAN_UP, r.CLEAN_UP_VALID, r.CLEAN_UP_FAIL) diff --git a/marl_factory_grid/modules/items/groups.py b/marl_factory_grid/modules/items/groups.py index ff7a88f..1d37a9b 100644 --- a/marl_factory_grid/modules/items/groups.py +++ b/marl_factory_grid/modules/items/groups.py @@ -51,6 +51,10 @@ class Inventory(IsBoundMixin, Collection): def obs_tag(self): return self.name + @property + def name(self): + return f'{self.__class__.__name__}[{self._bound_entity.name}]' + def __init__(self, agent: Agent, *args, **kwargs): super(Inventory, self).__init__(*args, **kwargs) self._collection = None diff --git a/random_testrun.py b/random_testrun.py index ae4d1ca..3f59c86 100644 --- a/random_testrun.py +++ b/random_testrun.py @@ -29,7 +29,7 @@ if __name__ == '__main__': ce.save_all(run_path / 'all_out.yaml') # Path to config File - path = Path('marl_factory_grid/configs/default_config.yaml') + path = Path('marl_factory_grid/configs/clean_and_bring.yaml') # Env Init factory = Factory(path)