Class AbstractMove<Solution_>
java.lang.Object
org.optaplanner.core.impl.heuristic.move.AbstractMove<Solution_>
- Type Parameters:
Solution_
- the solution type, the class with thePlanningSolution
annotation
- All Implemented Interfaces:
Move<Solution_>
- Direct Known Subclasses:
ChangeMove
,KOptMove
,ListAssignMove
,ListChangeMove
,ListSwapMove
,ListUnassignMove
,NoChangeMove
,PartitionChangeMove
,PillarChangeMove
,PillarSwapMove
,SubChainChangeMove
,SubChainReversingChangeMove
,SubChainReversingSwapMove
,SubChainSwapMove
,SubListChangeMove
,SubListSwapMove
,SwapMove
,TailChainSwapMove
Abstract superclass for
Move
.- See Also:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected 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.final AbstractMove<Solution_>
doMove
(ScoreDirector<Solution_> scoreDirector) Does the move (which indirectly affects theScoreDirector.getWorkingSolution()
).protected abstract void
doMoveOnGenuineVariables
(ScoreDirector<Solution_> scoreDirector) LikedoMoveOnly(ScoreDirector)
but without theScoreDirector.triggerVariableListeners()
call (becausedoMoveOnly(ScoreDirector)
already does that).final void
doMoveOnly
(ScoreDirector<Solution_> scoreDirector) As defined byMove.doMove(ScoreDirector)
, but does not return an undo move.static Object[]
rebaseArray
(Object[] externalObjects, ScoreDirector<?> destinationScoreDirector) 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
-
Constructor Details
-
AbstractMove
public AbstractMove()
-
-
Method Details
-
doMove
Description copied from interface:Move
Does the move (which indirectly affects theScoreDirector.getWorkingSolution()
). When theworking solution
is modified, theScoreDirector
must be correctly notified (throughScoreDirector.beforeVariableChanged(Object, String)
andScoreDirector.afterVariableChanged(Object, String)
), otherwise later calculatedScore
s 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:
doMove
in interfaceMove<Solution_>
- Parameters:
scoreDirector
- never null, theScoreDirector
that needs to get notified of the changes- Returns:
- an undoMove which does the exact opposite of this move
-
doMoveOnly
Description copied from interface:Move
As defined byMove.doMove(ScoreDirector)
, but does not return an undo move.- Specified by:
doMoveOnly
in interfaceMove<Solution_>
- Parameters:
scoreDirector
- never null, theScoreDirector
that needs to get notified of the changes
-
createUndoMove
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
- theScoreDirector
not yet modified by the move.- Returns:
- an undoMove which does the exact opposite of this move.
-
doMoveOnGenuineVariables
LikedoMoveOnly(ScoreDirector)
but without theScoreDirector.triggerVariableListeners()
call (becausedoMoveOnly(ScoreDirector)
already does that).- Parameters:
scoreDirector
- never null
-
rebaseList
public static <E> List<E> rebaseList(List<E> externalObjectList, ScoreDirector<?> destinationScoreDirector) -
rebaseArray
public static Object[] rebaseArray(Object[] externalObjects, ScoreDirector<?> destinationScoreDirector)
-