This agent is a self-validating unit test for episodic memory.

Parameter settings for EpMem are set in firstload. Parameters for the agent (as described below) are set in the action of the initialization application rule.

It first counts to some number (max), triggering episodic storage at each tick (this is mode "recording"). Episodes include both an integer count (S1 ^symbolic.episode) as well as a digit-by-digit symbolic representation (S1 ^symbolic.converted.*). The symbolic representation re-uses a linked-list of identifier "digits" (S1 ^digit), each of which contains "word" and "number" WMEs. The number of places is designated by a number "size" (S1 ^size). For example, the number 144 with size 4 will have something like the following representation:

Code:
(<number> ^one <four>
          ^two <four>
          ^three <one>
          ^four <zero>)
The "max" alluded to previously determined at runtime to be the largest number that can be represented with size digits (i.e. 10^(size)-1. At the end of storage, the agent will interrupt, waiting for confirmation to proceed.

Once all episodes have been stored, the agent proceeds to "testing" mode. This is a sequence of "max" queries to episodic memory. There are two testing modes (set by S1 ^test-mode). The default is "increment" where it will try to retrieve episode 1, then 2, then 3, ... max. The "single" testing mode will try to retrieve the same episode (S1 ^test-ep) max number of times.

The same process to convert a number to a sequence of digits is used in storage and retrieval, so all queries are expected to have perfect matches. There is a rule that will halt the agent if graph-match is ever imperfect. Because the agent queries for both the numeric and digit-by-digit representation, a graph-match can only occur if the correct episode is retrieved.

Retrieving a low numbered episode will cause EpMem surface match to traverse a linear number of episodes (relative to the total number of recorded episodes) before arriving at the desired episode. Thus, with a constant size, a test-ep of 1 will be the most expensive, test-ep equal to max will be the cheapest, and increment will be in the middle.

Soar capabilities
  • Semantic memory
  • Episodic memory
Download LinksExternal Environment
  • None.
Default Rules
  • None.
Associated Publications
  • None.
Developer
  • Nate Derbinsky
Soar Versions
  • Any version of Soar with both episodic and semantic memory.
Project Type
  • VisualSoar