Documentation of 'org.jgap.impl.CompositeGene' Java class
CompositeGene
org.jgap.impl

Class CompositeGene

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Comparable, Gene, IBusinessKey, ICompositeGene, IPersistentRepresentation, IUniqueKey


    public class CompositeGene
    extends BaseGene
    implements ICompositeGene, IPersistentRepresentation
    Ordered container for multiple genes Has the same interface as a single gene and could be used accordingly. Use the addGene(Gene) method to add single genes (possibly CompositeGenes) after construction, an empty CompositeGene without genes makes no sense. Beware that there are two equalities defined for a CompositeGene in respect to its contained genes: a) Two genes are (only) equal if they are identical b) Two genes are (seen as) equal if their equals method returns true This influences several methods such as addGene. Notice that it is safer to use addGene(a_gene, false) than addGene(a_gene, true) because the second variant only allows to add genes not seen as equal to already added genes in respect to their equals function. But: the equals function returns true for two different DoubleGenes (e.g.) just after their creation. If no specific (and hopefully different) allele is set for these DoubleGenes they are seen as equal!
    Since:
    1.1
    See Also:
    Serialized Form
    • Field Detail

      • GENE_DELIMITER

        public static final java.lang.String GENE_DELIMITER
        This field separates gene class name from the gene persistent representation string. '*' does not work properly with URLEncoder!
        See Also:
        Constant Field Values
      • GENE_DELIMITER_HEADING

        public static final java.lang.String GENE_DELIMITER_HEADING
        Represents the heading delimiter that is used to separate genes in the persistent representation of CompositeGene instances.
        See Also:
        Constant Field Values
      • GENE_DELIMITER_CLOSING

        public static final java.lang.String GENE_DELIMITER_CLOSING
        Represents the closing delimiter that is used to separate genes in the persistent representation of CompositeGene instances.
        See Also:
        Constant Field Values
    • Method Detail

      • addGene

        public void addGene(Gene a_gene)
        Adds a gene to the CompositeGene.
        Specified by:
        addGene in interface ICompositeGene
        Parameters:
        a_gene - the gene to add
      • getGeneTypeAllowed

        public Gene getGeneTypeAllowed()
        Returns:
        the gene type allowed, or null if any type allowed
        Since:
        2.4
      • addGene

        public void addGene(Gene a_gene,
                            boolean a_strict)
        Adds a gene to the CompositeGene's container. See comments in class header for additional details about equality (concerning "strict" param.)
        Parameters:
        a_gene - the gene to be added
        a_strict - false: add the given gene except the gene itself already is contained within the CompositeGene's container. true: add the gene if there is no other gene being equal to the given gene in request to the Gene's equals method
        Since:
        1.1
      • removeGeneByIdentity

        public boolean removeGeneByIdentity(Gene a_gene)
        Removes the given gene from the collection of genes. The gene is only removed if an object of the same identity is contained. The equals method is not used here intentionally.
        Parameters:
        a_gene - the gene to be removed
        Returns:
        true: given gene found and removed
        Since:
        1.1
      • removeGene

        public boolean removeGene(Gene a_gene)
        Removes the given gene from the collection of genes. The gene is removed if another gene exists that is equal to the given gene in respect to the equals method of the gene.
        Parameters:
        a_gene - the gene to be removed
        Returns:
        true: given gene found and removed
        Since:
        1.1
      • cleanup

        public void cleanup()
        Executed by the genetic engine when this Gene instance is no longer needed and should perform any necessary resource cleanup.
        Specified by:
        cleanup in interface Gene
        Overrides:
        cleanup in class BaseGene
        Since:
        1.1
      • setToRandomValue

        public void setToRandomValue(RandomGenerator a_numberGenerator)
        See interface Gene for description.
        Specified by:
        setToRandomValue in interface Gene
        Parameters:
        a_numberGenerator - the random number generator that should be used to create any random values. It's important to use this generator to maintain the user's flexibility to configure the genetic engine to use the random number generator of their choice
        Since:
        1.1
      • getPersistentRepresentation

        public java.lang.String getPersistentRepresentation()
                                                     throws java.lang.UnsupportedOperationException
        See interface Gene for description.
        Specified by:
        getPersistentRepresentation in interface Gene
        Specified by:
        getPersistentRepresentation in interface IPersistentRepresentation
        Returns:
        string representation of this Gene's current state
        Throws:
        java.lang.UnsupportedOperationException
        Since:
        1.1
      • getAllele

        public java.lang.Object getAllele()
        Retrieves the value represented by this Gene. All values returned by this class will be Vector instances. Each element of the Vector represents the allele of the corresponding gene in the CompositeGene's container
        Specified by:
        getAllele in interface Gene
        Overrides:
        getAllele in class BaseGene
        Returns:
        the value of this Gene
        Since:
        1.1
      • setAllele

        public void setAllele(java.lang.Object a_newValue)
        Sets the value of the contained Genes to the new given value. This class expects the value to be of a Vector type. Each element of the Vector must conform with the type of the gene in the CompositeGene's container at the corresponding position.
        Specified by:
        setAllele in interface Gene
        Parameters:
        a_newValue - the new value of this Gene instance
        Since:
        1.1
      • compareTo

        public int compareTo(java.lang.Object a_other)
        Compares this CompositeGene with the specified object for order. A false value is considered to be less than a true value. A null value is considered to be less than any non-null value.
        Specified by:
        compareTo in interface java.lang.Comparable
        Parameters:
        a_other - the CompositeGene to be compared
        Returns:
        a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object
        Throws:
        java.lang.ClassCastException - if the specified object's type prevents it from being compared to this CompositeGene
        Since:
        1.1
      • toString

        public java.lang.String toString()
        Retrieves a string representation of this CompositeGene's value that may be useful for display purposes.
        Specified by:
        toString in interface Gene
        Overrides:
        toString in class BaseGene
        Returns:
        string representation of this CompositeGene's value. Every contained gene's string representation is delimited by the given delimiter
        Since:
        1.1
      • isEmpty

        public boolean isEmpty()
        Returns:
        true: no genes contained, false otherwise
        Since:
        1.1
      • geneAt

        public Gene geneAt(int a_index)
        Specified by:
        geneAt in interface ICompositeGene
        Parameters:
        a_index - index to return the gene at
        Returns:
        the gene at the given index
        Since:
        1.1
      • getGenes

        public java.util.List<Gene> getGenes()
        Returns:
        list of genes contained in the CompositeGene
        Since:
        3.2.2
      • size

        public int size()
        Specified by:
        size in interface Gene
        Overrides:
        size in class BaseGene
        Returns:
        the number of genes contained
        Since:
        1.1
      • containsGeneByIdentity

        public boolean containsGeneByIdentity(Gene gene)
        Checks whether a specific gene is already contained. The determination will be done by checking for identity and not using the equal method!
        Parameters:
        gene - the gene under test
        Returns:
        true: the given gene object is contained
        Since:
        1.1
      • applyMutation

        public void applyMutation(int a_index,
                                  double a_percentage)
        Don't use this method, is makes no sense here. It is just there to satisfy the Gene interface. Instead, loop over all contained genes and call their applyMutation method.
        Specified by:
        applyMutation in interface Gene
        Parameters:
        a_index - does not matter here
        a_percentage - does not matter here
        Since:
        1.1
      • hashCode

        public int hashCode()
        Retrieves the hash code value for this Gene.
        Overrides:
        hashCode in class BaseGene
        Returns:
        this Gene's hash code
        Since:
        2.2

DMelt 3.0 © DataMelt by jWork.ORG

You see the box below because you did not login.