/// <summary> /// Interface for calculating Casual Footprint fitness /// </summary> /// <param name="pathToLogToBeMined">Path to the log file, from which we will mine the model using Petri net</param> /// <param name="pathToLogFile"></param> /// <returns>fitness E [0,1]</returns> public static double CalculateCasualFootprintFitness(string pathToLogToBeMined, string pathToLogFile) { Dictionary <List <string>, int> log = FileParser.ParseXES(pathToLogToBeMined); Dictionary <List <string>, int> logNoisy = FileParser.ParseXES(pathToLogFile); PetriNet minedModel = AlphaMiner.mine(log); return((double)CasualFootprints.CalculateCasualFootprintFitness(minedModel, logNoisy)); }
/// <summary> /// Test /// </summary> public static void TestConformanceChecking() { Dictionary <List <string>, int> log = FileParser.ParseXES( @"D:\New folder\conformance-checking-c-\ProcessMiningC#\ProcessMining\extension-log.xes"); Dictionary <List <string>, int> log_noisy = FileParser.ParseXES( @"D:\New folder\conformance-checking-c-\ProcessMiningC#\ProcessMining\extension-log-noisy.xes"); PetriNet minedModel = AlphaMiner.mine(log); var casualFitness = CasualFootprints.CalculateCasualFootprintFitness(minedModel, log); var casualFitnessNoisy = CasualFootprints.CalculateCasualFootprintFitness(minedModel, log_noisy); Console.WriteLine($"CasualFootprint fitness of the same logs and model: {casualFitness}"); Console.WriteLine($"CasualFootprint fitness of the model and noisy logs: {casualFitnessNoisy}"); Console.WriteLine(ConformanceChecking.TokenReplayFitness(minedModel, log)); Console.WriteLine(ConformanceChecking.TokenReplayFitness(minedModel, log_noisy)); Console.ReadLine(); }
/// <summary> /// Interface for calculating Casual Footprint fitness /// </summary> /// <param name="net">Petri net representing the model</param> /// <param name="pathToLogFile"></param> /// <returns>fitness E [0,1]</returns> public static double CalculateCasualFootprintFitness(PetriNet net, string pathToLogFile) { Dictionary <List <string>, int> log = FileParser.ParseXES(pathToLogFile); return((double)CasualFootprints.CalculateCasualFootprintFitness(net, log)); }
/// <summary> /// Interface for calculating Casual Footprint fitness /// </summary> /// <param name="net">Petri net representing the model</param> /// <param name="logDict">Sequence dictionary of the log</param> /// <returns>fitness E [0,1]</returns> public static double CalculateCasualFootprintFitness(PetriNet net, Dictionary <List <string>, int> logDict) { return((double)CasualFootprints.CalculateCasualFootprintFitness(net, logDict)); }