Class SingletonListInverseVariableListener<Solution_>
- java.lang.Object
-
- ai.timefold.solver.core.impl.domain.variable.inverserelation.SingletonListInverseVariableListener<Solution_>
-
- All Implemented Interfaces:
AbstractVariableListener<Solution_,Object>,ListVariableListener<Solution_,Object,Object>,SingletonInverseVariableSupply,Supply,Closeable,AutoCloseable
public class SingletonListInverseVariableListener<Solution_> extends Object implements ListVariableListener<Solution_,Object,Object>, SingletonInverseVariableSupply
-
-
Field Summary
Fields Modifier and Type Field Description protected InverseRelationShadowVariableDescriptor<Solution_>shadowVariableDescriptorprotected ListVariableDescriptor<Solution_>sourceVariableDescriptor
-
Constructor Summary
Constructors Constructor Description SingletonListInverseVariableListener(InverseRelationShadowVariableDescriptor<Solution_> shadowVariableDescriptor, ListVariableDescriptor<Solution_> sourceVariableDescriptor)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidafterEntityAdded(ScoreDirector<Solution_> scoreDirector, Object entity)voidafterEntityRemoved(ScoreDirector<Solution_> scoreDirector, Object entity)voidafterListVariableChanged(ScoreDirector<Solution_> scoreDirector, Object entity, int fromIndex, int toIndex)Tells the listener that some elements within the range starting atfromIndex(inclusive) and ending attoIndex(exclusive) changed.voidafterListVariableElementUnassigned(ScoreDirector<Solution_> scoreDirector, Object element)The listener must unset all shadow variables it is responsible for when an element is unassigned from the source list variable.voidbeforeEntityAdded(ScoreDirector<Solution_> scoreDirector, Object entity)voidbeforeEntityRemoved(ScoreDirector<Solution_> scoreDirector, Object entity)voidbeforeListVariableChanged(ScoreDirector<Solution_> scoreDirector, Object entity, int fromIndex, int toIndex)Tells the listener that some elements within the range starting atfromIndex(inclusive) and ending attoIndex(exclusive) will change.ObjectgetInverseSingleton(Object planningValue)If entity1.varA = x then the inverse of x is entity1.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface ai.timefold.solver.core.api.domain.variable.AbstractVariableListener
close, resetWorkingSolution
-
-
-
-
Field Detail
-
shadowVariableDescriptor
protected final InverseRelationShadowVariableDescriptor<Solution_> shadowVariableDescriptor
-
sourceVariableDescriptor
protected final ListVariableDescriptor<Solution_> sourceVariableDescriptor
-
-
Constructor Detail
-
SingletonListInverseVariableListener
public SingletonListInverseVariableListener(InverseRelationShadowVariableDescriptor<Solution_> shadowVariableDescriptor, ListVariableDescriptor<Solution_> sourceVariableDescriptor)
-
-
Method Detail
-
beforeEntityAdded
public void beforeEntityAdded(ScoreDirector<Solution_> scoreDirector, Object entity)
- Specified by:
beforeEntityAddedin interfaceAbstractVariableListener<Solution_,Object>- Parameters:
scoreDirector- never nullentity- never null
-
afterEntityAdded
public void afterEntityAdded(ScoreDirector<Solution_> scoreDirector, Object entity)
- Specified by:
afterEntityAddedin interfaceAbstractVariableListener<Solution_,Object>- Parameters:
scoreDirector- never nullentity- never null
-
beforeEntityRemoved
public void beforeEntityRemoved(ScoreDirector<Solution_> scoreDirector, Object entity)
- Specified by:
beforeEntityRemovedin interfaceAbstractVariableListener<Solution_,Object>- Parameters:
scoreDirector- never nullentity- never null
-
afterEntityRemoved
public void afterEntityRemoved(ScoreDirector<Solution_> scoreDirector, Object entity)
- Specified by:
afterEntityRemovedin interfaceAbstractVariableListener<Solution_,Object>- Parameters:
scoreDirector- never nullentity- never null
-
afterListVariableElementUnassigned
public void afterListVariableElementUnassigned(ScoreDirector<Solution_> scoreDirector, Object element)
Description copied from interface:ListVariableListenerThe listener must unset all shadow variables it is responsible for when an element is unassigned from the source list variable. For example, aTask'sstartTimeshadow variable must be reset tonullafter a task is unassigned fromEmployee.taskswhen the move that assigned it there is undone during Construction Heuristic phase.- Specified by:
afterListVariableElementUnassignedin interfaceListVariableListener<Solution_,Object,Object>- Parameters:
scoreDirector- score directorelement- the unassigned element
-
beforeListVariableChanged
public void beforeListVariableChanged(ScoreDirector<Solution_> scoreDirector, Object entity, int fromIndex, int toIndex)
Description copied from interface:ListVariableListenerTells the listener that some elements within the range starting atfromIndex(inclusive) and ending attoIndex(exclusive) will change. Be aware that theListVariableListener.afterListVariableChanged(ai.timefold.solver.core.api.score.director.ScoreDirector<Solution_>, Entity_, int, int)call after the change is done often has a differentfromIndexandtoIndexbecause the number of elements in the list variable can change.The list variable change includes:
- Changing position (index) of one or more elements.
- Removing one or more elements from the list variable.
- Adding one or more elements to the list variable.
- Any mix of the above. The range has the following properties:
fromIndexis greater than or equal to 0;toIndexis less than or equal to the list variable size.toIndexis greater than or equal tofromIndex.- The range contains all elements that are going to be changed.
- The range may contain elements that are not going to be changed.
- The range may be empty (
fromIndexequalstoIndex) if none of the existing list variable elements are going to be changed.- Specified by:
beforeListVariableChangedin interfaceListVariableListener<Solution_,Object,Object>- Parameters:
scoreDirector- score directorentity- entity with the changed list variablefromIndex- low endpoint (inclusive) of the changed rangetoIndex- high endpoint (exclusive) of the changed range
-
afterListVariableChanged
public void afterListVariableChanged(ScoreDirector<Solution_> scoreDirector, Object entity, int fromIndex, int toIndex)
Description copied from interface:ListVariableListenerTells the listener that some elements within the range starting atfromIndex(inclusive) and ending attoIndex(exclusive) changed.The list variable change includes:
- Changing position (index) of one or more elements.
- Removing one or more elements from the list variable.
- Adding one or more elements to the list variable.
- Any mix of the above. The range has the following properties:
fromIndexis greater than or equal to 0;toIndexis less than or equal to the list variable size.toIndexis greater than or equal tofromIndex.- The range contains all elements that have changed.
- The range may contain elements that have not changed.
- The range may be empty (
fromIndexequalstoIndex) if none of the existing list variable elements have changed.- Specified by:
afterListVariableChangedin interfaceListVariableListener<Solution_,Object,Object>- Parameters:
scoreDirector- score directorentity- entity with the changed list variablefromIndex- low endpoint (inclusive) of the changed rangetoIndex- high endpoint (exclusive) of the changed range
-
getInverseSingleton
public Object getInverseSingleton(Object planningValue)
Description copied from interface:SingletonInverseVariableSupplyIf entity1.varA = x then the inverse of x is entity1.- Specified by:
getInverseSingletonin interfaceSingletonInverseVariableSupply- Parameters:
planningValue- never null- Returns:
- sometimes null, an entity for which the planning variable is the planningValue.
-
-