private void AddReasoningAction(Formula fPreconditions, Formula fEffect)
        {
            Action a = new Action("Reasoning" + ReasoningActions.Count);

            a.Preconditions = fPreconditions;
            a.SetEffects(fEffect);
            ReasoningActions.Add(a);
        }
Beispiel #2
0
        public Problem(Problem baseProblem, Domain baseDomain)
        {
            // TODO: Complete member initialization
            Domain          = baseDomain;
            Name            = baseProblem.Name;
            Goal            = baseProblem.Goal.Clone();
            MetricStatement = baseProblem.MetricStatement;
            m_lKnown        = new HashSet <Predicate>();
            foreach (var known in baseProblem.m_lKnown)
            {
                m_lKnown.Add(known.Clone());
            }

            m_lHidden = new List <CompoundFormula>();
            foreach (Formula hidden in baseProblem.m_lHidden)
            {
                m_lHidden.Add((CompoundFormula)hidden.Clone());
            }

            foreach (var rAction in baseProblem.ReasoningActions)
            {
                ReasoningActions.Add(rAction.Clone());
            }

            m_dRelevantPredicates = new Dictionary <GroundedPredicate, HashSet <GroundedPredicate> >();
            foreach (var relevantPredicate in baseProblem.m_dRelevantPredicates)
            {
                m_dRelevantPredicates.Add(relevantPredicate.Key, new HashSet <GroundedPredicate>());
                foreach (var predicate in relevantPredicate.Value)
                {
                    m_dRelevantPredicates[relevantPredicate.Key].Add((GroundedPredicate)predicate.Clone());
                }
            }

            m_lInitiallyUnknown = new HashSet <Predicate>();
            foreach (var initKnown in baseProblem.m_lInitiallyUnknown)
            {
                m_lInitiallyUnknown.Add(initKnown.Clone());
            }


            m_dMapPredicateToIndex = new Dictionary <GroundedPredicate, int>();
            foreach (var mapPredicateIndex in baseProblem.m_dMapPredicateToIndex)
            {
                m_dMapPredicateToIndex.Add((GroundedPredicate)mapPredicateIndex.Key.Clone(), mapPredicateIndex.Value);
            }

            m_lIndexToPredicate = new List <GroundedPredicate>();
            foreach (var indexToPredicate in baseProblem.m_lIndexToPredicate)
            {
                m_lIndexToPredicate.Add((GroundedPredicate)indexToPredicate.Clone());
            }
        }