Class PrioritySearch<T extends Var>

java.lang.Object
org.jacop.search.DepthFirstSearch<T>
org.jacop.search.PrioritySearch<T>
Type Parameters:
T - type of variable being used in the Search.
All Implemented Interfaces:
Search<T>

public class PrioritySearch<T extends Var> extends DepthFirstSearch<T>
PrioritySearch selects first a row in the matrix based on metric of the variable at the pririty vector. As soon as a row is choosen, variables are selected for indomain method. The row selection is done with the help of pririty variable comparators. Two comparators can be employed main and tiebreaking one. If two are not sufficient to differentiate two rows than the lexigraphical ordering is used. Based on paper "Priority Search with MiniZinc" by Thibaut Feydy, Adrian Goldwaser, Andreas Schutt, Peter J. Stuckey,and Kenneth D. Young, in ModRef'2017: The Sixtenth International Workshop on Constraint Modelling and Reformulation at CP 2017.
Version:
4.9
  • Field Details

    • debugAll

      static final boolean debugAll
      See Also:
    • n

      int n
    • priority

      T extends Var[] priority
    • comparator

      ComparatorVariable<T extends Var> comparator
    • visited

      BitSet visited
    • allVars

      T extends Var[] allVars
    • noSolutions

      int noSolutions
    • solutionsLimit

      int solutionsLimit
    • solutionsReached

      boolean solutionsReached
  • Constructor Details

    • PrioritySearch

      public PrioritySearch(T[] priority, ComparatorVariable<T> comparator, DepthFirstSearch<T>[] dfs)
      It constructs a PrioritySearch variable ordering.
      Parameters:
      priority - prority variables used to select a sub-vector of vars (row)
      dfs - vector of depth first searches to be selected from; they must have SelectChoicePoint set.
      comparator - the variable comparator to choose the proper sub.search. // * @param indomain variable ordering value to be used to determine value for a given variable.
  • Method Details

    • lastSearch

    • labeling

      public boolean labeling(Store store, SelectChoicePoint<T> select)
      Description copied from interface: Search
      It performs search using supplied choice point selection heuristic.
      Specified by:
      labeling in interface Search<T extends Var>
      Overrides:
      labeling in class DepthFirstSearch<T extends Var>
      Parameters:
      store - the store within which the search is conducted.
      select - the selection choice point heuristic.
      Returns:
      true if the solution was found.
    • labeling

      public boolean labeling(Store store)
    • labeling

      public boolean labeling(Store store, SelectChoicePoint<T> select, Var costVar)
      Description copied from interface: Search
      It performs search using supplied choice point selection heuristic, as well as costVariable as aim at finding an optimal solution.
      Specified by:
      labeling in interface Search<T extends Var>
      Overrides:
      labeling in class DepthFirstSearch<T extends Var>
      Parameters:
      store - constraint store which will be used by labeling.
      select - the selection choice point heuristic.
      costVar - variable to specify cost.
      Returns:
      true if the solution was found.
    • labeling

      public boolean labeling(Store store, Var costVar)
    • labeling

      public boolean labeling()
      Description copied from class: DepthFirstSearch
      It is a labeling function called if the search is a sub-search being called from the parent search. It never assigns a solution as it will be immediately retracted by search calling this one.
      Specified by:
      labeling in interface Search<T extends Var>
      Overrides:
      labeling in class DepthFirstSearch<T extends Var>
      Returns:
      true if the solution was found.
    • label

      public boolean label(int n)
      Description copied from class: DepthFirstSearch
      This function is called recursively to assign variables one by one.
      Specified by:
      label in interface Search<T extends Var>
      Overrides:
      label in class DepthFirstSearch<T extends Var>
      Parameters:
      n - the index to the first variable which has not been grounded yet.
      Returns:
      true if the solution was found.
    • getNodes

      public int getNodes()
      Description copied from class: DepthFirstSearch
      It returns number of search nodes explored by the search.
      Specified by:
      getNodes in interface Search<T extends Var>
      Overrides:
      getNodes in class DepthFirstSearch<T extends Var>
      Returns:
      number of search nodes.
    • getDecisions

      public int getDecisions()
      Description copied from class: DepthFirstSearch
      It returns number of decisions performed by the search.
      Specified by:
      getDecisions in interface Search<T extends Var>
      Overrides:
      getDecisions in class DepthFirstSearch<T extends Var>
      Returns:
      the number of decisions.
    • getWrongDecisions

      public int getWrongDecisions()
      Description copied from class: DepthFirstSearch
      It returns number of wrong decisions performed by the search.
      Specified by:
      getWrongDecisions in interface Search<T extends Var>
      Overrides:
      getWrongDecisions in class DepthFirstSearch<T extends Var>
      Returns:
      number of wrong decisions.
    • getBacktracks

      public int getBacktracks()
      Description copied from class: DepthFirstSearch
      It returns number of backtracks performed by the search.
      Specified by:
      getBacktracks in interface Search<T extends Var>
      Overrides:
      getBacktracks in class DepthFirstSearch<T extends Var>
      Returns:
      the number of backtracks.
    • getMaximumDepth

      public int getMaximumDepth()
      Description copied from class: DepthFirstSearch
      It returns the maximum depth reached by a search.
      Specified by:
      getMaximumDepth in interface Search<T extends Var>
      Overrides:
      getMaximumDepth in class DepthFirstSearch<T extends Var>
      Returns:
      the maximum depth.
    • getStatistics

      public void getStatistics()
    • statistics

      String statistics()
    • setCostVariable

      public void setCostVariable(Var cost)
    • getSubSearch

      int getSubSearch()
    • getVariables

      public T[] getVariables(PrioritySearch ps)
    • addRestartCalculator

      public void addRestartCalculator(DepthFirstSearch s, Calculator calc)
    • setSolutionLimit

      public void setSolutionLimit(int no)
    • getSearchSeq

      public DepthFirstSearch[] getSearchSeq()
    • toString

      public String toString()
      Specified by:
      toString in interface Search<T extends Var>
      Overrides:
      toString in class DepthFirstSearch<T extends Var>
    • noSolutions

      public int noSolutions()