This is a proposed design which is subject to change. Please review this description and add comments/questions below. This empty module has been created in the GitHub branch labeled “FreeWill” which includes a sample dialog layout (pictured).
Decisions are the process of choosing the best action for the current situation based on goals.
Decision points are triples (relationships). There is a current situation, a future situation, and an action which connects the two. Sallie is in a current situation, if she takes the specified action, she “expects” to find herself in the future situation. Situations can be evaluated for “quality” which is measured against a set of goals. By comparing the relative qualities of the current and future situation, Sallie can determine whether a specific action is a good idea.
Situations are Things which are descendants of the Thing “Situation.” Actions are Things which are descendants of the Thing “Action”. Both situations and actions can have any number of other attributes and descendants and so can be as complex as desired. A current situation might include references to previous situations—so if Sallie is at situation “2” and the previous situations was “1”, then a reasonable action might lead to “3” while if the previous situation was “3”, the reasonable action might lead to “1”. ““2” precededBy “1” would be a different situation from “2” precededBy “3”.
A relationship from one situation to another with an “Action” relationshipType is a decision point and so can be differentiated from any other attributes of the situation. That is: by filtering relationships of a situation with relationshipType.HasAncestorLabeled(“Acition”) and target.HasAncestorLabeled(“Situation”). For any given situation, there may be any number of action/future-situation Relationships.
Sallie may be given a specific goal which is a situation. Given the current situation and the goal situation, she can search to the network for a chain actions and intermediate situations which will lead from the current situation to the goal. This chain of intermediate steps might be any desired length. When such a mechanism, Sallie can “plan” a series of actions to achieve a goal.
Situations are stored so Sallie can determine a current situation similar (based on a threshold) to the currently-sensed inputs. If there is no match, she can store a new situation. Without any actions, Sallie might try the best action based on similar situations (with a lower threshold). There should be a limit to the number of situations which can be stored so situations can be consolidated and discarded using a TBD algorithm. The thresholds of dissimilarity needed to store new situations will vary over time.
See the BrainSimII “Maze” network for clearer explanation/example of how this mechanism can be used to traverse mazes. That example is deterministic while the mechanism in this explanation would seem much more lifelike.
Before proceeding to code, we should manually enter a few relationships into a structure and verify that the structure actually represents the information needed for planning and decision making.
Future Features: External to the first iteration of the decision system
- The ability to recognize and store situations (Things) which might be as complex as desired.
- The ability to evaluate the “quality” of a situation based on a set of goals.
- The ability to execute actions (Things) which might be as complex as desired.
- The ability to store new actions—if Sallie did 3 things on the way from Sit1 to Sit2, then on arrival at Sit2, the system could create the complex action.
See sample dialog layout in FreeWill branch.
Goal Directed: Enter a desired “Future” situation in the Future box and press “Choose Best action:” The system will display the action Sallie would take when going toward this goal and update the Current situation box to the expected situation after taking that action. If there are multiple steps needed to reach the goal, you will press “Choose Best Action” multiple times until the goal is achieved, taking a single action at each step.
Spontaneous: Leave the “Future” box blank and press “Choose Best Action.” System will display the action Sallie would take and update the current situation.
Enter a decision Point: Fill in Current Situation, Action and Future Situation Thing names and press Add Decision Point. Quality value will be become and attribute of the Future Situation. This is just the capability of the existing AddStatement dialog except that the default locations of new Things are different.
- Things labeled: “1”, “2”, “3”
- “hungry”, “sleepy”, “happy”, “sad”
- At location (perhaps without a name) but with sufficient attributes to be recognized
- Make suggestions to extend this list
- Eat, sleep, smile, cry
- Turn right, turn left, move forward
- Say: (followed by words or phrases)