# EDYS Tackling emergent dysfunctions (EDYs) in cooperation with Fraunhofer-IKS ## Setup Just install this environment by `pip install marl-factory-grid`. ## First Steps ### Quickstart Most of the env. objects (entites, rules and assets) can be loaded automatically. Just define what your environment needs in a *yaml*-configfile like:
Example ConfigFile General: level_name: rooms env_seed: 69 verbose: !!bool False pomdp_r: 5 individual_rewards: !!bool True Entities: Defaults: {} Doors: closed_on_init: True auto_close_interval: 10 indicate_area: False Destinations: {} Agents: Wolfgang: Actions: - Move8 - Noop - DoorUse - ItemAction Observations: - All - Placeholder - Walls - Items - Placeholder - Doors - Doors Armin: Actions: - Move4 - ItemAction - DoorUse Observations: - Combined: - Agent['Wolfgang'] - Walls - Doors - Items Rules: Defaults: {} Collision: done_at_collisions: !!bool True ItemRespawn: spawn_freq: 5 DoorAutoClose: {} Assets: - Defaults - Items - Doors
Have a look in [\quickstart](./quickstart) for further configuration examples. ### Make it your own #### Levels Varying levels are created by defining Walls, Floor or Doors in *.txt*-files (see [./environment/levels](./environment/levels) for examples). Define which *level* to use in your *configfile* as: ```yaml General: level_name: rooms # 'double', 'large', 'simple', ... ``` ... or create your own , maybe with the help of [asciiflow.com](https://asciiflow.com/#/). Be sure to use '#' as Walls, '-' as free (walkable) Floor-Tiles, 'D' for Doors. Custom Entites (define you own) may bring their own "Symbol" #### Entites Entites are either [Objects](./environment/entity/object.py) for tracking stats or env. [Entity](./environment/entity/entity.py) which can interact. Abstract Entities are provided. #### Groups [Groups](./environment/groups/objects.py) are entity Sets that provide administrative access to all group members. All [Entites](./environment/entity/global_entities.py) are available at runtime as EnvState property. #### Rules [Rules](./environment/entity/object.py) define how the environment behaves on micro-scale. Each of the hookes ('on_init', 'pre-step', 'on_step', 'post_step', 'on_done') provide env-access to implement customn logic, calculate rewards, or gather information. [Results](./environment/entity/object.py) provide a way to return 'rule' evaluations such as rewards and state reports back to the environment. #### Assets Make sure to bring your own assets for each Entity, that is living in the Gridworld, the 'Renderer' relies on it. PNG-files (transparent background) of square aspect-ratio should do the job, in general.
|