Interface Move<Solution_>

Type Parameters:
Solution_ - the solution type, the class with the PlanningSolution annotation
All Known Implementing Classes:
AbstractMove, AbstractSimplifiedMove, AbstractUndoMove, ChainedChangeMove, ChainedSwapMove, ChangeMove, CompositeMove, KOptListMove, KOptMove, ListAssignMove, ListChangeMove, ListRuinRecreateMove, ListSwapMove, ListUnassignMove, NoChangeMove, PillarChangeMove, PillarSwapMove, RuinRecreateMove, SubChainChangeMove, SubChainReversingChangeMove, SubChainReversingSwapMove, SubChainSwapMove, SubListChangeMove, SubListSwapMove, SubListUnassignMove, SwapMove, TailChainSwapMove, TwoOptListMove

public interface Move<Solution_>
A Move represents a change of 1 or more PlanningVariables of 1 or more PlanningEntitys in the working PlanningSolution.

Usually the move holds a direct reference to each PlanningEntity of the PlanningSolution which it will change when doMoveOnly(ScoreDirector) is called. On that change it should also notify the ScoreDirector accordingly.

A Move should implement Object.equals(Object) and Object.hashCode() for MoveTabuAcceptor.

An implementation must extend AbstractMove to ensure backwards compatibility in future versions. It is highly recommended to override getPlanningEntities() and getPlanningValues(), otherwise the resulting move will throw an exception when used with Tabu search.

See Also: