Class ListUnassignMove<Solution_>
- java.lang.Object
-
- ai.timefold.solver.core.impl.heuristic.move.AbstractMove<Solution_>
-
- ai.timefold.solver.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 voiddoMoveOnGenuineVariables(ScoreDirector<Solution_> scoreDirector)LikeAbstractMove.doMoveOnly(ScoreDirector)but without theScoreDirector.triggerVariableListeners()call (becauseAbstractMove.doMoveOnly(ScoreDirector)already does that).booleanequals(Object o)StringgetSimpleMoveTypeDescription()Describes the move type for statistical purposes.inthashCode()booleanisMoveDoable(ScoreDirector<Solution_> scoreDirector)Called before a move is evaluated to decide whether the move can be done and evaluated.StringtoString()-
Methods inherited from class ai.timefold.solver.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 ai.timefold.solver.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:MoveCalled 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
MoveSelectororMoveListFactory, this is not needed as theSolverwill do it for you.- Parameters:
scoreDirector- theScoreDirectornot 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:AbstractMoveCalled 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:
createUndoMovein classAbstractMove<Solution_>- Parameters:
scoreDirector- theScoreDirectornot 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:AbstractMoveLikeAbstractMove.doMoveOnly(ScoreDirector)but without theScoreDirector.triggerVariableListeners()call (becauseAbstractMove.doMoveOnly(ScoreDirector)already does that).- Specified by:
doMoveOnGenuineVariablesin classAbstractMove<Solution_>- Parameters:
scoreDirector- never null
-
getSimpleMoveTypeDescription
public String getSimpleMoveTypeDescription()
Description copied from interface:MoveDescribes the move type for statistical purposes. For example "ChangeMove(Process.computer)".The format is not formalized. Never parse the
Stringreturned by this method.- Returns:
- never null
-
-