public readonly long elapsedTime; // in milliseconds //public readonly double densityDiffAverage, densityDifferenceDeviation; //public readonly double editDistanceAverage, editDistanceDeviation; public MeasurementResultSet(PDLPred originalFormula, IEnumerable <PDLPred> generatedFormulas, long time, VariableCache.ConstraintMode constraintmode, PdlFilter.Filtermode filtermode, HashSet <char> alphabet, IDictionary <PDLPred, SingleMeasurementResult> cache, IDictionary <Automaton <BDD>, SingleMeasurementResult> automatonCache) { this.originalFormula = originalFormula; this.alphabet = alphabet; this.originalAutomaton = originalFormula.GetDFA(alphabet, new CharSetSolver()); this.constraintmode = constraintmode; this.filtermode = filtermode; this.elapsedTime = time; this.results = new List <SingleMeasurementResult>(); foreach (PDLPred generatedFormula in generatedFormulas) { SingleMeasurementResult result; if (cache.ContainsKey(generatedFormula)) { result = cache[generatedFormula]; } else { result = SingleMeasurementResult.Create(this.originalAutomaton, generatedFormula, this.alphabet, automatonCache); cache[generatedFormula] = result; } this.results.Add(result); } // Compute statistics /* * double densityDiffSum = 0; * int editDistanceSum = 0; * * foreach (SingleMeasurementResult result in this.results) * { * densityDiffSum += result.densityDiff; * editDistanceSum += result.editDistance; * } * * this.densityDiffAverage = ((double)densityDiffSum) / ((double)this.results.Count); * this.editDistanceAverage = ((double)editDistanceSum) / ((double)this.results.Count); * * double densityDiffDeviation = 0; * double editDistanceDeviation = 0; * foreach (SingleMeasurementResult result in this.results) * { * densityDiffDeviation += Math.Pow(result.densityDiff - this.densityDiffAverage, 2.0); * editDistanceDeviation += Math.Pow(((double)result.editDistance) - this.editDistanceAverage, 2.0); * } * densityDiffDeviation /= this.results.Count; * densityDiffDeviation = Math.Sqrt(densityDiffDeviation); * * editDistanceDeviation /= this.results.Count; * editDistanceDeviation = Math.Sqrt(editDistanceDeviation); */ }