Class AbstractMove<Solution_>
- java.lang.Object
-
- org.optaplanner.core.impl.heuristic.move.AbstractMove<Solution_>
-
- Type Parameters:
Solution_- the solution type, the class with thePlanningSolutionannotation
- All Implemented Interfaces:
Move<Solution_>
- Direct Known Subclasses:
ChangeMove,KOptMove,NoChangeMove,PartitionChangeMove,PillarChangeMove,PillarSwapMove,SubChainChangeMove,SubChainReversingChangeMove,SubChainReversingSwapMove,SubChainSwapMove,SwapMove,TailChainSwapMove
public abstract class AbstractMove<Solution_> extends Object implements Move<Solution_>
Abstract superclass forMove.- See Also:
Move
-
-
Constructor Summary
Constructors Constructor Description AbstractMove()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract AbstractMove<Solution_>createUndoMove(ScoreDirector<Solution_> scoreDirector)Called before the move is done, so the move can be evaluated and then be undone without resulting into a permanent change in the solution.AbstractMove<Solution_>doMove(ScoreDirector<Solution_> scoreDirector)Does the move (which indirectly affects theScoreDirector.getWorkingSolution()).protected abstract voiddoMoveOnGenuineVariables(ScoreDirector<Solution_> scoreDirector)LikedoMove(ScoreDirector)but without theScoreDirector.triggerVariableListeners()call (becausedoMove(ScoreDirector)already does that).protected static Object[]rebaseArray(Object[] externalObjects, ScoreDirector<?> destinationScoreDirector)protected static <E> List<E>rebaseList(List<E> externalObjectList, ScoreDirector<?> destinationScoreDirector)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.optaplanner.core.impl.heuristic.move.Move
getPlanningEntities, getPlanningValues, getSimpleMoveTypeDescription, isMoveDoable, rebase
-
-
-
-
Method Detail
-
doMove
public final AbstractMove<Solution_> doMove(ScoreDirector<Solution_> scoreDirector)
Description copied from interface:MoveDoes the move (which indirectly affects theScoreDirector.getWorkingSolution()). When theworking solutionis modified, theScoreDirectormust be correctly notified (throughScoreDirector.beforeVariableChanged(Object, String)andScoreDirector.afterVariableChanged(Object, String)), otherwise later calculatedScores will be corrupted.This method must end with calling
ScoreDirector.triggerVariableListeners()to ensure all shadow variables are updated.This method must return an undo move, so the move can be evaluated and then be undone without resulting into a permanent change in the solution.
- Specified by:
doMovein interfaceMove<Solution_>- Parameters:
scoreDirector- never null, theScoreDirectorthat needs to get notified of the changes- Returns:
- an undoMove which does the exact opposite of this move
-
createUndoMove
protected abstract AbstractMove<Solution_> createUndoMove(ScoreDirector<Solution_> scoreDirector)
Called before the move is done, so the move can be evaluated and then be undone without resulting into a permanent change in the solution.- Parameters:
scoreDirector- theScoreDirectornot yet modified by the move.- Returns:
- an undoMove which does the exact opposite of this move.
-
doMoveOnGenuineVariables
protected abstract void doMoveOnGenuineVariables(ScoreDirector<Solution_> scoreDirector)
LikedoMove(ScoreDirector)but without theScoreDirector.triggerVariableListeners()call (becausedoMove(ScoreDirector)already does that).- Parameters:
scoreDirector- never null
-
rebaseList
protected static <E> List<E> rebaseList(List<E> externalObjectList, ScoreDirector<?> destinationScoreDirector)
-
rebaseArray
protected static Object[] rebaseArray(Object[] externalObjects, ScoreDirector<?> destinationScoreDirector)
-
-