Работа с сетями Петри с помощью pm4py
Сеть Петри — это направленный двудольный граф (т.е. граф, вершины которого можно разбить на две части таким образом, что каждое ребро графа соединяет какую-то вершину из одной части с какой-то вершиной другой части, при этом нет ребер, которые соединяют две вершины одной части), где вершины представляют переходы и позиции. Событие – это срабатывание перехода, когда метки из входных позиций перехода перемещаются в выходные.
Сети Петри разрабатывались для моделирования систем с параллельными взаимодействующими компонентами и динамических систем. Также являются одним из видов графов в библиотеке pm4py, с помощью которых можно изобразить процесс. В случае с pm4py переходами являются прямоугольники со стадиями процесса, а окружности – позициями. Сеть Петри можно создать как с помощью логов процесса, так и вручную. Логи файла могут быть xes-файлами или csv-файлами.
Пример создания сети Петри из логов:
Также можно определить циклы в сети Петри. Цикл в сети Петри — это набор позиций и переходов, которые могут повторяться несколько раз (во время выполнения процесса).
Сначала применяется индуктивный майнер (один из видов сети Петри, направлена на построение надёжной сети.), потом мы получаем циклы. Переменная cylces содержит списки позиций, которые входят в циклы.
Результатом является список циклов.
Кроме этого, в данном графе можно определить «сильно связанные» компоненты (подсети, в которых путь в графе существует между каждым элементом).
Для этого также необходимо использовать индуктивный майнер.
Пример вы можете увидеть на рисунке 1.
В итоге мы рассмотрели основные операции, которые можно произвести с сетями Петри с помощью библиотеки pm4py.