public class ShuffleCluster extends TreeMutationAbstract implements EvolutionaryOperator<NAryTree>
changedAtLastCall, locationOfLastChange, MAXTRIES, registry, typeOfChange
Constructor and Description |
---|
ShuffleCluster(CentralRegistry registry) |
Modifier and Type | Method and Description |
---|---|
java.util.List<NAryTree> |
apply(java.util.List<NAryTree> selectedCandidates,
java.util.Random rng)
Apply the operation to each entry in the list of selected
candidates.
|
java.lang.String |
getKey()
Each tree mutation should define a unique key to be used to identify the
algorithm in maps and such
|
NAryTree |
mutate(NAryTree tree,
int node)
Mutates the given node (only use if you need to mutate a specific sub
tree, not beeing the whole tree).
|
NAryTree |
mutate(NAryTree tree,
int node,
boolean maintainBehavior)
Shuffles a selected cluster
|
changedAtLastCall, didChange, locationOfLastChange, mutate, noChange
public ShuffleCluster(CentralRegistry registry)
public java.util.List<NAryTree> apply(java.util.List<NAryTree> selectedCandidates, java.util.Random rng)
EvolutionaryOperator
Apply the operation to each entry in the list of selected candidates. It is important to note that this method operates on the list of candidates returned by the selection strategy and not on the current population. Each entry in the list (not each individual - the list may contain the same individual more than once) must be operated on exactly once.
Implementing classes should not assume any particular ordering (or lack of ordering) for the selection. If ordering or shuffling is required, it should be performed by the implementing class. The implementation should not re-order the list provided but instead should make a copy of the list and re-order that. The ordering of the selection should be totally irrelevant for operators that process each candidate in isolation, such as mutation. It should only be an issue for operators, such as cross-over, that deal with multiple candidates in a single operation.
The operator should not modify any of the candidates passed in. Instead it should return a list that contains evolved copies of those candidates (umodified candidates can be included in the results without having to be copied).
apply
in interface EvolutionaryOperator<NAryTree>
selectedCandidates
- The individuals to evolve.rng
- A source of randomness for stochastic operators (most
operators will be stochastic).public NAryTree mutate(NAryTree tree, int node)
TreeMutationAbstract
mutate
in class TreeMutationAbstract
node
- Node to mutate onpublic NAryTree mutate(NAryTree tree, int node, boolean maintainBehavior)
node
- node from which to select a clustermaintainBehavior
- If true then the behavior is not changed (SEQ and LOOP are
left alone)public java.lang.String getKey()
TreeMutationAbstract
getKey
in class TreeMutationAbstract
TreeMutationAbstract.getKey()