public void CalculateTokenReplayFitnessWithSameLogTest() { // Arrange PetriNet minedModel = AlphaMiner.mine(log); // Act var casualFitness = ConformanceChecking.TokenReplayFitness(minedModel, log); // Assert Assert.AreEqual(casualFitness, 1); }
public void CalculateCasualFootprintFitnessWithSameLogTest() { // Arrange PetriNet minedModel = AlphaMiner.mine(log); // Act var casualFitness = CasualFootprints.CalculateCasualFootprintFitness(minedModel, log); // Assert Assert.AreEqual(casualFitness, 1); }
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); }
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); }
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); }