Free cookie consent management tool by TermsFeed Policy Generator

Ticket #2377: SolutionSimilarityCalculator.cs.patch

File SolutionSimilarityCalculator.cs.patch, 2.1 KB (added by ascheibe, 9 years ago)
  • sources/HeuristicLab.Optimization.Operators/3.3/SolutionSimilarityCalculator.cs

     
    2121
    2222using System;
    2323using System.Linq;
     24using System.Threading.Tasks;
    2425using HeuristicLab.Common;
    2526using HeuristicLab.Core;
    2627using HeuristicLab.Data;
     
    6364        throw new ArgumentException("Cannot calculate similarity because one of the provided crowds or both are empty.");
    6465
    6566      var similarityMatrix = new double[leftIndividuals.Count][];
    66       for (int i = 0; i < leftIndividuals.Count; i++) {
     67      Parallel.For(0, leftIndividuals.Count, (i) => {
    6768        similarityMatrix[i] = new double[rightIndividuals.Count];
    6869        for (int j = 0; j < rightIndividuals.Count; j++) {
    6970          similarityMatrix[i][j] = CalculateSolutionSimilarity(leftIndividuals[i], rightIndividuals[j]);
    7071        }
    71       }
     72      });
    7273
    7374      return similarityMatrix;
    7475    }
     
    8687      for (int i = 0; i < individuals.Count; i++) similarityMatrix[i] = new double[individuals.Count];
    8788
    8889      if (IsCommutative) {
    89         for (int i = 0; i < individuals.Count; i++) {
     90        Parallel.For(0, individuals.Count, (i) => {
    9091          for (int j = i; j < individuals.Count; j++) {
    9192            similarityMatrix[i][j] = similarityMatrix[j][i] = CalculateSolutionSimilarity(individuals[i], individuals[j]);
    9293          }
    93         }
     94        });
    9495      } else {
    95         for (int i = 0; i < individuals.Count; i++) {
     96        Parallel.For(0, individuals.Count, (i) => {
    9697          for (int j = i; j < individuals.Count; j++) {
    9798            similarityMatrix[i][j] = CalculateSolutionSimilarity(individuals[i], individuals[j]);
    9899            if (i == j) continue;
    99100            similarityMatrix[j][i] = CalculateSolutionSimilarity(individuals[j], individuals[i]);
    100101          }
    101         }
     102        });
    102103      }
    103104
    104105      return similarityMatrix;