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 AlphaMinerDetectEndActivitiesTest() { Field field = new Field { EventLog = GenerateTestLog() }; AlphaMiner alphaMiner = new AlphaMiner(field); PrivateObject priObj = new PrivateObject(alphaMiner); priObj.Invoke("DetectStartAndEndActivitiesInTraces"); HashSet <String> listOfEndActivities = (HashSet <String>)priObj.GetField("_listOfEndActivities"); Assert.IsNotNull(listOfEndActivities); }
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); }
public void DetectAllPlacesTestOntoTrue() { Field field = new Field { EventLog = GenerateTestLog() }; AlphaMiner alphaMiner = new AlphaMiner(field); PrivateObject priObj = new PrivateObject(alphaMiner); priObj.Invoke("DetectAllPlaces"); priObj.Invoke("AddsPlacesTogether"); priObj.Invoke("RemoveAllDuplicatePlaces"); List <AlphaMinerPlaces> alphaPlaces = (List <AlphaMinerPlaces>)priObj.GetField("_listOfAlphaPlaces"); List <AlphaMinerPlaces> testPlaces = new List <AlphaMinerPlaces> { new AlphaMinerPlaces(new HashSet <string> { "A" }, new HashSet <string> { "B", "E" }), new AlphaMinerPlaces(new HashSet <string> { "A" }, new HashSet <string> { "C", "E" }), new AlphaMinerPlaces(new HashSet <string> { "C", "E" }, new HashSet <string> { "D" }), new AlphaMinerPlaces(new HashSet <string> { "B", "E" }, new HashSet <string> { "D" }) }; Assert.IsTrue(alphaPlaces.Count.Equals(testPlaces.Count)); foreach (AlphaMinerPlaces testPlace in testPlaces) { int count = alphaPlaces .Count(k => k.PredecessorHashSet.SetEquals(testPlace.PredecessorHashSet) && k.FollowerHashSet.SetEquals(testPlace.FollowerHashSet)); Assert.IsTrue(count == 1); } }
public void DetectAllPlacesTestOntoFalse() { Field field = new Field { EventLog = GenerateTestLog() }; AlphaMiner alphaMiner = new AlphaMiner(field); PrivateObject priObj = new PrivateObject(alphaMiner); priObj.Invoke("DetectAllPlaces"); priObj.Invoke("AddsPlacesTogether"); priObj.Invoke("RemoveAllDuplicatePlaces"); List <AlphaMinerPlaces> alphaPlaces = (List <AlphaMinerPlaces>)priObj.GetField("_listOfAlphaPlaces"); List <AlphaMinerPlaces> testPlaces = new List <AlphaMinerPlaces> { new AlphaMinerPlaces(new HashSet <string> { "A" }, new HashSet <string> { "B", "E" }), new AlphaMinerPlaces(new HashSet <string> { "A" }, new HashSet <string> { "C", "E" }), new AlphaMinerPlaces(new HashSet <string> { "G", "E" }, new HashSet <string> { "F" }), // correctly -> "C,E", "D" new AlphaMinerPlaces(new HashSet <string> { "B", "E" }, new HashSet <string> { "D" }), new AlphaMinerPlaces(new HashSet <string> { "D" }, new HashSet <string> { "F" }) // too much }; Assert.IsFalse(alphaPlaces.Count.Equals(testPlaces.Count)); Assert.IsFalse(testPlaces[2].PredecessorHashSet.SetEquals(alphaPlaces[2].PredecessorHashSet)); Assert.IsFalse(testPlaces[2].FollowerHashSet.SetEquals(alphaPlaces[2].FollowerHashSet)); }
public void AlphaMinerBuildTheNetTest() { Field field = new Field { EventLog = GenerateTestLog() }; AlphaMiner alphaMiner = new AlphaMiner(field); PrivateObject priObj = new PrivateObject(alphaMiner); priObj.Invoke("DetectAllPlaces"); priObj.Invoke("DetectStartAndEndActivitiesInTraces"); priObj.Invoke("AddsPlacesTogether"); priObj.Invoke("RemoveAllDuplicatePlaces"); priObj.Invoke("BuildTheNet"); PetriNet petriNet = (PetriNet)priObj.GetField("_petriNet"); Place startPlace = petriNet.GetPlaceByName("start"); Place endPlace = petriNet.GetPlaceByName("end"); Assert.IsNotNull(petriNet); Assert.IsNotNull(startPlace); Assert.IsNotNull(endPlace); //MiningAlgorithm.AlphaMiner.PetriNet = new PetriNet(""); //MiningAlgorithm.AlphaMiner.ListOfStartActivities.Add("A"); //MiningAlgorithm.AlphaMiner.ListOfEndActivities.Add("D"); //MiningAlgorithm.AlphaMiner.ListOfActivities.Add("A"); //MiningAlgorithm.AlphaMiner.ListOfActivities.Add("B"); //MiningAlgorithm.AlphaMiner.ListOfActivities.Add("C"); //MiningAlgorithm.AlphaMiner.ListOfActivities.Add("D"); //MiningAlgorithm.AlphaMiner.ListOfActivities.Add("E"); //MiningAlgorithm.AlphaMiner.ListOfAlphaPlaces = ListAlphaMinerPlaces; //MiningAlgorithm.AlphaMiner.BuildTheNet(); }