- Type Parameters:
T
- the underlying array type, likeint[]
ordouble[]
- All Superinterfaces:
Comparable<Vec<T>>
The
The underlying array is just wrapped and not copied. This
means you can change the values of the
Vec
interface represents the fitness result of a multi-objective
fitness function. It also defines a set of static factory methods which
allows you to create Vec
instance from a given int[]
,
long[]
or double[]
array.
final Vec<double[]> point2D = Vec.of(0.1, 5.4);
final Vec<int[]> point3D = Vec.of(1, 2, 3);
Vec
once it is created,
Not copying the underlying array is done for performance reason. Changing
the Vec
data is, of course, never a good idea.- Since:
- 4.1
- Version:
- 4.1
- See Also:
- Implementation Note:
- Although the
Vec
interface extends theComparable
interface, it violates its general contract. It only implements the pareto dominance relation, which defines a partial order. So, trying to sort a list ofVec
objects, might lead to an exception (thrown by the sorting method) at runtime.
-
Method Summary
Modifier and TypeMethodDescriptionReturn the comparator for comparing the elements of this MO vector.default int
Compares thethis
vector with theother
at the given componentindex
.default int
The default implementation uses thedominance(Vec)
function for defining a partial order of two vectors.data()
Return the underlying data structure.distance()
Return a function which calculates the element distance of a vector at a given element index.default double
Calculates the distance between two vector elements at the givenindex
.Return the comparator which defines the (Pareto) dominance measure.static int
dominance
(double[] u, double[] v) Calculates the Pareto Dominance of the two vectors u and v.static int
dominance
(int[] u, int[] v) Calculates the Pareto Dominance of the two vectors u and v.static int
dominance
(long[] u, long[] v) Calculates the Pareto Dominance of the two vectors u and v.static <C extends Comparable<? super C>>
intdominance
(C[] u, C[] v) Calculates the Pareto Dominance of the two vectors u and v.default int
static <T> int
dominance
(T[] u, T[] v, Comparator<? super T> comparator) Calculates the Pareto Dominance of the two vectors u and v.int
length()
Return the number of vector elements.static Vec<double[]>
of
(double... array) Wraps the given array into aVec
object.static Vec<int[]>
of
(int... array) Wraps the given array into aVec
object.static Vec<long[]>
of
(long... array) Wraps the given array into aVec
object.static <C extends Comparable<? super C>>
Vec<C[]>of
(C[] array) Wraps the given array into aVec
object.static <C extends Comparable<? super C>>
Vec<C[]>of
(C[] array, ElementDistance<C[]> distance) Wraps the given array into aVec
object.static <T> Vec<T[]>
of
(T[] array, Comparator<? super T> comparator, ElementDistance<T[]> distance) Wraps the given array into aVec
object.
-
Method Details
-
data
Return the underlying data structure.- Returns:
- the underlying data structure
-
length
int length()Return the number of vector elements.- Returns:
- the number of vector elements
-
comparator
Return the comparator for comparing the elements of this MO vector.- Returns:
- the comparator for comparing the elements of this MO vector
-
distance
Return a function which calculates the element distance of a vector at a given element index.- Returns:
- a function which calculates the element distance of a vector at a given element index
-
dominance
Comparator<T> dominance()Return the comparator which defines the (Pareto) dominance measure.- Returns:
- the comparator which defines the (Pareto) dominance measure
-
compare
Compares thethis
vector with theother
at the given componentindex
.- Parameters:
other
- the other vectorindex
- the component index- Returns:
- a negative integer, zero, or a positive integer as
this[index]
is less than, equal to, or greater thanother[index]
- Throws:
NullPointerException
- if theother
object isnull
IllegalArgumentException
- if theindex
is out of the valid range[0, length())
-
distance
Calculates the distance between two vector elements at the givenindex
.- Parameters:
other
- the second vectorindex
- the vector element index- Returns:
- the distance between two vector elements
- Throws:
NullPointerException
- if theother
vector isnull
IllegalArgumentException
- if theindex
is out of the valid range[0, length())
-
dominance
- Parameters:
other
- the other vector- Returns:
1
if value() ≻ other,-1
if other ≻ value() and0
otherwise- Throws:
NullPointerException
- if theother
vector isnull
-
compareTo
The default implementation uses thedominance(Vec)
function for defining a partial order of two vectors.- Specified by:
compareTo
in interfaceComparable<T>
- Parameters:
other
- the other vector- Returns:
1
if value() ≻ other,-1
if other ≻ value() and0
otherwise- Throws:
NullPointerException
- if theother
vector isnull
-
dominance
Calculates the Pareto Dominance of the two vectors u and v.- Type Parameters:
C
- the element type of vector u and v- Parameters:
u
- the first vectorv
- the second vector- Returns:
1
if u ≻ v,-1
if v ≻ u and0
otherwise- Throws:
NullPointerException
- if one of the arguments isnull
IllegalArgumentException
- ifu.length != v.length
- See Also:
-
dominance
Calculates the Pareto Dominance of the two vectors u and v.- Type Parameters:
T
- the element type of vector u and v- Parameters:
u
- the first vectorv
- the second vectorcomparator
- the element comparator which is used for calculating the dominance- Returns:
1
if u ≻ v,-1
if v ≻ u and0
otherwise- Throws:
NullPointerException
- if one of the arguments isnull
IllegalArgumentException
- ifu.length != v.length
- See Also:
-
dominance
Calculates the Pareto Dominance of the two vectors u and v.- Parameters:
u
- the first vectorv
- the second vector- Returns:
1
if u ≻ v,-1
if v ≻ u and0
otherwise- Throws:
NullPointerException
- if one of the arguments isnull
IllegalArgumentException
- ifu.length != v.length
- See Also:
-
dominance
Calculates the Pareto Dominance of the two vectors u and v.- Parameters:
u
- the first vectorv
- the second vector- Returns:
1
if u ≻ v,-1
if v ≻ u and0
otherwise- Throws:
NullPointerException
- if one of the arguments isnull
IllegalArgumentException
- ifu.length != v.length
- See Also:
-
dominance
Calculates the Pareto Dominance of the two vectors u and v.- Parameters:
u
- the first vectorv
- the second vector- Returns:
1
if u ≻ v,-1
if v ≻ u and0
otherwise- Throws:
NullPointerException
- if one of the arguments isnull
IllegalArgumentException
- ifu.length != v.length
- See Also:
-
of
Wraps the given array into aVec
object.- Type Parameters:
C
- the array element type- Parameters:
array
- the wrapped array- Returns:
- the given array wrapped into a
Vec
object. - Throws:
NullPointerException
- if one of the arguments isnull
IllegalArgumentException
- if thearray
length is zero
-
of
Wraps the given array into aVec
object.- Type Parameters:
C
- the array element type- Parameters:
array
- the wrapped arraydistance
- the array element distance measure- Returns:
- the given array wrapped into a
Vec
object. - Throws:
NullPointerException
- if one of the arguments isnull
IllegalArgumentException
- if thearray
length is zero
-
of
Wraps the given array into aVec
object.- Type Parameters:
T
- the array element type- Parameters:
array
- the wrapped arraycomparator
- the (natural order) comparator of the array elementsdistance
- the distance function between two vector elements- Returns:
- the given array wrapped into a
Vec
object. - Throws:
NullPointerException
- if one of the arguments isnull
IllegalArgumentException
- if thearray
length is zero
-
of
Wraps the given array into aVec
object.- Parameters:
array
- the wrapped array- Returns:
- the given array wrapped into a
Vec
object. - Throws:
NullPointerException
- if the givenarray
isnull
IllegalArgumentException
- if thearray
length is zero
-
of
Wraps the given array into aVec
object.- Parameters:
array
- the wrapped array- Returns:
- the given array wrapped into a
Vec
object. - Throws:
NullPointerException
- if the givenarray
isnull
IllegalArgumentException
- if thearray
length is zero
-
of
Wraps the given array into aVec
object.- Parameters:
array
- the wrapped array- Returns:
- the given array wrapped into a
Vec
object. - Throws:
NullPointerException
- if the givenarray
isnull
IllegalArgumentException
- if thearray
length is zero
-