Esempio n. 1
0
def apply(log, petri_net, initial_marking, final_marking, align_variant=alignments.DEFAULT_VARIANT, parameters=None):
    """
    Evaluate fitness based on alignments

    Parameters
    ----------------
    log
        Event log
    petri_net
        Petri net
    initial_marking
        Initial marking
    final_marking
        Final marking
    align_variant
        Variants of the alignments to apply
    parameters
        Parameters of the algorithm

    Returns
    ---------------
    dictionary
        Containing two keys (percFitTraces and averageFitness)
    """
    if align_variant == decomp_alignments.Variants.RECOMPOS_MAXIMAL.value:
        alignment_result = decomp_alignments.apply(log, petri_net, initial_marking, final_marking,
                                                   variant=align_variant, parameters=parameters)
    else:
        alignment_result = alignments.apply(log, petri_net, initial_marking, final_marking, variant=align_variant,
                                            parameters=parameters)
    return evaluate(alignment_result)
Esempio n. 2
0
def execute_script():
    # import the a32f0n00 log
    log = xes_importer.apply(
        os.path.join("..", "tests", "compressed_input_data",
                     "09_a32f0n00.xes.gz"))
    # discover a model using the inductive miner
    net, im, fm = inductive_miner.apply(log)
    # apply the alignments decomposition with a maximal number of border disagreements set to 5
    aa = time.time()
    aligned_traces = dec_align.apply(
        log,
        net,
        im,
        fm,
        parameters={
            dec_align.Variants.RECOMPOS_MAXIMAL.value.Parameters.PARAM_THRESHOLD_BORDER_AGREEMENT:
            5
        })
    bb = time.time()
    print(bb - aa)
    # print(aligned_traces)
    # calculate the fitness over the recomposed alignment (use the classical evaluation)
    fitness = rep_fit.evaluate(aligned_traces,
                               variant=rep_fit.Variants.ALIGNMENT_BASED)
    print(fitness)
Esempio n. 3
0
 def test_decomp_alignment(self):
     log = xes_importer.apply(
         os.path.join("input_data", "running-example.xes"))
     from pm4py.algo.discovery.alpha import algorithm as alpha_miner
     net, im, fm = alpha_miner.apply(log)
     from pm4py.algo.conformance.decomp_alignments import algorithm as decomp_align
     aligned_traces = decomp_align.apply(
         log, net, im, fm, variant=decomp_align.Variants.RECOMPOS_MAXIMAL)