# More information about Ace

## Papers

Algorithms used in Ace are described in the following papers (papers and bibtex entries can be downloaded here by clicking on "Publications").
- Compiling Relational Bayesian Networks for Exact Inference. Mark Chavira, Adnan Darwiche, and Manfred Yaeger. International Journal of Approximate Reasoning (IJAR-2006).
- Compiling Bayesian Networks with Local Structure. Mark Chavira and Adnan Darwiche. Proceedings of the 19th International Joint Conference on Artificial Intelligence (IJCAI-2005).
- Exploiting Evidence in Probabilistic Inference. Mark Chavira, David Allen, and Adnan Darwiche. Proceedings of the 21st Conference on Uncertainty in Artificial Intelligence (UAI-2005).
- Solving MAP Exactly by Searching on Compiled Arithmetic Circuits. Jinbo Huang, Mark Chavira, and Adnan Darwiche. Proceedings of the 21st National Conference on Artificial Intelligence (AAAI-06).
- Encoding CNFs to Empower Component Analysis. Mark Chavira and Adnan Darwiche. Proceedings of the Ninth International Conference on Theory and Applications of Satisfiability Testing (SAT-2006).
- Probabilistic Inference by Weighted Model Counting. Mark Chavira and Adnan Darwiche. Currently under review.
- Compiling Bayesian Networks Using Variable Elimination. Mark Chavira and Adnan Darwiche. Proceedings of the 20th International Joint Conference on Artificial Intelligence (IJCAI-2007).

## Benchmarks used in published results

Many benchmarks from published results are available from the download page and from the University of Washington. If you are interested in a specific benchmark that is not available from these two sources, send email to ace at cs dot ucla dot edu.
## Options used in published results

Running Ace requires specifying certain options. These options have defaults and are described in readme.pdf, which is part of the distribution. We list below the options used for many of the experiments in the publications above. In each case, compilation was performed on a machine with 2GB of RAM. Note that both -dtHypergraph and -dtBnMinfill involve randomization and so may not produce the same results from one run to the next.
All networks from reference [1]:

- Edit evaluate.bat to allocate 1200 megabytes of memory
- Compile with: compile -noTabular -d02 -dtHypergraph 3 foo.net
- Evaluate with: evaluate foo.net foo.inst

Munin1-4 and diabetes from reference [2]:
- Edit evaluate.bat to allocate 1200 megabytes of memory
- Compile with: compile -noTabular -cd05 -dtClauseMinfill foo.net
- Evaluate with: evaluate foo.net foo.inst

Other networks from reference [2]:
- Edit evaluate.bat to allocate 1200 megabytes of memory
- Compile with: compile -noTabular -cd05 -dtBnMinfill foo.net
- Evalulate with: evaluate foo.net foo.inst

Networks from reference [7]:
- Edit evaluate.bat to allocate 1200 megabytes of memory
- Compile with: compile -noTabular -cd06 -dtBnMinfill foo.net
- Evalulate with: evaluate foo.net foo.inst

## Mapping between CNF variables and Bayesian Network variables

Specifying certain options to Ace allows one to retain the CNF encoding of the Bayesian network. The mapping between CNF literals and BN variables is included in the file having the suffix ".lmap". We cover only the basics of this file here. For more detail, you can examine the source file OnlineEngine.java, included with Ace. Additionally, note that not every parameter has a corresponding literal in the CNF (e.g., if the algorithm determines that the parameter cannot influence the result), and for some encodings, multiple parameters can share a single literal (e.g., if they have the same weight and are part of the same potential). For each CNF literal (negative or positive version of a CNF variable), there is exactly one description line containing the mapping for that literal. A description line looks like one of the following:
- "cc" "I" literal weight elimOp srcVarName srcValName srcVal
- "cc" "P" literal weight elimOp srcPotName pos+
- "cc" "C" literal weight elimOp

You can ignore "cc". I, P, and A indicate that the literal is an indicator, parameter, or auxiliary (a negative version of I or P that is neither I nor P or a variable that is intermediate), respectively. The literal and weight are straightforward. For more information, see the papers above. You can ignore elimOp (it is experimental and suggests the elimination operation: addition, maximization, or not applicable). srcVarName, srcVarVal, and srcVal represent the BN variable's name, value name, and value (the N values of the BN variable are mapped to ints in [0,N). srcPotName and pos are similar, but apply to potentials: each potential is given a unique name, and parameters are assigned ints starting at 0.

Send questions and comments to ace at cs.ucla.edu.