/// <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);
        }
示例#3
0
 /// <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);
 }