public void CalculateAligningObservedFitnessWithNoisyLogTest() { // Arrange // Act var fitness = AlignmentBased.TestAlignment(log, log_noisy); // Assert Assert.AreEqual(-1, fitness); }
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); } }