¿Qué es una red de Petri?

Una red de Petri (también conocida como red de lugar / transición o red P / T ) es uno de los varios lenguajes de modelado matemático para la descripción de sistemas distribuidos. Una red de Petri es un gráfico bipartito dirigido, en el que los nodos representan transiciones (es decir, eventos que pueden ocurrir, significados por barras) y lugares (es decir, condiciones, significados por círculos). Los arcos dirigidos describen qué lugares son condiciones previas y / o posteriores para qué transiciones (indicadas por flechas). Algunas fuentes afirman que las redes de Petri fueron inventadas en agosto de 1939 por Carl Adam Petri, a la edad de 13 años, con el fin de describir los procesos químicos.
Al igual que los estándares de la industria, como los diagramas de actividad UML, BPMN y EPC, las redes de Petri ofrecen una notación gráfica para procesos escalonados que incluyen elección, iteración y ejecución concurrente. A diferencia de estos estándares, las redes de Petri tienen una definición matemática exacta de su semántica de ejecución, con una teoría matemática bien desarrollada para el análisis de procesos.

Una red de Petri es una descripción de un sistema en términos de elementos de red. Hay cuatro tipos de elementos netos: Lugar, Transición, Entrada y Salida. Una entrada conecta un lugar a una transición. Una salida conecta una transición a un lugar. Cada elemento neto puede tener cero o más anotaciones. Cada anotación puede tener cero o más anotaciones también. Una anotación puede ser cualquier tipo de información.

Una red de lugar / transición (P / T) es una red de Petri con las siguientes anotaciones:

  1. Cada lugar tiene una marca. El dominio de la marca es del conjunto de enteros positivos.
  2. Cada transición tiene un estado. El dominio del estado está habilitado o no habilitado. Se puede activar una transición habilitada.
  3. Alguna vez la transición tiene una regla de actualización de estado. El estado de la transición está habilitado si el estado de cada entrada de la transición está habilitado; de lo contrario, el estado de la transición no está habilitado.
  4. Cada transición tiene una regla de disparo. Para disparar una transición, dispare cada una de sus entradas y cada una de sus salidas.
  5. Cada entrada tiene un peso. El dominio del peso es del conjunto de enteros positivos. [Estrictamente hablando, si un peso de entrada es 0, la red se llama Red de inhibidor y no una Red de lugar / transición. Personalmente, creo que la Red de Lugar / Transición debería definirse como una Red de Inhibidores].
  6. Cada entrada tiene un estado. El dominio del estado está habilitado o no habilitado. Se puede disparar una entrada habilitada.
  7. Cada entrada tiene una regla de actualización de estado. El estado de una entrada se habilita si el peso de entrada es mayor que 0 y la marca del lugar de entrada es mayor o igual que el peso; el estado de una entrada está habilitado si el peso de entrada es 0 y la marca del lugar de entrada es 0. De lo contrario, el estado de la entrada no está habilitado.
  8. Cada entrada tiene una regla de disparo. Para disparar una entrada, reste el peso de entrada de la marca del lugar de entrada.
  9. Cada salida tiene una regla de disparo. Para disparar una salida, agregue el peso de salida a la marca del lugar de salida.
  10. Cada lugar se representa gráficamente como un círculo o un óvalo.
  11. Cada transición se representa gráficamente como un cuadrado o un rectángulo.
  12. Cada entrada se representa gráficamente como una flecha desde un círculo / óvalo a un cuadrado / rectángulo.
  13. Cada salida se representa gráficamente como una flecha desde un cuadrado / rectángulo a un círculo / óvalo.
  14. Cada marca se representa como una colección de puntos negros: 0: vacío, 1: un punto negro, 2: dos puntos negros, etc.

Todavía hay mucho que desear de un lugar / red de transición en términos de representación gráfica, interacción y ejecución. Por ejemplo, no hay anotaciones definidas para las transiciones habilitadas. Personalmente, sombreo las transiciones habilitadas en verde. No hay anotaciones para elegir automáticamente qué transiciones habilitadas seleccionar para disparar. Para fines generales, utilizo el siguiente modelo de ejecución: seleccione una transición habilitada al azar, active la transición seleccionada. Si creo una red de Petri donde un usuario puede interactuar con la red, utilizo un evento de mouse para activar el disparo de una transición habilitada.