Go backward to Learning in Soar.
Go up to Learning in Soar.
Go forward to Determining conditions and actions.
Chunk creation
==============
Several factors govern when chunks are built. Soar chunks the results of
every subgoal, *unless* one of the following conditions is true:
1. Learning is off. (See Section See learn on page See learn for
details of learn.)
Learning can be on or off. When learn is on chunks are built. When
learn is off, chunks are not built.
2. Learning is set to bottom-up (using learn as described in Section
See learn on page See learn) and a chunk has been built for a subgoal
of the goal that generated the results.
With bottom-up learning, chunks are learned only in goals in which no
subgoal has yet generated a chunk. In this mode, chunks are learned
only for the "bottom" of the subgoal hierarchy and not the intermediate
levels. With experience, the subgoals at the bottom will be replaced by
the chunks, allowing higher level subgoals to be chunked.
3. The chunk duplicates a production already in production memory. In some
rare cases, a duplicate production will not be detected because the
order of the conditions or actions is not the same as an existing
production.
4. The augmentation, ^$quiescence t, of the subgoal that produced the
result is backtraced through.
This mechanism is motivated by the *chunking from exhaustion* problem,
where the results of a subgoal are dependent on the exhaustion of
alternatives (see Section See Problems with chunking on page
See Problems with chunking). If this subgoal augmentation is encountered
when determining the conditions of a chunk, then no chunk will be built
for the currently considered action. This recurs, so that if an
un-chunked result is relevant to a second result, no chunk will be built
for the second result. This does not prevent the creation of a chunk
that would include ^$quiescence t as a condition.
5. The problem space of the subgoal being chunked has been made "chunk
free" by the function chunk-free-problem-spaces (see Section
See chunk-free-problem-spaces on page See chunk-free-problem-spaces).
This capability is provided for debugging and system development, and it
is not part of the theory of Soar.
If a result is to be chunked, Soar builds the chunk *as soon as the result is
created*, rather than waiting until subgoal termination.