/// <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)); }
/// <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(); }