MEAL: A Benchmark for Continual Multi-Agent Reinforcement Learning
Project description
MEAL: A Benchmark for Continual Multi-Agent Reinforcement Learning
MEAL is the first Continual Multi-Agent Reinforcement Learning (CMARL) benchmark, using the Overcooked environment, implemented in JAX for high-performance training and evaluation. The project focuses on enabling agents to continuously learn and adapt to new environments without forgetting previously acquired skills.
|
|
|
|
Key Features
- JAX-based Implementation: Leverages JAX for efficient, hardware-accelerated training
- Procedurally Generated Environments: An infinite stream of solvable, variable‑sized cooperative challenges
- Visualization: Tools for analyzing environments and training progress
- 3 Difficulty Levels: easy, medium, and hard
- Continual Learning Methods:
- Elastic Weight Consolidation (EWC)
- Online EWC
- Memory Aware Synapses (MAS)
- L2 Regularization
- Fine-Tuning (FT)
- PackNet
- Averaged Gradient Episodic Memory (AGEM)
- Multi-Agent Algorithms:
- Independent Proximal Policy Optimization (IPPO)
- Value Decomposition Networks (VDN)
Installation
MEAL requires Python 3.10 and uses JAX with CUDA support by default. We recommend creating an isolated Python environment first, then installing MEAL with pip.
Create an Environment
Option 1 — venv
python3.10 -m venv .venv
# macOS/Linux
source .venv/bin/activate
# Windows (CMD)
.\.venv\Scripts\activate.bat
# Windows (PowerShell)
.\.venv\Scripts\Activate.ps1
Option 2 — Conda
conda create -n meal python=3.10 -y
conda activate meal
Install MEAL
# From PyPI (stable release)
pip install MEAL-Bench
# Core install
pip install -e .
# Visualization tools
pip install -e ".[viz]"
# Utility tools
pip install -e ".[utils]"
(Optional) GPU acceleration with JAX
pip install -U "jax[cuda12]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
# or for CUDA 11```
pip install -U "jax[cuda11]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
Usage
Running IPPO with Continual Learning
# Run IPPO with Elastic Weight Consolidation (EWC)
python -m baselines.PPO_CL --cl_method EWC
Environment Generation
MEAL includes tools for generating new Overcooked layouts:
# Generate a random environment
python -m jax_marl.environments.overcooked_environment.env_generator --save
# Visualize environment generation steps
python -m jax_marl.environments.overcooked_environment.env_generator --show
# Generate step-by-step visualization images
python -m jax_marl.viz.env_gen_steps --difficulty medium
Example of environment generation steps (generated using jax_marl.viz.env_gen_steps):
| Step 1: Initialize Grid | Step 2: Place Interactive Tiles | Step 3: Add Walls | Step 4: Place Agents & Clean Up |
|---|---|---|---|
| Create empty grid with border walls | Add goal, pot, onion pile, and plate pile | Add additional walls to reach target density | Place agents and remove unreachable areas |
Environment Difficulty
MEAL generates layouts with varying difficulty levels to test agent adaptability: The following images illustrate the different layouts:
| Easy Layout | Medium Layout | Hard Layout |
|---|---|---|
The difficulty of layouts is determined by the following criteria:
| Difficulty Level | Grid Width | Grid Height | Obstacle Density |
|---|---|---|---|
| Easy | 6-7 | 6-7 | 15% |
| Medium | 8-9 | 8-9 | 25% |
| Hard | 10-11 | 10-11 | 35% |
Project Structure
- assets/: Screenshots, GIFs, and other assets
- gifs/: Example training progress GIFs
- screenshots/: Example environment layouts and training results
- examples/: Example scripts for using MEAL environments
- experiments/: CMARL experiments on MEAL
- continual/: Continual learning method implementations
- evaluation/: Evaluating trained models
- experimental/: Algorithm/Method prototyping
- model/: Neural network architectures (MLP, CNN)
- partner_adaptation/: Continual partner adaptation experiments
- results/: Scripts for downloading, aggregating, and plotting results
- download/: Scripts for downloading and storing data
- plotting/: Plotting scripts for training results
- numerical/: Numerical results and analysis
- meal/: Core MEAL framework
- env/: Overcooked environment creation and management
- visualization/: Visualization tools
- wrappers/: Environment wrappers
- scripts/: Utility scripts for training
- tests/: Unit tests for various components
Contributing
Contributions to MEAL are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
Citation
If you use our work in your research, please cite it as follows:
@article{tomilin2025meal,
title={MEAL: A Benchmark for Continual Multi-Agent Reinforcement Learning},
author={Tomilin, Tristan and van den Boogaard, Luka and Garcin, Samuel and Ruhdorfer, Constantin and Grooten, Bram and Bulling, Andreas and Pechenizkiy, Mykola and Fang, Meng},
journal={arXiv preprint arXiv:2406.01234},
year={2025}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file MEAL-Bench-0.1.0.tar.gz.
File metadata
- Download URL: MEAL-Bench-0.1.0.tar.gz
- Upload date:
- Size: 334.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fdf69d1d4f693dafc54c122eaed1cf1a02281880489908c3e873def7d7319222
|
|
| MD5 |
61b45a5e3e56194107a3677b7f3b23e9
|
|
| BLAKE2b-256 |
ca0b600085eb3a2eb195c9df49a42243f01ce20d160405251b8a61f097c4e163
|
File details
Details for the file MEAL_Bench-0.1.0-py3-none-any.whl.
File metadata
- Download URL: MEAL_Bench-0.1.0-py3-none-any.whl
- Upload date:
- Size: 432.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.7.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
988428ef8e14c759901779109e9a07d7b77ac192ee4c97bc1bc531098bc59964
|
|
| MD5 |
aec8608068ebb51f30b155bfa754a183
|
|
| BLAKE2b-256 |
351f5d53d6886b20228fc3050de47b8606613dc1d487b462b6f837459e71ff72
|