This repository contains the implementation of Graph Neural Network (GNN)-based variational autoencoders used to learn representations of Multi-Access Point Coordination (MAPC) configurations in IEEE 802.11 networks. The goal is to generate meaningful latent representations of transmission configurations that can support both reconstruction and further generative modeling.
This work introduces a method for embedding MAPC transmission graphs using GNNs trained in a variational autoencoder framework. The learned embeddings capture semantic properties of the network (e.g., signal strength, TX power, MCS) and are suitable for tasks such as configuration analysis, visualization, or generative modeling.
We provide three model variants (small, medium, and large), trained on configurations generated using:
- a random agent (each AP transmits with a 50% probability to a randomly selected station),
- analytical upper-bound models (T-Optimal, F-Optimal),
- hierarchical multi-armed bandit (H-MAB) agent.
- attributes.py: Defines edge attributes are included in the graph representation.
- model.py: Defines the main GNN architecture, including update networks for nodes, edges, and global attributes.
- training.py: Contains the training loop and experiment logic. Supports loading from configuration files and checkpointing.
- configs/: Contains YAML configuration files for training, model sizes (small/medium/large) and optimizers.
- dataset/: Includes generators for different MAPC agents:
- random_dataset.py: generates random AP-station pairs,
- mab_dataset.py: generates MAPC configurations using the H-MAB agent,
- optimal_dataset.py: provides configurations from analytical models (T-Optimal and F-Optimal),
- convert.py: converts generated data into graph structures for training,
- transform.py: applies postprocessing on the learned embeddings.
Clone the repository and install the package in editable mode:
git clone https://github.com/ml4wifi-devs/mapc-gnn.git
cd mapc-gnn
pip install -e .You can also install JAX with CUDA support (local CUDA installation) by:
pip install -e ".[gpu]"To train a GNN model:
- Generate and convert a dataset:
- use
dataset/random_dataset.py,mab_dataset.py, and/oroptimal_dataset.pyto generate MAPC configurations, - use
dataset/convert.pyto convert them into graphs.
- Select an appropriate config from
configs. Make sure the paths to datasets are updated in the config files. - Run
training.pywith appropriate paths to the training and validation sets.
@article{wojnar2025representation,
author={Maksymilian Wojnar},
title={{Representation Learning of IEEE 802.11 Networks Using Graph Neural Networks}},
year={2025},
}