private static List <Experiment> GetAveragedExperiments(IEnumerable <IGrouping <dynamic, Experiment> > groupedExperimentsCollection) { var averagedExperiments = new List <Experiment>(); foreach (var groupedExperiments in groupedExperimentsCollection) { var parameters = groupedExperiments.First().ExperimentParameters; var evolutionStatistics = new EvolutionStatistics { BestFitnessScore = groupedExperiments.Average(g => g.Statistics.EvolutionStatistics.BestFitnessScore), LastFitnessScore = groupedExperiments.Average(g => g.Statistics.EvolutionStatistics.LastFitnessScore), NumberOfGenerationBestSolutionTakenFrom = (int)Math.Round(groupedExperiments.Average(g => g.Statistics.EvolutionStatistics.NumberOfGenerationBestSolutionTakenFrom)) }; var statistics = new Statistics() { Accuracy = groupedExperiments.Average(g => g.Statistics.Accuracy), EvolutionStatistics = evolutionStatistics, F1Score = groupedExperiments.Average(g => g.Statistics.F1Score), FallOut = groupedExperiments.Average(g => g.Statistics.FallOut), FalseDiscoveryRate = groupedExperiments.Average(g => g.Statistics.FalseDiscoveryRate), FalseNegatives = (int)Math.Round(groupedExperiments.Average(g => g.Statistics.FalseNegatives)), FalseOmissionRate = groupedExperiments.Average(g => g.Statistics.FalseOmissionRate), FalsePositives = (int)Math.Round(groupedExperiments.Average(g => g.Statistics.FalsePositives)), JaccardIndex = groupedExperiments.Average(g => g.Statistics.JaccardIndex), MeanAngle = groupedExperiments.Average(g => g.Statistics.MeanAngle), MissRate = groupedExperiments.Average(g => g.Statistics.MissRate), //ModelEvaluationTime = modelEvaluationTime, NegativePredictiveValue = groupedExperiments.Average(g => g.Statistics.NegativePredictiveValue), //NegativeTrainingPointsGenerationTime = negativeTrainingPointsGenerationTime, NumberOfConstraints = (int)Math.Round(groupedExperiments.Average(g => g.Statistics.NumberOfConstraints)), //PositiveTrainingPointsGenerationTime = positiveTrainingPointsGenerationTime, Precision = groupedExperiments.Average(g => g.Statistics.Precision), Recall = groupedExperiments.Average(g => g.Statistics.Recall), //RedundantConstraintsRemovingTime = redundantConstraintsRemovingTime, Specificity = groupedExperiments.Average(g => g.Statistics.Specificity), //TestPointsGenerationTime = testPointsGenerationTime, //TotalSynthesisTime = totalSynthesisTime, TrueNegatives = (int)Math.Round(groupedExperiments.Average(g => g.Statistics.TrueNegatives)), TruePositives = (int)Math.Round(groupedExperiments.Average(g => g.Statistics.TruePositives)), }; averagedExperiments.Add(new Experiment { ExperimentParameters = parameters, Statistics = statistics }); } return(averagedExperiments); }
private static CSUSESStatistics GetStatistics(EvolutionStatistics evolutionStatistics) { return(new CSUSESStatistics() { NumberOfConstraints = GetInt(nameof(CSUSESStatistics.NumberOfConstraints)), MeanAngle = GetDouble(nameof(CSUSESStatistics.MeanAngle)), TruePositives = GetInt(nameof(CSUSESStatistics.TruePositives)), FalsePositives = GetInt(nameof(CSUSESStatistics.FalsePositives)), TrueNegatives = GetInt(nameof(CSUSESStatistics.TrueNegatives)), FalseNegatives = GetInt(nameof(CSUSESStatistics.FalseNegatives)), TotalSynthesisTime = TimeSpan.FromMilliseconds(GetInt(nameof(CSUSESStatistics.TotalSynthesisTime))), RedundantConstraintsRemovingTime = TimeSpan.FromMilliseconds(GetInt(nameof(CSUSESStatistics.RedundantConstraintsRemovingTime))), ModelEvaluationTime = TimeSpan.FromMilliseconds(GetInt(nameof(CSUSESStatistics.ModelEvaluationTime))), PositiveTrainingPointsGenerationTime = TimeSpan.FromMilliseconds(GetInt(nameof(CSUSESStatistics.PositiveTrainingPointsGenerationTime))), NegativeTrainingPointsGenerationTime = TimeSpan.FromMilliseconds(GetInt(nameof(CSUSESStatistics.NegativeTrainingPointsGenerationTime))), TestPointsGenerationTime = TimeSpan.FromMilliseconds(GetInt(nameof(CSUSESStatistics.TestPointsGenerationTime))), EvolutionStatistics = evolutionStatistics }); }
private static void TuningTable() { var groupedExperimentsCollection = Experiments .GroupBy(e => new { e.ExperimentParameters.NumberOfDimensions, e.ExperimentParameters.UseRedundantConstraintsRemoving, e.ExperimentParameters.UseDataNormalization, e.ExperimentParameters.AllowQuadraticTerms, e.ExperimentParameters.UseSeeding, e.ExperimentParameters.TypeOfBenchmark, e.ExperimentParameters.EvolutionParameters.BasePopulationSize, e.ExperimentParameters.EvolutionParameters.OffspringPopulationSize, e.ExperimentParameters.EvolutionParameters.NumberOfGenerations, //e.ExperimentParameters.MaximumNumberOfConstraints, //e.ExperimentParameters.NumberOfConstraintsCoefficients, //e.ExperimentParameters.TrackEvolutionSteps, //e.ExperimentParameters.BallnBoundaryValue, //e.ExperimentParameters.CubenBoundaryValue, //e.ExperimentParameters.SimplexnBoundaryValue, //e.ExperimentParameters.NumberOfDomainSamples, //e.ExperimentParameters.NumberOfTestPoints, //e.ExperimentParameters.NumberOfPositivePoints, //e.ExperimentParameters.NumberOfNegativePoints, //e.ExperimentParameters.DefaultDomainLowerLimit, //e.ExperimentParameters.DefaultDomainUpperLimit, //e.ExperimentParameters.MaxNumberOfPointsInSingleArray, //e.ExperimentParameters.EvolutionParameters.ObjectVectorSize, //e.ExperimentParameters.EvolutionParameters.OneFifthRuleCheckInterval, //e.ExperimentParameters.EvolutionParameters.OneFifthRuleScalingFactor, //e.ExperimentParameters.EvolutionParameters.NumberOfParentsSolutionsToSelect, //e.ExperimentParameters.EvolutionParameters.TypeOfParentsSelection, //e.ExperimentParameters.EvolutionParameters.TypeOfSurvivorsSelection, //e.ExperimentParameters.EvolutionParameters.GlobalLearningRate, //e.ExperimentParameters.EvolutionParameters.IndividualLearningRate, //e.ExperimentParameters.EvolutionParameters.StepThreshold, //e.ExperimentParameters.EvolutionParameters.RotationAngle, //e.ExperimentParameters.EvolutionParameters.TypeOfMutation, //e.ExperimentParameters.EvolutionParameters.UseRecombination, //e.ExperimentParameters.EvolutionParameters.TypeOfObjectsRecombination, //e.ExperimentParameters.EvolutionParameters.TypeOfStdDeviationsRecombination, //e.ExperimentParameters.EvolutionParameters.TypeOfRotationsRecombination, }); var averagedExperiments = new List <Experiment>(); foreach (var groupedExperiments in groupedExperimentsCollection) { var parameters = groupedExperiments.First().ExperimentParameters; var evolutionStatistics = new EvolutionStatistics { BestFitnessScore = groupedExperiments.Average(g => g.Statistics.EvolutionStatistics.BestFitnessScore), LastFitnessScore = groupedExperiments.Average(g => g.Statistics.EvolutionStatistics.LastFitnessScore), NumberOfGenerationBestSolutionTakenFrom = (int)Math.Round(groupedExperiments.Average(g => g.Statistics.EvolutionStatistics.NumberOfGenerationBestSolutionTakenFrom)) }; var statistics = new Statistics() { Accuracy = groupedExperiments.Average(g => g.Statistics.Accuracy), EvolutionStatistics = evolutionStatistics, F1Score = groupedExperiments.Average(g => g.Statistics.F1Score), FallOut = groupedExperiments.Average(g => g.Statistics.FallOut), FalseDiscoveryRate = groupedExperiments.Average(g => g.Statistics.FalseDiscoveryRate), FalseNegatives = (int)Math.Round(groupedExperiments.Average(g => g.Statistics.FalseNegatives)), FalseOmissionRate = groupedExperiments.Average(g => g.Statistics.FalseOmissionRate), FalsePositives = (int)Math.Round(groupedExperiments.Average(g => g.Statistics.FalsePositives)), JaccardIndex = groupedExperiments.Average(g => g.Statistics.JaccardIndex), MeanAngle = groupedExperiments.Average(g => g.Statistics.MeanAngle), MissRate = groupedExperiments.Average(g => g.Statistics.MissRate), //ModelEvaluationTime = modelEvaluationTime, NegativePredictiveValue = groupedExperiments.Average(g => g.Statistics.NegativePredictiveValue), //NegativeTrainingPointsGenerationTime = negativeTrainingPointsGenerationTime, NumberOfConstraints = (int)Math.Round(groupedExperiments.Average(g => g.Statistics.NumberOfConstraints)), //PositiveTrainingPointsGenerationTime = positiveTrainingPointsGenerationTime, Precision = groupedExperiments.Average(g => g.Statistics.Precision), Recall = groupedExperiments.Average(g => g.Statistics.Recall), //RedundantConstraintsRemovingTime = redundantConstraintsRemovingTime, Specificity = groupedExperiments.Average(g => g.Statistics.Specificity), //TestPointsGenerationTime = testPointsGenerationTime, //TotalSynthesisTime = totalSynthesisTime, TrueNegatives = (int)Math.Round(groupedExperiments.Average(g => g.Statistics.TrueNegatives)), TruePositives = (int)Math.Round(groupedExperiments.Average(g => g.Statistics.TruePositives)), }; averagedExperiments.Add(new Experiment { ExperimentParameters = parameters, Statistics = statistics }); } SaveToFile("tuningTable.tex", CreateTuningTable(averagedExperiments)); }