Skip to content

elbowz/PyMAPE

Repository files navigation

PyPI Version Py Version Issues GPL License RxPY

PyMAPE

Distributed and decentralized MonitorAnalyzePlanExecute-Knowledge loops framework

Framework to support the development and deployment of Autonomous (Self-Adaptive) Systems



Install

pip install pymape

Examples

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.