pyDCOP: DCOP solver in python

Overview

pyDCOP is a library and command line application for Distributed Constraint Optimization Problems (DCOP).

A Distributed Constraint Optimization Problem is traditionally represented as a tuple \(\langle \mathcal{A}, \mathcal{X}, \mathcal{D}, \mathcal{C}, \mu \rangle\) , where:

  • \(\mathcal{A} = \{a_1,\ldots,a_{|A|}\}\) is a set of agents;

  • \(\mathcal{X} = \{x_1,\ldots, x_n\}\) are variables owned by the agents;

  • \(\mathcal{D} = \{\mathcal{D}_{x_1},\ldots,\mathcal{D}_{x_n}\}\) is a set of finite domains, such that variable \(x_i\) takes values in \(\mathcal{D}_{x_i} = \{v_1,\ldots, v_k\}\);

  • \(\mathcal{C} = \{c_1,\ldots,c_m\}\) is a set of soft constraints, where each \(c_i\) defines a cost \(\in \mathbb{R} \cup \{\infty\}\) for each combination of assignments to a subset of variables (a constraint is initially known only to the agents involved);

  • \(\mu: \mathcal{X} \rightarrow \mathcal{A}\) is a function mapping variables to their associated agent.

A solution to the DCOP is an assignment to all variables that minimizes the overall sum of costs.

pyDCOP has already been used for several scientific papers.

Features

  • pyDCOP provides implementations of many classic DCOP algorithms (DSA, MGM, MaxSum, DPOP, etc.).

  • pyDCOP allows you to implement our own DCOP algorithm easily, by providing all the required infrastructure: agents, messaging system, metrics collection, etc.

  • Agents can run on the same computer or on different machines, making real distributed experiments easy.

  • Multi-platform : pyDCOP can run on windows, Mac and Linux.

  • pyDCOP is especially suited for the IoT use-case and can run agents on single-board computers like the Raspberry Pi.

  • In addition to classical DCOP algorithms, pyDCOP also provides novel approaches for using DCOP in IoT systems: several strategies are available to distribute DCOP computations on agents and achieve resilience.

Documentation

Contributing

We welcome contributions, especially the implementation of DCOP algorithms (novel or well-known). Join us on GitHub.

Licence

pyDCOP is licensed under the BSD-3-clause license.

Indices and tables