Example #1
0
        public float ComputeFitness2(Note[] individual, AForge.Math.Metrics.ISimilarity similarity)
        {
            float weighted = 0;
             for (int i = 0; i < metrics.Length; i++)
            {
                var x = metrics[i].Generate(individual);

                List<double> arr1 = new List<double>(individual.Length);
                List<double> arr2 = new List<double>(individual.Length);

                foreach (var k in target_metrics[i].Keys)
                 {
                     if (!x.ContainsKey(k))
                     {
                         arr1.Add(0);
                         arr2.Add(target_metrics[i][k]);
                         continue;
                     }

                     arr1.Add(x[k]);
                     arr2.Add(target_metrics[i][k]);
                 }
                weighted += (float)similarity.GetSimilarityScore(arr1.ToArray(), arr2.ToArray());
            }

             return weighted / (float)metrics.Length;
        }