Class ListUnassignMove<Solution_>
- java.lang.Object
-
- org.optaplanner.core.impl.heuristic.move.AbstractMove<Solution_>
-
- org.optaplanner.core.impl.heuristic.selector.move.generic.list.ListUnassignMove<Solution_>
-
- All Implemented Interfaces:
Move<Solution_>
public class ListUnassignMove<Solution_> extends AbstractMove<Solution_>
-
-
Constructor Summary
Constructors Constructor Description ListUnassignMove(ListVariableDescriptor<Solution_> variableDescriptor, Object sourceEntity, int sourceIndex)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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.protected void
doMoveOnGenuineVariables(ScoreDirector<Solution_> scoreDirector)
LikeAbstractMove.doMoveOnly(ScoreDirector)
but without theScoreDirector.triggerVariableListeners()
call (becauseAbstractMove.doMoveOnly(ScoreDirector)
already does that).boolean
equals(Object o)
String
getSimpleMoveTypeDescription()
Describes the move type for statistical purposes.int
hashCode()
boolean
isMoveDoable(ScoreDirector<Solution_> scoreDirector)
Called before a move is evaluated to decide whether the move can be done and evaluated.String
toString()
-
Methods inherited from class org.optaplanner.core.impl.heuristic.move.AbstractMove
doMove, doMoveOnly, rebaseArray, rebaseList
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.optaplanner.core.impl.heuristic.move.Move
getPlanningEntities, getPlanningValues, rebase
-
-
-
-
Constructor Detail
-
ListUnassignMove
public ListUnassignMove(ListVariableDescriptor<Solution_> variableDescriptor, Object sourceEntity, int sourceIndex)
-
-
Method Detail
-
isMoveDoable
public boolean isMoveDoable(ScoreDirector<Solution_> scoreDirector)
Description copied from interface:Move
Called before a move is evaluated to decide whether the move can be done and evaluated. A Move is not doable if:- Either doing it would change nothing in the
PlanningSolution
. - Either it's simply not possible to do (for example due to built-in hard constraints).
It is recommended to keep this method implementation simple: do not use it in an attempt to satisfy normal hard and soft constraints.
Although you could also filter out non-doable moves in for example the
MoveSelector
orMoveListFactory
, this is not needed as theSolver
will do it for you.- Parameters:
scoreDirector
- theScoreDirector
not yet modified by the move.- Returns:
- true if the move achieves a change in the solution and the move is possible to do on the solution.
- Either doing it would change nothing in the
-
createUndoMove
public AbstractMove<Solution_> createUndoMove(ScoreDirector<Solution_> scoreDirector)
Description copied from class:AbstractMove
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.- Specified by:
createUndoMove
in classAbstractMove<Solution_>
- Parameters:
scoreDirector
- theScoreDirector
not yet modified by the move.- Returns:
- an undoMove which does the exact opposite of this move.
-
doMoveOnGenuineVariables
protected void doMoveOnGenuineVariables(ScoreDirector<Solution_> scoreDirector)
Description copied from class:AbstractMove
LikeAbstractMove.doMoveOnly(ScoreDirector)
but without theScoreDirector.triggerVariableListeners()
call (becauseAbstractMove.doMoveOnly(ScoreDirector)
already does that).- Specified by:
doMoveOnGenuineVariables
in classAbstractMove<Solution_>
- Parameters:
scoreDirector
- never null
-
getSimpleMoveTypeDescription
public String getSimpleMoveTypeDescription()
Description copied from interface:Move
Describes the move type for statistical purposes. For example "ChangeMove(Process.computer)".The format is not formalized. Never parse the
String
returned by this method.- Returns:
- never null
-
-