// 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);
        }
Example #2
0
 public bool after(Stamp s, uint duration)
 {
     if (isEternal || s.isEternal)
     {
         return(false);
     }
     return(TemporalRules.order(s.occurrenceTime, occurrenceTime, duration) == TemporalRules.EnumOrder.FORWARD);
 }