4677
Comment: fixed link
|
5845
make script agnostic
|
Deletions are marked like this. | Additions are marked like this. |
Line 4: | Line 4: |
The configuration syntax changed slightly in April 2011. |
|
Line 52: | Line 49: |
./downward --help [Name] | ./downward-release --help [Name] |
Line 60: | Line 57: |
./downward --heuristic "hff=ff()" --heuristic "hcea=cea()" \ --search "lazy_greedy([hff, hcea], preferred=[hff, hcea])" \ < output |
--heuristic "hff=ff()" --heuristic "hcea=cea()" \ --search "lazy_greedy([hff, hcea], preferred=[hff, hcea])" \ |
Line 68: | Line 64: |
./downward --heuristic "hff=ff()" --heuristic "hcea=cea()" \ --search "lazy_greedy(hff, hcea, preferred=(hff, hcea))" \ < output |
--heuristic "hff=ff()" --heuristic "hcea=cea()" \ --search "lazy_greedy(hff, hcea, preferred=(hff, hcea))" \ |
Line 75: | Line 70: |
./downward --heuristic "hff=ff()" \ --search "lazy_greedy(hff, preferred=hff)" \ < output |
--heuristic "hff=ff()" \ --search "lazy_greedy(hff, preferred=hff)" \ |
Line 92: | Line 86: |
./downward --help [Name] //e.g. with Name=selmax | --help [Name] //e.g. with Name=selmax |
Line 132: | Line 126: |
./downward --landmarks "lm=lm_hm(m=2)" --search "iterated([ lazy_greedy(lmcount(lm)), lazy_greedy(lmcount(lm,admissible=true))])" < output |
--landmarks "lm=lm_hm(m=2)" --search "iterated([ lazy_greedy(lmcount(lm)), lazy_greedy(lmcount(lm,admissible=true))])" |
Line 137: | Line 131: |
== Conditional options == In some cases, it is useful to specify different options depending on properties of the input file. For example, the LAMA 2011 configuration makes use of this, adding an additional cost-ignoring search run at the start for tasks with non-unit action costs. === Example === {{{ --if-unit-cost --heuristic "h1=ff()" --heuristic "h2=blind()" \ --if-non-unit-cost --heuristic "h1=cea()" --heuristic "h2=lmcut()" \ --always --search "eager_greedy([h1, h2])" }}} This conducts an eager greedy search with two heuristics. On unit-cost tasks, it uses the FF heuristic and the blind heuristic. On other tasks, it uses the context-enhanced additive heuristic and the LM-Cut heuristic. === Details === Options can be made conditional via ''selectors'' such as `--if-unit-cost`. All options following a selector are only used if the condition associated with the selector is true. (This really includes '''all''' options, including ones like `--plan-file` that do not affect the planning algorithm.) Each selector is in effect until it is overridden by a new selector. The following selectors are available: * `--if-unit-cost`: the following options are only used for unit-cost planning tasks (i.e., tasks where all actions have cost 1, including the case where no action costs are specified at all) * `--if-non-unit-cost`: opposite of `--if-unit-cost` * `--always`: the following options are always used |
Back to the HomePage.
Option Syntax
Meaning of the call syntax documentation
All parameters can be specified by keyword or by position. Once a parameter is specified by keyword, the rest of the parameters must be specified by keyword too. Some parameters have default values and are optional. These parameters are documented in the form keyword = defaultvalue.
Consider the following example:
name(p, qs, r, s=v1, t=Enum1)
p (type_p): some explanation
qs (list of type_q): some explanation
r (type_r): some explanation
s (type_s): some explanation
t (Enum): some explanation
- Enum0: some explanation
- Enum1: some explanation
- Enum2: some explanation
Parameters p, qs and r are mandatory. qs is a list parameter. List parameters have to be enclosed in square brackets. An exception are single-element lists, where the brackets can be dropped. For example, let h1, h2, h3 be heuristic specifications, then [h1, h3], [h2] and h2 are examples for a list of heuristic specifications.
Parameters s and t are optional. s has the default value v1 and t the default value Enum1. t is an enumeration parameter and can only take the values listed (here Enum0, Enum1, Enum2). These values may also be passed by number, e.g. here t=Enum1 and t=1 are equivalent.
Some possible calls for this specification (with X and Xi having type_x):
name(P, Q, R): s and v have their default values v1 and Enum1
name(P, [Q], R): equivalent to previous call
name(P, [Q1, Q2], R, t=Enum2): s has its default value v1
name(t=1, r=R, qs=[Q1, Q2], s=S1, p=P) is equivalent to name(P, [Q1, Q2], R, S1, 1)
Notes
Parameters of type bool are specified by strings true or false
Parameters of type int can by specified by "infinity". This means that the parameter will take the value numeric_limits<int>::max(), which is usually equal to 2^31 - 1.
- not case-sensitive
- To get positions and keywords, run
./downward-release --help [Name]
Lists
List arguments have to be enclosed in square brackets now. E.g.,
--heuristic "hff=ff()" --heuristic "hcea=cea()" \ --search "lazy_greedy([hff, hcea], preferred=[hff, hcea])" \
instead of
--heuristic "hff=ff()" --heuristic "hcea=cea()" \ --search "lazy_greedy(hff, hcea, preferred=(hff, hcea))" \
Single element lists can be given without any brackets, e.g.
--heuristic "hff=ff()" \ --search "lazy_greedy(hff, preferred=hff)" \
Enumerations
Enumeration arguments can now be specified by name or by number (previously only by number), e.g.
selmax([h1,h2], classifier=AODE)
and
selmax([h1,h2], classifier=1)
are equivalent. To get enumeration names (and more), run
--help [Name] //e.g. with Name=selmax
Predefinitions
Often an object should be used for several purposes, e.g. a Heuristic or a LandmarkGraph. The most prevalent use case is a heuristic that is used for both the heuristic estimates and for its preferred operators. In this case, one should predefine the object.
Heuristic Predefinitions
Heuristics can be predefined using the search option --heuristic (see PlannerUsage#search).
--heuristic name=heuristic
name (string): a name that should denote the heuristic
heuristic (Heuristic): the heuristic
Landmark Predefinitions
If a set of landmarks should be used for several purposes, it can be predefined using the search option --landmarks (see PlannerUsage#search) to avoid duplicate work and memory usage.
--landmarks name=landmarks
name (string): a name that should denote the set of landmarks
landmarks (LandmarkGraph): the set of landmarks
Predefinition Example
Suppose I want to run GBFS with the lm_count heuristic (the inadmissible version), and then run another GBFS search with an admissible lm_count heuristic, using the h^m landmarks without discovering the landmarks twice.
--landmarks "lm=lm_hm(m=2)" --search "iterated([ lazy_greedy(lmcount(lm)), lazy_greedy(lmcount(lm,admissible=true))])"
Conditional options
In some cases, it is useful to specify different options depending on properties of the input file. For example, the LAMA 2011 configuration makes use of this, adding an additional cost-ignoring search run at the start for tasks with non-unit action costs.
Example
--if-unit-cost --heuristic "h1=ff()" --heuristic "h2=blind()" \ --if-non-unit-cost --heuristic "h1=cea()" --heuristic "h2=lmcut()" \ --always --search "eager_greedy([h1, h2])"
This conducts an eager greedy search with two heuristics. On unit-cost tasks, it uses the FF heuristic and the blind heuristic. On other tasks, it uses the context-enhanced additive heuristic and the LM-Cut heuristic.
Details
Options can be made conditional via selectors such as --if-unit-cost. All options following a selector are only used if the condition associated with the selector is true. (This really includes all options, including ones like --plan-file that do not affect the planning algorithm.) Each selector is in effect until it is overridden by a new selector. The following selectors are available:
--if-unit-cost: the following options are only used for unit-cost planning tasks (i.e., tasks where all actions have cost 1, including the case where no action costs are specified at all)
--if-non-unit-cost: opposite of --if-unit-cost
--always: the following options are always used