Package org.jacop.search
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.8
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) classPrioritySearch.LinkingSearch<T extends Var>(package private) static classPrioritySearch.SolutionsLimitReached
-
Field Summary
Fields Modifier and Type Field Description (package private) T[]allVars(package private) ComparatorVariable<T>comparator(package private) static booleandebugAll(package private) intn(package private) intnoSolutions(package private) T[]priority(package private) DepthFirstSearch[]search(package private) intsolutionsLimit(package private) booleansolutionsReached(package private) java.util.BitSetvisited-
Fields inherited from class org.jacop.search.DepthFirstSearch
assignSolution, backtracksOut, backtracksOutCheck, check, childSearches, consistencyListener, cost, costValue, costValueFloat, costVariable, currentChildSearch, decisions, decisionsOut, decisionsOutCheck, depth, depthExcludePaths, einAinleftTree, exitChildListener, exitListener, heuristic, id, initializeListener, masterSearch, maxDepth, maxDepthExcludePaths, no, nodes, nodesOut, nodesOutCheck, numberBacktracks, optimize, printInfo, respectSolutionListenerAdvice, solutionListener, store, timeOut, timeOutCheck, timeOutListener, timeOutOccured, tOut, wrongDecisions, wrongDecisionsOut, wrongDecisionsOutCheck
-
-
Constructor Summary
Constructors Constructor Description PrioritySearch(T[] priority, ComparatorVariable<T> comparator, DepthFirstSearch<T>[] dfs)It constructs a PrioritySearch variable ordering.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddRestartCalculator(DepthFirstSearch s, Calculator calc)intgetBacktracks()It returns number of backtracks performed by the search.intgetDecisions()It returns number of decisions performed by the search.intgetMaximumDepth()It returns the maximum depth reached by a search.intgetNodes()It returns number of search nodes explored by the search.DepthFirstSearch[]getSearchSeq()voidgetStatistics()(package private) intgetSubSearch()T[]getVariables(PrioritySearch ps)intgetWrongDecisions()It returns number of wrong decisions performed by the search.booleanlabel(int n)This function is called recursively to assign variables one by one.booleanlabeling()It is a labeling function called if the search is a sub-search being called from the parent search.booleanlabeling(Store store)booleanlabeling(Store store, Var costVar)booleanlabeling(Store store, SelectChoicePoint<T> select)It performs search using supplied choice point selection heuristic.booleanlabeling(Store store, SelectChoicePoint<T> select, Var costVar)It performs search using supplied choice point selection heuristic, as well as costVariable as aim at finding an optimal solution.(package private) DepthFirstSearchlastSearch(DepthFirstSearch dfs)intnoSolutions()voidsetCostVariable(Var cost)voidsetSolutionLimit(int no)(package private) java.lang.Stringstatistics()java.lang.StringtoString()-
Methods inherited from class org.jacop.search.DepthFirstSearch
addChildSearch, assignSolution, assignSolution, getConsistencyListener, getCostValue, getCostValueFloat, getCostVariable, getExitChildListener, getExitListener, getInitializeListener, getSolution, getSolution, getSolutionListener, getTimeOutListener, getVariables, id, printAllSolutions, setAssignSolution, setBacktracksOut, setChildSearch, setConsistencyListener, setCostVar, setDecisionsOut, setExitChildListener, setExitListener, setID, setInitializeListener, setMasterSearch, setNodesOut, setOptimizationForChildSearches, setOptimize, setPrintInfo, setSelectChoicePoint, setSolutionListener, setStore, setTimeOut, setTimeOutListener, setTimeOutMilliseconds, setWrongDecisionsOut, toStringFull
-
-
-
-
Field Detail
-
debugAll
static final boolean debugAll
- See Also:
- Constant Field Values
-
n
int n
-
comparator
ComparatorVariable<T extends Var> comparator
-
search
DepthFirstSearch[] search
-
visited
java.util.BitSet visited
-
noSolutions
int noSolutions
-
solutionsLimit
int solutionsLimit
-
solutionsReached
boolean solutionsReached
-
-
Constructor Detail
-
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 Detail
-
lastSearch
DepthFirstSearch lastSearch(DepthFirstSearch dfs)
-
labeling
public boolean labeling(Store store, SelectChoicePoint<T> select)
Description copied from interface:SearchIt performs search using supplied choice point selection heuristic.
-
labeling
public boolean labeling(Store store)
-
labeling
public boolean labeling(Store store, SelectChoicePoint<T> select, Var costVar)
Description copied from interface:SearchIt performs search using supplied choice point selection heuristic, as well as costVariable as aim at finding an optimal solution.- Specified by:
labelingin interfaceSearch<T extends Var>- Overrides:
labelingin classDepthFirstSearch<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()
Description copied from class:DepthFirstSearchIt 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.
-
label
public boolean label(int n)
Description copied from class:DepthFirstSearchThis function is called recursively to assign variables one by one.
-
getNodes
public int getNodes()
Description copied from class:DepthFirstSearchIt returns number of search nodes explored by the search.
-
getDecisions
public int getDecisions()
Description copied from class:DepthFirstSearchIt returns number of decisions performed by the search.- Specified by:
getDecisionsin interfaceSearch<T extends Var>- Overrides:
getDecisionsin classDepthFirstSearch<T extends Var>- Returns:
- the number of decisions.
-
getWrongDecisions
public int getWrongDecisions()
Description copied from class:DepthFirstSearchIt returns number of wrong decisions performed by the search.- Specified by:
getWrongDecisionsin interfaceSearch<T extends Var>- Overrides:
getWrongDecisionsin classDepthFirstSearch<T extends Var>- Returns:
- number of wrong decisions.
-
getBacktracks
public int getBacktracks()
Description copied from class:DepthFirstSearchIt returns number of backtracks performed by the search.- Specified by:
getBacktracksin interfaceSearch<T extends Var>- Overrides:
getBacktracksin classDepthFirstSearch<T extends Var>- Returns:
- the number of backtracks.
-
getMaximumDepth
public int getMaximumDepth()
Description copied from class:DepthFirstSearchIt returns the maximum depth reached by a search.- Specified by:
getMaximumDepthin interfaceSearch<T extends Var>- Overrides:
getMaximumDepthin classDepthFirstSearch<T extends Var>- Returns:
- the maximum depth.
-
getStatistics
public void getStatistics()
-
statistics
java.lang.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 java.lang.String toString()
-
noSolutions
public int noSolutions()
-
-