Example #1
0
        public int Buf(List <Literal> percepts)
        {
            if (percepts == null)
            {
                return(0);
            }

            int adds = 0;
            int dels = 0;

            HashSet <StructureWrapperForLiteral> perW = new HashSet <StructureWrapperForLiteral>();
            IEnumerator <Literal> iper = percepts.GetEnumerator();

            while (iper.MoveNext())
            {
                perW.Add(new StructureWrapperForLiteral(iper.Current));
            }

            IEnumerator <Literal> perceptsInBB = GetBB().GetPercepts();

            while (perceptsInBB.MoveNext())
            {
                Literal l = perceptsInBB.Current;
                if (l.SubjectToBUF() && !perW.Remove(new StructureWrapperForLiteral(l)))
                {
                    dels++;
                    perceptsInBB.Dispose();

                    Trigger te = new Trigger(TEOperator.del, TEType.belief, l);
                    if (reasoner.GetCircumstance().HasListener() || pl.HasCandidatePlan(te))
                    {
                        l = AsSyntax.AsSyntax.CreateLiteral(l.GetFunctor(), l.GetTermsArray());
                        l.AddAnnot(BeliefBase.TPercept);
                        te.SetLiteral(l);
                        reasoner.GetCircumstance().AddEvent(new Event(te, Intention.emptyInt));
                    }
                }
            }

            foreach (StructureWrapperForLiteral lw in perW)
            {
                try
                {
                    Literal lp = lw.GetLiteral().Copy().ForceFullLiteralImpl();
                    lp.AddAnnot(BeliefBase.TPercept);
                    if (GetBB().Add(lp))
                    {
                        adds++;
                        reasoner.UpdateEvents(new Event(new Trigger(TEOperator.add, TEType.belief, lp), Intention.emptyInt));
                    }
                }
                catch (Exception e)
                {
                    //logger.log(Level.SEVERE, "Error adding percetion " + lw.getLiteral(), e);
                }
            }

            return(adds + dels);
        }
Example #2
0
        public virtual KeyValuePair <Event, int> FindEventForFailure(Trigger tevent, PlanLibrary pl, Circumstance c)
        {
            Trigger failTrigger           = new Trigger(TEOperator.del, tevent.GetTEType(), tevent.GetLiteral());
            IEnumerator <IntendedPlan> ii = GetEnumerator();
            int posInStak = Size();

            // synchronized (pl.GetLock())
            while (!pl.HasCandidatePlan(failTrigger) && ii.MoveNext())
            {
                IntendedPlan ip = ii.Current;
                tevent      = ip.GetTrigger();
                failTrigger = new Trigger(TEOperator.del, tevent.GetTEType(), tevent.GetLiteral());
                posInStak--;
            }
            if (tevent.IsDesire() && tevent.IsAddition() && pl.HasCandidatePlan(failTrigger))
            {
                return(new KeyValuePair <Event, int>(new Event(failTrigger.Clone(), this), posInStak));
            }
            else
            {
                return(new KeyValuePair <Event, int>(null, 0));
            }
        }