leonard-de-vinci / Distributed_SAT_Approach_FIM

This repo is about a distributed SAT solver for CFI (Closed Frequent Itemsets)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Distributed_SAT_Approach

Authors: Imen OULED-DLALA (@dlalaimen), Said JABBOUR, Nicolas TRAVERS (@chewbii) and Julien MARTIN-PRIN (@Flexiboy)

Summary

Project description

This project is a "fork" of a previous parallel CFI (Closed Frequent Itemset) SAT solver. The goal in this project was to distribute this solver in a cloud or grid solution.

How does this solver work

You can either use the docker images of the master and the slave or use the apps outside docker to run this program.

First, you'll need a kafka cluster and a mongoDB database to run this program. The easiest way to proceed is to use the docker-compose file provided in the dockerfiles folder. You'll just need to removed the extra parameters set for kafka in the broker section and the master and slaves containers.

As shown in the architecture schema below, the master will parse a dataset passed as a parameter and will transfer its parsed data to a mongoDB database. Then the solvers will retrieve this data as the master will create and push a guiding path vector to a kafka cluster. Then the solvers will retrieve a part of the guiding path (the guiding path is splitted in partitions by the master and the solver only has access to one partition) and solve the problem with the data and the guiding path. After this, the solvers will transfer the generated models and their compute time for each guiding path to mongoDB. To finish, the master will retrieve all the models and will generate a file containing all of them.

Architecture Schema

Here is the architecture used in this project:

About

This repo is about a distributed SAT solver for CFI (Closed Frequent Itemsets)


Languages

Language:C++ 81.7%Language:C 9.3%Language:Makefile 5.8%Language:Python 3.0%Language:Shell 0.2%Language:Jupyter Notebook 0.0%