bcauseA Branch-and-Bound Approach for Finding Optimal Causal GraphsDeveloped by the Constraint Reasoning and Optimization Group The program finds a minimum-weight causal graph with respect to given (in)dependence constraints. UsageNote: The software requires CPLEX in order to be compiled.Usage: ./bcause [<flags>] <path to input file> Flags for defining the search space: -n <number> Limit the number of nodes/variables. -c <number> Limit maximum conditioning set size. -d <number> Limit maximum node degree. -b <number> Limit maximum number of <-> edges. -a Enforce acyclicity -s Use sigma-separation instead of d-separation -w <number> Only search for graphs that have lower weight than this. -f <string> Force solutions to contain certain edges. For example: -f "1<>2 2->3 3<-5" or -f edges.txt ("1</>2 2/>3 3</5" enforces edge inexistence.) Flags for tuning the search: -h <number> Heuristic for selecting next node pair (X,Y) (default: 0) 0. Select pair most likely independent (edges absent) 1. Select pair most likely dependent (edge(s) present) 2. A hybrid of 0 and 1. 3. Branch randomly. -N Enable dataset linking rules for CPLEX -R Disable edge relevancy rules (not recommended) -C Disable CPLEX (not recommended) -A Apply further edge relevancy checks via separate algorithm -t <number> Set the number of threads CPLEX can use (default: 1) -v Enable verbosity (only for debugging purposes) Input formatThe input is a text file, in which each line corresponds to an independence test result. Each line has the form: i w x y c j where i 0 if the result is dependence or 1 if the result is independence w weight, a positive integer representing the reliability x the positive index of the first node (starting from 1) y the positive index of the second node c integer presentation of the conditioning set bit vector 0 = {}, 1 = {1}, 2= {2}, 3 = {1,2}, 4 = {3}, 5 = {1,3}, ... j integer presentation of the intervention set bit vector DownloadsThe latest version can be downloaded here. An older version can be downloaded here. References
[1] Learning Optimal Cyclic Causal Graphs from Interventional Data
[2] Discovering causal graphs with cycles and latent confounders: An exact
branch-and-bound approach
[3] Learning Optimal Causal Graphs with Exact Search |