// see https://github.com/opennars/opennars/blob/master/nars_core/nars/entity/Concept.java#L779 /** * Select a belief value or desire value for a given query * * @param query The query to be processed * @param list The list of beliefs or desires to be used * @return The best candidate selected */ ClassicalTask selectCandidate(ClassicalTask query, IList <ClassicalTask> list, EnumForRevision forRevision) { var rateByConfidence = TemporalRules.EnumRateByConfidence.YES; //table vote, yes/no question / local processing // TODO< paralelize somehow > float currentBest = 0; float beliefQuality; ClassicalTask candidate = null; //synchronized(list) { for (int i = 0; i < list.Count; i++) { ClassicalTask judgT = list[i]; ClassicalSentence judg = judgT.sentence; beliefQuality = TemporalRules.solutionQuality(rateByConfidence, query, judg, memory, compoundAndTermContext); // makes revision explicitly search for if (beliefQuality > currentBest /*&& (!forRevision || judgT.sentence.equalsContent(query)) */ /*&& (!forRevision || !Stamp.baseOverlap(query.stamp.evidentialBase, judg.stamp.evidentialBase)) */) { currentBest = beliefQuality; candidate = judgT; } } //} return(candidate); }
public bool after(Stamp s, uint duration) { if (isEternal || s.isEternal) { return(false); } return(TemporalRules.order(s.occurrenceTime, occurrenceTime, duration) == TemporalRules.EnumOrder.FORWARD); }