Differences between revisions 1 and 28 (spanning 27 versions)
Revision 1 as of 2010-08-03 09:58:17
Size: 584
Editor: GabiRoeger
Comment:
Revision 28 as of 2011-07-04 08:20:00
Size: 4484
Editor: ErezKarpas
Comment:
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:

Line 7: Line 5:
Running the planner is a three-step process as explained in Section 3 (pp. 202-203) of the [[http://www.jair.org/papers/paper1705.html|JAIR paper on Fast Downward]]. The following instructions show how to run these three steps, in sequence, assuming that the preprocessor and search component have been compiled and that you are currently located in the {{{src}}} directory.
Line 9: Line 9:
XXX TODO {{{
translate/translate.py [DOMAIN] PROBLEM
}}}
Line 11: Line 13:
 * `DOMAIN` (filename): PDDL domain file
 * `PROBLEM` (filename): PDDL problem file

If the domain file is not given, the planner will try to infer a likely name from the problem file name, using the conventions used at the various IPCs. (If in doubt if this will work for you, just try it out.)

Note: Creates a file called [[TRANSLATOR_OUTPUT_FORMAT|output.sas]] (as well as test.groups, all.groups, ...)
Line 13: Line 21:
XXX TODO {{{
preprocess/preprocess < OUTPUT.SAS
}}}

 * `OUTPUT.SAS` (filename): translator output

Note: Creates a file called output
Line 19: Line 33:
 search [OPTIONS] {-s|--search} SEARCH < OUTPUT search/downward [OPTIONS] --search SEARCH < OUTPUT
Line 25: Line 39:
 * `-h, --heuristic` [[ReusingHeuristics#predefinition|HEURISTIC_PREDEFINITION]]  * `--heuristic` [[ReusingHeuristics#predefinition|HEURISTIC_PREDEFINITION]]
Line 28: Line 42:
 * `-r, --random-seed` SEED  * `--random-seed` SEED
Line 30: Line 44:


=== Examples ===

A* search:

{{{#!highlight bash
# landmark-cut heuristic (previously configuration "ou")
 ./downward --search "astar(lmcut())" < output

# merge-and-shrink heuristic with default settings (previously configuration "oa50000")
 ./downward --search "astar(mas())" < output

# blind heuristic (previously configuarion "ob")
 ./downward --search "astar(blind())" < output
}}}

Lazy greedy best first search with preferred operators and the queue alternation method:

{{{#!highlight bash
## using FF heuristic and context-enhanced additive heuristic (previously: "fFyY")
 ./downward --heuristic "hff=ff()" --heuristic "hcea=cea()" \
            --search "lazy_greedy([hff, hcea], preferred=[hff, hcea])" \
            < output

## using FF heuristic (previously: "fF")
 ./downward --heuristic "hff=ff()" \
            --search "lazy_greedy(hff, preferred=hff)" \
            < output

## using context-enhanced additive heuristic (previously: "yY")
 ./downward --heuristic "hcea=cea()" \
            --search "lazy_greedy(hcea, preferred=hcea)" \
            < output
}}}

Q: I would like to see an example that uses the LAMA-FF Synergy feature.

A: See next question.

Q: Is it possible to make the planner behave like LAMA (in the IPC 2008 version)?

A: The following configuration has all the ingredients of LAMA: it uses the landmark and FF heuristics with synergy in a lazy alternation search with preferred operators for both heuristics, uses iterated search with the appropriate set of options, and performs LAMA's +1 action cost adjustment on the heuristic for problems with non-unit-cost actions. It also uses the same mechanism for computing landmarks as LAMA. (There are, however, a number of implementation differences that make the behaviour of the planner different from original LAMA, e.g. slightly different tie-breaking in the FF heuristic computation.)

{{{
./downward --heuristic "hlm,hff=lm_ff_syn(lm_rhw(reasonable_orders=true,cost_type=2,lm_cost_type=2))"
           --search "iterated([lazy_greedy([hff,hlm],preferred=[hff,hlm]),
                               lazy_wastar([hff,hlm],preferred=[hff,hlm],w=5),
                               lazy_wastar([hff,hlm],preferred=[hff,hlm],w=3),
                               lazy_wastar([hff,hlm],preferred=[hff,hlm],w=2),
                               lazy_wastar([hff,hlm],preferred=[hff,hlm],w=1)],
                              repeat_last=true)" < output
}}}

The following is the corresponding call to just find a first solution (i.e., not doing iterated search):

{{{
 ./downward --heuristic "hlm,hff=lm_ff_syn(lm_rhw(reasonable_orders=true,cost_type=2,lm_cost_type=2))"
            --search "lazy_greedy([hlm, hff], preferred=[hlm, hff])"
            < output
}}}

If you would like to have another translation from an old-style configuration to the new call-syntax,
please add it here as a TODO.

Back to HomePage.

Usage

Running the planner is a three-step process as explained in Section 3 (pp. 202-203) of the JAIR paper on Fast Downward. The following instructions show how to run these three steps, in sequence, assuming that the preprocessor and search component have been compiled and that you are currently located in the src directory.

Translator

translate/translate.py [DOMAIN] PROBLEM
  • DOMAIN (filename): PDDL domain file

  • PROBLEM (filename): PDDL problem file

If the domain file is not given, the planner will try to infer a likely name from the problem file name, using the conventions used at the various IPCs. (If in doubt if this will work for you, just try it out.)

Note: Creates a file called output.sas (as well as test.groups, all.groups, ...)

Preprocessor

preprocess/preprocess < OUTPUT.SAS
  • OUTPUT.SAS (filename): translator output

Note: Creates a file called output

Search component

search/downward [OPTIONS] --search SEARCH < OUTPUT
  • SEARCH (SearchEngine): configuration of the search algorithm

  • OUTPUT (filename): preprocessor output

Options:

  • --heuristic HEURISTIC_PREDEFINITION

    • Predefines a heuristic that can afterwards be referenced by the name that is specified in the definition.
  • --random-seed SEED

    • Use random seed SEED

Examples

A* search:

   1 # landmark-cut heuristic (previously configuration "ou")
   2  ./downward --search "astar(lmcut())" < output
   3 
   4 # merge-and-shrink heuristic with default settings (previously configuration "oa50000")
   5  ./downward --search "astar(mas())" < output
   6 
   7 # blind heuristic (previously configuarion "ob")
   8  ./downward --search "astar(blind())" < output

Lazy greedy best first search with preferred operators and the queue alternation method:

   1 ## using FF heuristic and context-enhanced additive heuristic (previously: "fFyY")
   2  ./downward --heuristic "hff=ff()" --heuristic "hcea=cea()" \
   3             --search "lazy_greedy([hff, hcea], preferred=[hff, hcea])" \
   4             < output
   5 
   6 ## using FF heuristic (previously: "fF")
   7  ./downward --heuristic "hff=ff()" \
   8             --search "lazy_greedy(hff, preferred=hff)" \
   9             < output
  10 
  11 ## using context-enhanced additive heuristic (previously: "yY")
  12  ./downward --heuristic "hcea=cea()" \
  13             --search "lazy_greedy(hcea, preferred=hcea)" \
  14             < output

Q: I would like to see an example that uses the LAMA-FF Synergy feature.

A: See next question.

Q: Is it possible to make the planner behave like LAMA (in the IPC 2008 version)?

A: The following configuration has all the ingredients of LAMA: it uses the landmark and FF heuristics with synergy in a lazy alternation search with preferred operators for both heuristics, uses iterated search with the appropriate set of options, and performs LAMA's +1 action cost adjustment on the heuristic for problems with non-unit-cost actions. It also uses the same mechanism for computing landmarks as LAMA. (There are, however, a number of implementation differences that make the behaviour of the planner different from original LAMA, e.g. slightly different tie-breaking in the FF heuristic computation.)

./downward --heuristic "hlm,hff=lm_ff_syn(lm_rhw(reasonable_orders=true,cost_type=2,lm_cost_type=2))"
           --search "iterated([lazy_greedy([hff,hlm],preferred=[hff,hlm]),
                               lazy_wastar([hff,hlm],preferred=[hff,hlm],w=5),
                               lazy_wastar([hff,hlm],preferred=[hff,hlm],w=3),
                               lazy_wastar([hff,hlm],preferred=[hff,hlm],w=2),
                               lazy_wastar([hff,hlm],preferred=[hff,hlm],w=1)],
                              repeat_last=true)" < output

The following is the corresponding call to just find a first solution (i.e., not doing iterated search):

 ./downward --heuristic "hlm,hff=lm_ff_syn(lm_rhw(reasonable_orders=true,cost_type=2,lm_cost_type=2))" 
            --search "lazy_greedy([hlm, hff], preferred=[hlm, hff])" 
            < output

If you would like to have another translation from an old-style configuration to the new call-syntax, please add it here as a TODO.

FastDownward: PlannerUsage (last edited 2023-10-12 12:14:59 by GabiRoeger)