JGAP

org.jgap.supergenes
Interface Supergene

All Superinterfaces:
java.lang.Comparable, Gene, ICompositeGene, IUniqueKey, java.io.Serializable
All Known Implementing Classes:
AbstractSupergene, NickelsPenniesSupergene

public interface Supergene
extends Gene, ICompositeGene

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 Supergene, creating the tree-like structures in this way.

In biology, the invalid combinations represent 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.


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 geneAt(int a_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.ICompositeGene
addGene
 
Methods inherited from interface org.jgap.Gene
applyMutation, cleanup, getAllele, getApplicationData, getConfiguration, getEnergy, getPersistentRepresentation, isCompareApplicationData, newGene, setAllele, setApplicationData, setCompareApplicationData, setConstraintChecker, setEnergy, setToRandomValue, setValueFromPersistentRepresentation, size, toString
 
Methods inherited from interface java.lang.Comparable
compareTo
 
Methods inherited from interface org.jgap.IUniqueKey
getUniqueID, getUniqueIDTemplate, setUniqueIDTemplate
 

Field Detail

CVS_REVISION

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

See Also:
Constant Field Values
Method Detail

isValid

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. See note in the interface header.

Returns:
true only if the supergene allele combination is valid

getGenes

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


geneAt

Gene geneAt(int a_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.

Specified by:
geneAt in interface ICompositeGene
Parameters:
a_index - the index of the gene value to be returned
Returns:
the Gene at the given index

setValidator

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

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.


JGAP