Differences between revisions 7 and 17 (spanning 10 versions)
Revision 7 as of 2015-09-11 10:51:49
Size: 2882
Editor: XmlRpcBot
Comment:
Revision 17 as of 2019-11-22 22:30:43
Size: 4268
Editor: XmlRpcBot
Comment:
Deletions are marked like this. Additions are marked like this.
Line 16: Line 16:
 * Richard Valenzano, Nathan R. Sturtevant, Jonathan Schaeffer, and Fan Xie.<<BR>>  * Richard Valenzano, Nathan R. Sturtevant, Jonathan Schaeffer and Fan Xie.<<BR>>
Line 18: Line 18:
 In ''Proceedings of the Twenty-Fourth International Conference on Automated Planning and Scheduling (ICAPS 2014)'', pp. 375-379. AAAI Press 2014.  In ''Proceedings of the Twenty-Fourth International Conference on Automated Planning and Scheduling (ICAPS 2014)'', pp. 375-379. AAAI Press, 2014.
Line 21: Line 21:
epsilon_greedy(eval, pref_only=false, epsilon=0.2) epsilon_greedy(eval, pref_only=false, epsilon=0.2, random_seed=-1)
Line 24: Line 24:
 * ''eval'' ([[Doc/ScalarEvaluator|ScalarEvaluator]]): scalar evaluator  * ''eval'' ([[Doc/Evaluator|Evaluator]]): evaluator
Line 27: Line 27:
 * ''random_seed'' (int [-1, infinity]): Set to -1 (default) to use the global random number generator. Set to any other value to use a local random number generator with the given seed.
Line 30: Line 31:
pareto(evals, pref_only=false, state_uniform_selection=false) pareto(evals, pref_only=false, state_uniform_selection=false, random_seed=-1)
Line 34: Line 35:
 * ''evals'' (list of [[Doc/ScalarEvaluator|ScalarEvaluator]]): scalar evaluators  * ''evals'' (list of [[Doc/Evaluator|Evaluator]]): evaluators
Line 37: Line 38:
== Standard open list ==
Standard open list that uses a single evaluator
 * ''random_seed'' (int [-1, infinity]): Set to -1 (default) to use the global random number generator. Set to any other value to use a local random number generator with the given seed.
== Best-first open list ==
Open list that uses a single evaluator and FIFO tiebreaking.
Line 44: Line 46:
 * ''eval'' ([[Doc/ScalarEvaluator|ScalarEvaluator]]): scalar evaluator  * ''eval'' ([[Doc/Evaluator|Evaluator]]): evaluator
Line 46: Line 48:
== Bucket-based open list ==
Bucket-based open list implementation that uses a single evaluator. Ties are broken in FIFO order.
{{{
single_buckets(eval, pref_only=false)
}}}
'''Implementation Notes:''' Elements with the same evaluator value are stored in double-ended queues, called "buckets". The open list stores a map from evaluator values to buckets. Pushing and popping from a bucket runs in constant time. Therefore, inserting and removing an entry from the open list takes time O(log(n)), where n is the number of buckets.
Line 52: Line 50:

 * ''eval'' ([[Doc/ScalarEvaluator|ScalarEvaluator]]): scalar evaluator
 * ''pref_only'' (bool): insert only nodes generated by preferred operators
Line 61: Line 56:
 * ''evals'' (list of [[Doc/ScalarEvaluator|ScalarEvaluator]]): scalar evaluators  * ''evals'' (list of [[Doc/Evaluator|Evaluator]]): evaluators
Line 64: Line 59:
== Type-based open list ==
Uses multiple evaluators to assign entries to buckets. All entries in a bucket have the same evaluator values. When retrieving an entry, a bucket is chosen uniformly at random and one of the contained entries is selected uniformly randomly. The algorithm is based on
Line 65: Line 62:
/* moin code generated by txt2tags 2.6b (http://txt2tags.sf.net) */  * Fan Xie, Martin Mueller, Robert Holte and Tatsuya Imai.<<BR>>
 [[http://www.aaai.org/ocs/index.php/AAAI/AAAI14/paper/view/8472/8705|Type-Based Exploration with Multiple Search Queues for Satisficing Planning]].<<BR>>
 In ''Proceedings of the Twenty-Eigth AAAI Conference Conference on Artificial Intelligence (AAAI 2014)'', pp. 2395-2401. AAAI Press, 2014.

{{{
type_based(evaluators, random_seed=-1)
}}}

 * ''evaluators'' (list of [[Doc/Evaluator|Evaluator]]): Evaluators used to determine the bucket for each entry.
 * ''random_seed'' (int [-1, infinity]): Set to -1 (default) to use the global random number generator. Set to any other value to use a local random number generator with the given seed.

/* moin code generated by txt2tags 2.6 (http://txt2tags.org) */

Alternation open list

alternates between several open lists.

alt(sublists, boost=0)
  • sublists (list of OpenList): open lists between which this one alternates

  • boost (int): boost value for contained open lists that are restricted to preferred successors

Epsilon-greedy open list

Chooses an entry uniformly randomly with probability 'epsilon', otherwise it returns the minimum entry. The algorithm is based on

epsilon_greedy(eval, pref_only=false, epsilon=0.2, random_seed=-1)
  • eval (Evaluator): evaluator

  • pref_only (bool): insert only nodes generated by preferred operators

  • epsilon (double [0.0, 1.0]): probability for choosing the next entry randomly

  • random_seed (int [-1, infinity]): Set to -1 (default) to use the global random number generator. Set to any other value to use a local random number generator with the given seed.

Pareto open list

Selects one of the Pareto-optimal (regarding the sub-evaluators) entries for removal.

pareto(evals, pref_only=false, state_uniform_selection=false, random_seed=-1)
  • evals (list of Evaluator): 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.

  • random_seed (int [-1, infinity]): Set to -1 (default) to use the global random number generator. Set to any other value to use a local random number generator with the given seed.

Best-first open list

Open list that uses a single evaluator and FIFO tiebreaking.

single(eval, pref_only=false)
  • eval (Evaluator): evaluator

  • pref_only (bool): insert only nodes generated by preferred operators

Implementation Notes: Elements with the same evaluator value are stored in double-ended queues, called "buckets". The open list stores a map from evaluator values to buckets. Pushing and popping from a bucket runs in constant time. Therefore, inserting and removing an entry from the open list takes time O(log(n)), where n is the number of buckets.

Tie-breaking open list

tiebreaking(evals, pref_only=false, unsafe_pruning=true)
  • evals (list of Evaluator): 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

Type-based open list

Uses multiple evaluators to assign entries to buckets. All entries in a bucket have the same evaluator values. When retrieving an entry, a bucket is chosen uniformly at random and one of the contained entries is selected uniformly randomly. The algorithm is based on

type_based(evaluators, random_seed=-1)
  • evaluators (list of Evaluator): Evaluators used to determine the bucket for each entry.

  • random_seed (int [-1, infinity]): Set to -1 (default) to use the global random number generator. Set to any other value to use a local random number generator with the given seed.

FastDownward: Doc/OpenList (last edited 2024-01-11 22:26:38 by XmlRpcBot)