Package io.jenetics

Class BitChromosome

    • Field Detail

      • _p

        protected double _p
        The ones probability of the randomly generated Chromosome.
      • _length

        protected final int _length
        The length of the chromosomes (number of bits).
      • _genes

        protected final byte[] _genes
        The boolean array which holds the BitGenes.
    • 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, inclusive
        end - the final (bit) index of the range to be copied, exclusive. (This index may lie outside the array.)
        Throws:
        ArrayIndexOutOfBoundsException - if start < 0 or start > bits.length*8
        IllegalArgumentException - if start > end
        NullPointerException - if the bits array is null.
      • BitChromosome

        public BitChromosome​(byte[] bits)
        Create a new BitChromosome from the given byte array. This is a shortcut for new BitChromosome(bits, 0, bits.length*8).
        Parameters:
        bits - the byte 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 interface Chromosome<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 given index.
        Specified by:
        get in interface BaseSeq<BitGene>
        Parameters:
        index - index of the element to return.
        Returns:
        the value at the given index.
      • 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.
        Specified by:
        length in interface BaseSeq<BitGene>
        Returns:
        the length of this sequence.
      • 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 this BitChromosome.
        Returns:
        the number of bits set to true in this BitChromosome
      • intValue

        public int intValue()
        Return the long value this BitChromosome represents.
        Specified by:
        intValue in class Number
        Returns:
        long value this BitChromosome represents.
      • longValue

        public long longValue()
        Return the long value this BitChromosome represents.
        Specified by:
        longValue in class Number
        Returns:
        long value this BitChromosome represents.
      • floatValue

        public float floatValue()
        Return the float value this BitChromosome represents.
        Specified by:
        floatValue in class Number
        Returns:
        float value this BitChromosome represents.
      • doubleValue

        public double doubleValue()
        Return the double value this BitChromosome represents.
        Specified by:
        doubleValue in class Number
        Returns:
        double value this BitChromosome represents.
      • toBigInteger

        public BigInteger toBigInteger()
        Return the BigInteger value this BitChromosome represents.
        Returns:
        BigInteger value this BitChromosome 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 - if bytes.length < (int)Math.ceil(length()/8.0)
        NullPointerException - it the give array is null.
      • 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
      • map

        public BitChromosome map​(Function<? super BitSet,​? extends BitSet> f)
        Maps the gene alleles of this chromosome, given as BitSet, by applying the given mapper function f. 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 is null.
        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 the of(CharSequence) constructor.
        Returns:
        String representation (containing only '1' and '0') of the 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 the length is smaller than one.
        IllegalArgumentException - if p 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 the Chromosome 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 new BitChromosome 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 the length is smaller than one.
        NullPointerException - if the bitSet is null.
      • of

        public static BitChromosome of​(BitSet bits,
                                       int length,
                                       double p)
        Create a new BitChromosome with the given parameters.
        Parameters:
        length - length of the BitChromosome.
        bits - the bit-set which initializes the chromosome
        p - Probability of the TRUEs in the BitChromosome.
        Returns:
        a new BitChromosome with the given parameter
        Throws:
        NegativeArraySizeException - if the length is smaller than one.
        NullPointerException - if the bitSet is null.
        IllegalArgumentException - if p 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 created BitChromosome. Use of(BitSet, int, double) or of(BitSet, int) instead.
        Constructing a new BitChromosome from a given BitSet. The BitSet is copied while construction. The length of the constructed BitChromosome will be bitSet.length() (BitSet.length()).
        Parameters:
        bits - the bit-set which initializes the chromosome
        Returns:
        a new BitChromosome with the given parameter
        Throws:
        NullPointerException - if the bitSet is null.
      • of

        public static BitChromosome of​(BigInteger value)
        Create a new BitChromosome from the given big integer value.
        Parameters:
        value - the value of the created BitChromosome
        Returns:
        a new BitChromosome with the given parameter
        Throws:
        NullPointerException - if the given value is null.
      • of

        public static BitChromosome of​(BigInteger value,
                                       double p)
        Create a new BitChromosome from the given big integer value and ones probability.
        Parameters:
        value - the value of the created BitChromosome
        p - Probability of the TRUEs in the BitChromosome.
        Returns:
        a new BitChromosome with the given parameter
        Throws:
        NullPointerException - if the given value is null.
        IllegalArgumentException - if p is not a valid probability.
      • of

        public static BitChromosome of​(CharSequence value)
        Create a new BitChromosome from the given character sequence containing '0' and '1'; as created with the toCanonicalString() method.
        Parameters:
        value - the input string.
        Returns:
        a new BitChromosome with the given parameter
        Throws:
        NullPointerException - if the value is null.
        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 new BitChromosome from the given character sequence containing '0' and '1'; as created with the toCanonicalString() 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 the value is null.
        IllegalArgumentException - if the length of the character sequence is zero or contains other characters than '0' or '1'.
        IllegalArgumentException - if p is not a valid probability.
      • of

        public static BitChromosome of​(CharSequence value,
                                       int length,
                                       double p)
        Create a new BitChromosome from the given character sequence containing '0' and '1'; as created with the toCanonicalString() method.
        Parameters:
        value - the input string.
        length - length of the BitChromosome
        p - Probability of the TRUEs in the BitChromosome.
        Returns:
        a new BitChromosome with the given parameter
        Throws:
        NullPointerException - if the value is null.
        IllegalArgumentException - if the length of the character sequence is zero or contains other characters than '0' or '1'.
        IllegalArgumentException - if p is not a valid probability.