When more than one rule is enabled on an execution cycle, the rules are combined (the term used in Altaira is ``amalgamated'').
Conceptually, all of the rules enabled for firing are assigned a priority based on specific inputs vs. 'dontcare' , in the following order:
The enabled rules are traversed in order from lowest-priority to highest. As each rule is encountered in the traversal, its outputs replace the previous values in the amalgamated rule.
Figure 6 shows the rules that would be fired in the compulsory problem ruleset, in the situation shown in Figure 4. The top row shows the default rule, which is simply the outputs from the amalgamated rule produced in the previous execution cycle. If no other rules were enabled by the situation shown, the outputs from this rule would be applied.
Three reflexive rules are enabled, changing the motor outputs. The rightmost rule has the highest priority, as it specifies more sensor inputs than the other two. As it happens, the rightmost rule in the row overrides all of the outputs from the other two.
Two tactical rules are enabled, changing the navigation, tile state, and robot state outputs. Once again the rule on the right takes priority, as it specifies the most sensor inputs. Also, once again, it overrides all of the outputs from the lower priority rule.
No strategic rules are enabled, although the change in the robot state will activate strategic rules as appropriate in future execution cycles.
The bottom row shows the resulting amalgamated rule. The outputs from this rule are applied, and will be used as the default rule for the next execution cycle.
This rule amalgamation implements a subsumption architecture. In the vast majority of execution cycles, only reflexive rules are applied (most of the time, all the robot is doing is following a line). Occasionally, a rule is applied that depends on the current tile state; these tactical rules' outputs replace the outputs that would be provided by a reflexive rule in this situation. Finally, in comparatively very rare circumstances, a strategic rule overrides the result of tactical or reflexive rules. The discussion of the VPC compulsory and final problems should make the use of the reflexive, tactical, and strategic rules clearer.
While Altaira's use of prioritized rules meets the definition of a
subsumption architecture presented in
[5],
the implementation
is different. Where that paper uses a separate finite state
machine at each level of the hierarchy, and permits higher-priority
machines to inhibit lower-priority machines with explicit inhibitory
"wires". Altaira's synchronization of state changes at all priority
levels and use of overriding outputs in place of inhibatory links which
provides a simpler model, but with less flexibility.