/// <summary> /// Evaluates the label of the operator with the specified preconditions and substitution. /// </summary> /// <param name="conditions">Operator conditions.</param> /// <param name="substitution">Variable substitution.</param> /// <param name="stateLabels">Atom labels in the predecessor layer.</param> /// <param name="evaluationStrategy">Evaluation strategy.</param> /// <returns>Operator label value in the relaxed planning graph.</returns> public double Evaluate(Conditions conditions, ISubstitution substitution, StateLabels stateLabels, ForwardCostEvaluationStrategy evaluationStrategy) { Substitution = substitution; StateLabels = stateLabels; EvaluationStrategy = evaluationStrategy; return(conditions.GetWrappedConditions().Accept(this).Item1); }
/// <summary> /// Builds CNF conditions form from the given conditions. /// </summary> /// <param name="conditions">Source conditions.</param> /// <returns>Expression in CNF.</returns> public ConditionsCNF Build(Conditions conditions) { IExpression expression = conditions.GetWrappedConditions(); if (expression == null) { return(null); } IExpression transformedExpression = ExpressionToCNFTransformer.Transform(expression); Debug.Assert(Stack.Count == 0); Stack.Clear(); transformedExpression.Accept(this); ConditionsCNF conditionsCNF = new ConditionsCNF(EvaluationManager, conditions.Parameters); while (Stack.Count != 0) { conditionsCNF.Add(Stack.Pop()); } return(conditionsCNF); }
/// <summary> /// Gets the number of not accomplished condition constraints for the specified state. /// </summary> /// <param name="conditions">Conditions to be evaluated.</param> /// <param name="referenceState">Reference state.</param> /// <returns>Number of not accomplished condition constraints.</returns> public int Evaluate(Conditions conditions, IState referenceState) { ReferenceState = referenceState; return(conditions.GetWrappedConditions().Accept(this).Item2); }