/// <summary> /// Constructs a new instance of SabberStoneGameLogic. /// </summary> /// <param name="goal">The goal strategy.</param> /// <param name="hierarchicalExpansion">[Optional] Whether or not expansion should be handled hierarchically. Default value is true.</param> /// <param name="dimensionalOrdering">[Optional] The type of Dimensional Ordering to use in the case of Hierarchical Expansion. Default value is <see cref="DimensionalOrderingType.None"/>.</param> /// <param name="searcher">[Optional] A searcher that can provide individual task statistics when using one of the Entropy orderings. Default value is null.</param> public SabberStoneGameLogic(IGoalStrategy <List <SabberStoneAction>, SabberStoneState, SabberStoneAction, object, SabberStoneAction> goal, bool hierarchicalExpansion = true, DimensionalOrderingType dimensionalOrdering = DimensionalOrderingType.None, SabberStoneSearch searcher = null) { Goal = goal; HierarchicalExpansion = hierarchicalExpansion; DimensionalOrdering = dimensionalOrdering; Searcher = searcher; }
/// <summary> /// Constructs a new SearchContext. /// </summary> /// <param name="domain"><see cref="SearchContext{D, P, A, S, Sol, N}.Domain"/></param> /// <param name="source"><see cref="SearchContext{D, P, A, S, Sol, N}.Source"/></param> /// <param name="target"><see cref="SearchContext{D, P, A, S, Sol, N}.Target"/></param> /// <param name="subject"><see cref="SearchContext{D, P, A, S, Sol, N}.Subject"/></param> /// <param name="solution"><see cref="SearchContext{D, P, A, S, Sol, N}.Solution"/></param> /// <param name="status"><see cref="SearchContext{D, P, A, S, Sol, N}.Status"/></param> /// <param name="startNode"><see cref="SearchContext{D, P, A, S, Sol, N}.StartNode"/></param> /// <param name="search"><see cref="SearchContext{D, P, A, S, Sol, N}.Search"/></param> /// <param name="expansion"><see cref="SearchContext{D, P, A, S, Sol, N}.Expansion"/></param> /// <param name="application"><see cref="SearchContext{D, P, A, S, Sol, N}.Application"/></param> /// <param name="evaluation"><see cref="SearchContext{D, P, A, S, Sol, N}.Evaluation"/></param> /// <param name="goal"><see cref="SearchContext{D, P, A, S, Sol, N}.Goal"/></param> /// <param name="cloner"><see cref="SearchContext{D, P, A, S, Sol, N}.Cloner"/></param> public SearchContext(D domain, P source, P target, S subject, Sol solution, SearchStatus status, SearchNode <P, A> startNode, ISearchStrategy <D, P, A, S, Sol> search, IExpansionStrategy <D, P, A, S, Sol, A> expansion, IApplicationStrategy <D, P, A, S, Sol> application, IEvaluationStrategy <D, P, A, S, Sol> evaluation, IGoalStrategy <D, P, A, S, Sol> goal, ICloneStrategy <P> cloner) { Domain = domain; Source = source?.Copy(); Target = target?.Copy(); Subject = subject; Solution = solution; Status = status; StartNode = startNode?.Copy(); Search = search; Expansion = expansion; Application = application; Evaluation = evaluation; Goal = goal; Cloner = cloner; }