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 TrueEntities:
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 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 for examples). Define which level to use in your configfile as:
General:
level_name: rooms # 'double', 'large', 'simple', ...
... or create your own , maybe with the help of 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 for tracking stats or env. Entity which can interact. Abstract Entities are provided.
Groups
Groups are entity Sets that provide administrative access to all group members. All Entites are available at runtime as EnvState property.
Rules
Results 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.