simbad.picoevo.ext.evolution
Class VariationOperator_Individual_SDNEAT_MutationSegmentDuplicate
java.lang.Object
simbad.picoevo.core.evolution.Operator
simbad.picoevo.core.evolution.VariationOperator
simbad.picoevo.ext.evolution.VariationOperator_Individual_SDNEAT_MutationSegmentDuplicate
- All Implemented Interfaces:
- java.lang.Cloneable
public class VariationOperator_Individual_SDNEAT_MutationSegmentDuplicate
- extends VariationOperator
Fields inherited from class simbad.picoevo.core.evolution.Operator |
_name |
Methods inherited from class simbad.picoevo.core.evolution.Operator |
getName |
Methods inherited from class java.lang.Object |
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
mutationRateSD
protected double mutationRateSD
innovationList
protected Population_NEATPopulation_InnovationList innovationList
maxSDMutationAttempt
protected int maxSDMutationAttempt
abortSD
protected boolean abortSD
completeSD
protected boolean completeSD
rand
java.util.Random rand
VariationOperator_Individual_SDNEAT_MutationSegmentDuplicate
public VariationOperator_Individual_SDNEAT_MutationSegmentDuplicate(java.lang.String __name)
VariationOperator_Individual_SDNEAT_MutationSegmentDuplicate
public VariationOperator_Individual_SDNEAT_MutationSegmentDuplicate(java.lang.String __name,
double rate)
VariationOperator_Individual_SDNEAT_MutationSegmentDuplicate
public VariationOperator_Individual_SDNEAT_MutationSegmentDuplicate(java.lang.String __name,
Population_NEATPopulation_InnovationList _innovationList,
int _maxSDMutationAttempt)
VariationOperator_Individual_SDNEAT_MutationSegmentDuplicate
public VariationOperator_Individual_SDNEAT_MutationSegmentDuplicate(java.lang.String __name,
double rate,
Population_NEATPopulation_InnovationList _innovationList,
int _maxSDMutationAttempt)
applyOperator
public void applyOperator(EvolutionObject object)
- Perform Segmental Duplication
Definition: A segment contains n nodes, where n is greater than zero and n does not contain input or output nodes.
The segments first link must come from an input node and its last link must lead to an output node.
A segment does not include recurrent links.
Behaviour: This function will attempt to find a path in the network from a random input node to a random
output node. Once a path is found the nodes in that path will be duplicated and inserted as new
innovations along with a set of new links connecting it to the original input and output node. The values from
the original list of nodes should have been copied to the new segment to preserve the original knowledge
but the segment is subject to higher than normal mutation rates as it is hoped the segment might make
a generational quantum leap.
- Specified by:
applyOperator
in class VariationOperator
- Parameters:
object
-
getPathNextRandomNode
private Element_NEAT_LGene getPathNextRandomNode(Element_NEAT_NGene fromNeuron,
Individual_NEATIndividual genome)
alreadyHaveThisNeuronID
private boolean alreadyHaveThisNeuronID(int id,
Individual_NEATIndividual genome)
getElementPosition
private int getElementPosition(int neuronId,
Individual_NEATIndividual genome)
randInt
private int randInt(int x,
int y)