This release is a pre-release and may not be stable for production use.
Mimir-RGNN
Mimir-RGNN is a Python library that implements Relational Graph Neural Networks (R-GNN) for AI planning applications. Built on PyTorch and Mimir, it provides a powerful and flexible interface for learning on structured relational data, particularly PDDL planning domains.
Key Features
- 🧠 Relational Graph Neural Networks: R-GNN implementation for structured reasoning
- 📋 PDDL Integration: Seamless integration with PDDL planning domains and problems via Mimir
- ⚡ PyTorch Backend: Built on PyTorch for GPU acceleration
- 🔧 Flexible Configuration: Declarative configuration system for input/output specifications
- 🎯 Planning-Focused: Designed specifically for AI planning and reinforcement learning applications
- 📊 Multiple Aggregation Functions: Support for various message aggregation strategies
- 🏗️ Typed API: Clean and type-safe interface
Installation
Install Mimir-RGNN from PyPI:
pip install pymimir-rgnn
Requirements
- Python 3.11+
- PyTorch 2.6.0+
- Pymimir 0.14.0b2+
Quick Start
import pymimir as mm
import pymimir_rgnn as rgnn
# Load a PDDL domain
domain = mm.Domain.from_file('path/to/domain.pddl')
# Configure the R-GNN hyperparameters
hparam_config = rgnn.HyperparameterConfig(
domain=domain,
embedding_size=64,
num_layers=30,
)
# Define input and output specifications using encoder/decoder classes
input_spec = (rgnn.StateEncoder(), rgnn.GroundActionsEncoder(), rgnn.GoalEncoder())
output_spec = [('q_values', rgnn.ActionScalarDecoder(hparam_config))]
# Configure the R-GNN modules (aggregation, message, and update functions)
module_config = rgnn.ModuleConfig(
aggregation_function=rgnn.MeanAggregation(),
message_function=rgnn.PredicateMLPMessages(hparam_config, input_spec),
update_function=rgnn.MLPUpdates(hparam_config)
)
# Create and initialize the model
model = rgnn.RelationalGraphNeuralNetwork(hparam_config, module_config, input_spec, output_spec)
# Use the model for inference
# problem = mm.Problem.from_file(domain, 'path/to/problem.pddl')
# state = problem.initial_state
# actions = state.applicable_actions()
# goal = problem.goal
#
# inputs = [(state, actions, goal)] # Input tuple matching input_spec order
# outputs = model(inputs)
# q_values = outputs.readout('q_values')
Pymimir 0.14.0b2 exposes complete derived-state and PDDL type information. Mimir-RGNN encodes those features directly from the public interface. Numeric PDDL remains intentionally unsupported. See the migration decision log for the interface contract and graph-schema changes.
API Overview
Core Components
HyperparameterConfig
Configuration class for R-GNN model hyperparameters:
- Domain: The PDDL domain for the planning problem
- Model Parameters: Embedding size, number of layers
- Training Settings: Normalization, global readout options
ModuleConfig
Configuration class for R-GNN neural network modules:
- Aggregation Function: How messages are aggregated (mean, sum, max, etc.)
- Message Function: How messages are computed between related nodes
- Update Function: How node embeddings are updated with aggregated messages
Encoder/Decoder Classes
Extensible class-based system for defining inputs and outputs:
- Input Specification: Tuple of encoder instances (StateEncoder, GoalEncoder, etc.)
- Output Specification: List of named decoder instances with custom readout logic
RelationalGraphNeuralNetwork
The main R-GNN model class that:
- Takes hyperparameter config, module config, input specification, and output specification
- Processes relational graph structures from PDDL problems
- Supports extensible encoder/decoder system for custom input/output handling
- Handles batched inference efficiently
Encoder Classes
Inherit from Encoder base class to define custom input processing:
StateEncoder: Current state of the planning problemGoalEncoder: Goal specificationGroundActionsEncoder: Available ground actionsTransitionEffectsEncoder: Action effects and transitions
Decoder Classes
Inherit from Decoder base class to define custom output readout:
input_spec = (StateEncoder(), GroundActionsEncoder(), GoalEncoder())
output_spec = [
('actor', ActionScalarDecoder(hparam_config)),
('critic', ObjectsScalarDecoder(hparam_config)),
('embeddings', ActionEmbeddingDecoder())
]
Aggregation Functions
Available in the ModuleConfig:
MeanAggregation(): Mean aggregationSumAggregation(): Sum aggregationHardMaximumAggregation(): Hard maximumSmoothMaximumAggregation(): Smooth maximum (LogSumExp)
Examples and Tutorials
For an comprehensive example, visit:
Contributing
We welcome contributions! Please see our Contributing Guidelines for details on:
- Development setup
- Coding standards
- Testing requirements
- Pull request process
License
This project is licensed under the GNU General Public License v3.0 or later. See the LICENSE file for details.
Citation
If you use Mimir-RGNN in your research, please cite:
@inproceedings{stahlberg-bonet-geffner-icaps2022,
author = {Simon St{\aa}hlberg and Blai Bonet and Hector Geffner},
title = {Learning General Optimal Policies with Graph Neural Networks: Expressive Power, Transparency, and Limits},
booktitle = {Proceedings of the Thirty-Second International Conference on Automated Planning and Scheduling, {ICAPS} 2022, Singapore (virtual), June 13-24, 2022},
pages = {629--637},
year = {2022}
}
Support
- 🐛 Bug Reports: GitHub Issues
- 📧 Contact: simon.stahlberg@gmail.com
Release files for pymimir-rgnn 0.3.0b1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pymimir_rgnn-0.3.0b1.tar.gz | 54.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pymimir_rgnn-0.3.0b1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 101.3 kB
Release files / pymimir_rgnn-0.3.0b1.tar.gz
| Download URL | pymimir_rgnn-0.3.0b1.tar.gz |
|---|---|
| Size | 54.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d5a0177d303f392b0404756c080f75d75ee10f3ceb4a2975c890dfc8d1040534
|
|
BLAKE2b-256 checksum How to use checksums |
889308b812a654ac8ea9b532a6207715de95af8744c1204a89c78f4ca9fd793d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / pymimir_rgnn-0.3.0b1-py3-none-any.whl
| Download URL | pymimir_rgnn-0.3.0b1-py3-none-any.whl |
|---|---|
| Size | 47.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
748d34bd6534ee39eee17c3858b0b389d3a8b7b77503f3495e5dc59ba54bace4
|
|
BLAKE2b-256 checksum How to use checksums |
8ab0561a3a8727d78fc1355cb9cab42a01552078323eaa37dc58cae54d047883
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|