コード例 #1
0
        private void OutputResultLine(System.IO.StreamWriter writer, SingleMeasurementResult result)
        {
            // Format: Formula;editDistance;densityDiff
            string resultLine = String.Format("{0};{1};{2}", result.generatedFormula, result.editDistance, result.densityDiff);

            writer.WriteLine(resultLine);
        }
コード例 #2
0
        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);
             */
        }
コード例 #3
0
        public static SingleMeasurementResult Create(Automaton <BDD> originalAutomaton, PDLPred generatedFormula, HashSet <char> alphabet, IDictionary <Automaton <BDD>, SingleMeasurementResult> cache)
        {
            CharSetSolver           solver             = new CharSetSolver();
            Automaton <BDD>         generatedAutomaton = generatedFormula.GetDFA(alphabet, solver);
            SingleMeasurementResult returnValue;

            if (cache.ContainsKey(generatedAutomaton))
            {
                returnValue = cache[generatedAutomaton];
                System.Diagnostics.Debug.WriteLine("Automaton Cache Hit");
            }
            else
            {
                returnValue = new SingleMeasurementResult(originalAutomaton, generatedFormula, generatedAutomaton, alphabet);
                cache[generatedAutomaton] = returnValue;
                System.Diagnostics.Debug.WriteLine("Automaton Cache Miss");
            }
            return(returnValue);
        }
コード例 #4
0
 private void OutputResultLine(System.IO.StreamWriter writer, SingleMeasurementResult result)
 {
     // Format: Formula;editDistance;densityDiff
     string resultLine = String.Format("{0};{1};{2}", result.generatedFormula, result.editDistance, result.densityDiff);
     writer.WriteLine(resultLine);
 }
コード例 #5
0
 public static SingleMeasurementResult Create(Automaton<BDD> originalAutomaton, PDLPred generatedFormula, HashSet<char> alphabet, IDictionary<Automaton<BDD>, SingleMeasurementResult> cache)
 {
     CharSetSolver solver = new CharSetSolver();
     Automaton<BDD> generatedAutomaton = generatedFormula.GetDFA(alphabet, solver);
     SingleMeasurementResult returnValue;
     if (cache.ContainsKey(generatedAutomaton))
     {
         returnValue = cache[generatedAutomaton];
         System.Diagnostics.Debug.WriteLine("Automaton Cache Hit");
     }
     else
     {
         returnValue = new SingleMeasurementResult(originalAutomaton, generatedFormula, generatedAutomaton, alphabet);
         cache[generatedAutomaton] = returnValue;
         System.Diagnostics.Debug.WriteLine("Automaton Cache Miss");
     }
     return returnValue;
 }