Class AbstractCachingMoveSelector
- java.lang.Object
-
- org.optaplanner.core.impl.heuristic.selector.AbstractSelector
-
- org.optaplanner.core.impl.heuristic.selector.move.AbstractMoveSelector
-
- org.optaplanner.core.impl.heuristic.selector.move.decorator.AbstractCachingMoveSelector
-
- All Implemented Interfaces:
Iterable<Move>
,EventListener
,SelectionCacheLifecycleListener
,IterableSelector<Move>
,MoveSelector
,Selector
,PhaseLifecycleListener
,SolverLifecycleListener
- Direct Known Subclasses:
CachingMoveSelector
,ShufflingMoveSelector
,SortingMoveSelector
public abstract class AbstractCachingMoveSelector extends AbstractMoveSelector implements SelectionCacheLifecycleListener
-
-
Field Summary
Fields Modifier and Type Field Description protected List<Move>
cachedMoveList
protected SelectionCacheType
cacheType
protected MoveSelector
childMoveSelector
-
Fields inherited from class org.optaplanner.core.impl.heuristic.selector.AbstractSelector
logger, phaseLifecycleSupport, workingRandom
-
-
Constructor Summary
Constructors Constructor Description AbstractCachingMoveSelector(MoveSelector childMoveSelector, SelectionCacheType cacheType)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
constructCache(DefaultSolverScope solverScope)
void
disposeCache(DefaultSolverScope solverScope)
SelectionCacheType
getCacheType()
Unless this selector itself caches, this returnsSelectionCacheType.JUST_IN_TIME
, even if a selector child caches.MoveSelector
getChildMoveSelector()
long
getSize()
A random JITSelector
withSelector.isNeverEnding()
true should return a size as if it would be able to return each distinct element only once, because the size can be used inSelectionProbabilityWeightFactory
.boolean
isCountable()
If false, thenSelector.isNeverEnding()
is true.-
Methods inherited from class org.optaplanner.core.impl.heuristic.selector.AbstractSelector
phaseEnded, phaseStarted, solvingEnded, solvingStarted, stepEnded, stepStarted
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.lang.Iterable
forEach, iterator, spliterator
-
Methods inherited from interface org.optaplanner.core.impl.heuristic.selector.move.MoveSelector
supportsPhaseAndSolverCaching
-
Methods inherited from interface org.optaplanner.core.impl.phase.event.PhaseLifecycleListener
phaseEnded, phaseStarted, stepEnded, stepStarted
-
Methods inherited from interface org.optaplanner.core.impl.heuristic.selector.Selector
isNeverEnding
-
Methods inherited from interface org.optaplanner.core.impl.solver.event.SolverLifecycleListener
solvingEnded, solvingStarted
-
-
-
-
Field Detail
-
childMoveSelector
protected final MoveSelector childMoveSelector
-
cacheType
protected final SelectionCacheType cacheType
-
-
Constructor Detail
-
AbstractCachingMoveSelector
public AbstractCachingMoveSelector(MoveSelector childMoveSelector, SelectionCacheType cacheType)
-
-
Method Detail
-
getChildMoveSelector
public MoveSelector getChildMoveSelector()
-
getCacheType
public SelectionCacheType getCacheType()
Description copied from interface:Selector
Unless this selector itself caches, this returnsSelectionCacheType.JUST_IN_TIME
, even if a selector child caches.- Specified by:
getCacheType
in interfaceSelector
- Overrides:
getCacheType
in classAbstractSelector
- Returns:
- never null
-
constructCache
public void constructCache(DefaultSolverScope solverScope)
- Specified by:
constructCache
in interfaceSelectionCacheLifecycleListener
-
disposeCache
public void disposeCache(DefaultSolverScope solverScope)
- Specified by:
disposeCache
in interfaceSelectionCacheLifecycleListener
-
isCountable
public boolean isCountable()
Description copied from interface:Selector
If false, thenSelector.isNeverEnding()
is true.- Specified by:
isCountable
in interfaceSelector
- Returns:
- true if all the
ValueRange
s are countable (for example a double value range between 1.2 and 1.4 is not countable)
-
getSize
public long getSize()
Description copied from interface:IterableSelector
A random JITSelector
withSelector.isNeverEnding()
true should return a size as if it would be able to return each distinct element only once, because the size can be used inSelectionProbabilityWeightFactory
.- Specified by:
getSize
in interfaceIterableSelector<Move>
- Returns:
- the approximate number of elements generated by this
Selector
, always>= 0
-
-