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); }
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); } }