本文整理汇总了C#中Domain.ComputeAlwaysKnown方法的典型用法代码示例。如果您正苦于以下问题:C# Domain.ComputeAlwaysKnown方法的具体用法?C# Domain.ComputeAlwaysKnown怎么用?C# Domain.ComputeAlwaysKnown使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Domain
的用法示例。
在下文中一共展示了Domain.ComputeAlwaysKnown方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ParseProblem
private Problem ParseProblem(CompoundExpression exp, Domain d)
{
Problem p = null;
CompoundExpression eSub = null;
foreach (Expression e in exp.SubExpressions)
{
eSub = (CompoundExpression)e;
if (eSub.Type == "problem")
{
p = new Problem(eSub.SubExpressions.First().ToString(), d);
}
if (eSub.Type == ":domain")
{
if (eSub.SubExpressions.First().ToString() != d.Name)
throw new InvalidDataException("Domain and problem files don't match!");
}
if (eSub.Type == ":objects")
{
ReadConstants(eSub, d);
}
if (eSub.Type == ":init")
{
CompoundExpression eAnd = (CompoundExpression)eSub.SubExpressions.First();
if (eAnd.Type == "and")
ReadInitState(p, d, eAnd);
else
ReadInitState(p, d, eSub);
//throw new InvalidDataException("Expecting 'and', got " + eAnd.Type);
}
if (eSub.Type == ":goal")
ReadGoal(p, d, eSub.SubExpressions[0]);
if (eSub.Type == ":metric")
ReadMetric(p, d, eSub);
}
//p.AddReasoningActions(); not needed as long as we use FF to do the planning for us
d.ComputeAlwaysKnown();
p.CompleteKnownState();
List<Predicate> lConstantPredicates = new List<Predicate>();
foreach (Predicate pKnown in p.Known)
{
if (d.AlwaysConstant(pKnown))
lConstantPredicates.Add(pKnown);
}
//d.RemoveUniversalQuantifiers(lConstantPredicates);
//p.RemoveUniversalQuantifiers();
return p;
}