| Interface | Description |
|---|---|
| Bounds<E extends java.lang.Number> | |
| ListGenotype<E> | |
| MapGenotype<K,V> |
| Class | Description |
|---|---|
| BooleanGenotype |
The
BooleanGenotype consists of Boolean values that can be used as a
Genotype. |
| BooleanMapGenotype<K> | |
| CompositeGenotype<K,V extends Genotype> | |
| DoubleBounds |
The
DoubleBounds is an implementation of the Bounds for the
DoubleGenotype that accepts arrays as well as lists as bounds. |
| DoubleGenotype |
The
DoubleGenotype consists of double values that can be used as a
Genotype. |
| DoubleMapGenotype<K> | |
| IntegerBounds |
The
IntegerBounds is an implementation of the Bounds for the
IntegerGenotype that accepts arrays as well as lists for as bounds. |
| IntegerGenotype | |
| IntegerMapGenotype<K> | |
| PermutationGenotype<E> |
The
PermutationGenotype can be used as a Genotype. |
| SelectGenotype<V> |
The
SelectGenotype selects for each index an element from the given
list. |
| SelectMapGenotype<K,V> |
The
SelectMapGenotype selects for each key an element from a given
list. |
| SelectMapGenotype.SelectBounds<O,P> |
Provides the classes for basic Genotypes.
The basic Genotype classes are the following:
BooleanGenotype - a list of boolean (binary)
valuesDoubleGenotype - a list of double (real)
valuesIntegerGenotype - a list of integer valuesPermutationGenotype - a permutation of
arbitrary objectsCompositeGenotype - a container for arbitrary
genotype objects
Try to stick to the predefined genotype objects. Use the
CompositeGenotype to assemble complex genotypes.
If you define your own genotype, keep in mind that you also have to define
the corresponding Operators.
The DoubleGenotype and
IntegerGenotype both can be bounded by an upper
and lower bound for each value. The corresponding bounds classes are the
DoubleBounds and
IntegerBounds. These bounds are passed in the
constructor of the DoubleGenotype or
IntegerGenotype, respectively.
By default, the BooleanGenotype, the
DoubleGenotype, and the
IntegerGenotype are pure lists. This means, one
has to identify elements by their index. The classes
BooleanMapGenotype,
DoubleMapGenotype, and
IntegerMapGenotype extend the basic genotype
classes by a map functionality. Therefore, a list of the key elements has to
be passed in the constructors. Internally, this list is used for a mapping of
key to indices. Therefore, this list must be in the same order with the same
elements for corresponding genotype instances.
A further extension of the IntegerGenotype is the
SelectGenotype and
SelectMapGenotype. Here, a specific set of
elements is defined such that for each index or key one element is chosen.
Internally, this is implemented as an
IntegerGenotype such that the elements are encoded
as integer values.
The classes BooleanMapGenotype,
DoubleMapGenotype,
IntegerMapGenotype,
SelectGenotype, and
SelectMapGenotype are extended from
BooleanGenotype,
DoubleGenotype, and
IntegerGenotype, respectively. Therefore, the
default operators (in package org.opt4j.operator) for the simple
Genotype classes are applied on their
MapGenotype and
SelectGenotype classes.
Custom genotypes have to implement the Genotype
interface. If these classes are not extended from existing
Genotype classes, appropriate operators have to be
implemented (see package org.opt4j.operator).
The initialization of the genotypes is done in the
Creator. Each genotype class has an
appropriate init method to simplify the initialization.