Revision 9 as of 2014-01-27 21:09:30

Clear message

A heuristic specification is either a newly created heuristic instance or a heuristic that has been defined previously. This page describes how one can specify a new heuristic instance. For re-using heuristics, see Heuristic Predefinitions.

Definitions of properties in the descriptions below:

Additive heuristic

add(cost_type=NORMAL)

Language features supported:

Properties:

Blind heuristic

Returns cost of cheapest action for non-goal states, 0 for goal states

blind(cost_type=NORMAL)

Language features supported:

Properties:

Context-enhanced additive heuristic

cea(cost_type=NORMAL)

Language features supported:

Properties:

Causal graph heuristic

cg(cost_type=NORMAL)

Language features supported:

Properties:

Canonical PDB

cpdbs(cost_type=NORMAL, patterns=None, combo=false, max_states=1000000)

FF heuristic

See also Synergy.

ff(cost_type=NORMAL)

Language features supported:

Properties:

Genetic Algorithm PDB

gapdb(pdb_max_size=50000, num_collections=5, num_episodes=30, mutation_probability=0.01, disjoint=false, cost_type=NORMAL)

Goal count heuristic

goalcount(cost_type=NORMAL)

Language features supported:

Properties:

h^m heuristic

hm(m=2, cost_type=NORMAL)

Language features supported:

Properties:

Max heuristic

hmax(cost_type=NORMAL)

Language features supported:

Properties:

iPDB

the pattern selection procedure by Haslum et al. (AAAI 2007); see also Sievers et al. (SoCS 2012) for implementation notes

ipdb(pdb_max_size=2000000, collection_max_size=20000000, num_samples=1000, min_improvement=10, cost_type=NORMAL)

Landmark-count heuristic

See also Synergy

lmcount(lm_graph, admissible=false, optimal=false, pref=false, alm=true, cost_type=NORMAL)

Note: to use optimal=true, you must build the planner with USE_LP=1. See LPBuildInstructions.

Optimal search: when using landmarks for optimal search (admissible=true), you probably also want to enable the mpd option of the A* algorithm to improve heuristic estimates

cost_type parameter: only used when admissible=true (see LandmarkGraph)

Language features supported:

Properties:

Landmark-cut heuristic

lmcut(cost_type=NORMAL)

Language features supported:

Properties:

Merge-and-shrink heuristic

Note: The parameter space and syntax for the merge-and-shrink heuristic has changed significantly in August 2011.

merge_and_shrink(merge_strategy=MERGE_LINEAR_CG_GOAL_LEVEL, shrink_strategy=shrink_fh(max_states=50000, max_states_before_merge=50000, shrink_f=high, shrink_h=low), reduce_labels=true, expensive_statistics=false, cost_type=NORMAL)

shrink_fh(max_states=N)

 f-preserving abstractions from the Helmert/Haslum/Hoffmann ICAPS 2007 paper (called HHH in the IJCAI 2011 paper by Nissim, Hoffmann and Helmert). Here, N is a numerical parameter for which sensible values include 1000, 10000, 50000, 100000 and 200000. Combine this with the default merge strategy MERGE_LINEAR_CG_GOAL_LEVEL to match the heuristic in the paper.
 ```
shrink_bisimulation(max_states=infinity, threshold=1, greedy=true, initialize_by_h=false, group_by_h=false)

shrink_bisimulation(max_states=N, greedy=false, initialize_by_h=true, group_by_h=true)

 Exact bisimulation with a size limit (called DFP-bop in the IJCAI 2011 paper by Nissim, Hoffmann and Helmert), where N is a numerical parameter for which sensible values include 1000, 10000, 50000, 100000 and 200000. Combine this with the merge strategy MERGE_LINEAR_REVERSE_LEVEL to match the heuristic in the paper.
- //reduce_labels// (bool): enable label reduction.  Note: it is hard to fathom a scenario where label reduction is a bad idea. The overhead should be low and the gains in time and memory can be massive. So unless you really know what you're doing, don't set this to false. (The point of this option is to perform controlled experiments on how useful label reduction is exactly.)
- //expensive_statistics// (bool): show statistics on "unique unlabeled edges" (WARNING: these are *very* slow, i.e. too expensive to show by default (in terms of time and memory). When this is used, the planner prints a big warning on stderr with information on the performance impact. Don't use when benchmarking!)
- //cost_type// ({NORMAL, ONE, PLUSONE}): Operator cost adjustment type. No matter what this setting is, axioms will always be considered as actions of cost 0 by the heuristics that treat axioms as actions.
 - ``NORMAL``: all actions are accounted for with their real cost
 - ``ONE``: all actions are accounted for as unit cost
 - ``PLUSONE``: all actions are accounted for as their real cost + 1 (except if all actions have original cost 1, in which case cost 1 is used). This is the behaviour known for the heuristics of the LAMA planner. This is intended to be used by the heuristics, not search engines, but is supported for both.
Language features supported:
- **action costs:** supported
- **conditional_effects:** not supported
- **axioms:** not supported
Properties:
- **admissible:** yes
- **consistent:** yes
- **safe:** yes
- **preferred operators:** no
== Pattern database heuristic ==
TODO
``` pdb(cost_type=NORMAL, max_states=1000000, pattern=None)


- //cost_type// ({NORMAL, ONE, PLUSONE}): Operator cost adjustment type. No matter what this setting is, axioms will always be considered as actions of cost 0 by the heuristics that treat axioms as actions.
 - ``NORMAL``: all actions are accounted for with their real cost
 - ``ONE``: all actions are accounted for as unit cost
 - ``PLUSONE``: all actions are accounted for as their real cost + 1 (except if all actions have original cost 1, in which case cost 1 is used). This is the behaviour known for the heuristics of the LAMA planner. This is intended to be used by the heuristics, not search engines, but is supported for both.
- //max_states// (int): maximal number of abstract states in the pattern database
- //pattern// (list of int): list of variable numbers of the planning task that should be used as pattern. Default: the variables are selected automatically based on a simple greedy strategy.
== Zero-One PDB ==
``` zopdbs(cost_type=NORMAL, patterns=None, combo=false, max_states=1000000)


- //cost_type// ({NORMAL, ONE, PLUSONE}): Operator cost adjustment type. No matter what this setting is, axioms will always be considered as actions of cost 0 by the heuristics that treat axioms as actions.
 - ``NORMAL``: all actions are accounted for with their real cost
 - ``ONE``: all actions are accounted for as unit cost
 - ``PLUSONE``: all actions are accounted for as their real cost + 1 (except if all actions have original cost 1, in which case cost 1 is used). This is the behaviour known for the heuristics of the LAMA planner. This is intended to be used by the heuristics, not search engines, but is supported for both.
- //patterns// (list of list of int): list of patterns (which are lists of variable numbers of the planning task) Default: each goal variable is used as a single-variable pattern in the collection.
- //combo// (bool): use the combo strategy
- //max_states// (int): maximum abstraction size for combo strategy