| … | … | @@ -24,12 +24,17 @@ |
| 24 | 24 | |
| 25 | 25 | ; Counts are located in the third slot of the TV predicate. |
| 26 | 26 | (define cvp (PredicateNode "*-CountingKey-*")) |
| 27 | (define one (NumberNode 1)) |
| 27 | 28 | |
| 28 | 29 | (define (incr-counts THING-A THING-B) |
| 29 | | (cog-inc-value! (List THING-A THING-B) cvp 1.0 2) |
| 30 | | (cog-inc-value! (List (AnyNode "left wildcard") THING-B) cvp 1.0 2) |
| 31 | | (cog-inc-value! (List THING-A (AnyNode "right wildcard")) cvp 1.0 2) |
| 32 | | (cog-inc-value! (AnyNode "grand total") cvp 1.0 2)) |
| 30 | (Trigger (IncrementValue |
| 31 | (List THING-A THING-B) cvp one)) |
| 32 | (Trigger (IncrementValue |
| 33 | (List (AnyNode "left wildcard") THING-B) cvp one)) |
| 34 | (Trigger (IncrementValue |
| 35 | (List THING-A (AnyNode "right wildcard")) cvp one)) |
| 36 | (Trigger (IncrementValue |
| 37 | (List (Any "left wildcard") (Any "right wildcard")) cvp one))) |
| 33 | 38 | |
| 34 | 39 | ; Same as above, but works with strings. It counts how often a pair |
| 35 | 40 | ; was "observed". |
| … | … | @@ -56,7 +61,7 @@ |
| 56 | 61 | (Divide |
| 57 | 62 | (Times |
| 58 | 63 | (FloatValueOf (List (Variable "$L") (Variable "$R")) cvp) |
| 59 | | (FloatValueOf (AnyNode "grand total") cvp)) |
| 64 | (FloatValueOf (List (Any "left wildcard") (Any "right wildcard")) cvp)) |
| 60 | 65 | (Times |
| 61 | 66 | (FloatValueOf (List (Variable "$L") (Any "right wildcard")) cvp) |
| 62 | 67 | (FloatValueOf (List (Any "left wildcard") (Variable "$R")) cvp)))))) |
| … | … | @@ -68,7 +73,7 @@ |
| 68 | 73 | ; returns the correct value at that given time. |
| 69 | 74 | (define (install-formula THING-A THING-B) |
| 70 | 75 | (define pair (List THING-A THING-B)) |
| 71 | | (cog-execute! |
| 76 | (Trigger |
| 72 | 77 | (SetValue pair (Predicate "MI Key") |
| 73 | 78 | (CollectionOf (Type 'FormulaStream) (OrderedLink |
| 74 | 79 | (ExecutionOutput (DefinedProcedure "dynamic MI") pair)))))) |