Solution_
- the solution type, the class with the PlanningSolution
annotationpublic class PillarSwapMove<Solution_> extends AbstractMove<Solution_>
Move
is not cacheable.Modifier and Type | Field and Description |
---|---|
protected List<Object> |
leftPillar |
protected List<Object> |
rightPillar |
protected List<GenuineVariableDescriptor<Solution_>> |
variableDescriptorList |
Constructor and Description |
---|
PillarSwapMove(List<GenuineVariableDescriptor<Solution_>> variableDescriptorList,
List<Object> leftPillar,
List<Object> rightPillar) |
Modifier and Type | Method and Description |
---|---|
protected void |
appendVariablesToString(StringBuilder s,
List<Object> pillar) |
PillarSwapMove<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)
Like
AbstractMove.doMove(ScoreDirector) but without the ScoreDirector.triggerVariableListeners() call
(because AbstractMove.doMove(ScoreDirector) already does that). |
boolean |
equals(Object o) |
List<Object> |
getLeftPillar() |
Collection<? extends Object> |
getPlanningEntities()
Returns all planning entities that are being changed by this move.
|
Collection<? extends Object> |
getPlanningValues()
Returns all planning values that entities are being assigned to by this move.
|
List<Object> |
getRightPillar() |
String |
getSimpleMoveTypeDescription()
Describes the move type for statistical purposes.
|
List<String> |
getVariableNameList() |
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() |
doMove
protected final List<GenuineVariableDescriptor<Solution_>> variableDescriptorList
public boolean isMoveDoable(ScoreDirector<Solution_> scoreDirector)
Move
PlanningSolution
.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.
scoreDirector
- the ScoreDirector
not yet modified by the move.public PillarSwapMove<Solution_> createUndoMove(ScoreDirector<Solution_> scoreDirector)
AbstractMove
createUndoMove
in class AbstractMove<Solution_>
scoreDirector
- the ScoreDirector
not yet modified by the move.protected void doMoveOnGenuineVariables(ScoreDirector<Solution_> scoreDirector)
AbstractMove
AbstractMove.doMove(ScoreDirector)
but without the ScoreDirector.triggerVariableListeners()
call
(because AbstractMove.doMove(ScoreDirector)
already does that).doMoveOnGenuineVariables
in class AbstractMove<Solution_>
scoreDirector
- never nullpublic String getSimpleMoveTypeDescription()
Move
The format is not formalized. Never parse the String
returned by this method.
getSimpleMoveTypeDescription
in interface Move<Solution_>
getSimpleMoveTypeDescription
in class AbstractMove<Solution_>
public Collection<? extends Object> getPlanningEntities()
Move
AcceptorType.ENTITY_TABU
.
Duplicate entries in the returned Collection
are best avoided.
The returned Collection
is recommended to be in a stable order.
For example: use List
or LinkedHashSet
, but not HashSet
.
public Collection<? extends Object> getPlanningValues()
Move
AcceptorType.VALUE_TABU
.
Duplicate entries in the returned Collection
are best avoided.
The returned Collection
is recommended to be in a stable order.
For example: use List
or LinkedHashSet
, but not HashSet
.
protected void appendVariablesToString(StringBuilder s, List<Object> pillar)
Copyright © 2006–2017 JBoss by Red Hat. All rights reserved.