pm4py.objects.petri_net.utils.align_utils module#

pm4py.objects.petri_net.utils.align_utils.search_path_among_sol(sync_net: PetriNet, ini: Marking, fin: Marking, activated_transitions: List[Transition], skip='>>') Tuple[List[Transition], bool, int][source]#

(Efficient method) Searches a firing sequence among the X vector that is the solution of the (extended) marking equation

Parameters:
  • sync_net – Synchronous product net

  • ini – Initial marking of the net

  • fin – Final marking of the net

  • activated_transitions – Transitions that have non-zero occurrences in the X vector

  • skip – Skip transition

Returns:

  • firing_sequence – Firing sequence

  • reach_fm – Boolean value that tells if the final marking is reached by the firing sequence

  • explained_events – Number of explained events

pm4py.objects.petri_net.utils.align_utils.construct_standard_cost_function(synchronous_product_net, skip)[source]#

Returns the standard cost function, which is: * event moves: cost 1000 * model moves: cost 1000 * tau moves: cost 1 * sync moves: cost 0 :param synchronous_product_net: :param skip: :return:

pm4py.objects.petri_net.utils.align_utils.pretty_print_alignments(alignments)[source]#
Takes an alignment and prints it to the console, e.g.:

A | B | C | D |

Returns:

Nothing

pm4py.objects.petri_net.utils.align_utils.add_markings(curr, add)[source]#
class pm4py.objects.petri_net.utils.align_utils.SearchTuple(f, g, h, m, p, t, x, trust)[source]#

Bases: object

class pm4py.objects.petri_net.utils.align_utils.DijkstraSearchTuple(g, m, p, t, l)[source]#

Bases: object

class pm4py.objects.petri_net.utils.align_utils.TweakedSearchTuple(f, g, h, m, p, t, x, trust, virgin)[source]#

Bases: object

pm4py.objects.petri_net.utils.align_utils.get_visible_transitions_eventually_enabled_by_marking(net, marking)[source]#

Get visible transitions eventually enabled by marking (passing possibly through hidden transitions) :Parameters: * net – Petri net

  • marking – Current marking