Issue646

Title Parent evaluation context
Priority feature Status resolved
Superseder Nosy List jendrik, malte, manuel, masataro, salome
Assigned To manuel Keywords
Optional summary
State evaluations with path dependent 
heuristics/evaluators (e.g.
LMCountHeuristic, GEvaluator, 
PrefEvaluator) require information from 
parent states.

Fast Downward already provides 
EvaluationContext that maintains 
information
during a state evaluation phase and makes 
this information available to
different components (heuristics, 
evaluators, open lists). This short term
caching of information saves re-
computation of information used by 
several
components.

At the moment EvaluationContext stores 
the state to evaluate, heuristic values,
current path cost and a preferred flag.

I suggest to additionally store a 
reference to the evaluation context of 
the
parent state in order to enable 
components to have access to parent state 
and
its related information.

In a second step, setting or updating the 
path cost of a state and determining
if a state is preferred can be done in 
g_evaluator respectively in
pref_evaluator instead of doing this in 
the search code.

In a third step, evaluators could cache 
their results themselves analogous to
heuristic.

Note, that decoupling evaluations from 
the search code by providing adding the
parent evaluation context allows for 
implementing many other path dependent
evaluators without the need of touching 
the search code. For example a depth
evaluator (issue641).

Created on 2016-04-15.17:27:33 by manuel, last changed by malte.

Summary
State evaluations with path dependent 
heuristics/evaluators (e.g.
LMCountHeuristic, GEvaluator, 
PrefEvaluator) require information from 
parent states.

Fast Downward already provides 
EvaluationContext that maintains 
information
during a state evaluation phase and makes 
this information available to
different components (heuristics, 
evaluators, open lists). This short term
caching of information saves re-
computation of information used by 
several
components.

At the moment EvaluationContext stores 
the state to evaluate, heuristic values,
current path cost and a preferred flag.

I suggest to additionally store a 
reference to the evaluation context of 
the
parent state in order to enable 
components to have access to parent state 
and
its related information.

In a second step, setting or updating the 
path cost of a state and determining
if a state is preferred can be done in 
g_evaluator respectively in
pref_evaluator instead of doing this in 
the search code.

In a third step, evaluators could cache 
their results themselves analogous to
heuristic.

Note, that decoupling evaluations from 
the search code by providing adding the
parent evaluation context allows for 
implementing many other path dependent
evaluators without the need of touching 
the search code. For example a depth
evaluator (issue641).
Messages
msg7620 (view) Author: malte Date: 2018-09-20.11:09:12
I am closing this because I think we are now addressing the same goal with a
different mechanism, namely the notify methods of evaluators. If it later turns
out we need something different/something additional, we can open a new issue or
reopen this one.
History
Date User Action Args
2018-09-20 11:09:12maltesetstatus: in-progress -> resolved
messages: + msg7620
2016-04-15 21:57:48jendriksetnosy: + jendrik
summary: State evaluations with path dependent heuristics/evaluators (e.g. LMCountHeuristic, GEvaluator, PrefEvaluator) require information from parent states. Fast Downward already provides EvaluationContext that maintains information during a state evaluation phase and makes this information available to different components (heuristics, evaluators, open lists). This short term caching of information saves re-computation of information used by several components. At the moment EvaluationContext stores the state to evaluate, heuristic values, current path cost and a preferred flag. I suggest to additionally store a reference to the evaluation context of the parent state in order to enable components to have access to parent state and its related information. In a second step, setting or updating the path cost of a state and determining if a state is preferred can be done in g_evaluator respectively in pref_evaluator instead of doing this in the search code. In a third step, evaluators could cache their results themselves analogous to heuristic. Note, that decoupling evaluations from the search code by providing adding the parent evaluation context allows for implementing many other path dependent evaluators without the need of touching the search code. For example a depth evaluator (issue641). -> State evaluations with path dependent heuristics/evaluators (e.g. LMCountHeuristic, GEvaluator, PrefEvaluator) require information from parent states. Fast Downward already provides EvaluationContext that maintains information during a state evaluation phase and makes this information available to different components (heuristics, evaluators, open lists). This short term caching of information saves re- computation of information used by several components. At the moment EvaluationContext stores the state to evaluate, heuristic values, current path cost and a preferred flag. I suggest to additionally store a reference to the evaluation context of the parent state in order to enable components to have access to parent state and its related information. In a second step, setting or updating the path cost of a state and determining if a state is preferred can be done in g_evaluator respectively in pref_evaluator instead of doing this in the search code. In a third step, evaluators could cache their results themselves analogous to heuristic. Note, that decoupling evaluations from the search code by providing adding the parent evaluation context allows for implementing many other path dependent evaluators without the need of touching the search code. For example a depth evaluator (issue641).
2016-04-15 17:27:33manuelcreate