Class AbstractCachingValueSelector<Solution_>
java.lang.Object
org.optaplanner.core.impl.heuristic.selector.AbstractSelector<Solution_>
org.optaplanner.core.impl.heuristic.selector.AbstractDemandEnabledSelector<Solution_>
org.optaplanner.core.impl.heuristic.selector.value.decorator.AbstractCachingValueSelector<Solution_>
- All Implemented Interfaces:
EventListener
,SelectionCacheLifecycleListener<Solution_>
,Selector<Solution_>
,ValueSelector<Solution_>
,PhaseLifecycleListener<Solution_>
,SolverLifecycleListener<Solution_>
- Direct Known Subclasses:
CachingValueSelector
,ShufflingValueSelector
,SortingValueSelector
public abstract class AbstractCachingValueSelector<Solution_>
extends AbstractDemandEnabledSelector<Solution_>
implements SelectionCacheLifecycleListener<Solution_>, ValueSelector<Solution_>
-
Field Summary
Modifier and TypeFieldDescriptionprotected final SelectionCacheType
protected final EntityIndependentValueSelector<Solution_>
Fields inherited from class org.optaplanner.core.impl.heuristic.selector.AbstractSelector
logger, phaseLifecycleSupport, workingRandom
-
Constructor Summary
ConstructorDescriptionAbstractCachingValueSelector
(EntityIndependentValueSelector<Solution_> childValueSelector, SelectionCacheType cacheType) -
Method Summary
Modifier and TypeMethodDescriptionvoid
constructCache
(SolverScope<Solution_> solverScope) void
disposeCache
(SolverScope<Solution_> solverScope) endingIterator
(Object entity) IfSelector.isNeverEnding()
is true, thenValueSelector.iterator(Object)
will never end.boolean
Unless this selector itself caches, this returnsSelectionCacheType.JUST_IN_TIME
, even if a selector child caches.long
getSize()
long
Similar toIterableSelector.getSize()
, but requires an entity.int
hashCode()
boolean
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, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
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, solvingError, solvingStarted
Methods inherited from interface org.optaplanner.core.impl.heuristic.selector.value.ValueSelector
iterator
-
Field Details
-
childValueSelector
-
cacheType
-
cachedValueList
-
-
Constructor Details
-
AbstractCachingValueSelector
public AbstractCachingValueSelector(EntityIndependentValueSelector<Solution_> childValueSelector, SelectionCacheType cacheType)
-
-
Method Details
-
getChildValueSelector
-
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<Solution_>
- Overrides:
getCacheType
in classAbstractSelector<Solution_>
- Returns:
- never null
-
constructCache
- Specified by:
constructCache
in interfaceSelectionCacheLifecycleListener<Solution_>
-
disposeCache
- Specified by:
disposeCache
in interfaceSelectionCacheLifecycleListener<Solution_>
-
getVariableDescriptor
- Specified by:
getVariableDescriptor
in interfaceValueSelector<Solution_>
- Returns:
- never null
-
isCountable
public boolean isCountable()Description copied from interface:Selector
If false, thenSelector.isNeverEnding()
is true.- Specified by:
isCountable
in interfaceSelector<Solution_>
- 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
Description copied from interface:ValueSelector
Similar toIterableSelector.getSize()
, but requires an entity.- Specified by:
getSize
in interfaceValueSelector<Solution_>
- Parameters:
entity
- never null- Returns:
- the approximate number of elements generated by this
Selector
, always>= 0
-
getSize
public long getSize() -
endingIterator
Description copied from interface:ValueSelector
IfSelector.isNeverEnding()
is true, thenValueSelector.iterator(Object)
will never end. This returns an endingIterator
, that tries to matchValueSelector.iterator(Object)
as much as possible, but return each distinct element only once and therefore it might not respect the configuration of thisValueSelector
entirely.- Specified by:
endingIterator
in interfaceValueSelector<Solution_>
- Parameters:
entity
- never null- Returns:
- never null
- See Also:
-
endingIterator
-
equals
- Specified by:
equals
in classAbstractDemandEnabledSelector<Solution_>
-
hashCode
public int hashCode()- Specified by:
hashCode
in classAbstractDemandEnabledSelector<Solution_>
-