Differences between revisions 2 and 3
Revision 2 as of 2014-04-20 17:57:04
Size: 2767
Editor: JendrikSeipp
Comment:
Revision 3 as of 2014-04-20 18:03:31
Size: 3600
Editor: JendrikSeipp
Comment: add text for causal graph
Deletions are marked like this. Additions are marked like this.
Line 86: Line 86:

<<Anchor(cg)>>
=== Preprocessor file format: Causal Graph section ===

This has a similar structure as a DTG description. It looks like this:

{{{
begin_CG
[Block for variable #0]
[Block for variable #1]
...
[Block for last variable]
end_CG
}}}

Each variable block describes the outgoing arcs for this vertex of the
graph, in this format:

{{{
number of arcs
[description of first arc]
[description of second arc]
...
[description of last arc]
}}}

Each arc description is a pair {{{target weight}}}
where target is the variable (i.e., causal graph vertex) that the arc
points to, and weight is a "weight" for this arc (the number of DTG transitions that induce this
arc). The weight information is not currently used for anything in
particular; it is included as an additional piece of information.

Output of the Fast Downward preprocessor

This page describes the output format of the preprocessor component of Fast Downward. The output has the filename output, but is sometimes called PRE. The preprocessor takes the output.sas file generated by the translator and adds three sections. The common sections are described in TranslatorOutputFormat.

Preprocessor file format

The following sections are added:

  1. Successor Generator section

  2. Domain Transition Graphs section

  3. Causal Graph section

Preprocessor file format: Successor Generator section

This section is a textual representation of the successor generator that is used when the search computes a state's successors.

Preprocessor file format: Domain Transition Graphs section

There is one section begin_DTG ... end_DTG for each variable of the problem. The k-th section of this kind corresponds to the DTG for variable #k.

Each section has the following structure:

begin_DTG
[Block for value 0]
[Block for value 1]
...
[Block for last value]
end_DTG

Each block describes the outgoing arcs of the corresponding node in the DTG. So for example, the fifth block (#4) in the third (#2) DTG section describes the outgoing transitions in the DTG for variable #2 for the value #4. Such a value block looks like follows:

number of transitions
[description of first transition]
[description of second transition]
...
[description of last transition]

Each description of a transition looks like the following:

target value
operator/axiom number
number of conditions for the transition
variable/value pair for the first transition condition
variable/value pair for the second transition condition
...
variable/value pair for the last transition condition

The "target value" is the value for the DTG variable that is achieved by the transition.

The operator/axiom number is the number of the operator or axiom that is associated with the transition. (Whether it refers to an axiom or operator depends on whether the DTG variable is derived or not.) Operators and axioms are numbered in the order in which they appear in the PRE file; counting starts from 0 in both cases.

The description of the variable/value pairs is the same as elsewhere (e.g. in operator preconditions).

For example, the description for a given transition could look like this:

1
16
2
4 0
40 0

This means that this transition reaches value #1, corresponds to operator or axiom #16, and has two associated conditions: variable #4 must have the value 0, and variable #40 must also have the value 0.

Preprocessor file format: Causal Graph section

This has a similar structure as a DTG description. It looks like this:

begin_CG
[Block for variable #0]
[Block for variable #1]
...
[Block for last variable]
end_CG

Each variable block describes the outgoing arcs for this vertex of the graph, in this format:

number of arcs
[description of first arc]
[description of second arc]
...
[description of last arc]

Each arc description is a pair target weight where target is the variable (i.e., causal graph vertex) that the arc points to, and weight is a "weight" for this arc (the number of DTG transitions that induce this arc). The weight information is not currently used for anything in particular; it is included as an additional piece of information.