This section illustrates the algorithm with a concrete, simple example. Later in the paper more interesting examples are discussed. The example is taken from the planning chapter of (Charniak & Mc Dermott, 1985). It involves a robot with two hands which has to spray-paint itself and sand a board. The task has some complexity to it. The robot has to coordinate the use of its hands or otherwise be clever enough to use a vise to hold the board and perform the jobs in parallel. Furthermore, it should perform the sanding of the board first, because once it has painted itself, it is no longer operational. The definition of the competence modules in terms of their precondition lists, add lists and delete lists is presented in figure 1.
Figure 1: Definition of the competence modules involved in the toy example.
On the basis of these definitions the spreading activation network in figure 2 is constructed. A possible solution to the problem would be to pick up the board, put it in the vise, pick up the sander, sand the board in the vise, pick up the sprayer and spray paint itself.
Figure 2: The spreading activation network for the toy example. The
predecessor links (from a competence module to its predecessors) are shown
as arrows (the symbol of an activation link). The conflicter links are shown
as inhibition links (with a little circle at the end). The successor links
are not shown (there is a successor link in the inverse direction for every predecessor link).
A (computer-) environment has been built in which the behavior of such a network of competence modules can be simulated. The program is written in Common LISP on a SYMBOLICS machine. Figure 3 shows a bitmap of the system simulating the network described above. The initial state of the environment is S(0) = (hand-is-empty, hand-is-empty, sander-somewhere, sprayer-somewhere, operational, board-somewhere), the initial goals are G(0) = (board-sanded, self-painted).
Figure 3: The user interface of the simulation environment. The upper pane
is a menu of commands. It makes it possible to define a new network, to
initialize the current network, to change the global parameters, to change
the state of the environment, to change the goals of the network and to run
or step through the behavior of a network. The left-hand panes display the
parameters, the current state of the environment, the current goals of the
network and the results of the simulation (among which is the list of
activated modules). The right-hand panes display the activation levels of
competence modules over time (the X-axis
represents time, while the Y-axis displays the activation level). The little circles tell when a competence
module has become active.
It is also possible to obtain a trace showing in detail how the spreading activation has evolved. In the remainder of this section, we study the trace of the experiment shown in figure 3 in order to explain its action selection behavior. The activation levels of the competence modules are initialized to zero. At time 1, the modules don't have any activation energy to spread yet, so there is only the input/output from the state and goals. Notice that SAND-BOARD-IN-HAND and SAND-BOARD-IN-VISE have to share the activation energy coming from the goal `board-sanded'.
TIME: 1 state of the environment: (HAND-IS-EMPTY HAND-IS-EMPTY SANDER-SOMEWHERE SPRAYER-SOMEWHERE OPERATIONAL BOARD-SOMEWHERE) goals of the environment: (BOARD-SANDED SELF-PAINTED) protected goals of the environment: NIL state gives PICK-UP-SANDER an extra activation of 3.3333333 state gives PICK-UP-SPRAYER an extra activation of 3.3333333 state gives PICK-UP-BOARD an extra activation of 3.3333333 state gives PICK-UP-SANDER an extra activation of 10.0 state gives PICK-UP-SPRAYER an extra activation of 10.0 state gives SPRAY-PAINT-SELF an extra activation of 3.3333333 state gives SAND-BOARD-IN-HAND an extra activation of 2.2222223 state gives SAND-BOARD-IN-VISE an extra activation of 2.2222223 state gives PICK-UP-BOARD an extra activation of 10.0 goals give SAND-BOARD-IN-HAND an extra activation of 35.0 goals give SAND-BOARD-IN-VISE an extra activation of 35.0 goals give SPRAY-PAINT-SELF an extra activation of 70.0 activation-levels of modules after decay: activation-level PLACE-BOARD-IN-VISE: 0.0 activation-level SPRAY-PAINT-SELF: 73.333336 activation-level SAND-BOARD-IN-HAND: 37.22222 activation-level SAND-BOARD-IN-VISE: 37.22222 activation-level PICK-UP-SANDER: 13.333333 activation-level PICK-UP-SPRAYER: 13.333333 activation-level PICK-UP-BOARD: 13.333333 activation-level PUT-DOWN-SPRAYER: 0.0 activation-level PUT-DOWN-SANDER: 0.0 activation-level PUT-DOWN-BOARD: 0.0 NO MODULE becoming active threshold is lowered to 40.5
None of the executable modules has accumulated enough activation to become active. As a result the threshold is lowered by 10%. At time 2, the input/output from the state and goals is the same as at time 1 (not reprinted). Now there is also some spreading activation among modules. Notice that the modules that match the goals, SPRAY-PAINT-SELF, SAND-BOARD-IN-VISE and SAND-BOARD-IN-HAND spread backwards to their predecessors PICK-UP-SPRAYER, PICK-UP-SAN-DER, PICK-UP-BOARD, and PLACE-BOARD-IN-VISE to make their conditions true. So the false preconditions of the modules that achieve the goals are treated as `subgoals' by the algorithm.
In case there is only one predecessor for a false precondition, they increase that module's activation level with their own activation level. For example, PICK-UP-SPRAYER receives as much activation as what SPRAY-PAINT-SELF has, because it is the only module that achieves the precondition `sprayer-in-hand'. Notice further that SAND-BOARD-IN-HAND and SAND-BOARD-IN-VISE weaken SPRAY-PAINT-SELF because it deletes their precondition `operational'. Finally the executable modules, PICK-UP-SPRAYER, PICK-UP-SANDER and PICK-UP-BOARD activate their successors. This activation is less important than the backward spreading, because we want the impact of goals (and subgoals) to be greater than that of the state (and the `almost true propositions').
TIME: 2 state gives ... PLACE-BOARD-IN-VISE spreads 0.0 backward to PICK-UP-BOARD for BOARD-IN-HAND SPRAY-PAINT-SELF spreads 73.333336 backward to PICK-UP-SPRAYER for SPRAYER-IN-HAND SAND-BOARD-IN-HAND spreads 37.22222 backward to PICK-UP-BOARD for BOARD-IN-HAND SAND-BOARD-IN-HAND spreads 37.22222 backward to PICK-UP-SANDER for SANDER-IN-HAND SAND-BOARD-IN-HAND decreases (inhibits) SPRAY-PAINT-SELF with 26.587301 for OPERATIONAL SAND-BOARD-IN-VISE spreads 18.61111 backward to PLACE-BOARD-IN-VISE for BOARD-IN-VISE SAND-BOARD-IN-VISE spreads 37.22222 backward to PICK-UP-SANDER for SANDER-IN-HAND SAND-BOARD-IN-VISE decreases (inhibits) SPRAY-PAINT-SELF with 26.587301 for OPERATIONAL PICK-UP-SANDER spreads 0.42328045 forward to SAND-BOARD-IN-HAND for SANDER-IN-HAND PICK-UP-SANDER spreads 0.42328045 forward to SAND-BOARD-IN-VISE for SANDER-IN-HAND PICK-UP-SANDER spreads 1.2698413 forward to PUT-DOWN-SANDER for SANDER-IN-HAND PICK-UP-SPRAYER spreads 0.95238096 forward to SPRAY-PAINT-SELF for SPRAYER-IN-HAND PICK-UP-SPRAYER spreads 1.9047619 forward to PUT-DOWN-SPRAYER for SPRAYER-IN-HAND PICK-UP-BOARD spreads 1.2698413 forward to PLACE-BOARD-IN-VISE for BOARD-IN-HAND PICK-UP-BOARD spreads 0.42328045 forward to SAND-BOARD-IN-HAND for BOARD-IN-HAND PICK-UP-BOARD spreads 1.2698413 forward to PUT-DOWN-BOARD for BOARD-IN-HAND PUT-DOWN-SPRAYER spreads 0.0 backward to PICK-UP-SPRAYER for SPRAYER-IN-HAND PUT-DOWN-SANDER spreads 0.0 backward to PICK-UP-SANDER for SANDER-IN-HAND PUT-DOWN-BOARD spreads 0.0 backward to PICK-UP-BOARD for BOARD-IN-HAND activation-levels of modules after decay: activation-level PLACE-BOARD-IN-VISE: 7.447046 activation-level SPRAY-PAINT-SELF: 35.377182 activation-level SAND-BOARD-IN-HAND: 28.202648 activation-level SAND-BOARD-IN-VISE: 28.044096 activation-level PICK-UP-SANDER: 37.874393 activation-level PICK-UP-SPRAYER: 37.458195 activation-level PICK-UP-BOARD: 23.931622 activation-level PUT-DOWN-SPRAYER: 0.7134894 activation-level PUT-DOWN-SANDER: 0.4756596 activation-level PUT-DOWN-BOARD: 0.4756596 NO MODULE becoming active threshold is lowered to 36.45
Again, none of the executable modules is activated enough to be selected. At time 3, the spreading activation patterns remain unchanged, except for the amounts of activation energy that are given or taken away by modules. In particular, PICK-UP-SPRAYER receives less activation from its successor SPRAY-PAINT-SELF, than what PICK-UP-SANDER receives from SAND-BOARD-IN-HAND and SAND-BOARD-IN-VISE together.
TIME: 3 state gives ... PLACE-BOARD-IN-VISE spreads ... activation-levels of modules after decay: activation-level PLACE-BOARD-IN-VISE: 9.699059 activation-level SPRAY-PAINT-SELF: 29.082869 activation-level SAND-BOARD-IN-HAND: 27.521559 activation-level SAND-BOARD-IN-VISE: 27.146523 activation-level PICK-UP-SANDER: 44.079823 activation-level PICK-UP-SPRAYER: 32.721424 activation-level PICK-UP-BOARD: 24.479343 activation-level PUT-DOWN-SPRAYER: 2.4768724 activation-level PUT-DOWN-SANDER: 1.6674367 activation-level PUT-DOWN-BOARD: 1.1251152 module becoming active: PICK-UP-SANDER
The module PICK-UP-SANDER now has accumulated enough activation to become active. As a result the state changes, and thus also the input coming from the state and the internal spreading activation patterns. Notice that SAND-BOARD-IN-VISE and SAND-BOARD-IN-HAND now inhibit PUT-DOWN-SANDER to prevent it from undoing the precondition `sander-in-hand'. Notice also that PICK-UP-BOARD decreases the activation level of PICK-UP-SPRAYER for the precondition `hand-is-empty'. This inhibition will become stronger in time because SAND-BOARD-IN-VISE and SAND-BOARD-IN-HAND will be enforced since now more of their preconditions are true.
TIME: 4 state of the environment: (SANDER-IN-HAND HAND-IS-EMPTY SPRAYER-SOMEWHERE OPERATIONAL BOARD-SOMEWHERE) goals of the environment: (BOARD-SANDED SELF-PAINTED) protected goals of the environment: NIL state gives SAND-BOARD-IN-HAND an extra activation of 2.2222223 state gives SAND-BOARD-IN-VISE an extra activation of 2.2222223 state gives PUT-DOWN-SANDER an extra activation of 6.6666665 state gives PICK-UP-SANDER an extra activation of 3.3333333 state gives PICK-UP-SPRAYER an extra activation of 3.3333333 state gives PICK-UP-BOARD an extra activation of 3.3333333 state gives PICK-UP-SPRAYER an extra activation of 10.0 state gives SPRAY-PAINT-SELF an extra activation of 3.3333333 state gives SAND-BOARD-IN-HAND an extra activation of 2.2222223 state gives SAND-BOARD-IN-VISE an extra activation of 2.2222223 state gives PICK-UP-BOARD an extra activation of 10.0 goals give SAND-BOARD-IN-HAND an extra activation of 35.0 goals give SAND-BOARD-IN-VISE an extra activation of 35.0 goals give SPRAY-PAINT-SELF an extra activation of 70.0 PLACE-BOARD-IN-VISE spreads 9.699059 backward to PICK-UP-BOARD for BOARD-IN-HAND SPRAY-PAINT-SELF spreads 29.082869 backward to PICK-UP-SPRAYER for SPRAYER-IN-HAND SAND-BOARD-IN-HAND spreads 27.521559 backward to PICK-UP-BOARD for BOARD-IN-HAND SAND-BOARD-IN-HAND decreases (inhibits) PUT-DOWN-SANDER with 19.658257 for SANDER-IN-HAND SAND-BOARD-IN-HAND decreases (inhibits) SPRAY-PAINT-SELF with 19.658257 for OPERATIONAL SAND-BOARD-IN-VISE spreads 13.573261 backward to PLACE-BOARD-IN-VISE for BOARD-IN-VISE SAND-BOARD-IN-VISE decreases (inhibits) PUT-DOWN-SANDER with 19.390373 for SANDER-IN-HAND SAND-BOARD-IN-VISE decreases (inhibits) SPRAY-PAINT-SELF with 19.390373 for OPERATIONAL PICK-UP-SANDER spreads 0.0 backward to PUT-DOWN-SANDER for SANDER-SOMEWHERE PICK-UP-SPRAYER spreads 2.3372447 forward to SPRAY-PAINT-SELF for SPRAYER-IN-HAND PICK-UP-SPRAYER spreads 4.6744895 forward to PUT-DOWN-SPRAYER for SPRAYER-IN-HAND PICK-UP-SPRAYER decreases (inhibits) PICK-UP-SANDER with 5.8431115 for HAND-IS-EMPTY PICK-UP-SPRAYER decreases (inhibits) PICK-UP-BOARD with 5.8431115 for HAND-IS-EMPTY PICK-UP-BOARD spreads 2.3313663 forward to PLACE-BOARD-IN-VISE for BOARD-IN-HAND PICK-UP-BOARD spreads 0.7771221 forward to SAND-BOARD-IN-HAND for BOARD-IN-HAND PICK-UP-BOARD spreads 2.3313663 forward to PUT-DOWN-BOARD for BOARD-IN-HAND PICK-UP-BOARD decreases (inhibits) PICK-UP-SANDER with 4.3713117 for HAND-IS-EMPTY PUT-DOWN-SPRAYER spreads 2.4768724 backward to PICK-UP-SPRAYER for SPRAYER-IN-HAND PUT-DOWN-SANDER spreads 0.23820525 forward to PICK-UP-SANDER for SANDER-SOMEWHERE PUT-DOWN-BOARD spreads 1.1251152 backward to PICK-UP-BOARD for BOARD-IN-HAND activation-levels of modules after decay: activation-level PLACE-BOARD-IN-VISE: 13.320736 activation-level SPRAY-PAINT-SELF: 34.184002 activation-level SAND-BOARD-IN-HAND: 35.24447 activation-level SAND-BOARD-IN-VISE: 34.64504 activation-level PICK-UP-SANDER: 0.12393018 activation-level PICK-UP-SPRAYER: 40.380215 activation-level PICK-UP-BOARD: 36.582684 activation-level PUT-DOWN-SPRAYER: 3.720613 activation-level PUT-DOWN-SANDER: 0.0 activation-level PUT-DOWN-BOARD: 1.798291 NO MODULE becoming active threshold is lowered to 40.5
At time 5, the spreading activation pattern is similar to that of time 4. The state and the goals spread activation to the same modules. Also modules keep spreading activation to the same modules, except that now the amounts they give and take away have changed (because the activation levels of the modules at time 4 are different from those at time 3).
TIME: 5 state gives ... PLACE-BOARD-IN-VISE spreads ... activation-levels of modules after decay: activation-level PLACE-BOARD-IN-VISE: 15.370311 activation-level SPRAY-PAINT-SELF: 27.239319 activation-level SAND-BOARD-IN-HAND: 34.161552 activation-level SAND-BOARD-IN-VISE: 33.368526 activation-level PICK-UP-SANDER: 0.0 activation-level PICK-UP-SPRAYER: 41.26312 activation-level PICK-UP-BOARD: 41.91644 activation-level PUT-DOWN-SPRAYER: 4.2737665 activation-level PUT-DOWN-SANDER: 0.027907925 activation-level PUT-DOWN-BOARD: 2.379075 module becoming active: PICK-UP-BOARD
The module that becomes active is PICK-UP-BOARD. The state of the environment changes by the actions performed by this module, so that the input from the state and the internal spreading activation patterns are different at time 6.
TIME: 6 state of the environment: (BOARD-IN-HAND SANDER-IN-HAND SPRAYER-SOMEWHERE OPERATIONAL) goals of the environment: (BOARD-SANDED SELF-PAINTED) protected goals of the environment: NIL state gives PLACE-BOARD-IN-VISE an extra activation of 6.6666665 state gives SAND-BOARD-IN-HAND an extra activation of 2.2222223 state gives PUT-DOWN-BOARD an extra activation of 6.6666665 state gives SAND-BOARD-IN-HAND an extra activation of 2.2222223 state gives SAND-BOARD-IN-VISE an extra activation of 2.2222223 state gives PUT-DOWN-SANDER an extra activation of 6.6666665 state gives PICK-UP-SPRAYER an extra activation of 10.0 state gives SPRAY-PAINT-SELF an extra activation of 3.3333333 state gives SAND-BOARD-IN-HAND an extra activation of 2.2222223 state gives SAND-BOARD-IN-VISE an extra activation of 2.2222223 goals give SAND-BOARD-IN-HAND an extra activation of 35.0 goals give SAND-BOARD-IN-VISE an extra activation of 35.0 goals give SPRAY-PAINT-SELF an extra activation of 70.0 PLACE-BOARD-IN-VISE spreads 0.7319196 forward to PICK-UP-SANDER for HAND-IS-EMPTY PLACE-BOARD-IN-VISE spreads 0.7319196 forward to PICK-UP-SPRAYER for HAND-IS-EMPTY PLACE-BOARD-IN-VISE spreads 0.7319196 forward to PICK-UP-BOARD for HAND-IS-EMPTY PLACE-BOARD-IN-VISE spreads 1.4638392 forward to SAND-BOARD-IN-VISE for BOARD-IN-VISE PLACE-BOARD-IN-VISE decreases (inhibits) PUT-DOWN-BOARD with 10.978794 for BOARD-IN-HAND SPRAY-PAINT-SELF spreads 27.239319 backward to PICK-UP-SPRAYER for SPRAYER-IN-HAND SAND-BOARD-IN-HAND decreases (inhibits) PLACE-BOARD-IN-VISE with 12.200555 for BOARD-IN-HAND SAND-BOARD-IN-HAND decreases (inhibits) PUT-DOWN-BOARD with 12.200555 for BOARD-IN-HAND SAND-BOARD-IN-HAND decreases (inhibits) PUT-DOWN-SANDER with 24.40111 for SANDER-IN-HAND SAND-BOARD-IN-HAND decreases (inhibits) SPRAY-PAINT-SELF with 24.40111 for OPERATIONAL SAND-BOARD-IN-VISE spreads 16.684263 backward to PLACE-BOARD-IN-VISE for BOARD-IN-VISE SAND-BOARD-IN-VISE decreases (inhibits) PUT-DOWN-SANDER with 23.834661 for SANDER-IN-HAND SAND-BOARD-IN-VISE decreases (inhibits) SPRAY-PAINT-SELF with 23.834661 for OPERATIONAL PICK-UP-SANDER spreads 0.0 backward to PUT-DOWN-SANDER for SANDER-SOMEWHERE PICK-UP-SANDER spreads 0.0 backward to PLACE-BOARD-IN-VISE for HAND-IS-EMPTY PICK-UP-SANDER spreads 0.0 backward to PUT-DOWN-SPRAYER for HAND-IS-EMPTY PICK-UP-SANDER spreads 0.0 backward to PUT-DOWN-SANDER for HAND-IS-EMPTY PICK-UP-SANDER spreads 0.0 backward to PUT-DOWN-BOARD for HAND-IS-EMPTY PICK-UP-SPRAYER spreads 5.15789 backward to PLACE-BOARD-IN-VISE for HAND-IS-EMPTY PICK-UP-SPRAYER spreads 5.15789 backward to PUT-DOWN-SPRAYER for HAND-IS-EMPTY PICK-UP-SPRAYER spreads 5.15789 backward to PUT-DOWN-SANDER for HAND-IS-EMPTY PICK-UP-SPRAYER spreads 5.15789 backward to PUT-DOWN-BOARD for HAND-IS-EMPTY PICK-UP-BOARD spreads 0.0 backward to PUT-DOWN-BOARD for BOARD-SOMEWHERE PICK-UP-BOARD spreads 0.0 backward to PLACE-BOARD-IN-VISE for HAND-IS-EMPTY PICK-UP-BOARD spreads 0.0 backward to PUT-DOWN-SPRAYER for HAND-IS-EMPTY PICK-UP-BOARD spreads 0.0 backward to PUT-DOWN-SANDER for HAND-IS-EMPTY PICK-UP-BOARD spreads 0.0 backward to PUT-DOWN-BOARD for HAND-IS-EMPTY PUT-DOWN-SPRAYER spreads 4.2737665 backward to PICK-UP-SPRAYER for SPRAYER-IN-HAND PUT-DOWN-SANDER spreads 0.0039868467 forward to PICK-UP-SANDER for SANDER-SOMEWHERE PUT-DOWN-SANDER spreads 0.0013289489 forward to PICK-UP-SANDER for HAND-IS-EMPTY PUT-DOWN-SANDER spreads 0.0013289489 forward to PICK-UP-SPRAYER for HAND-IS-EMPTY PUT-DOWN-SANDER spreads 0.0013289489 forward to PICK-UP-BOARD for HAND-IS-EMPTY PUT-DOWN-BOARD spreads 0.3398679 forward to PICK-UP-BOARD for BOARD-SOMEWHERE PUT-DOWN-BOARD spreads 0.1132893 forward to PICK-UP-SANDER for HAND-IS-EMPTY PUT-DOWN-BOARD spreads 0.1132893 forward to PICK-UP-SPRAYER for HAND-IS-EMPTY PUT-DOWN-BOARD spreads 0.1132893 forward to PICK-UP-BOARD for HAND-IS-EMPTY activation-levels of modules after decay: activation-level PLACE-BOARD-IN-VISE: 18.660385 activation-level SPRAY-PAINT-SELF: 30.829237 activation-level SAND-BOARD-IN-HAND: 44.666897 activation-level SAND-BOARD-IN-VISE: 43.753033 activation-level PICK-UP-SANDER: 0.50100476 activation-level PICK-UP-SPRAYER: 49.25829 activation-level PICK-UP-BOARD: 0.6988567 activation-level PUT-DOWN-SPRAYER: 5.5557523 activation-level PUT-DOWN-SANDER: 3.0382743 activation-level PUT-DOWN-BOARD: 3.0382743 NO MODULE becoming active threshold is lowered to 40.5
Again the spreading activation patterns at time 7 are like those at time 6. In particular SAND-BOARD-IN-HAND will now have received enough activation from the state and the goals to become active. Notice that although PICK-UP-SPRAYER has a very high activation level, it does not become active because not all of its preconditions are fulfilled.
TIME: 7 state gives ... PLACE-BOARD-IN-VISE spreads ... activation-levels of modules after decay: activation-level PLACE-BOARD-IN-VISE: 19.967524 activation-level SPRAY-PAINT-SELF: 21.800142 activation-level SAND-BOARD-IN-HAND: 45.89835 activation-level SAND-BOARD-IN-VISE: 45.175903 activation-level PICK-UP-SANDER: 1.1233512 activation-level PICK-UP-SPRAYER: 51.47401 activation-level PICK-UP-BOARD: 1.2285371 activation-level PUT-DOWN-SPRAYER: 6.3068533 activation-level PUT-DOWN-SANDER: 3.486372 activation-level PUT-DOWN-BOARD: 3.5389647 module becoming active: SAND-BOARD-IN-HAND
As a consequence the state and goals change. The only remaining goal to be achieved is `self-painted'. In order to do so, the robot has to free at least one hand. Notice that PICK-UP-SPRAYER spreads backwards to the modules that can achieve this, i.e., PLACE-BOARD-IN-VISE, PUT-DOWN-SANDER and PUT-DOWN-BOARD.
TIME: 8 state of the environment: (BOARD-SANDED BOARD-IN-HAND SANDER-IN-HAND SPRAYER-SOMEWHERE OPERATIONAL) goals of the environment: (SELF-PAINTED) protected goals of the environment: (BOARD-SANDED) state gives PLACE-BOARD-IN-VISE an extra activation of 6.6666665 state gives SAND-BOARD-IN-HAND an extra activation of 2.2222223 state gives PUT-DOWN-BOARD an extra activation of 6.6666665 state gives SAND-BOARD-IN-HAND an extra activation of 2.2222223 state gives SAND-BOARD-IN-VISE an extra activation of 2.2222223 state gives PUT-DOWN-SANDER an extra activation of 6.6666665 state gives PICK-UP-SPRAYER an extra activation of 10.0 state gives SPRAY-PAINT-SELF an extra activation of 3.3333333 state gives SAND-BOARD-IN-HAND an extra activation of 2.2222223 state gives SAND-BOARD-IN-VISE an extra activation of 2.2222223 goals give SPRAY-PAINT-SELF an extra activation of 70.0 PLACE-BOARD-IN-VISE spreads 0.9508345 forward to PICK-UP-SANDER for HAND-IS-EMPTY PLACE-BOARD-IN-VISE spreads 0.9508345 forward to PICK-UP-SPRAYER for HAND-IS-EMPTY PLACE-BOARD-IN-VISE spreads 0.9508345 forward to PICK-UP-BOARD for HAND-IS-EMPTY PLACE-BOARD-IN-VISE spreads 1.901669 forward to SAND-BOARD-IN-VISE for BOARD-IN-VISE PLACE-BOARD-IN-VISE decreases (inhibits) PUT-DOWN-BOARD with 14.262517 for BOARD-IN-HAND SPRAY-PAINT-SELF spreads 21.800142 backward to PICK-UP-SPRAYER for SPRAYER-IN-HAND SAND-BOARD-IN-HAND decreases (inhibits) PLACE-BOARD-IN-VISE with 0.0 for BOARD-IN-HAND SAND-BOARD-IN-HAND decreases (inhibits) PUT-DOWN-BOARD with 0.0 for BOARD-IN-HAND SAND-BOARD-IN-HAND decreases (inhibits) PUT-DOWN-SANDER with 0.0 for SANDER-IN-HAND SAND-BOARD-IN-HAND decreases (inhibits) SPRAY-PAINT-SELF with 0.0 for OPERATIONAL SAND-BOARD-IN-VISE spreads 22.587952 backward to PLACE-BOARD-IN-VISE for BOARD-IN-VISE SAND-BOARD-IN-VISE decreases (inhibits) PUT-DOWN-SANDER with 32.2685 for SANDER-IN-HAND SAND-BOARD-IN-VISE decreases (inhibits) SPRAY-PAINT-SELF with 32.2685 for OPERATIONAL PICK-UP-SANDER spreads 0.5616756 backward to PUT-DOWN-SANDER for SANDER-SOMEWHERE PICK-UP-SANDER spreads 0.1404189 backward to PLACE-BOARD-IN-VISE for HAND-IS-EMPTY PICK-UP-SANDER spreads 0.1404189 backward to PUT-DOWN-SPRAYER for HAND-IS-EMPTY PICK-UP-SANDER spreads 0.1404189 backward to PUT-DOWN-SANDER for HAND-IS-EMPTY PICK-UP-SANDER spreads 0.1404189 backward to PUT-DOWN-BOARD for HAND-IS-EMPTY PICK-UP-SPRAYER spreads 6.4342513 backward to PLACE-BOARD-IN-VISE for HAND-IS-EMPTY PICK-UP-SPRAYER spreads 6.4342513 backward to PUT-DOWN-SPRAYER for HAND-IS-EMPTY PICK-UP-SPRAYER spreads 6.4342513 backward to PUT-DOWN-SANDER for HAND-IS-EMPTY PICK-UP-SPRAYER spreads 6.4342513 backward to PUT-DOWN-BOARD for HAND-IS-EMPTY PICK-UP-BOARD spreads 0.61426854 backward to PUT-DOWN-BOARD for BOARD-SOMEWHERE PICK-UP-BOARD spreads 0.15356714 backward to PLACE-BOARD-IN-VISE for HAND-IS-EMPTY PICK-UP-BOARD spreads 0.15356714 backward to PUT-DOWN-SPRAYER for HAND-IS-EMPTY PICK-UP-BOARD spreads 0.15356714 backward to PUT-DOWN-SANDER for HAND-IS-EMPTY PICK-UP-BOARD spreads 0.15356714 backward to PUT-DOWN-BOARD for HAND-IS-EMPTY PUT-DOWN-SPRAYER spreads 6.3068533 backward to PICK-UP-SPRAYER for SPRAYER-IN-HAND PUT-DOWN-SANDER spreads 0.49805316 forward to PICK-UP-SANDER for SANDER-SOMEWHERE PUT-DOWN-SANDER spreads 0.16601773 forward to PICK-UP-SANDER for HAND-IS-EMPTY PUT-DOWN-SANDER spreads 0.16601773 forward to PICK-UP-SPRAYER for HAND-IS-EMPTY PUT-DOWN-SANDER spreads 0.16601773 forward to PICK-UP-BOARD for HAND-IS-EMPTY PUT-DOWN-BOARD spreads 0.5055664 forward to PICK-UP-BOARD for BOARD-SOMEWHERE PUT-DOWN-BOARD spreads 0.16852213 forward to PICK-UP-SANDER for HAND-IS-EMPTY PUT-DOWN-BOARD spreads 0.16852213 forward to PICK-UP-SPRAYER for HAND-IS-EMPTY PUT-DOWN-BOARD spreads 0.16852213 forward to PICK-UP-BOARD for HAND-IS-EMPTY activation-levels of modules after decay: activation-level PLACE-BOARD-IN-VISE: 37.119087 activation-level SPRAY-PAINT-SELF: 41.70643 activation-level SAND-BOARD-IN-HAND: 4.422858 activation-level SAND-BOARD-IN-VISE: 34.181183 activation-level PICK-UP-SANDER: 1.9284406 activation-level PICK-UP-SPRAYER: 60.28337 activation-level PICK-UP-BOARD: 2.0032084 activation-level PUT-DOWN-SPRAYER: 8.647854 activation-level PUT-DOWN-SANDER: 4.8363376 activation-level PUT-DOWN-BOARD: 4.8712296 NO MODULE becoming active threshold is lowered to 40.5
At time 9 till 17 the activation patterns remain the same. SPRAY-PAINT-SELF accumulates activation coming from the goals and spreads this activation further towards its only predecessor, namely PICK-UP-SPRAYER. PICK-UP-SPRAYER spreads the received activation further backwards towards the modules that can make its precondition `hand-is-empty' true. Because there are many such modules, it takes some time before one of them is selected.
TIME: 17 state gives ... PLACE-BOARD-IN-VISE spreads ... activation-levels of modules after decay: activation-level PLACE-BOARD-IN-VISE: 17.6625 activation-level SPRAY-PAINT-SELF: 61.41764 activation-level SAND-BOARD-IN-HAND: 6.4295135 activation-level SAND-BOARD-IN-VISE: 6.108067 activation-level PICK-UP-SANDER: 2.5221777 activation-level PICK-UP-SPRAYER: 79.323494 activation-level PICK-UP-BOARD: 2.2743216 activation-level PUT-DOWN-SPRAYER: 10.060002 activation-level PUT-DOWN-SANDER: 8.496746 activation-level PUT-DOWN-BOARD: 5.7055316 module becoming active: PLACE-BOARD-IN-VISE
Finally PLACE-BOARD-IN-VISE becomes active, and makes one hand free. As a result PICK-UP-SPRAYER (which had already accumulated enough activation) is executable.
TIME: 18 state of the environment: (HAND-IS-EMPTY BOARD-IN-VISE BOARD-SANDED SANDER-IN-HAND SPRAYER-SOMEWHERE OPERATIONAL) goals of the environment: (SELF-PAINTED) protected goals of the environment: (BOARD-SANDED) state gives PICK-UP-SANDER an extra activation of 3.3333333 state gives PICK-UP-SPRAYER an extra activation of 3.3333333 state gives PICK-UP-BOARD an extra activation of 3.3333333 state gives SAND-BOARD-IN-VISE an extra activation of 6.6666665 state gives SAND-BOARD-IN-HAND an extra activation of 2.2222223 state gives SAND-BOARD-IN-VISE an extra activation of 2.2222223 state gives PUT-DOWN-SANDER an extra activation of 6.6666665 state gives PICK-UP-SPRAYER an extra activation of 10.0 state gives SPRAY-PAINT-SELF an extra activation of 3.3333333 state gives SAND-BOARD-IN-HAND an extra activation of 2.2222223 state gives SAND-BOARD-IN-VISE an extra activation of 2.2222223 goals give SPRAY-PAINT-SELF an extra activation of 70.0 PLACE-BOARD-IN-VISE spreads 0.0 backward to PICK-UP-BOARD for BOARD-IN-HAND SPRAY-PAINT-SELF spreads 61.41764 backward to PICK-UP-SPRAYER for SPRAYER-IN-HAND SAND-BOARD-IN-HAND spreads 6.4295135 backward to PICK-UP-BOARD for BOARD-IN-HAND SAND-BOARD-IN-HAND decreases (inhibits) PUT-DOWN-SANDER with 4.5925097 for SANDER-IN-HAND SAND-BOARD-IN-HAND decreases (inhibits) SPRAY-PAINT-SELF with 4.5925097 for OPERATIONAL SAND-BOARD-IN-VISE decreases (inhibits) PUT-DOWN-SANDER with 4.362905 for SANDER-IN-HAND SAND-BOARD-IN-VISE decreases (inhibits) SPRAY-PAINT-SELF with 4.362905 for OPERATIONAL PICK-UP-SANDER spreads 1.2610888 backward to PUT-DOWN-SANDER for SANDER-SOMEWHERE PICK-UP-SANDER decreases (inhibits) PICK-UP-BOARD with 0.45038888 for HAND-IS-EMPTY PICK-UP-SPRAYER spreads 5.665964 forward to SPRAY-PAINT-SELF for SPRAYER-IN-HAND PICK-UP-SPRAYER spreads 11.331928 forward to PUT-DOWN-SPRAYER for SPRAYER-IN-HAND PICK-UP-SPRAYER decreases (inhibits) PICK-UP-SANDER with 14.16491 for HAND-IS-EMPTY PICK-UP-SPRAYER decreases (inhibits) PICK-UP-BOARD with 14.16491 for HAND-IS-EMPTY PICK-UP-BOARD spreads 1.1371608 backward to PUT-DOWN-BOARD for BOARD-SOMEWHERE PUT-DOWN-SPRAYER spreads 10.060002 backward to PICK-UP-SPRAYER for SPRAYER-IN-HAND PUT-DOWN-SANDER spreads 1.2138209 forward to PICK-UP-SANDER for SANDER-SOMEWHERE PUT-DOWN-BOARD spreads 5.7055316 backward to PICK-UP-BOARD for BOARD-IN-HAND activation-levels of modules after decay: activation-level PLACE-BOARD-IN-VISE: 0.0 activation-level SPRAY-PAINT-SELF: 71.77567 activation-level SAND-BOARD-IN-HAND: 5.936989 activation-level SAND-BOARD-IN-VISE: 9.401367 activation-level PICK-UP-SANDER: 0.6627248 activation-level PICK-UP-SPRAYER: 89.61452 activation-level PICK-UP-BOARD: 3.1151197 activation-level PUT-DOWN-SPRAYER: 11.679616 activation-level PUT-DOWN-SANDER: 4.077989 activation-level PUT-DOWN-BOARD: 3.7359893 module becoming active: PICK-UP-SPRAYER
And finally, the module SPRAY-PAINT-SELF (which also already had accumulated enough activation) becomes executable and is selected.
TIME: 19 state of the environment: (SPRAYER-IN-HAND BOARD-IN-VISE BOARD-SANDED SANDER-IN-HAND OPERATIONAL) goals of the environment: (SELF-PAINTED) protected goals of the environment: (BOARD-SANDED) state gives SPRAY-PAINT-SELF an extra activation of 5.0 state gives PUT-DOWN-SPRAYER an extra activation of 10.0 state gives SAND-BOARD-IN-VISE an extra activation of 6.6666665 state gives SAND-BOARD-IN-HAND an extra activation of 2.2222223 state gives SAND-BOARD-IN-VISE an extra activation of 2.2222223 state gives PUT-DOWN-SANDER an extra activation of 6.6666665 state gives SPRAY-PAINT-SELF an extra activation of 3.3333333 state gives SAND-BOARD-IN-HAND an extra activation of 2.2222223 state gives SAND-BOARD-IN-VISE an extra activation of 2.2222223 goals give SPRAY-PAINT-SELF an extra activation of 70.0 PLACE-BOARD-IN-VISE spreads 0.0 backward to PICK-UP-BOARD for BOARD-IN-HAND SPRAY-PAINT-SELF decreases (inhibits) PUT-DOWN-SPRAYER with 51.268337 for SPRAYER-IN-HAND SAND-BOARD-IN-HAND spreads 5.936989 backward to PICK-UP-BOARD for BOARD-IN-HAND SAND-BOARD-IN-HAND decreases (inhibits) PUT-DOWN-SANDER with 4.2407064 for SANDER-IN-HAND SAND-BOARD-IN-HAND decreases (inhibits) SPRAY-PAINT-SELF with 4.2407064 for OPERATIONAL SAND-BOARD-IN-VISE decreases (inhibits) PUT-DOWN-SANDER with 6.7152624 for SANDER-IN-HAND SAND-BOARD-IN-VISE decreases (inhibits) SPRAY-PAINT-SELF with 6.7152624 for OPERATIONAL PICK-UP-SANDER spreads 0.3313624 backward to PUT-DOWN-SANDER for SANDER-SOMEWHERE PICK-UP-SANDER spreads 0.0828406 backward to PLACE-BOARD-IN-VISE for HAND-IS-EMPTY PICK-UP-SANDER spreads 0.0828406 backward to PUT-DOWN-SPRAYER for HAND-IS-EMPTY PICK-UP-SANDER spreads 0.0828406 backward to PUT-DOWN-SANDER for HAND-IS-EMPTY PICK-UP-SANDER spreads 0.0828406 backward to PUT-DOWN-BOARD for HAND-IS-EMPTY PICK-UP-SPRAYER spreads 0.0 backward to PUT-DOWN-SPRAYER for SPRAYER-SOMEWHERE PICK-UP-SPRAYER spreads 0.0 backward to PLACE-BOARD-IN-VISE for HAND-IS-EMPTY PICK-UP-SPRAYER spreads 0.0 backward to PUT-DOWN-SPRAYER for HAND-IS-EMPTY PICK-UP-SPRAYER spreads 0.0 backward to PUT-DOWN-SANDER for HAND-IS-EMPTY PICK-UP-SPRAYER spreads 0.0 backward to PUT-DOWN-BOARD for HAND-IS-EMPTY PICK-UP-BOARD spreads 1.5575598 backward to PUT-DOWN-BOARD for BOARD-SOMEWHERE PICK-UP-BOARD spreads 0.38938996 backward to PLACE-BOARD-IN-VISE for HAND-IS-EMPTY PICK-UP-BOARD spreads 0.38938996 backward to PUT-DOWN-SPRAYER for HAND-IS-EMPTY PICK-UP-BOARD spreads 0.38938996 backward to PUT-DOWN-SANDER for HAND-IS-EMPTY PICK-UP-BOARD spreads 0.38938996 backward to PUT-DOWN-BOARD for HAND-IS-EMPTY PUT-DOWN-SPRAYER spreads 1.6685166 forward to PICK-UP-SPRAYER for SPRAYER-SOMEWHERE PUT-DOWN-SPRAYER spreads 0.5561722 forward to PICK-UP-SANDER for HAND-IS-EMPTY PUT-DOWN-SPRAYER spreads 0.5561722 forward to PICK-UP-SPRAYER for HAND-IS-EMPTY PUT-DOWN-SPRAYER spreads 0.5561722 forward to PICK-UP-BOARD for HAND-IS-EMPTY PUT-DOWN-SANDER spreads 0.5825699 forward to PICK-UP-SANDER for SANDER-SOMEWHERE PUT-DOWN-SANDER spreads 0.19418997 forward to PICK-UP-SANDER for HAND-IS-EMPTY PUT-DOWN-SANDER spreads 0.19418997 forward to PICK-UP-SPRAYER for HAND-IS-EMPTY PUT-DOWN-SANDER spreads 0.19418997 forward to PICK-UP-BOARD for HAND-IS-EMPTY PUT-DOWN-BOARD spreads 3.7359893 backward to PICK-UP-BOARD for BOARD-IN-HAND activation-levels of modules after decay: activation-level PLACE-BOARD-IN-VISE: 0.47223055 activation-level SPRAY-PAINT-SELF: 139.15305 activation-level SAND-BOARD-IN-HAND: 10.3814335 activation-level SAND-BOARD-IN-VISE: 20.512478 activation-level PICK-UP-SANDER: 1.995657 activation-level PICK-UP-SPRAYER: 2.4188788 activation-level PICK-UP-BOARD: 13.538461 activation-level PUT-DOWN-SPRAYER: 0.47223055 activation-level PUT-DOWN-SANDER: 0.8035929 activation-level PUT-DOWN-BOARD: 5.76578 module becoming active: SPRAY-PAINT-SELF