- All Implemented Interfaces:
BoundedChromosome<Double,
,DoubleGene> Chromosome<DoubleGene>
,NumericChromosome<Double,
,DoubleGene> BaseSeq<DoubleGene>
,Factory<Chromosome<DoubleGene>>
,Verifiable
,Serializable
,Iterable<DoubleGene>
,RandomAccess
public class DoubleChromosome
extends AbstractChromosome<DoubleGene>
implements NumericChromosome<Double,DoubleGene>, Serializable
Numeric chromosome implementation which holds 64-bit floating point numbers.
- Since:
- 1.6
- Version:
- 6.1
- See Also:
- Implementation Note:
- This class is immutable and thread-safe.
-
Field Summary
Fields inherited from class io.jenetics.AbstractChromosome
_genes, _valid
-
Constructor Summary
ModifierConstructorDescriptionprotected
DoubleChromosome
(ISeq<DoubleGene> genes, IntRange lengthRange) Create a new chromosome from the givengenes
and the allowed length range of the chromosome. -
Method Summary
Modifier and TypeMethodDescriptionReturns a sequential stream of the alleles with this chromosome as its source.boolean
int
hashCode()
Return the allowed length range of the chromosome.Maps the gene alleles of this chromosome, given asdouble[]
array, by applying the given mapper functionf
.max()
Return the maximum value of thisBoundedChromosome
.min()
Return the minimum value of thisBoundedChromosome
.Create a new instance of type T.newInstance
(ISeq<DoubleGene> genes) A factory method which creates a newChromosome
of specific type and the givengenes
.static DoubleChromosome
of
(double min, double max) Create a new randomDoubleChromosome
of length one.static DoubleChromosome
of
(double min, double max, int length) Create a new randomDoubleChromosome
.static DoubleChromosome
Create a new random chromosome.static DoubleChromosome
of
(DoubleGene... genes) Create a newDoubleChromosome
with the given genes.static DoubleChromosome
of
(DoubleRange range) Create a new randomDoubleChromosome
of length one.static DoubleChromosome
of
(DoubleRange range, int length) Create a new randomDoubleChromosome
.static DoubleChromosome
of
(DoubleRange range, IntRange lengthRange) Create a new random chromosome.static DoubleChromosome
of
(Iterable<DoubleGene> genes) Create a newDoubleChromosome
with the given genes.double[]
toArray()
Returns a double array containing all the elements in this chromosome in a proper sequence.double[]
toArray
(double[] array) Returns a double array containing all the elements in this chromosome in a proper sequence.Methods inherited from class io.jenetics.AbstractChromosome
get, isValid, length, toString
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface io.jenetics.util.BaseSeq
forEach, get, isEmpty, iterator, length, listIterator, nonEmpty, spliterator, stream
Methods inherited from interface io.jenetics.BoundedChromosome
max, min
Methods inherited from interface io.jenetics.Chromosome
as, gene, isValid
Methods inherited from interface io.jenetics.NumericChromosome
byteValue, byteValue, doubleValue, doubleValue, floatValue, floatValue, intValue, intValue, longValue, longValue, shortValue, shortValue
-
Constructor Details
-
DoubleChromosome
Create a new chromosome from the givengenes
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 isnull
.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 newChromosome
of specific type and the givengenes
.- Specified by:
newInstance
in interfaceChromosome<DoubleGene>
- 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 interfaceFactory<Chromosome<DoubleGene>>
- Returns:
- a new instance of type T
-
map
Maps the gene alleles of this chromosome, given asdouble[]
array, by applying the given mapper functionf
. The mapped gene values are then wrapped into a newly created chromosome.final DoubleChromosome chromosome = ...; final DoubleChromosome normalized = chromosome.map(Main::normalize); static double[] normalize(final double[] values) { final double sum = sum(values); for (int i = 0; i < values.length; ++i) { values[i] /= sum; } return values; }
- Parameters:
f
- the mapper function- Returns:
- a newly created chromosome with the mapped gene values
- Throws:
NullPointerException
- if the mapper function isnull
.IllegalArgumentException
- if the length of the mappeddouble[]
array is empty or doesn't match with the allowed length range- Since:
- 6.1
-
doubleStream
Returns a sequential stream of the alleles with this chromosome as its source.- Returns:
- a sequential stream of alleles
- Since:
- 4.3
-
toArray
Returns a double 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 givenarray
isnull
- Since:
- 3.0
-
toArray
Returns a double 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
Create a newDoubleChromosome
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 givengenes
doesn't have the same range.NullPointerException
- if the givengenes
array isnull
-
of
Create a newDoubleChromosome
with the given genes.- Parameters:
genes
- the genes of the chromosome.- Returns:
- a new chromosome with the given genes.
- Throws:
NullPointerException
- if the givengenes
arenull
IllegalArgumentException
- if the of the genes iterable is empty or the givengenes
doesn't have the same range.- Since:
- 4.3
-
of
Create a new random chromosome.- Parameters:
min
- the min value of theDoubleGene
s (inclusively).max
- the max value of theDoubleGene
s (exclusively).lengthRange
- the allowed length range of the chromosome.- Returns:
- a new
DoubleChromosome
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 givenlengthRange
isnull
- Since:
- 4.0
-
of
Create a new randomDoubleChromosome
.- Parameters:
min
- the min value of theDoubleGene
s (inclusively).max
- the max value of theDoubleGene
s (exclusively).length
- the length of the chromosome.- Returns:
- a new
DoubleChromosome
with the given parameter - Throws:
IllegalArgumentException
- if thelength
is smaller than one.
-
of
Create a new random chromosome.- Parameters:
range
- the integer range of the chromosome.lengthRange
- the allowed length range of the chromosome.- Returns:
- a new
DoubleChromosome
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 givenlengthRange
isnull
- Since:
- 4.0
-
of
Create a new randomDoubleChromosome
.- Parameters:
range
- the integer range of the chromosome.length
- the length of the chromosome.- Returns:
- a new random
DoubleChromosome
- Throws:
NullPointerException
- if the givenrange
isnull
IllegalArgumentException
- if thelength
is smaller than one.- Since:
- 3.2
-
of
Create a new randomDoubleChromosome
of length one.- Parameters:
min
- the minimal value of this chromosome (inclusively).max
- the maximal value of this chromosome (exclusively).- Returns:
- a new
DoubleChromosome
with the given parameter
-
of
Create a new randomDoubleChromosome
of length one.- Parameters:
range
- the double range of the chromosome.- Returns:
- a new random
DoubleChromosome
of length one - Throws:
NullPointerException
- if the givenrange
isnull
- Since:
- 3.2
-
min
Description copied from interface:BoundedChromosome
Return the minimum value of thisBoundedChromosome
.- Specified by:
min
in interfaceBoundedChromosome<A extends Comparable<? super A>,
G extends BoundedGene<A, G>> - Returns:
- the minimum value of this
BoundedChromosome
.
-
max
Description copied from interface:BoundedChromosome
Return the maximum value of thisBoundedChromosome
.- Specified by:
max
in interfaceBoundedChromosome<A extends Comparable<? super A>,
G extends BoundedGene<A, G>> - Returns:
- the maximum value of this
BoundedChromosome
.
-
hashCode
public int hashCode() -
equals
-
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
-