org.drools.planner.core.heuristic.selector.move.generic.chained
Class ChainedChangeMove
java.lang.Object
org.drools.planner.core.heuristic.selector.move.generic.ChangeMove
org.drools.planner.core.heuristic.selector.move.generic.chained.ChainedChangeMove
- All Implemented Interfaces:
- Move
public class ChainedChangeMove
- extends ChangeMove
ChainedChangeMove
public ChainedChangeMove(Object entity,
PlanningVariableDescriptor variableDescriptor,
Object toPlanningValue)
isMoveDoable
public boolean isMoveDoable(ScoreDirector 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
Solution
.
- Either it's simply not possible to do (for example due to build-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
or MoveListFactory
, this is not needed as the Solver
will do it for you.
- Specified by:
isMoveDoable
in interface Move
- Overrides:
isMoveDoable
in class ChangeMove
- Parameters:
scoreDirector
- the ScoreDirector
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.
createUndoMove
public Move createUndoMove(ScoreDirector scoreDirector)
- Description copied from interface:
Move
- 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 interface Move
- Overrides:
createUndoMove
in class ChangeMove
- Parameters:
scoreDirector
- the ScoreDirector
not yet modified by the move.
- Returns:
- an undoMove which does the exact opposite of this move.
doMove
public void doMove(ScoreDirector scoreDirector)
- Description copied from interface:
Move
- Does the Move and updates the
Solution
and its ScoreDirector
accordingly.
When the Solution
is modified, the ScoreDirector
should be correctly notified,
otherwise later calculated Score
s can be corrupted.
- Specified by:
doMove
in interface Move
- Overrides:
doMove
in class ChangeMove
- Parameters:
scoreDirector
- never null, the ScoreDirector
that needs to get notified of the changes.
Copyright © 2001-2012 JBoss by Red Hat. All Rights Reserved.