Class ListChangeMoveProvider<Solution_,Entity_,Value_>

java.lang.Object
ai.timefold.solver.core.preview.api.move.builtin.ListChangeMoveProvider<Solution_,Entity_,Value_>
All Implemented Interfaces:
MoveProvider<Solution_>

@NullMarked public class ListChangeMoveProvider<Solution_,Entity_,Value_> extends Object implements MoveProvider<Solution_>
For each unassigned value, creates a move to assign it to some position of some list variable. For each assigned value that is not pinned, creates:
  • A move to unassign it.
  • A move to reassign it to another position if assigned.
To assign or reassign a value, creates:
  • A move for every unpinned value in every entity's list variable to assign the value before that position.
  • A move for every entity to assign it to the last position in the list variable.
This is a generic move provider that works with any list variable; user-defined change move providers needn't be this complex, as they understand the specifics of the domain.