Interface VecFactory<T>

  • Functional Interface:
    This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

    @FunctionalInterface
    public interface VecFactory<T>
    This interface allows to create vector object from a given array type T. It is useful if you need some additional parametrization of the created vectors.

    As the following example shows, only one VecFactory instance should be used for creating the vectors for a given multi-objective problem.

    private static final VecFactory<double[]> FACTORY = VecFactory.ofDoubleVec( Optimize.MAXIMUM, Optimize.MINIMUM, Optimize.MINIMUM, Optimize.MAXIMUM ); // The fitness function. static Vec<double[]> fitness(final double[] x) { final double[] result = new double[4]; // ... return FACTORY.newVec(result); }
    In the example above, the first dimension of the created vector is maximized, the following two are minimized and the last vector component is again maximized.
    Since:
    5.2
    Version:
    6.0
    See Also:
    Vec
    • Method Detail

      • newVec

        Vec<TnewVec​(T array)
        Create a new Vec object from the given array.
        Parameters:
        array - the array used in the created vector
        Returns:
        a new Vec object from the given array
        Throws:
        NullPointerException - if the given array is null
        IllegalArgumentException - if the array length is zero or doesn't match the required length of the actual factory
      • ofIntVec

        static VecFactory<int[]> ofIntVec​(List<Optimize> optimizes)
        Create a new factory for int[] vectors. Additionally you can specify the optimization direction (maximization or minimization) for each dimension. The dimensionality of the created vectors must be exactly the same as the given length of the given optimizes. If the lengths doesn't match, an IllegalArgumentException is thrown.
        Parameters:
        optimizes - the optimization direction for each dimension
        Returns:
        a new factory for int[] vectors
        Throws:
        NullPointerException - if the given optimizes is null
        IllegalArgumentException - if the optimizes length is zero
        See Also:
        ofIntVec(Optimize...)
        API Note:
        Only one factory instance should be used for a given multi-objective problem.
      • ofIntVec

        static VecFactory<int[]> ofIntVec​(Optimize... optimizes)
        Create a new factory for int[] vectors. Additionally you can specify the optimization direction (maximization or minimization) for each dimension. The dimensionality of the created vectors must be exactly the same as the given length of the given optimizes. If the lengths doesn't match, an IllegalArgumentException is thrown.
        Parameters:
        optimizes - the optimization direction for each dimension
        Returns:
        a new factory for int[] vectors
        Throws:
        NullPointerException - if the given optimizes is null
        IllegalArgumentException - if the optimizes length is zero
        See Also:
        ofIntVec(List)
        API Note:
        Only one factory instance should be used for a given multi-objective problem.
      • ofIntVec

        static VecFactory<int[]> ofIntVec()
        Create a new factory for int[] vectors, where all dimensions are maximized.
        Returns:
        a new factory for int[] vectors, where all dimensions are maximized
        See Also:
        Vec.of(int...)
      • ofLongVec

        static VecFactory<long[]> ofLongVec​(List<Optimize> optimizes)
        Create a new factory for long[] vectors. Additionally you can specify the optimization direction (maximization or minimization) for each dimension. The dimensionality of the created vectors must be exactly the same as the given length of the given optimizes. If the lengths doesn't match, an IllegalArgumentException is thrown.
        Parameters:
        optimizes - the optimization direction for each dimension
        Returns:
        a new factory for long[] vectors
        Throws:
        NullPointerException - if the given optimizes is null
        IllegalArgumentException - if the optimizes length is zero
        See Also:
        ofLongVec(Optimize...)
        API Note:
        Only one factory instance should be used for a given multi-objective problem.
      • ofLongVec

        static VecFactory<long[]> ofLongVec​(Optimize... optimizes)
        Create a new factory for long[] vectors. Additionally you can specify the optimization direction (maximization or minimization) for each dimension. The dimensionality of the created vectors must be exactly the same as the given length of the given optimizes. If the lengths doesn't match, an IllegalArgumentException is thrown.
        Parameters:
        optimizes - the optimization direction for each dimension
        Returns:
        a new factory for long[] vectors
        Throws:
        NullPointerException - if the given optimizes is null
        IllegalArgumentException - if the optimizes length is zero
        See Also:
        ofLongVec(List)
        API Note:
        Only one factory instance should be used for a given multi-objective problem.
      • ofLongVec

        static VecFactory<long[]> ofLongVec()
        Create a new factory for long[] vectors, where all dimensions are maximized.
        Returns:
        a new factory for long[] vectors, where all dimensions are maximized
        See Also:
        Vec.of(long...)
      • ofDoubleVec

        static VecFactory<double[]> ofDoubleVec​(List<Optimize> optimizes)
        Create a new factory for double[] vectors. Additionally you can specify the optimization direction (maximization or minimization) for each dimension. The dimensionality of the created vectors must be exactly the same as the given length of the given optimizes. If the lengths doesn't match, an IllegalArgumentException is thrown.
        Parameters:
        optimizes - the optimization direction for each dimension
        Returns:
        a new factory for double[] vectors
        Throws:
        NullPointerException - if the given optimizes is null
        IllegalArgumentException - if the optimizes length is zero
        See Also:
        ofDoubleVec(Optimize...)
        API Note:
        Only one factory instance should be used for a given multi-objective problem.
      • ofDoubleVec

        static VecFactory<double[]> ofDoubleVec​(Optimize... optimizes)
        Create a new factory for double[] vectors. Additionally you can specify the optimization direction (maximization or minimization) for each dimension. The dimensionality of the created vectors must be exactly the same as the given length of the given optimizes. If the lengths doesn't match, an IllegalArgumentException is thrown.
        Parameters:
        optimizes - the optimization direction for each dimension
        Returns:
        a new factory for double[] vectors
        Throws:
        NullPointerException - if the given optimizes is null
        IllegalArgumentException - if the optimizes length is zero
        See Also:
        ofDoubleVec(List)
        API Note:
        Only one factory instance should be used for a given multi-objective problem.
      • ofDoubleVec

        static VecFactory<double[]> ofDoubleVec()
        Create a new factory for double[] vectors, where all dimensions are maximized.
        Returns:
        a new factory for double[] vectors, where all dimensions are maximized
        See Also:
        Vec.of(double...)
      • ofObjectVec

        static <T> VecFactory<T[]> ofObjectVec​(Comparator<? super T> comparator,
                                               ElementDistance<T[]> distance,
                                               List<Optimize> optimizes)
        Create a new factory for T[] vectors. Additionally you can specify the optimization direction (maximization or minimization) for each dimension. The dimensionality of the created vectors must be exactly the same as the given length of the given optimizes. If the lengths doesn't match, an IllegalArgumentException is thrown.
        Type Parameters:
        T - the array element type
        Parameters:
        comparator - the array element comparator
        distance - the element distance function
        optimizes - the optimization direction for each dimension
        Returns:
        a new factory for T[] vectors
        Throws:
        NullPointerException - if one of the arguments is null
        IllegalArgumentException - if the optimizes length is zero
        See Also:
        ofObjectVec(Comparator, ElementDistance, Optimize...)
      • ofObjectVec

        static <T> VecFactory<T[]> ofObjectVec​(Comparator<? super T> comparator,
                                               ElementDistance<T[]> distance,
                                               Optimize... optimizes)
        Create a new factory for T[] vectors. Additionally you can specify the optimization direction (maximization or minimization) for each dimension. The dimensionality of the created vectors must be exactly the same as the given length of the given optimizes. If the lengths doesn't match, an IllegalArgumentException is thrown.
        Type Parameters:
        T - the array element type
        Parameters:
        comparator - the array element comparator
        distance - the element distance function
        optimizes - the optimization direction for each dimension
        Returns:
        a new factory for T[] vectors
        Throws:
        NullPointerException - if one of the arguments is null
        IllegalArgumentException - if the optimizes length is zero
        See Also:
        ofObjectVec(Comparator, ElementDistance, List)
      • ofObjectVec

        static <T extends Comparable<? super T>> VecFactory<T[]> ofObjectVec​(ElementDistance<T[]> distance,
                                                                             List<Optimize> optimizes)
        Create a new factory for T[] vectors with comparable element types. Additionally you can specify the optimization direction (maximization or minimization) for each dimension. The dimensionality of the created vectors must be exactly the same as the given length of the given optimizes. If the lengths doesn't match, an IllegalArgumentException is thrown.
        Type Parameters:
        T - the array element type
        Parameters:
        distance - the element distance function
        optimizes - the optimization direction for each dimension
        Returns:
        a new factory for T[] vectors
        Throws:
        NullPointerException - if one of the arguments is null
        IllegalArgumentException - if the optimizes length is zero
        Since:
        6.0
        See Also:
        ofObjectVec(Comparator, ElementDistance, List)
      • ofObjectVec

        static <T extends Comparable<? super T>> VecFactory<T[]> ofObjectVec​(ElementDistance<T[]> distance,
                                                                             Optimize... optimizes)
        Create a new factory for T[] vectors with comparable element types. Additionally you can specify the optimization direction (maximization or minimization) for each dimension. The dimensionality of the created vectors must be exactly the same as the given length of the given optimizes. If the lengths doesn't match, an IllegalArgumentException is thrown.
        Type Parameters:
        T - the array element type
        Parameters:
        distance - the element distance function
        optimizes - the optimization direction for each dimension
        Returns:
        a new factory for T[] vectors
        Throws:
        NullPointerException - if one of the arguments is null
        IllegalArgumentException - if the optimizes length is zero
        Since:
        6.0
        See Also:
        ofObjectVec(Comparator, ElementDistance, List)
      • ofObjectVec

        static <T extends Comparable<? super T>> VecFactory<T[]> ofObjectVec​(List<Optimize> optimizes)
        Create a new factory for T[] vectors with comparable element types. Additionally you can specify the optimization direction (maximization or minimization) for each dimension. The dimensionality of the created vectors must be exactly the same as the given length of the given optimizes. If the lengths doesn't match, an IllegalArgumentException is thrown.
        Type Parameters:
        T - the array element type
        Parameters:
        optimizes - the optimization direction for each dimension
        Returns:
        a new factory for T[] vectors
        Throws:
        NullPointerException - if one of the arguments is null
        IllegalArgumentException - if the optimizes length is zero
        Since:
        6.0
        See Also:
        ofObjectVec(Comparator, ElementDistance, List)
      • ofObjectVec

        static <T extends Comparable<? super T>> VecFactory<T[]> ofObjectVec​(Optimize... optimizes)
        Create a new factory for T[] vectors with comparable element types. Additionally you can specify the optimization direction (maximization or minimization) for each dimension. The dimensionality of the created vectors must be exactly the same as the given length of the given optimizes. If the lengths doesn't match, an IllegalArgumentException is thrown.
        Type Parameters:
        T - the array element type
        Parameters:
        optimizes - the optimization direction for each dimension
        Returns:
        a new factory for T[] vectors
        Throws:
        NullPointerException - if one of the arguments is null
        IllegalArgumentException - if the optimizes length is zero
        Since:
        6.0
        See Also:
        ofObjectVec(Comparator, ElementDistance, List)
      • ofObjectVec

        static <T extends Comparable<? super T>> VecFactory<T[]> ofObjectVec()
        Create a new factory for T[] vectors with comparable element types. Additionally you can specify the optimization direction (maximization or minimization) for each dimension. The dimensionality of the created vectors must be exactly the same as the given length of the given optimizes. If the lengths doesn't match, an IllegalArgumentException is thrown.
        Type Parameters:
        T - the array element type
        Returns:
        a new factory for T[] vectors
        Throws:
        NullPointerException - if one of the arguments is null
        IllegalArgumentException - if the optimizes length is zero
        Since:
        6.0
        See Also:
        Vec.of(Comparable[])