public void SortDataPoints()
        {
            bool sorted = false;

            while (!sorted)
            {
                sorted = true;
                for (int i = 0; i < DataPoints.Count; i++)
                {
                    if (i < DataPoints.Count - 1 && DataPoints[i].Label > DataPoints[i + 1].Label)
                    {
                        EvoDataPoint previous = DataPoints[i];
                        DataPoints[i]     = DataPoints[i + 1];
                        DataPoints[i + 1] = previous;
                        sorted            = false;
                    }
                }
            }
            Sorted = true;
        }
        public double GetMinkowski(EvoDataPoint data1, EvoDataPoint data2, List <int> colOverride = null)
        {
            double sumOfDiffs = 0.0;

            if (colOverride == null)
            {
                for (int i = 0; i < data1.Data.Count; i++)
                {
                    sumOfDiffs += Math.Pow(Math.Abs(data1.Data[i] - data2.Data[i]), P);
                }
            }
            else
            {
                foreach (int col in colOverride)
                {
                    sumOfDiffs += Math.Pow(Math.Abs(data1.Data[Columns.IndexOf(col) - 2] - data2.Data[Columns.IndexOf(col) - 2]), P);
                }
            }
            return(Math.Pow(sumOfDiffs, (1.0 / P)));
        }
 public EvoDataPoint ScaleNewData(EvoDataPoint data)
 {
     if (Scaled)
     {
         for (int i = 0; i < OriginalDataPoints[0].Data.Count; i++) //For col in data
         {
             double max = double.MinValue;
             double min = double.MaxValue;
             int    maxE;
             int    minE;
             foreach (EvoDataPoint evoData in OriginalDataPoints)
             {
                 double value = evoData.Data[i];
                 if (value > max)
                 {
                     max = value;
                 }
                 if (value < min)
                 {
                     min = value;
                 }
             }
             maxE = GetScientificExponent(max);
             minE = GetScientificExponent(min);
             if (minE < -2)
             {
                 data.Data[i] = ScaleDataUp(data.Data[i], minE, maxE);
             }
             else if (max > 1.0 | min < -1.0)
             {
                 data.Data[i] = ScaleDataDown(data.Data[i], min, max);
             }
         }
     }
     return(data);
 }