Example #1
0
        public void CalculateAligningObservedFitnessWithNoisyLogTest()
        {
            // Arrange

            // Act
            var fitness = AlignmentBased.TestAlignment(log, log_noisy);

            // Assert
            Assert.AreEqual(-1, fitness);
        }
Example #2
0
    public static double TestAlignment(Dictionary <List <string>, int> trace_frequencies,
                                       Dictionary <List <string>, int> trace_frequencies_noisy)
    {
        var minedNet       = AlphaMiner.mine(trace_frequencies);
        var completelyFits = true;

        AlignmentBased res = new AlignmentBased();

        foreach (KeyValuePair <List <string>, int> trace in trace_frequencies_noisy)
        {
            string alignment = "";
            res.traceCount += 1;
            bool match = true;
            // Console.WriteLine(" \n");

            minedNet.InitializeTokens();
            minedNet.AddMarking(1);
            foreach (var step in trace.Key)
            {
                // Console.Write(step+"-");
                var transitionId = minedNet.TransitionNameToId(step);
                var isEnabled    = minedNet.IsEnabled(transitionId);
                if (!isEnabled)
                {
                    match = false;
                    //  Console.WriteLine(step);
                    FindOptimalAlignment(trace, minedNet, transitionId, alignment);
                    completelyFits = false;
                    break;
                }
                else
                {
                    alignment += step + " - ";
                }
                minedNet.FireTransition(transitionId);
            }
            if (match == true)
            {
                res.totalFitness += 1;
            }
        }

        if (completelyFits)
        {
            Console.WriteLine("Fitness: " + res.totalFitness / res.traceCount);
            return((double)res.totalFitness / res.traceCount);
        }
        else
        {
            return(-1);
        }
    }