org.drools.planner.core.heuristic.selector.move.composite
Class UnionMoveSelector

java.lang.Object
  extended by org.drools.planner.core.heuristic.selector.AbstractSelector
      extended by org.drools.planner.core.heuristic.selector.move.AbstractMoveSelector
          extended by org.drools.planner.core.heuristic.selector.move.composite.CompositeMoveSelector
              extended by org.drools.planner.core.heuristic.selector.move.composite.UnionMoveSelector
All Implemented Interfaces:
Iterable<Move>, EventListener, MoveSelector, Selector, SolverPhaseLifecycleListener, SolverLifecycleListener

public class UnionMoveSelector
extends CompositeMoveSelector

A CompositeMoveSelector that unions 2 or more MoveSelectors.

For example: a union of {A, B, C} and {X, Y} will result in {A, B, C, X, Y}.

Warning: there is no duplicated Move check, so union of {A, B, C} and {B, D} will result in {A, B, C, B, D}.

See Also:
CompositeMoveSelector

Nested Class Summary
 class UnionMoveSelector.RandomUnionMoveIterator
           
 
Field Summary
protected  ScoreDirector scoreDirector
           
protected  SelectionProbabilityWeightFactory selectorProbabilityWeightFactory
           
 
Fields inherited from class org.drools.planner.core.heuristic.selector.move.composite.CompositeMoveSelector
childMoveSelectorList, randomSelection
 
Fields inherited from class org.drools.planner.core.heuristic.selector.AbstractSelector
logger, solverPhaseLifecycleSupport, workingRandom
 
Constructor Summary
UnionMoveSelector(List<MoveSelector> childMoveSelectorList, boolean randomSelection)
           
UnionMoveSelector(List<MoveSelector> childMoveSelectorList, boolean randomSelection, SelectionProbabilityWeightFactory selectorProbabilityWeightFactory)
           
 
Method Summary
 long getSize()
          A random JIT Selector with Selector.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 in SelectionProbabilityWeightFactory.
 boolean isNeverEnding()
          Is true if Selector.isContinuous() is true or if this selector is in random order (for most cases).
 Iterator<Move> iterator()
           
 void stepEnded(AbstractStepScope stepScope)
           
 void stepStarted(AbstractStepScope stepScope)
           
 String toString()
           
 
Methods inherited from class org.drools.planner.core.heuristic.selector.move.composite.CompositeMoveSelector
isContinuous
 
Methods inherited from class org.drools.planner.core.heuristic.selector.AbstractSelector
phaseEnded, phaseStarted, solvingEnded, solvingStarted
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.drools.planner.core.phase.event.SolverPhaseLifecycleListener
phaseEnded, phaseStarted
 
Methods inherited from interface org.drools.planner.core.solver.event.SolverLifecycleListener
solvingEnded, solvingStarted
 

Field Detail

selectorProbabilityWeightFactory

protected final SelectionProbabilityWeightFactory selectorProbabilityWeightFactory

scoreDirector

protected ScoreDirector scoreDirector
Constructor Detail

UnionMoveSelector

public UnionMoveSelector(List<MoveSelector> childMoveSelectorList,
                         boolean randomSelection)

UnionMoveSelector

public UnionMoveSelector(List<MoveSelector> childMoveSelectorList,
                         boolean randomSelection,
                         SelectionProbabilityWeightFactory selectorProbabilityWeightFactory)
Method Detail

stepStarted

public void stepStarted(AbstractStepScope stepScope)
Specified by:
stepStarted in interface SolverPhaseLifecycleListener
Overrides:
stepStarted in class AbstractSelector

stepEnded

public void stepEnded(AbstractStepScope stepScope)
Specified by:
stepEnded in interface SolverPhaseLifecycleListener
Overrides:
stepEnded in class AbstractSelector

isNeverEnding

public boolean isNeverEnding()
Description copied from interface: Selector
Is true if Selector.isContinuous() is true or if this selector is in random order (for most cases). Is never true when this selector is in shuffled order (which is less scalable but more exact).

Returns:
true if the Iterator.hasNext() of the Iterator created by Iterable.iterator() never returns false.

getSize

public long getSize()
Description copied from interface: Selector
A random JIT Selector with Selector.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 in SelectionProbabilityWeightFactory.

Returns:
the approximate number of elements generated by this Selector, always >= 0

iterator

public Iterator<Move> iterator()

toString

public String toString()
Overrides:
toString in class CompositeMoveSelector


Copyright © 2001-2014 JBoss by Red Hat. All Rights Reserved.