Skip to content

Cycle: Decision Making

Patrick Hammer edited this page Apr 8, 2019 · 9 revisions

Operations

Operations are a (SDR, Action) tuple, Action is a procedure without arguments, expected to finish in constant time. They are registered using ANSNA_RegisterOperation(SDR sdr, Action procedure) method.

Decision Making Rule

  1. When a goal event gets taken out from the attention buffer, the event gets matched to the closest concept, and, sometimes, if possible, meaning no evidental overlap, and the same operation if it was motor-tagged ((&/,a,op1) can't revise with (&/,a,op2)), triggers a revision in the goal_event FIFO of concept a.
  2. The goal event, or instead the revised one in case that revision happened, if motor-tagged, determines the right operation (Op_i, Procedure_i) stored in the system, and then the event gets projected to the current moment, leading to TruthProjected. Now we go through the belief_event FIFO of a, take the item b that was not motor-tagged with the highest confidence in regard to the current time and closest SDR (using projection and SDR_Inheritance), and calculate TruthResult=Deduction(TruthProjected, Truth(b)). If this truth value is above DECISION_THRESHOLD, the corresponding action Procedure_i gets called.

Note that OpenNARS does something very similar, this is essentially an adoption of the same principle to the SDR world. It will take some time to make the implementation compete with OpenNARS results as demonstrated in the following video: https://www.youtube.com/watch?v=hAO1zRj2z9A),

Procedure Learning

  1. To make the system aware of the execution, for each of the CONCEPT_SELECTIONS highest priority-concepts, the first belief_event FIFO element gets "copied", This copy receives a new SDR, being OR(OldSDR, Op_SDR_i), and is then added to the FIFO with FIFO_Add, not leading to revision, not replacing the original, not causing a new event going into attention buffer, but making the system effectively re-interpret the event as being a pre-condition under which the operation was executed, so that when a next event c interacts with the concept for temporal inference, <(&/,oldSDR,Op_SDR_i) =/> c>. will naturally be formed with temporal induction.
  2. To trigger executions at the beginning, the system invokes random motor operations from time to time, a process called motor babbling. Without any initial operations, the system couldn't learn how it can affect the environment.