From 9cccbe22131c6f2bc04c169ea9b8409bacf517f9 Mon Sep 17 00:00:00 2001 From: Patrick Hammer <patham9@gmail.com> Date: Fri, 6 Apr 2018 16:55:25 -0400 Subject: [PATCH] Inference enhancement: Improved and simplified timing code. --- .../nars/inference/CompositionalRules.java | 8 +++--- .../nars/inference/SyllogisticRules.java | 26 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/nars_core/nars/inference/CompositionalRules.java b/nars_core/nars/inference/CompositionalRules.java index 75e39f10e8..a6b0c20083 100644 --- a/nars_core/nars/inference/CompositionalRules.java +++ b/nars_core/nars/inference/CompositionalRules.java @@ -194,10 +194,10 @@ public final class CompositionalRules { } long delta = 0; - if ((term2 instanceof Conjunction) && (((CompoundTerm) term2).term[0] instanceof Interval)) { - Interval interval = (Interval) ((CompoundTerm) term2).term[0]; - delta = interval.getTime(nal.memory); - term2 = ((CompoundTerm)term2).setComponent(0, null, nal.mem()); + while ((term2 instanceof Conjunction) && (((CompoundTerm) term2).term[0] instanceof Interval)) { + Interval interval = (Interval) ((CompoundTerm) term2).term[0]; + delta += interval.getTime(nal.memory); + term2 = ((CompoundTerm)term2).setComponent(0, null, nal.mem()); } Task task = nal.getCurrentTask(); diff --git a/nars_core/nars/inference/SyllogisticRules.java b/nars_core/nars/inference/SyllogisticRules.java index 240e08e0ef..cb2d725f2f 100644 --- a/nars_core/nars/inference/SyllogisticRules.java +++ b/nars_core/nars/inference/SyllogisticRules.java @@ -551,20 +551,20 @@ public final class SyllogisticRules { if (newCondition != null) { if (newCondition instanceof Interval) { - content = premise1.getPredicate(); - delta = ((Interval) newCondition).getTime(duration); - if(taskSentence.getOccurenceTime() != Stamp.ETERNAL) { - mintime = taskSentence.getOccurenceTime() + Interval.magnitudeToTime(((Interval) newCondition).magnitude - 1, duration); - maxtime = taskSentence.getOccurenceTime() + Interval.magnitudeToTime(((Interval) newCondition).magnitude + 2, duration); - predictedEvent = true; - } - } else if ((newCondition instanceof Conjunction) && (((CompoundTerm) newCondition).term[0] instanceof Interval)) { - Interval interval = (Interval) ((CompoundTerm) newCondition).term[0]; - delta = interval.getTime(duration); - newCondition = ((CompoundTerm)newCondition).setComponent(0, null, nal.mem()); - content = Statement.make(premise1, newCondition, premise1.getPredicate(), premise1.getTemporalOrder()); + content = premise1.getPredicate(); + delta = ((Interval) newCondition).getTime(duration); + if(taskSentence.getOccurenceTime() != Stamp.ETERNAL) { + mintime = taskSentence.getOccurenceTime() + Interval.magnitudeToTime(((Interval) newCondition).magnitude - 1, duration); + maxtime = taskSentence.getOccurenceTime() + Interval.magnitudeToTime(((Interval) newCondition).magnitude + 2, duration); + predictedEvent = true; + } } else { - content = Statement.make(premise1, newCondition, premise1.getPredicate(), premise1.getTemporalOrder()); + while ((newCondition instanceof Conjunction) && (((CompoundTerm) newCondition).term[0] instanceof Interval)) { + Interval interval = (Interval) ((CompoundTerm) newCondition).term[0]; + delta += interval.getTime(duration); + newCondition = ((CompoundTerm)newCondition).setComponent(0, null, nal.mem()); + } + content = Statement.make(premise1, newCondition, premise1.getPredicate(), premise1.getTemporalOrder()); } } else { -- GitLab