Go backward to Comparing numeric evaluations.
Go up to Computing evaluations.
Go forward to Default evaluations.
Computing symbolic evaluations
..............................
Soar provides a set of eight predefined symbolic evaluations. The evaluation
object can be augmented with attribute ^symbolic-value and one of the
following values: *require-success, success, partial-success, indifferent,
partial-failure, failure,* and *prohibit-failure*.
The semantics of these values are given below, relative to their use in an
evaluation subgoal. As with numeric evaluations, objects with the same
evaluation are made indifferent.
* Require-success The state is the only next state in which success can be
achieved, and this is the only path that can lead to this state. This is
translated into a require preference for the operator.
* Success The state achieves the goal. There may be other states that
achieve the goal and other paths to this state. This is translated into
a best preference for the operator.
* Partial-success The state is on the path to the goal. The state may, or
may not be on the shortest or best path to the goal. This is translated
into a best preference for the operator. If one operator has a success
augmentation, and a second operator has a partial-success augmentation,
a preference is created that the first operator is better than the
second.
* Indifferent There is knowledge that it does not matter whether this
state is reached. This is translated into an indifferent preference for
the operator.
* Partial-failure The state is not on the path to success. This is
translated into a worst preference for the operator.
* Failure The state is a failure state. This is translated into a worst
preference for the operator. If one operator is augmented with
partial-failure, and a second operator is augmented with failure, a
preference is created that the first operator is better than the second.
* Prohibit-failure If the state is encountered, success can never be
achieved. This is translated into an prohibit preference for the
operator.
The default knowledge also provides a simpler method to use in the evaluation
subgoal. One of the predefined symbolic values can augment a lookahead state
*as the attribute*, taking the desired object its value. The following
template shows how to use a success evaluation as a goal test in an
evaluation subgoal:
(sp your-production-name
(goal <g> ^state <s> ^desired <d>)
conditions that detect subgoal success by comparing <s> to <d>.
-->
(<s> ^success <d>))
These augmentations are converted to the corresponding ^symbolic-value
augmentations by the default productions for the evaluation object.
The desired object is copied from the tie-context automatically by the
default productions. The value of the ^desired augmentation is necessary
because a given state may occur in multiple goals. The desired object must
be included in the augmentation so that the symbolic evaluation is correctly
tied to the appropriate desired state.