Esempio n. 1
0
        public List<HTNEffect> GetAllPostEffects(SpecificationKnowledge specificationKnowledge)
        {
            List<HTNEffect> postEffects = new List<HTNEffect>();

            foreach (string taskID in this.TaskIDList)
            {
                HTNTask htnTask = specificationKnowledge.GetHTNTask(taskID);
                postEffects.AddRange(htnTask.PostConditions);
            }

            return postEffects;
        }
Esempio n. 2
0
        private bool DeduceFollowingStates(
            IEnumerable<HTNTaskSet> refinedHTNTaskSetList,
            HTNState currentState,
            HTNState targetState,
            SpecificationKnowledge specificationKnowledge)
        {
            List<HTNState> newlyDeducedHTNStateList = new List<HTNState>();
            newlyDeducedHTNStateList.Add(currentState);

            HTNState localCurrentHTNState = new HTNState(currentState);
            List<List<HTNEffect>> htnEffectList = new List<List<HTNEffect>>();

            foreach (HTNTaskSet htnTaskSet in refinedHTNTaskSetList)
            {
                List<HTNEffect> postEffects = new List<HTNEffect>();

                foreach (string taskID in htnTaskSet.TaskIDList)
                {
                    HTNTask htnTask = specificationKnowledge.GetHTNTask(taskID);
                    postEffects.AddRange(htnTask.PostConditions);
                }
                htnEffectList.Add(postEffects);
            }

            HTNState nextHTNState = null;
            foreach (List<HTNEffect> htnEffects in htnEffectList)
            {
                nextHTNState = new HTNState(localCurrentHTNState.DeduceNextStateBasedOnEffects(htnEffects));
                newlyDeducedHTNStateList.Add(nextHTNState);
            }

            if (nextHTNState != null && nextHTNState.IsEqualTo(targetState))
            {
                newlyDeducedHTNStateList.Remove(nextHTNState);
                RefinedStateList = newlyDeducedHTNStateList;
                return true;
            }

            return false;
        }
Esempio n. 3
0
        public HTNState ConjectureOneState(List<string> htnTaskIDList, SpecificationKnowledge wsk)
        {
            List<string> postConditionAtoms = new List<string>();

            List<HTNTask> htnTaskList = new List<HTNTask>();

            foreach (string taskID in htnTaskIDList)
            {
                htnTaskList.Add(wsk.GetHTNTask(taskID));
            }

            // TODO: WHAT IS THIS SUPPOSED TO BE. FFFFFFF
            foreach (HTNTask htnTask in htnTaskList)
            {

            }

            return new HTNState();
        }