DisChoco is made to offer a modular software architecture which accepts extensions easily. DisChoco is coming to address a lot of worries of the researchers within the Distributed Constraints Reasoning (DCR) field. Researchers within the DCR field are interested to develop and to test their new approaches and algorithms for solving distributed constraints networks. Thus, DisChoco can be used in simulation environment of a multi-agents system on a single Java virtual machine.
Once the new proposed algorithms are tested and their performances are proven, we can use the same code to solve a real distributed problem. This is done thanks to separating the communication system from the kernel of DisChoco. Thus, DisChoco can be performed in a physically distributed environment using algorithms developed before in the platform. Each agent in the simulation environment is executed asynchronously in a separate execution thread, and communicates with its peers through messages passing. DisChoco takes into account agent with a complex local problem, message loss, message corruption, and message delay.
In addition to its good properties (reliable and modular) DisChoco come to facilitate many concerns of DCR field researchers particularly the concern of experimentations. The first concern of the DCR researchers is to prepare the benchmarks of distributed problems. DisChoco offers a library of generators of Distributed Constraint Satisfaction/Optimization Problems (e.g. Distributed Graph-Coloring, Distributed Meeting Scheduling, Distributed N-Queens, Random Binary DisCSP Generator, Random Binary Complex DisCSP Generator, etc.). These generators allow the researchers testing their algorithms on several types of problems ranging from random problems towards the real world problems.
DisChoco is equipped with a Graphical User Interface (GUI) for manipulating all above generators. Once the instances have been generated, a XML configuration file is created to collect the whole instances. The generated instances are organized in a specified manner for each kind of problems generator in a repertory indicated by the user. This configuration file could also contain details related to the configuration of the communicator and the list algorithms to be compared. It will be used for launching a range of experimentations. After all these configurations the user can initiate its experimentations either on the GUI mode or command mode.
Researchers have not more to do with managing the results of their algorithms. These results are plotted automatically if the gnuplot is installed on the machine on which the experiments are running on. Researchers can also manage and compare performances of its algorithms with those already experienced.