org.jgap.supergenes
Interface Supergene

All Superinterfaces:
java.lang.Comparable, Gene, java.io.Serializable
All Known Implementing Classes:
abstractSupergene

public interface Supergene
extends Gene

Supergene represents several genes, which usually control closely related aspects of the phenotype. The Supergene mutates only in such way, that the allele combination remains valid. Mutations, that make allele combination invalid, are rejected inside Gene.applyMutation(int, double) method. Supergene components can also be a Supergenes, creating the tree-like structures in this way.

In biology, the invalid combinations represents completely broken metabolic chains, unbalanced signaling pathways (activator without supressor) and so on.

At least about 5 % of the randomly generated Supergene suparallele values should be valid. If the valid combinations represents too small part of all possible combinations, it can take too long to find the suitable mutation that does not brake a supergene. If you face this problem, try to split the supergene into several sub-supergenes.

Author:
Audrius Meskauskas

Field Summary
static java.lang.String CVS_REVISION
          String containing the CVS revision.
 
Fields inherited from interface org.jgap.Gene
PERSISTENT_FIELD_DELIMITER
 
Method Summary
 Gene getGene(int index)
          Returns the Gene at the given index (locus) within the Supergene.
 Gene[] getGenes()
          Get the array of genes - components of this supergene.
 supergeneValidator getValidator()
          Gets an object, responsible for deciding if the Supergene allele combination is valid.
 boolean isValid()
          Test the allele combination of this supergene for validity.
 void setValidator(supergeneValidator a_validator)
          Sets an object, responsible for deciding if the Supergene allele combination is valid.
 
Methods inherited from interface org.jgap.Gene
applyMutation, cleanup, getAllele, getPersistentRepresentation, newGene, setAllele, setToRandomValue, setValueFromPersistentRepresentation, size, toString
 
Methods inherited from interface java.lang.Comparable
compareTo
 

Field Detail

CVS_REVISION

public static final java.lang.String CVS_REVISION
String containing the CVS revision. Read out via reflection!

See Also:
Constant Field Values
Method Detail

isValid

public boolean isValid()
Test the allele combination of this supergene for validity. If a validator was previously set be calling setValidator(), the decission is delegated to this validator. The derived classes may have internal default validator for the case when no external validator is set.

Returns:
true only if the supergene allele combination is valid.
See Also:
in the interface header. *

getGenes

public Gene[] getGenes()
Get the array of genes - components of this supergene. The supergene components may be supergenes itself.


getGene

public Gene getGene(int index)
Returns the Gene at the given index (locus) within the Supergene. The first gene is at index zero and the last gene is at the index equal to the size of this Supergene - 1.

Returns:
The Gene at the given index.

setValidator

public void setValidator(supergeneValidator a_validator)
Sets an object, responsible for deciding if the Supergene allele combination is valid. If it is set to null, no validation is performed (all combinations are assumed to be valid). The derived classes may have internal default validator for the case when no external validator is set.


getValidator

public supergeneValidator getValidator()
Gets an object, responsible for deciding if the Supergene allele combination is valid. If no external validator was set and the class uses its own internal validation method, it still must be able to return a validator, using the same method (typicallly, such classes just return this.