org.jgap.impl
Class FixedBinaryGene
- java.lang.Object
-
- org.jgap.BaseGene
-
- org.jgap.impl.FixedBinaryGene
-
- All Implemented Interfaces:
- java.io.Serializable, java.lang.Comparable, Gene, IBusinessKey, IPersistentRepresentation, IUniqueKey
public class FixedBinaryGene extends BaseGene implements IPersistentRepresentation
A Gene implementation that supports two possible values (alleles, 1 and 0) with a fixed length of alleles.NOTE: Since this Gene implementation only supports two different values (1 and 0), there's only a 50% chance that invocation of the setToRandomValue() method will actually change the value of this Gene (if it has a value). As a result, it may be desirable to use a higher overall mutation rate when this Gene implementation is in use.
Partly adapted stuff from the JAGA (Java API for Genetic Algorithms) package (see jaga).
- Since:
- 2.0
- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from class org.jgap.BaseGene
DELTA, S_APPLICATION_DATA
-
Fields inherited from interface org.jgap.Gene
PERSISTENT_FIELD_DELIMITER
-
-
Constructor Summary
Constructors Constructor and Description FixedBinaryGene(Configuration a_config, FixedBinaryGene a_toCopy)FixedBinaryGene(Configuration a_config, int a_length)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method and Description voidapplyMutation(int a_index, double a_percentage)Applies a mutation of a given intensity (percentage) onto the atomic element at given indexjava.lang.Objectclone()intcompareTo(java.lang.Object a_other)Compares this Gene with the specified object for order.voidflip(int a_index)java.lang.ObjectgetAllele()Retrieves the allele value represented by this Gene.booleangetBit(int a_index)java.lang.StringgetBusinessKey()int[]getIntValues()intgetLength()java.lang.StringgetPersistentRepresentation()Returns a persistent representation of an entity (such as a chromosome or a gene).inthashCode()Modified hashCode() function to return different hashcodes for differently ordered genes in a chromosome --> does not work as internal value always initialized!voidsetAllele(java.lang.Object a_newValue)Sets the value of this Gene to the new given value.voidsetBit(int a_index, boolean a_value)voidsetBit(int a_index, int a_value)voidsetBit(int a_from, int a_to, boolean a_value)voidsetBit(int a_from, int a_to, FixedBinaryGene a_values)voidsetToRandomValue(RandomGenerator a_numberGenerator)Sets the value of this Gene to a random legal value for the implementation.voidsetUnchecked(int a_index, boolean a_value)voidsetValueFromPersistentRepresentation(java.lang.String a_representation)Sets the value and internal state of this Gene from the string representation returned by a previous invocation of the getPersistentRepresentation() method.intsize()FixedBinaryGenesubstring(int a_from, int a_to)java.lang.StringtoString()Retrieves a string representation of this Gene's value that may be useful for display purposes.-
Methods inherited from class org.jgap.BaseGene
cleanup, equals, getApplicationData, getConfiguration, getConstraintChecker, getEnergy, getUniqueID, getUniqueIDTemplate, isCompareApplicationData, newGene, setApplicationData, setCompareApplicationData, setConstraintChecker, setEnergy, setUniqueIDTemplate
-
-
-
-
Constructor Detail
-
FixedBinaryGene
public FixedBinaryGene(Configuration a_config, int a_length) throws InvalidConfigurationException
- Parameters:
a_config- the configuration to usea_length- the fixed length of the gene- Throws:
InvalidConfigurationException- Since:
- 2.0
-
FixedBinaryGene
public FixedBinaryGene(Configuration a_config, FixedBinaryGene a_toCopy) throws InvalidConfigurationException
- Throws:
InvalidConfigurationException
-
-
Method Detail
-
getLength
public int getLength()
-
clone
public java.lang.Object clone()
- Overrides:
clonein classjava.lang.Object
-
setAllele
public void setAllele(java.lang.Object a_newValue)
Description copied from interface:GeneSets the value of this Gene to the new given value. The actual type of the value is implementation-dependent.
-
getAllele
public java.lang.Object getAllele()
Description copied from class:BaseGeneRetrieves the allele value represented by this Gene.
-
getIntValues
public int[] getIntValues()
- Returns:
- internal representation of the gene's state. Use getBit for reading bits!
-
getBit
public boolean getBit(int a_index)
-
setBit
public void setBit(int a_index, boolean a_value)
-
setBit
public void setBit(int a_index, int a_value)
-
setBit
public void setBit(int a_from, int a_to, boolean a_value)
-
setBit
public void setBit(int a_from, int a_to, FixedBinaryGene a_values)
-
substring
public FixedBinaryGene substring(int a_from, int a_to)
-
flip
public void flip(int a_index)
-
setUnchecked
public void setUnchecked(int a_index, boolean a_value)
-
getPersistentRepresentation
public java.lang.String getPersistentRepresentation()
Description copied from interface:IPersistentRepresentationReturns a persistent representation of an entity (such as a chromosome or a gene).- Specified by:
getPersistentRepresentationin interfaceGene- Specified by:
getPersistentRepresentationin interfaceIPersistentRepresentation- Returns:
- string representation of current state
-
setValueFromPersistentRepresentation
public void setValueFromPersistentRepresentation(java.lang.String a_representation) throws UnsupportedRepresentationExceptionSets the value and internal state of this Gene from the string representation returned by a previous invocation of the getPersistentRepresentation() method. This is an optional method but, if not implemented, XML persistence and possibly other features will not be available. An UnsupportedOperationException should be thrown if no implementation is provided.- Specified by:
setValueFromPersistentRepresentationin interfaceGene- Specified by:
setValueFromPersistentRepresentationin interfaceIPersistentRepresentation- Parameters:
a_representation- the string representation retrieved from a prior call to the getPersistentRepresentation() method- Throws:
UnsupportedRepresentationException- if this Gene implementation does not support the given string representation- Since:
- 2.0
-
setToRandomValue
public void setToRandomValue(RandomGenerator a_numberGenerator)
Description copied from interface:GeneSets the value of this Gene to a random legal value for the implementation. This method exists for the benefit of mutation and other operations that simply desire to randomize the value of a gene.- Specified by:
setToRandomValuein interfaceGene- 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
-
toString
public java.lang.String toString()
Description copied from class:BaseGeneRetrieves a string representation of this Gene's value that may be useful for display purposes.
-
getBusinessKey
public java.lang.String getBusinessKey()
- Specified by:
getBusinessKeyin interfaceIBusinessKey- Overrides:
getBusinessKeyin classBaseGene- Returns:
- business key
-
size
public int size()
-
applyMutation
public void applyMutation(int a_index, double a_percentage)Applies a mutation of a given intensity (percentage) onto the atomic element at given index- Specified by:
applyMutationin interfaceGene- Parameters:
a_index- index of atomic element, between 0 and size()-1a_percentage- percentage of mutation (greater than -1 and smaller than 1)- Since:
- 2.0
-
compareTo
public int compareTo(java.lang.Object a_other)
Compares this Gene with the specified object for order. A 0 value is considered to be less than a 1 value. A null value is considered to be less than any non-null value. A Gene is greater than another one of the same length if it has more 1's than the other one. If there is the same number of 1's the Gene with the highest value (binary to int) is greater.- Specified by:
compareToin interfacejava.lang.Comparable- Parameters:
a_other- the FixedBinaryGene 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 Gene- Since:
- 2.0
-
-
DMelt 3.0 © DataMelt by jWork.ORG