Differences between revisions 6 and 7
Revision 6 as of 2011-04-08 10:09:34
Size: 2719
Comment: updated syntax
Revision 7 as of 2023-07-28 10:15:12
Size: 0
Editor: MalteHelmert
Comment: This page has long been replaced by Doc/OpenList. It wasn't detected as orphaned because it referenced itself.
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
#pragma section-numbers 2
Back to the HomePage.



= Open lists =

<<TableOfContents>>

<<Anchor(alt)>>
== Alternation open list ==

{{{
alt(openlists, boost=0)
}}}

Alternates between several open lists.
 * `openlists` (list of [[OpenList]]s): open lists
 * `boost` (int): boost value for sub-open-lists that are restricted to preferred operator nodes

''Preferred operators:'' Preferred operators are only taken from sub-open-lists
that do not consider the evaluated state a dead end.

''Dead ends:'' A state is considered a dead end if either all alternated open
lists agree that it is a dead end or at least one reliable open list considers is a dead
end. A state is never inserted into a sub-open-list that considers it a dead end.

Note: The treatment of dead ends is different from the one described in the
[[http://tr.informatik.uni-freiburg.de/reports/report258/report00258.ps.gz|technical report]] "The More, the Merrier: Combining Heuristic Estimators for Satisficing Planning
(Extended Version)" (Department of Computer Science at Freiburg University, No. 258,
2010)



<<Anchor(pareto)>>
== Pareto open list ==

{{{
pareto(evals, pref_only=false,
       state_uniform_selection=false)
}}}

Selects one of the Pareto-optimal (regarding the sub-evaluators) entry for removal.
 * `evals` (list of [[ScalarEvaluator]]s): scalar evaluators
 * `pref_only` (bool): insert only nodes generated by preferred operators
 * `state_uniform_selection` (bool): When removing an entry, we select a non-dominated bucket and return its oldest entry. If this option is false, we select uniformly from the non-dominated buckets; if the option is true, we weight the buckets with the number of entries.

<<Anchor(single)>>
== Standard open list ==

{{{
single(evaluator, pref_only=false)
}}}

Standard open list that uses a single evaluator.
 * `evaluator` (ScalarEvaluator): scalar evaluator
 * `pref_only` (bool): insert only nodes generated by preferred operators


<<Anchor(single_buckets)>>
== Bucket-based open list ==

{{{
single_buckets(evaluator, pref_only=false)
}}}

Bucket-based open list implementation that uses a single evaluator.
 * `evaluator` (ScalarEvaluator): scalar evaluator
 * `pref_only` (bool): insert only nodes generated by preferred operators

<<Anchor(tiebreaking)>>
== Tie-breaking open list ==

{{{
tiebreaking(evals, pref_only=false,
            unsafe_pruning=true)
}}}

 * `evals` (list of [[ScalarEvaluator]]s): scalar evaluators
 * `pref_only` (bool): insert only nodes generated by preferred operators
 * `unsafe_pruning` (bool): allow unsafe pruning when the main evaluator regards a state a dead end