Exemplo n.º 1
0
 private void RecalcCentroids_GenomeList(Species <T>[] speciesArr, bool[] updateBits)
 {
     Parallel.ForEach(
         Enumerable.Range(0, speciesArr.Length).Where(i => updateBits[i]),
         _parallelOptions,
         () => new List <ConnectionGenes <T> >(),
         (speciesIdx, loopState, connGenesList) =>
     {
         var species = speciesArr[speciesIdx];
         SpeciationUtils.ExtractConnectionGenes(connGenesList, species.GenomeList);
         species.Centroid = _distanceMetric.CalculateCentroid(connGenesList);
         return(connGenesList);
     },
         (connGenesList) => connGenesList.Clear());
 }
Exemplo n.º 2
0
        private void RecalcCentroids_GenomeById(Species <T>[] speciesArr, bool[] updateBits)
        {
            Parallel.ForEach(
                Enumerable.Range(0, speciesArr.Length).Where(i => updateBits[i]),
                _parallelOptions,
                () => new List <ConnectionGenes <T> >(),
                (speciesIdx, loopState, connGenesList) =>
            {
                var species = speciesArr[speciesIdx];

                // Extract the ConnectionGenes<T> object from each genome in the GenomeById dictionary.
                SpeciationUtils.ExtractConnectionGenes(connGenesList, species.GenomeById);

                // Calculate the centroid for the extracted connection genes.
                species.Centroid = _distanceMetric.CalculateCentroid(connGenesList);
                return(connGenesList);
            },
                (connGenesList) => connGenesList.Clear());
        }
    private void RecalcCentroids_GenomeList(
        Species <T>[] speciesArr,
        bool[] updateBits)
    {
        // Create a temporary, reusable, working list.
        var tmpConnGenes = new List <ConnectionGenes <T> >();

        for (int i = 0; i < speciesArr.Length; i++)
        {
            if (updateBits[i])
            {
                var species = speciesArr[i];

                // Extract the ConnectionGenes<T> object from each genome in GenomeList.
                SpeciationUtils.ExtractConnectionGenes(tmpConnGenes, species.GenomeList);

                // Calculate the centroid for the extracted connection genes.
                species.Centroid = _distanceMetric.CalculateCentroid(tmpConnGenes);
            }
        }

        tmpConnGenes.Clear();
    }