Intelligent Systems And Their Societies Walter Fritz

Awake Mode


Lets follow through the activity of the program while it runs in this mode. In an endless loop, the program notes the interior situation, looks for an applicable interior rule and activates the program function related to that rule. Also it combines two successive "present situation" into a rule of type experience. Thus, when the person presents two successive situation to the program it learns a rule, composed of these situations.
The loop is only terminated when the person activates the asleep mode using the menu. The following are the rules that are activated in sequence:

Read Text
At the start, the internal situation is "awake". The program gets the applicable internal rule which is "Read Text", it reads the keyboard input, creates one concept for each word, and puts those concepts into the concept "TEXT". Then it changes the internal situation.

Now the program looks for an internal rule that is applicable to the new internal situation and finds "Vision". The C program function connected to this rule converts what is seen by the camera into vision concepts. These vision concepts are stored in the concept "VISION". At present we are working only with a few geometrical figures on a piece of paper. The content of a vision concept now is a shape, color, size, x position and y position.

Make Present Situation
Similarly the rule "Make Present Situation" is called and stores all sense concepts in sequence into the concept "EXTERN_SIT".

Learn Rule
Now, due to the present internal situation, the program activates the rule "Learn Rule" that creates a new external rule with the previous "present situation" as Sit1 and the present situation as FutSit. This rule is of type "experience". Experience rules are external rules, and are needed to respond to sense inputs.

Make Exterior Rule List
Next this rule is activated by the internal situation. It extracts a list of rules from memory that are applicable to the present external situation. "Applicable" means that they have some concept of the present situation in their Sit1. These rules are stored, ordered by usefulness (value), in the concept "RUL_CAND_LIST" and their value is stored in the concept "RUL_VAL_LIST" Their value is determined by this formula:
value = rule value + hit - miss
"rule value" is the value of the rule itself.
"hit" is the value of the concept of the Sit1 of the rule that was found in the present situation.
"miss" is double the value of the concept of Sit1 of the rule that was not found in the present situation.

Select Rule
This rule selects one of the rules from RUL_CAND_LIST; at present the rule with the highest value in the RUL_VAL_LIST, and stores it in the concept "SEL_RULE". In a previous version of the program, it selected most often the highest value and less often rules with lower values. This was useful while learning to play board games on the computer screen, such as tick-tack-toe. It learned the game in a shorter time.

Do Exterior Rule
This rule performs the action part of the selected rule. It checks in a given sequence how well the selected rule fits the present situation, makes modifications to the rule and performs an action.

Below, we talk about "CoRules" and "PatRules". A PatRule is a rule where some concepts in the Sit1and FutSit are replaced by a "joker", a place holder, that indicates what has to be done in this spot. This place holder we call a CoRule, because it is a rule, that specifies an action and that has to be done when using the PatRule.This is one use of a CoRule. Another is as follows: The sleep mode attached a CoRule to a concept. If this concept occurs in a Sit1 of a selected rule, the CoRule makes changes that have to be done to the FutSit, and creates a new rule with these changes. In the sleep mode we give more details about PatRules and CoRules.

Let's get back to the "Do Exterior Rule".
The sequence of activation in the program function attached to "Do Exterior Rule" is:

If the SEL_RULE is a PatRule:
It looks up the spot in the Sit1 of the SEL_RULE, where the CoRule is located. It then takes the concept that is in this spot in the present situation. It places this concept in the spot in the FutSit of the SEL_RULE, where another CoRule is located.
For instance: The present situation is "I am Fred". Here "Fred" is an unknown name. The PatRule has as Sit1 "I am CoRule" and as FutSit is "Hi CoRule". Here the FutSit is modified into: "Hi Fred" by substituting "Fred" for "CoRule".

Else if all concepts of the present situation are identical to the concepts of Sit1 of the SEL_RULE, it leaves the SEL_RULE unchanged.

Else if the Sit1 of the SEL_RULE has a concept with a CoRule attached, it modifies the FutSit of the SEL_RULE according to indications of the CoRule.
For instance: The program sees a triangle and knows it should answer with the word "triangle". But it also sees that the object is red. It has another rule with input of a red object and output of the word "red". It now combines the two rules and generates as output "red triangle".

Else if all or some concepts of Sit1 exist in the present situation, it leaves the SEL_RULE unchanged.

Else the program signals that no applicable rule was found.

Finally the rule does the concrete action, based on the FutSit of the SEL_RULE.

Here the program returns to the beginning of the loop.


For continuous reading, like a book - continuehere
Jump to the e-book Contents /General Learner Three /top of the page.

Last Edited 8 Mayo 2013 / Walter Fritz
Copyright © New Horizons Press