Exemple #1
0
        public void CalculateTokenReplayFitnessWithSameLogTest()
        {
            // Arrange
            PetriNet minedModel = AlphaMiner.mine(log);

            // Act
            var casualFitness = ConformanceChecking.TokenReplayFitness(minedModel, log);

            // Assert
            Assert.AreEqual(casualFitness, 1);
        }
Exemple #2
0
        public void CalculateCasualFootprintFitnessWithSameLogTest()
        {
            // Arrange
            PetriNet minedModel = AlphaMiner.mine(log);

            // Act
            var casualFitness = CasualFootprints.CalculateCasualFootprintFitness(minedModel, log);

            // Assert
            Assert.AreEqual(casualFitness, 1);
        }
Exemple #3
0
        public void CalculateTokenReplayFitnessWithNoisyLogTest()
        {
            // Arrange
            PetriNet minedModel = AlphaMiner.mine(log);

            // Act
            var casualFitness = ConformanceChecking.TokenReplayFitness(minedModel, log_noisy);

            // Assert
            Assert.IsTrue(casualFitness > 0.96);
            Assert.IsTrue(casualFitness < 0.97);
        }
Exemple #4
0
        public void CalculateCasualFootprintFitnessWithNoisyLogTest()
        {
            // Arrange
            PetriNet minedModel = AlphaMiner.mine(log);

            // Act
            var casualFitness = CasualFootprints.CalculateCasualFootprintFitness(minedModel, log_noisy);

            // Assert
            Assert.IsTrue(casualFitness > 0.21M);
            Assert.IsTrue(casualFitness < 0.22M);
        }
Exemple #5
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);
        }
    }
        public void mineTest()
        {
            // Arrange
            Dictionary <List <string>, int> log = FileParser.ParseXES(
                @"C:\ProcessMining\conformance-checking-c-\ProcessMiningC#\ProcessMining\extension-log.xes");

            // Act
            PetriNet minedModel = AlphaMiner.mine(log);

            // Assert
            Assert.IsNotNull(minedModel);
            Assert.AreEqual(8, minedModel.Transitions.Count);
            Assert.AreEqual(8, minedModel.TransitionsNameToId.Count);
        }