This repository contains the implementations of the static vtree heuristics discussed in my thesis, Growing Vtrees from Variable Orders: Novel Static Heuristics for SDD Compilation.
/analysiscontains everything related to the analysis of the results, including notebooks for plottingmatplotlibgraphs and data analysis scripts./benchmarkscontains everything related to benchmark circuits, including original files, generation scripts, and parsing scripts./heuristicscontains the implementation of the two static vtree heuristics discussed in the thesis: the Fan-in heuristic and the Interaction Graph heuristic./outputcontains the results of all experiments.
The remaining files play a supporting role:
circuit.pyandvtree.pyprovide the custom implementations of circuits and vtrees used by the heuristics.sdd.pycontains the compilation script that turns a circuit and a vtree into an SDD.experiment.pyis the main entry point of the Docker container. It parses the arguments and starts the correct experiment.run_experiments.pystarts the experiments for a given heuristic. Userun_experiments.shto run experiments withcaffeinate.
Experiments are executed in Docker containers. Build the image once with:
docker build -t heuristic_experiment .After the image has been built, experiments can be launched with:
./run_experiments.sh