Framework to support the development and deployment of Autonomous (Self-Adaptive) Systems
- Source Code: https://github.com/elbowz/PyMAPE
- Documentation: https://elbowz.github.io/PyMAPE - WIP
pip install pymape
Implementation of the 5 decentralized (and distributed) MAPE patterns described in the paper:
"On Patterns for Decentralized Control in Self-Adaptive Systems", Danny Weyns
- Ambulance-Car Emergency (Information Sharing and Coordinated Control)
- Average Speed Enforcement (Master/Slave)
- Dynamic Carriageway (Regional Planning)
- Cruise Control with Distance Hold (Hierarchical Control)
If you want try some examples (path examples/
), refer to section # CLI EXAMPLES
inside the source code of each one.
Slide - Introduction to PyMAPE with examples
The examples need furthers requirements, please see pyproject.toml or use poetry to install them.
You also need a Redis and InfluxDB instance running, for example:
docker run --name mape-redis -p 6379:6379 \
-v $(pwd)/docker/redis:/usr/local/etc/redis \
--rm redis redis-server /usr/local/etc/redis/redis.conf
docker run --name mape-influxdb -p 8086:8086 \
-v $(pwd)/docker/influxdb/data:/var/lib/influxdb2 \
-v $(pwd)/docker/influxdb/conf:/etc/influxdb2 \
-e DOCKER_INFLUXDB_INIT_MODE=setup \
-e DOCKER_INFLUXDB_INIT_USERNAME=user \
-e DOCKER_INFLUXDB_INIT_PASSWORD=qwerty123456 \
-e DOCKER_INFLUXDB_INIT_ORG=univaq \
-e DOCKER_INFLUXDB_INIT_BUCKET=mape \
-e DOCKER_INFLUXDB_INIT_RETENTION=1w \
-e DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=<GENERATE_OR_TAKE_FROM_CONFIG_YAML> \
--rm influxdb:2.0
See source for more information.