Interface SolutionCloner<Solution_>
- Type Parameters:
- Solution_- the solution type, the class with the- PlanningSolutionannotation
- All Known Subinterfaces:
- PlanningSolution.NullSolutionCloner
- All Known Implementing Classes:
- FieldAccessingSolutionCloner
public interface SolutionCloner<Solution_>
Clones a 
PlanningSolution during planning.
 Used to remember the state of a good PlanningSolution so it can be recalled at a later time
 when the original PlanningSolution is already modified.
 Also used in population based heuristics to increase or repopulate the population.
 Planning cloning is hard: avoid doing it yourself.
An implementing class must be thread-safe after initialization on account of partitioned search using the same cloner on multiple part threads.
- 
Method Summary
- 
Method Details- 
cloneSolutionDoes a planning clone. The returnedPlanningSolutionclone must fulfill these requirements:- The clone must represent the same planning problem.
 Usually it reuses the same instances of the problem facts and problem fact collections as the original.
- The clone must have the same (equal) score as the original.
- The clone must use different, cloned instances of the entities and entity collections.
 If a cloned entity changes, the original must remain unchanged.
 If an entity is added or removed in a cloned PlanningSolution, the originalPlanningSolutionmust remain unchanged.
 This method is thread-safe. - Parameters:
- original- never null, the original- PlanningSolution
- Returns:
- never null, the cloned PlanningSolution
 
- The clone must represent the same planning problem.
 Usually it reuses the same instances of the problem facts and problem fact collections as the 
 
-