/// <summary>
 /// Construct with the provided distance metric and k-means settings.
 /// </summary>
 /// <param name="distanceMetric">Distance metric.</param>
 /// <param name="maxKMeansIters">Maximum number of k-means iterations.</param>
 /// <param name="regularizationConstant">Regularization constant.</param>
 public RegularizedGeneticKMeansSpeciationStrategy(
     IDistanceMetric <T> distanceMetric,
     int maxKMeansIters,
     double regularizationConstant)
 {
     _distanceMetric         = distanceMetric;
     _maxKMeansIters         = maxKMeansIters;
     _regularizationConstant = regularizationConstant;
     _kmeansInit             = new GeneticKMeansSpeciationInit <T>(distanceMetric);
 }
Ejemplo n.º 2
0
    /// <summary>
    /// Construct a new instance.
    /// </summary>
    /// <param name="distanceMetric">Distance metric.</param>
    /// <param name="maxKMeansIters">Maximum number of k-means iterations.</param>
    /// <param name="degreeOfParallelism">The number of CPU threads to distribute work to.</param>
    public GeneticKMeansSpeciationStrategy(
        IDistanceMetric <T> distanceMetric,
        int maxKMeansIters,
        int degreeOfParallelism)
    {
        _distanceMetric = distanceMetric;
        _maxKMeansIters = maxKMeansIters;

        // Reject degreeOfParallelism values less than 2. -1 should have been resolved to an actual number by the time
        // this constructor is invoked, and 1 is nonsensical for a parallel strategy.
        if (degreeOfParallelism < 2)
        {
            throw new ArgumentException("Must be 2 or above.", nameof(degreeOfParallelism));
        }

        _parallelOptions = new ParallelOptions
        {
            MaxDegreeOfParallelism = degreeOfParallelism
        };

        _kmeansInit = new GeneticKMeansSpeciationInit <T>(distanceMetric, _parallelOptions);
    }
 /// <summary>
 /// Construct a new instance.
 /// </summary>
 /// <param name="distanceMetric">Distance metric.</param>
 /// <param name="maxKMeansIters">Maximum number of k-means iterations.</param>
 public GeneticKMeansSpeciationStrategy(IDistanceMetric <T> distanceMetric, int maxKMeansIters)
 {
     _distanceMetric = distanceMetric ?? throw new ArgumentNullException(nameof(distanceMetric));
     _maxKMeansIters = maxKMeansIters;
     _kmeansInit     = new GeneticKMeansSpeciationInit <T>(distanceMetric);
 }