Package io.jenetics

Class IntegerChromosome

All Implemented Interfaces:
BoundedChromosome<Integer,IntegerGene>, Chromosome<IntegerGene>, NumericChromosome<Integer,IntegerGene>, BaseSeq<IntegerGene>, Factory<Chromosome<IntegerGene>>, Verifiable, Serializable, Iterable<IntegerGene>, RandomAccess

Numeric chromosome implementation which holds 32-bit integer numbers.
Since:
2.0
Version:
7.0
See Also:
Implementation Note:
This class is immutable and thread-safe.
  • Constructor Details

    • IntegerChromosome

      protected IntegerChromosome(ISeq<IntegerGene> genes, IntRange lengthRange)
      Create a new chromosome from the given genes and the allowed length range of the chromosome.
      Parameters:
      genes - the genes that form the chromosome.
      lengthRange - the allowed length range of the chromosome
      Throws:
      NullPointerException - if one of the arguments is null.
      IllegalArgumentException - if the length of the gene sequence is empty, doesn't match with the allowed length range, the minimum or maximum of the range is smaller or equal zero, or the given range size is zero.
      Since:
      4.0
  • Method Details

    • newInstance

      Description copied from interface: Chromosome
      A factory method which creates a new Chromosome of specific type and the given genes.
      Specified by:
      newInstance in interface Chromosome<IntegerGene>
      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

      Description copied from interface: Factory
      Create a new instance of type T.
      Specified by:
      newInstance in interface Factory<Chromosome<IntegerGene>>
      Returns:
      a new instance of type T
    • map

      public IntegerChromosome map(Function<? super int[],int[]> f)
      Maps the gene alleles of this chromosome, given as int[] array, by applying the given mapper function f. The mapped gene values are then wrapped into a newly created chromosome.
      final IntegerChromosome chromosome = ...;
      final IntegerChromosome halved = chromosome.map(Main::half);
      
      static int[] half(final int[] values) {
          for (int i = 0; i < values.length; ++i) {
              values[i] /= 2;
          }
          return values;
      }
      
      Parameters:
      f - the mapper function
      Returns:
      a newly created chromosome with the mapped gene values
      Throws:
      NullPointerException - if the mapper function is null.
      IllegalArgumentException - if the length of the mapped int[] array is empty or doesn't match with the allowed length range
      Since:
      6.1
    • intStream

      public IntStream intStream()
      Returns a sequential stream of the alleles with this chromosome as its source.
      Returns:
      a sequential stream of alleles
      Since:
      4.3
    • toArray

      public int[] toArray(int[] array)
      Returns an int array containing all the elements in this chromosome in a proper sequence. If the chromosome fits in the specified array, it is returned therein. Otherwise, a new array is allocated with the length of this chromosome.
      Parameters:
      array - the array into which the elements of these chromosomes are to be stored, if it is big enough; otherwise, a new array is allocated for this purpose.
      Returns:
      an array containing the elements of this chromosome
      Throws:
      NullPointerException - if the given array is null
      Since:
      3.0
    • toArray

      public int[] toArray()
      Returns an int array containing all the elements in this chromosome in a proper sequence.
      Returns:
      an array containing the elements of this chromosome
      Since:
      3.0
    • of

      public static IntegerChromosome of(IntegerGene... genes)
      Create a new IntegerChromosome with the given genes.
      Parameters:
      genes - the genes of the chromosome
      Returns:
      a new chromosome with the given genes
      Throws:
      IllegalArgumentException - if the length of the genes array is empty or the given genes doesn't have the same range
    • of

      public static IntegerChromosome of(Iterable<IntegerGene> genes)
      Create a new IntegerChromosome with the given genes.
      Parameters:
      genes - the genes of the chromosome.
      Returns:
      a new chromosome with the given genes.
      Throws:
      NullPointerException - if the given genes are null
      IllegalArgumentException - if the of the genes iterable is empty or the given genes doesn't have the same range.
      Since:
      4.3
    • of

      public static IntegerChromosome of(int min, int max, IntRange lengthRange)
      Create a new random chromosome.
      Parameters:
      min - the min value of the IntegerGenes (inclusively).
      max - the max value of the IntegerGenes (exclusively).
      lengthRange - the allowed length range of the chromosome.
      Returns:
      a new IntegerChromosome with the given parameter
      Throws:
      IllegalArgumentException - if the length of the gene sequence is empty, doesn't match with the allowed length range, the minimum or maximum of the range is smaller or equal zero, or the given range size is zero.
      IllegalArgumentException - if max is greater than or equal to min
      NullPointerException - if the given lengthRange is null
      Since:
      4.0
    • of

      public static IntegerChromosome of(int min, int max, int length)
      Create a new random IntegerChromosome.
      Parameters:
      min - the min value of the IntegerGenes (inclusively).
      max - the max value of the IntegerGenes (exclusively).
      length - the length of the chromosome.
      Returns:
      a new random IntegerChromosome
      Throws:
      IllegalArgumentException - if the length is smaller than one
      IllegalArgumentException - if max is greater than or equal to min
    • of

      public static IntegerChromosome of(IntRange range, IntRange lengthRange)
      Create a new random chromosome.
      Parameters:
      range - the integer range of the chromosome.
      lengthRange - the allowed length range of the chromosome.
      Returns:
      a new IntegerChromosome with the given parameter
      Throws:
      IllegalArgumentException - if the length of the gene sequence is empty, doesn't match with the allowed length range, the minimum or maximum of the range is smaller or equal zero, or the given range size is zero.
      NullPointerException - if the given lengthRange is null
      IllegalArgumentException - if max is greater than or equal to min
      Since:
      4.0
    • of

      public static IntegerChromosome of(IntRange range, int length)
      Create a new random IntegerChromosome.
      Parameters:
      range - the integer range of the chromosome.
      length - the length of the chromosome.
      Returns:
      a new random IntegerChromosome
      Throws:
      NullPointerException - if the given range is null
      IllegalArgumentException - if the length is smaller than one
      IllegalArgumentException - if max is greater than or equal to min
      Since:
      3.2
    • of

      public static IntegerChromosome of(int min, int max)
      Create a new random IntegerChromosome of length one.
      Parameters:
      min - the minimal value of this chromosome (inclusively).
      max - the maximal value of this chromosome (exclusively).
      Returns:
      a new random IntegerChromosome of length one
      Throws:
      IllegalArgumentException - if max is greater than or equal to min
    • of

      public static IntegerChromosome of(IntRange range)
      Create a new random IntegerChromosome of length one.
      Parameters:
      range - the integer range of the chromosome.
      Returns:
      a new random IntegerChromosome of length one
      Throws:
      NullPointerException - if the given range is null
      IllegalArgumentException - if max is greater than or equal to min
      Since:
      3.2
    • min

      public Integer min()
      Description copied from interface: BoundedChromosome
      Return the minimum value of this BoundedChromosome.
      Specified by:
      min in interface BoundedChromosome<A extends Comparable<? super A>,G extends BoundedGene<A,G>>
      Returns:
      the minimum value of this BoundedChromosome.
    • max

      public Integer max()
      Description copied from interface: BoundedChromosome
      Return the maximum value of this BoundedChromosome.
      Specified by:
      max in interface BoundedChromosome<A extends Comparable<? super A>,G extends BoundedGene<A,G>>
      Returns:
      the maximum value of this BoundedChromosome.
    • hashCode

      public int hashCode()
    • equals

      public boolean equals(Object obj)
    • lengthRange

      public IntRange lengthRange()
      Return the allowed length range of the chromosome. The minimum value of the range is included and the maximum value is excluded.
      Returns:
      the allowed length range of the chromosome