private Fitnessvalues DifferenceMethod() { Lvalueavg = Math.Abs(Lcleanvalueavg - Ladvvalueavg); // Lvalueavg = 1 / Lvalueavg; double distance = 0.0; double distancepercentage = 0.0; if (cleanupperrange > adversupperrange && cleanlowerrange > adversupperrange) { distance = cleanlowerrange - adversupperrange; distancepercentage = distance / cleanlowerrange; distance = distance * distance; } else if (adversupperrange > cleanupperrange && adverselowerrange > cleanupperrange) { distance = adverselowerrange - cleanupperrange; distancepercentage = distance / adverselowerrange; distance = distance * distance; } else { distance = Math.Abs(adversupperrange + adverselowerrange - cleanupperrange - cleanlowerrange); distancepercentage = distance / adversupperrange; } // diff = distance; double lbp_distance = 0.0; if (lbp_cleanupperrange > lbp_adversupperrange && lbp_cleanlowerrange > lbp_adversupperrange) { lbp_distance = lbp_cleanlowerrange - lbp_adversupperrange; lbp_distance = lbp_distance * lbp_distance; } else if (lbp_adversupperrange > lbp_cleanupperrange && lbp_adverselowerrange > lbp_cleanupperrange) { lbp_distance = lbp_adverselowerrange - lbp_cleanupperrange; lbp_distance = lbp_distance * lbp_distance; } else { lbp_distance = Math.Abs(lbp_adversupperrange + lbp_adverselowerrange - lbp_cleanupperrange - lbp_cleanlowerrange); } Accord.Math.Distances.Euclidean euclidean = new Accord.Math.Distances.Euclidean(); var p = Array.ConvertAll <int, double>(adv_histogram.ToArray(), x => (double)x / (double)adv_histogram.Max); var q = Array.ConvertAll <int, double>(clean_histogram.ToArray(), x => (double)x / (double)clean_histogram.Max); // foreach(var b in q) // Console.Write(b + ""); var plist = p.ToList(); var qlist = q.ToList(); double ecu_distance = euclidean.Distance(p, q); double crossentropyp = CEL.Crossentropy(plist, plist); double crossentropyq = CEL.Crossentropy(qlist, qlist); double crossentropy = CEL.Crossentropy(plist, qlist); // Console.WriteLine(sta + " crossentropy " + crossentropyp + " " + crossentropyq + " " + crossentropy); // var adv_normal = new NormalDistribution(mean: plist.Average(), stdDev: plist.StdDev); // var clean_normal = new NormalDistribution(mean: clean_histogram.Mean, stdDev: clean_histogram.StdDev); double crossentropyppde = CEL.CrossentropyPDE(plist, plist); double crossentropyqpde = CEL.CrossentropyPDE(qlist, qlist); double crossentropypde = CEL.CrossentropyPDE(qlist, plist);; // Console.WriteLine(sta + " crossentropypde " + crossentropyppde + " " + crossentropyqpde + " " + crossentropypde); double deltax = 0 - lbp_distance;// point1[0]; double deltay = 0 - distance; double deltaz = 0 - ecu_distance; diff = (double)Math.Sqrt( (deltax * deltax) + (deltay * deltay) + (deltaz * deltaz)); // Console.WriteLine(sta+ " fitness " + diff+"-"+ ecu_distance + "-"+ lbp_distance); euc_cleanupperrange = clean_histogram.Mean + clean_histogram.StdDev; euc_cleanlowerrange = clean_histogram.Mean - clean_histogram.StdDev; string sa = sta + ", LVALUE, " + Lvalueavg + " fitness ," + diff + "," + ecu_distance + "," + lbp_distance + " ," + crossentropy + " ," + crossentropypde; // if (!MainGA.recodedfilters.Contains(sta + "," + diff + "," + cleanupperrange + "," + cleanlowerrange + "," + lbp_cleanupperrange + "," + lbp_cleanlowerrange + "," + euc_cleanupperrange + "," + euc_cleanlowerrange)); // MainGA.recodedfilters.Add(sta + "," + diff + "," + cleanupperrange + "," + cleanlowerrange + "," + lbp_cleanupperrange + "," + lbp_cleanlowerrange + "," + euc_cleanupperrange + "," + euc_cleanlowerrange); Fitnessvalues fitnessvalues = new Fitnessvalues(); fitnessvalues.Individual = sta; fitnessvalues.Histogramdistance = diff; fitnessvalues.Cleanupperrange = cleanupperrange; fitnessvalues.Lowerupperrange = cleanlowerrange; fitnessvalues.Lbp_distance = lbp_distance; fitnessvalues.Lbp_cleanupperrange = lbp_cleanupperrange; fitnessvalues.Lbp_lowerupperrange = lbp_cleanlowerrange; fitnessvalues.Ecu_distance = Math.Abs(ecu_distance); fitnessvalues.Ecu_histogram_clean = clean_histogram; fitnessvalues.Ecu_histogram_adv = adv_histogram; fitnessvalues.Lvalue = Lvalueavg; fitnessvalues.Crossentropy = crossentropy; fitnessvalues.Crossentropy_clean = crossentropyq; fitnessvalues.Crossentropy_adv = crossentropyp; fitnessvalues.Crossentropy_PDE = crossentropypde; fitnessvalues.Crossentropy_PDE_clean = crossentropyqpde; fitnessvalues.Crossentropy_PDE_adv = Math.Abs(crossentropyppde); MainGA.fitness.Add(fitnessvalues); return(fitnessvalues); }
private void runonadverseonthread() { ObservableCollection <double> means = new ObservableCollection <double>(); ObservableCollection <double> lbpmeans = new ObservableCollection <double>(); ObservableCollection <double> L = new ObservableCollection <double>(); Accord.Statistics.Visualizations.Histogram histogram = null; //List<double> stddeva = new List<double>(); count = 0; string[] file = Directory.GetFiles(Form1.adverse); if (imagetotal > file.Length) { imagetotal = file.Length; } var T1 = Task.Run(() => { for (int i = 0; i < threadcount * 1; i++) { // Form1.textlist.Add("adverse count " + i); if (i >= imagetotal) { break; } rettype rt = runalgo(file[i]); means.Add(rt.histoavg); lbpmeans.Add(rt.lbpavg); if (histogram == null) { histogram = rt.histogram; } else { histogram.Add(rt.histogram); } L.Add(CEL.Lcalculate(0, rt.histogram)); } }); var T2 = Task.Run(() => { for (int i = threadcount * 1; i < threadcount * 2; i++) { // Form1.textlist.Add("adverse count " + i); if (i >= imagetotal) { break; } rettype rt = runalgo(file[i]); means.Add(rt.histoavg); lbpmeans.Add(rt.lbpavg); if (histogram == null) { histogram = rt.histogram; } else { histogram.Add(rt.histogram); } L.Add(CEL.Lcalculate(0, rt.histogram)); } }); var T3 = Task.Run(() => { for (int i = threadcount * 2; i < threadcount * 3; i++) { // Form1.textlist.Add("adverse count " + i); if (i >= imagetotal) { break; } rettype rt = runalgo(file[i]); means.Add(rt.histoavg); lbpmeans.Add(rt.lbpavg); if (histogram == null) { histogram = rt.histogram; } else { histogram.Add(rt.histogram); } L.Add(CEL.Lcalculate(0, rt.histogram)); } }); var T4 = Task.Run(() => { for (int i = threadcount * 3; i <= threadcount * 4; i++) { // Form1.textlist.Add("adverse count " + i); if (i >= imagetotal) { break; } rettype rt = runalgo(file[i]); means.Add(rt.histoavg); lbpmeans.Add(rt.lbpavg); if (histogram == null) { histogram = rt.histogram; } else { histogram.Add(rt.histogram); } L.Add(CEL.Lcalculate(0, rt.histogram)); } }); var T5 = Task.Run(() => { for (int i = threadcount * 4; i < threadcount * 5; i++) { // Form1.textlist.Add("adverse count " + i); if (i >= imagetotal) { break; } rettype rt = runalgo(file[i]); means.Add(rt.histoavg); lbpmeans.Add(rt.lbpavg); if (histogram == null) { histogram = rt.histogram; } else { histogram.Add(rt.histogram); } L.Add(CEL.Lcalculate(0, rt.histogram)); } }); var T6 = Task.Run(() => { for (int i = threadcount * 5; i < threadcount * 6; i++) { // Form1.textlist.Add("adverse count " + i); if (i >= imagetotal) { break; } rettype rt = runalgo(file[i]); means.Add(rt.histoavg); lbpmeans.Add(rt.lbpavg); if (histogram == null) { histogram = rt.histogram; } else { histogram.Add(rt.histogram); } L.Add(CEL.Lcalculate(0, rt.histogram)); } }); var T7 = Task.Run(() => { for (int i = threadcount * 6; i < threadcount * 7; i++) { // Form1.textlist.Add("adverse count " + i); if (i >= imagetotal) { break; } rettype rt = runalgo(file[i]); means.Add(rt.histoavg); lbpmeans.Add(rt.lbpavg); if (histogram == null) { histogram = rt.histogram; } else { histogram.Add(rt.histogram); } L.Add(CEL.Lcalculate(0, rt.histogram)); } }); var T8 = Task.Run(() => { for (int i = threadcount * 7; i < file.Length; i++) { // Form1.textlist.Add("adverse count " + i); if (i >= imagetotal) { break; } rettype rt = runalgo(file[i]); means.Add(rt.histoavg); lbpmeans.Add(rt.lbpavg); if (histogram == null) { histogram = rt.histogram; } else { histogram.Add(rt.histogram); } L.Add(CEL.Lcalculate(0, rt.histogram)); } }); T1.Wait(); T2.Wait(); T3.Wait(); T4.Wait(); T5.Wait(); T6.Wait(); T7.Wait(); T8.Wait(); // Form1.textlist.Add("total sample processed " + means.Count()); double std = StandardDeviation(means.ToList(), 0, means.Count()); double avg = means.Average(); adversupperrange = std + avg; adverselowerrange = Math.Abs(avg - std); std = StandardDeviation(lbpmeans.ToList(), 0, lbpmeans.Count()); avg = means.Average(); lbp_adversupperrange = std + avg; lbp_adverselowerrange = Math.Abs(avg - std); // Form1.textlist.Add(sta+" adversupperrange " + adversupperrange + " adverselowerrange " + adverselowerrange); adv_histogram = histogram; Ladvvalueavg = L.Average(); Lvaluesum = Lvaluesum + L.Sum(); }