Package io.jenetics
Class BitChromosome
- java.lang.Object
-
- java.lang.Number
-
- io.jenetics.BitChromosome
-
- All Implemented Interfaces:
Chromosome<BitGene>
,BaseSeq<BitGene>
,Factory<Chromosome<BitGene>>
,Verifiable
,Serializable
,Comparable<BitChromosome>
,Iterable<BitGene>
,RandomAccess
public class BitChromosome extends Number implements Chromosome<BitGene>, Comparable<BitChromosome>, Serializable
Implementation of the classical BitChromosome.- Since:
- 1.0
- Version:
- 6.1
- See Also:
BitGene
, Serialized Form- Implementation Requirements:
- This class is immutable and thread-safe.
-
-
Constructor Summary
Constructors Constructor Description BitChromosome(byte[] bits)
Create a newBitChromosome
from the givenbyte
array.BitChromosome(byte[] bits, int start, int end)
Create a new bit chromosome from the given bit (byte) array.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description int
bitCount()
Returns the number of bits set to true in thisBitChromosome
.boolean
booleanValue()
Return the value of the first gene of this chromosome.boolean
booleanValue(int index)
Return the value on the specified index.int
compareTo(BitChromosome that)
double
doubleValue()
Return the double value this BitChromosome represents.boolean
equals(Object obj)
float
floatValue()
Return the float value this BitChromosome represents.BitGene
gene()
Return the first gene of this chromosome.BitGene
get(int index)
Return the value at the givenindex
.int
hashCode()
int
intValue()
Return the long value this BitChromosome represents.BitChromosome
invert()
Invert the ones and zeros of this bit chromosome.boolean
isValid()
Return alwaystrue
.int
length()
Return the length of this sequence.ListIterator<BitGene>
listIterator()
Return a list iterator over the bit-genes of this chromosome.long
longValue()
Return the long value this BitChromosome represents.BitChromosome
map(Function<? super BitSet,? extends BitSet> f)
Maps the gene alleles of this chromosome, given asBitSet
, by applying the given mapper functionf
.BitChromosome
newInstance()
Create a new instance of type T.BitChromosome
newInstance(ISeq<BitGene> genes)
A factory method which creates a newChromosome
of specific type and the givengenes
.static BitChromosome
of(int length)
Constructing a new BitChromosome with the given _length.static BitChromosome
of(int length, double p)
Construct a new BitChromosome with the given _length.static BitChromosome
of(CharSequence value)
Create a newBitChromosome
from the given character sequence containing '0' and '1'; as created with thetoCanonicalString()
method.static BitChromosome
of(CharSequence value, double p)
Create a newBitChromosome
from the given character sequence containing '0' and '1'; as created with thetoCanonicalString()
method.static BitChromosome
of(CharSequence value, int length, double p)
Create a newBitChromosome
from the given character sequence containing '0' and '1'; as created with thetoCanonicalString()
method.static BitChromosome
of(BigInteger value)
Create a newBitChromosome
from the given big integer value.static BitChromosome
of(BigInteger value, double p)
Create a newBitChromosome
from the given big integer value and ones probability.static BitChromosome
of(BitSet bits)
Deprecated, for removal: This API element is subject to removal in a future version.This method doesn't let you control the actual length of the createdBitChromosome
.static BitChromosome
of(BitSet bits, int length)
Create a newBitChromosome
with the given parameters.static BitChromosome
of(BitSet bits, int length, double p)
Create a newBitChromosome
with the given parameters.double
oneProbability()
Return the one probability of this chromosome.IntStream
ones()
Return the indexes of the ones of this bit-chromosome as stream.BigInteger
toBigInteger()
Return theBigInteger
value thisBitChromosome
represents.BitSet
toBitSet()
Return the corresponding BitSet of this BitChromosome.byte[]
toByteArray()
int
toByteArray(byte[] bytes)
Returns the two's-complement binary representation of this large integer.String
toCanonicalString()
Return the BitChromosome as String.String
toString()
IntStream
zeros()
Return the indexes of the zeros of this bit-chromosome as stream.-
Methods inherited from class java.lang.Number
byteValue, shortValue
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface io.jenetics.util.BaseSeq
forEach, isEmpty, iterator, nonEmpty, spliterator, stream
-
Methods inherited from interface io.jenetics.Chromosome
as
-
-
-
-
Constructor Detail
-
BitChromosome
public BitChromosome(byte[] bits, int start, int end)
Create a new bit chromosome from the given bit (byte) array.- Parameters:
bits
- the bit values of the new chromosome gene.start
- the initial (bit) index of the range to be copied, inclusiveend
- the final (bit) index of the range to be copied, exclusive. (This index may lie outside the array.)- Throws:
ArrayIndexOutOfBoundsException
- ifstart < 0
orstart > bits.length*8
IllegalArgumentException
- ifstart > end
NullPointerException
- if thebits
array isnull
.
-
BitChromosome
public BitChromosome(byte[] bits)
Create a newBitChromosome
from the givenbyte
array. This is a shortcut fornew BitChromosome(bits, 0, bits.length*8)
.- Parameters:
bits
- thebyte
array.
-
-
Method Detail
-
oneProbability
public double oneProbability()
Return the one probability of this chromosome.- Returns:
- the one probability of this chromosome.
- Since:
- 5.2
-
gene
public BitGene gene()
Description copied from interface:Chromosome
Return the first gene of this chromosome. Each chromosome must contain at least one gene.- Specified by:
gene
in interfaceChromosome<BitGene>
- Returns:
- the first gene of this chromosome.
-
booleanValue
public boolean booleanValue()
Return the value of the first gene of this chromosome.- Returns:
- the first value of this chromosome.
- Since:
- 4.2
-
get
public BitGene get(int index)
Description copied from interface:BaseSeq
Return the value at the givenindex
.
-
length
public int length()
Description copied from interface:BaseSeq
Return the length of this sequence. Once the sequence is created, the length can't be changed.
-
booleanValue
public boolean booleanValue(int index)
Return the value on the specified index.- Parameters:
index
- the gene index- Returns:
- the wanted gene value
- Throws:
IndexOutOfBoundsException
- if the index is out of range (index < 1 || index >= length()).- Since:
- 4.2
-
bitCount
public int bitCount()
Returns the number of bits set to true in thisBitChromosome
.- Returns:
- the number of bits set to true in this
BitChromosome
-
listIterator
public ListIterator<BitGene> listIterator()
Return a list iterator over the bit-genes of this chromosome.- Specified by:
listIterator
in interfaceBaseSeq<BitGene>
- Returns:
- a list iterator over the bit-genes of this chromosome
-
intValue
public int intValue()
Return the long value this BitChromosome represents.
-
longValue
public long longValue()
Return the long value this BitChromosome represents.
-
floatValue
public float floatValue()
Return the float value this BitChromosome represents.- Specified by:
floatValue
in classNumber
- Returns:
- float value this BitChromosome represents.
-
doubleValue
public double doubleValue()
Return the double value this BitChromosome represents.- Specified by:
doubleValue
in classNumber
- Returns:
- double value this BitChromosome represents.
-
isValid
public boolean isValid()
Return alwaystrue
.- Specified by:
isValid
in interfaceChromosome<BitGene>
- Specified by:
isValid
in interfaceVerifiable
- Returns:
true
, always
-
toBigInteger
public BigInteger toBigInteger()
Return theBigInteger
value thisBitChromosome
represents.- Returns:
BigInteger
value thisBitChromosome
represents.
-
toByteArray
public int toByteArray(byte[] bytes)
Returns the two's-complement binary representation of this large integer. The output array is in big-endian byte-order: the most significant byte is at the offset position.Note: This representation is consistent with
java.lang.BigInteger
byte array representation and can be used for conversion between the two classes.- Parameters:
bytes
- the bytes to hold the binary representation (two's-complement) of this large integer.- Returns:
- the number of bytes written.
- Throws:
IndexOutOfBoundsException
- ifbytes.length < (int)Math.ceil(length()/8.0)
NullPointerException
- it the give array isnull
.
-
toByteArray
public byte[] toByteArray()
- Returns:
- a byte array which represents this
BitChromosome
. The length of the array is(int)Math.ceil(length()/8.0)
. - See Also:
toByteArray(byte[])
-
toBitSet
public BitSet toBitSet()
Return the corresponding BitSet of this BitChromosome.- Returns:
- The corresponding BitSet of this BitChromosome.
-
ones
public IntStream ones()
Return the indexes of the ones of this bit-chromosome as stream.- Returns:
- the indexes of the ones of this bit-chromosome
- Since:
- 3.0
-
zeros
public IntStream zeros()
Return the indexes of the zeros of this bit-chromosome as stream.- Returns:
- the indexes of the zeros of this bit-chromosome
- Since:
- 3.0
-
newInstance
public BitChromosome newInstance(ISeq<BitGene> genes)
Description copied from interface:Chromosome
A factory method which creates a newChromosome
of specific type and the givengenes
.- Specified by:
newInstance
in interfaceChromosome<BitGene>
- Parameters:
genes
- the genes of the new chromosome. The given genes array is not copied.- Returns:
- A new
Chromosome
of the same type with the given genes.
-
newInstance
public BitChromosome newInstance()
Description copied from interface:Factory
Create a new instance of type T.- Specified by:
newInstance
in interfaceFactory<Chromosome<BitGene>>
- Returns:
- a new instance of type T
-
map
public BitChromosome map(Function<? super BitSet,? extends BitSet> f)
Maps the gene alleles of this chromosome, given asBitSet
, by applying the given mapper functionf
. The mapped gene values are then wrapped into a newly created chromosome.- Parameters:
f
- the mapper function- Returns:
- a newly created chromosome with the mapped gene values
- Throws:
NullPointerException
- if the mapper function isnull
.- Since:
- 6.1
-
toCanonicalString
public String toCanonicalString()
Return the BitChromosome as String. A TRUE is represented by a 1 and a FALSE by a 0. The returned string can be used to create a new chromosome with theof(CharSequence)
constructor.- Returns:
- String representation (containing only '1' and '0') of the BitChromosome.
-
compareTo
public int compareTo(BitChromosome that)
- Specified by:
compareTo
in interfaceComparable<BitChromosome>
-
invert
public BitChromosome invert()
Invert the ones and zeros of this bit chromosome.- Returns:
- a new BitChromosome with inverted ones and zeros.
-
of
public static BitChromosome of(int length, double p)
Construct a new BitChromosome with the given _length.- Parameters:
length
- Length of the BitChromosome, number of bits.p
- Probability of the TRUEs in the BitChromosome.- Returns:
- a new
BitChromosome
with the given parameter - Throws:
NegativeArraySizeException
- if thelength
is smaller than one.IllegalArgumentException
- ifp
is not a valid probability.
-
of
public static BitChromosome of(int length)
Constructing a new BitChromosome with the given _length. The TRUEs and FALSE in theChromosome
are equally distributed.- Parameters:
length
- Length of the BitChromosome.- Returns:
- a new
BitChromosome
with the given parameter - Throws:
NegativeArraySizeException
- if the_length
is smaller than one.
-
of
public static BitChromosome of(BitSet bits, int length)
Create a newBitChromosome
with the given parameters.- Parameters:
length
- length of the BitChromosome.bits
- the bit-set which initializes the chromosome- Returns:
- a new
BitChromosome
with the given parameter - Throws:
NegativeArraySizeException
- if thelength
is smaller than one.NullPointerException
- if thebitSet
isnull
.
-
of
public static BitChromosome of(BitSet bits, int length, double p)
Create a newBitChromosome
with the given parameters.- Parameters:
length
- length of the BitChromosome.bits
- the bit-set which initializes the chromosomep
- Probability of the TRUEs in the BitChromosome.- Returns:
- a new
BitChromosome
with the given parameter - Throws:
NegativeArraySizeException
- if thelength
is smaller than one.NullPointerException
- if thebitSet
isnull
.IllegalArgumentException
- ifp
is not a valid probability.
-
of
@Deprecated(since="6.1", forRemoval=true) public static BitChromosome of(BitSet bits)
Deprecated, for removal: This API element is subject to removal in a future version.This method doesn't let you control the actual length of the createdBitChromosome
. Useof(BitSet, int, double)
orof(BitSet, int)
instead.Constructing a new BitChromosome from a given BitSet. The BitSet is copied while construction. The length of the constructed BitChromosome will bebitSet.length()
(BitSet.length()
).- Parameters:
bits
- the bit-set which initializes the chromosome- Returns:
- a new
BitChromosome
with the given parameter - Throws:
NullPointerException
- if thebitSet
isnull
.
-
of
public static BitChromosome of(BigInteger value)
Create a newBitChromosome
from the given big integer value.- Parameters:
value
- the value of the createdBitChromosome
- Returns:
- a new
BitChromosome
with the given parameter - Throws:
NullPointerException
- if the givenvalue
isnull
.
-
of
public static BitChromosome of(BigInteger value, double p)
Create a newBitChromosome
from the given big integer value and ones probability.- Parameters:
value
- the value of the createdBitChromosome
p
- Probability of the TRUEs in the BitChromosome.- Returns:
- a new
BitChromosome
with the given parameter - Throws:
NullPointerException
- if the givenvalue
isnull
.IllegalArgumentException
- ifp
is not a valid probability.
-
of
public static BitChromosome of(CharSequence value)
Create a newBitChromosome
from the given character sequence containing '0' and '1'; as created with thetoCanonicalString()
method.- Parameters:
value
- the input string.- Returns:
- a new
BitChromosome
with the given parameter - Throws:
NullPointerException
- if thevalue
isnull
.IllegalArgumentException
- if the length of the character sequence is zero or contains other characters than '0' or '1'.
-
of
public static BitChromosome of(CharSequence value, double p)
Create a newBitChromosome
from the given character sequence containing '0' and '1'; as created with thetoCanonicalString()
method.- Parameters:
value
- the input string.p
- Probability of the TRUEs in the BitChromosome.- Returns:
- a new
BitChromosome
with the given parameter - Throws:
NullPointerException
- if thevalue
isnull
.IllegalArgumentException
- if the length of the character sequence is zero or contains other characters than '0' or '1'.IllegalArgumentException
- ifp
is not a valid probability.
-
of
public static BitChromosome of(CharSequence value, int length, double p)
Create a newBitChromosome
from the given character sequence containing '0' and '1'; as created with thetoCanonicalString()
method.- Parameters:
value
- the input string.length
- length of the BitChromosomep
- Probability of the TRUEs in the BitChromosome.- Returns:
- a new
BitChromosome
with the given parameter - Throws:
NullPointerException
- if thevalue
isnull
.IllegalArgumentException
- if the length of the character sequence is zero or contains other characters than '0' or '1'.IllegalArgumentException
- ifp
is not a valid probability.
-
-