Beispiel #1
0
        private List <Tuple <Ground <Predicate>, bool> > GenerateLiteralList(CUDDNode node, GroundAction gndAction)
        {
            List <Tuple <Ground <Predicate>, bool> > result = new List <Tuple <Ground <Predicate>, bool> >();

            foreach (var cEffect in gndAction.Effect)
            {
                CUDDNode impliesNode = CUDD.Function.Implies(node, cEffect.Item1);
                if (impliesNode.GetValue() > 0.5)
                {
                    result.AddRange(cEffect.Item2);
                }
            }
            return(result);
        }
Beispiel #2
0
        public void Update(GroundAction gndAction)
        {
            CUDDNode kbNode           = GetKnowledgeBase();
            CUDDNode preconditionNode = CUDD.Function.Implies(kbNode, gndAction.Precondition);

            CUDD.Print.PrintMinterm(kbNode);

            if (preconditionNode.GetValue() > 0.5)
            {
                var gndLiteralList = GenerateLiteralList(kbNode, gndAction);
                UpdateByLiteralList(gndLiteralList);
                CUDD.Deref(kbNode);
            }
            else
            {
                Console.WriteLine("    Action {0} is not executable now!", gndAction);
            }
        }