Example #1
0
        /// <summary>
        /// Constructs the SAS+ planning problem from the input data.
        /// </summary>
        /// <param name="inputData">Input data.</param>
        public Problem(InputData.SASInputData inputData)
        {
            ProblemName       = inputData.Problem.Name;
            OriginalInputData = inputData;

            InitialState   = new State(inputData.Problem.InitialState);
            GoalConditions = new Conditions(inputData.Problem.GoalConditions);
            Variables      = new Variables(inputData.Problem.Variables);
            MutexGroups    = new MutexGroups(inputData.Problem.MutexGroups);
            AxiomRules     = new AxiomRules(inputData.Problem.AxiomRules, Variables, InitialState);
            Operators      = new Operators(inputData.Problem.Operators, AxiomRules, MutexGroups);

            Variables.SetOperators(Operators);
            TransitionsGenerator = new Lazy <TransitionsGenerator>(() => new TransitionsGenerator(this));
            MutexChecker         = new Lazy <MutexChecker>(() => new MutexChecker(MutexGroups));
        }
Example #2
0
        /// <summary>
        /// Constructs the relaxed SAS+ planning problem.
        /// </summary>
        /// <param name="inputData">Input data.</param>
        /// <param name="initialStateInit">Should the initial state be initialized?</param>
        public RelaxedProblem(InputData.SASInputData inputData, bool initialStateInit = true) : base(inputData)
        {
            InitialState = (initialStateInit) ? new RelaxedState((State)InitialState) : null;

            MutexGroups.Clear();
        }