Informe Final - zimmcl/Programacion-Concurrente GitHub Wiki
Parametrizar un problema a través de las redes de Petri, para luego construir y ejecutar un framework asociado en lenguaje Java.
El sistema a resolver, es el de un sistema de manufacturación roborizado consistente de tres robots y cuatro máquinas que procesan tres tipos de piezas diferentes.
Una Red de Petri (RdP) es un modelo gráfico bipartito, formal y abstracto para describir y analizar el flujo de información. Conforma una herramienta matemática que puede aplicarse especialmente a los sistemas paralelos que requieran simulación y modelado de la concurrencia en los recursos compartidos.
Los siguientes elementos conforman una RdP: *Plazas: graficados por un círculo, permiten representar estados parciales del sistema y toman valores enteros. *
Token: representan el valor específico de un estado parcial o plaza, interpretándose como recursos. El número y ubicación en las plazas varían dinámicamente en función de la ejecución de la red. *
Transiciones: graficadas por segmento rectos, representan el conjunto de sucesos que provocan la modificación de los estados del sistema. *
Arcos dirigidos: indican las conexiones entre lugares y transiciones, siendo esta asociación bidireccional, de plaza(s) a transición(es) o de transición(es) a plaza(s). *
Peso: número entero asociado a cada arco, que indica la cantidad de tokens que se consumen o generan al atravesarlo. Los arcos que no especifican un peso, se suponen con peso unitario.
A los fines del trabajo práctico definimos a la RdPT (red de Petri temporal) como una tuplaN\
, donde:
1. P = {P1, P2, P3, Pm}, conjunto finito y no vacío de lugares 2.
T = {t1, t2, t3, tn}, conjunto finito y no vacío de transiciones 3.
P ∩ T = Ø 4.
P ∪ T ≠ Ø 5.
F : (P x T)∪(T x P)→{0,1,2,3,...}, conjunto de arcos ponderados (relación de flujo) 6.
Pre (I-): P x T → N, matriz de incidencia negativa. Esta matriz es de dimensión mxn y representa los pesos de los arcos que ingresan desde las plazas P a las transiciones T 7.
Post (I+) T x P → N, matriz de incidencia positiva. Esta matriz es de dimensión mxn y representa los pesos de los arcos que salen desde las transiciones T hacia las plazas P 8.
A partir de las dos últimas definiciones se obtiene la matriz de incidencia: I = I+ - I- 9.
M0 es la función de marcado inicial M0 : P→N 10.
CIS es una correspondencia de intervalos estáticos, CIS : T→Q+ x (Q+ ∪ ∞), donde Q+ es el conjunto de los números racionales positivos junto con el cero. Esto último asocia a cada transición un par (CIS(ti) = (αi, βi)), que define un intervalo temporal, por lo que se debe verificar: 0≤αi≤∞, 0≤βi≤∞, y αi≤βi si βi≠∞ ó αi\<βi si βi=∞
La elección de las RdPT conlleva que se asuma una semántica de tiempo de sensibilización (el parámetro temporal determina el tiempo que ha de transcurrir desde que una transición queda sensibilizada hasta que se dispara, procediéndose entonces a la retirada y colocación de marcas de forma atómica) y de tiempo fuerte (se especifica un intervalo de tiempo en el cual el disparo debe producirse). Con el fin de reducir aún más el indeterminismo en el modelo base consideramos el uso de las siguientes extensiones:
- Eventualmente asociaremos predicados a las transiciones, que condicionarán el disparo de las mismas (políticas). Los predicados dependerán de datos del sistema que no serán explicitamente representados en la red.
- Podremos asignar prioridades a las transiciones, que serán utilizadas para resolver conflictos.
- Para las transiciones que no tengan asociado un intervalo de disparo explícito supondremos un intervalo de [0,0], es decir el disparo será inmediato.
En el modelado de sistemas es preciso representar de manera no ambigua determinados aspectos como los siguientes:
- Eventos a los que debe responder el sistema.
- Los patrones temporales que rigen estos eventos, es decir, su periodicidad o aperiodicidad.
- Las acciones activadas por estos eventos y sus características temporales.
- Las interacciones entre las distintas acciones, que pueden consistir en sincronizaciones, comunicaciones, relaciones de precedencia u otras.
Con el fin de mostrar en nuestro modelo los diferentes papeles que una transición puede representar, y con el propósito último de hacer más clara la generación de código, vamos a distinguir tres tipos de transiciones que, junto con sus lugares de entrada, conformarán los elementos de modelado o unidades de ejecución básicos. Los tipos de transiciones son los siguientes:
-
Transiciones CODE. Cada una de estas transiciones junto con sus lugares de entrada representan una actividad desarrollada por el sistema. Este código comenzará a ejecutarse en el momento en que la transición sea sensibilizada, es decir, todos sus lugares de entrada estén marcados. Este tipo de transiciones están marcadas con dos valores temporales [a,b]. En el modelo, el significado de estos valores está asociado al tiempo de cómputo del código que representa. En el mejor caso la ejecución durará a y en el peor b. La finalización de la ejecución está representada por el disparo de la transición. Por lo tanto, la ejecución de la actividad asociada ocupa un tiempo entre [a,b]. Dibujaremos una transición CODE con un rectángulo de color negro.
-
Transiciones TIME. Son transiciones asociadas a alguna actividad temporal. Están etiquetadas con un intervalo temporal, si bien en este caso es puntual [a,a], donde a representa el instante, a partir del de sensibilización de la transición, en el que se producirá el evento. Dibujaremos este tipo de transición con un rectángulo de color blanco.
-
Transiciones SYCO. Son el resto de transiciones, y no tienen significado temporal explícito asociado. Su disparo será inmediato, lo que supone un intervalo temporal implícito de [0,0]. Dibujaremos este tipo de transición con un segmento negro delgado.
Como consecuencia de la anterior clasificación distinguiremos entre tres unidades de ejecución:
-
Unidad CODE: la formada por una transición CODE y sus lugares de entrada que modelará la ejecución de un cierto código en el sistema; esta unidad comenzará a ejecutarse cuando se sensibilice su transición, estará en ejecución mientras sus lugares de entrada permanezcan marcados, y terminará en un instante determinado por su intervalo temporal, o si deja de estar sensibilizada (abortada).
-
Unidad TIME: la integrada por una transición TIME y sus lugares de entrada, que corresponderá a la posible ocurrencia de un evento temporal; la unidad se ejecutará cuando transcurra la cantidad de tiempo especificada por su intervalo temporal, siempre que la transición permanezca sensibilizada de forma continuada durante esa cantidad de tiempo.
-
Unidad SYCO: la formada por una transición SYCO que representa acciones de control o sincronización; se ejecuta inmediatamente en el momento en que se detecta su sensibilización.
La red de Petri propuesta modela el sistema de manufactura robotizado.
Las plazas de p21 a p23 representan las etapas de la línea de producción de la pieza B, las plazas de p11 a p18 representan las etapas de la línea de producción de la pieza A consistente en dos caminos de producción, y las plazas de p31 a p35 representan las etapas de la línea de producción de la pieza C.
Las plazas p10, p20 y p30 representan los inventarios de cada línea de producción, y las marcas de cada una son la cantidad máxima de productos que pueden estar simultáneamente en cada línea de producción. Las piezas B y C presentan un único camino o traza de producción por tal motivo solo una única pieza se puede estar produciendo. Por el contrario la pieza A presenta dos caminos y a partir de cómo se estructura la red podemos determinar que la cantidad máxima de producto es cinco ya que, las plazas p12 y p13 pueden estar ocupadas en simultáneo a diferencia de las plazas p14 y p15 en donde debido al uso compartido del recurso de la plaza r2 solo puede continuar un único camino. Para concluir el análisis podemos decir que los productos pueden situarse en las plazas p11, p12, p13, p14 y p16 ó p11, p12, p13, p15 y p17 dando en ambos casos un total de cinco productos en simultáneo.
La Figura 1 muestra la red en cuestión, la cual presenta interbloqueo.
{Imagen}
El disparo de las transiciones t21←R2
, t22←M2 | t22→R2
, t23←R2 | t22→M2
, t24→R2
causan el movimiento de tokens (producto) entre las plazas de la línea de producción de la pieza B, el disparo de las transiciones t10←R1
, t11←M1 | t11→R1
, t12←M3 | t12→R1
, t13←R2 | t13→M1
, t14←R2 | t14→M3
, t15←M2 | t15→R2
, t16←M4 | t16→R2
, t17←R3 | t17→M2
, t18←R3 | t18→M4
, t19→R3
causan movimiento de tokens (producto) entre las plazas de la línea de producción de la pieza A, y el disparo de las transiciones t31←R3
, t32←M4 | t32→R3
, t33←R2 | t33→M4
, t34←M3 | t34→R2
, t35←R1 | t35→M3
, t36→R1
causan el movimiento de tokens (producto) entre las plazas de la línea de producción de la pieza C. Las plazas de M1 a M4 y de R1 a R3 representan la disponibilidad de los recursos del sistema, máquinas y robots respectivamente.
La precedente notación se realizo con el objeto de facilitar la lectura y análisis de la red. El etiquetado presenta una o dos partes dependiendo si toma recurso (izquierda), devuelve recurso (derecha), o ambos en simultáneo, representando la flecha el arco que une la plaza con la transición.
Debido a que la configuración inicial de la red presentaba interbloqueo, se realizo un análisis del árbol de alcanzabilidad buscando los nodos muertos a los fines de imponerle restricciones a la red mediante plazas de control ci, garantizando de esta manera su normal funcionamiento. Desarrollo en Anexo
{imagen de RdP sin DL}
La Figura 2 muestra como queda la red una vez impuestas las restricciones para evitar el interbloqueo.
###Plazas y Transiciones
Plaza | Descripción | Transición | Descripción |
p10 | Pieza A esperando en deposito de entrada I1 | Pieza A procesada en deposito de salida O1 | t10 | Selección de Pieza A de deposito I1 por R1 |
p11 | Pieza A en posesión de R1 | t11 | Carga de Pieza A en M1 por R1 para Procesamiento 1 |
p12 | Pieza A en máquina M1 en Procesamiento 1 | t12 | Carga de Pieza A en M3 por R1 para Procesamiento 1 |
p13 | Pieza A en máquina M3 en Procesamiento 1 | t13 | Toma de Pieza A procesada de M1 por parte de R2 |
p14 | Pieza A procesada en posesión de R2 | t14 | Toma de Pieza A procesada de M3 por parte de R2 |
p15 | Pieza A procesada en posesión de R2 | t15 | Carga de Pieza A en M2 por R2 para Procesamiento 2 |
p16 | Pieza A en máquina M2 en Procesamiento 2 | t16 | Carga de Pieza A en M4 por R2 para Procesamiento 2 |
p17 | Pieza A en máquina M4 en Procesamiento 2 | t17 | Toma de Pieza A procesada de M2 por parte de R3 |
p18 | Pieza A procesada en posesión de R3 | t18 | Toma de Pieza A procesada de M4 por parte de R3 |
t19 | Desplazamiento de Pieza A a deposito O1 por parte de R3 | ||
p20 | p20: Pieza B esperando en deposito de entrada I2 | Pieza B procesada en deposito de salida O2 | t21 | Selección de Pieza B de deposito I2 por R2 |
p21 | Pieza B en posesión de R2 | t22 | Carga de Pieza B en M2 por R2 para Procesamiento 1 |
p22 | Pieza B en máquina M2 en Procesamiento 1 | t23 | t23: Toma de Pieza B procesada de M2 por parte de R2 |
p23 | Pieza B procesada en posesión de R2 | t24 | Desplazamiento de Pieza B a deposito O2 por parte de R2 |
p30 | Pieza C esperando en deposito de entrada I3 | Pieza C procesada en deposito de salida O3 | t31 | Selección de Pieza C de deposito I3 por R3 |
p31 | Pieza C en posesión de R3 | t32 | Carga de Pieza C en M4 por R1 para Procesamiento 1 |
p32 | Pieza C en máquina M4 en Procesamiento 1 | t33 | Toma de Pieza C procesada de M4 por parte de R2 |
p33 | Pieza C procesada en posesión de R2 | t34 | Carga de Pieza C en M3 por R2 para Procesamiento 2 |
p34 | Pieza C en máquina M3 en Procesamiento 2 | t35 | Toma de Pieza C procesada de M3 por parte de R1 |
p35 | Pieza C procesada en posesión de R1 | t36 | Desplazamiento de Pieza C a deposito O3 por parte de R1 |
###Recursos
Plaza | Descripción |
---|---|
m1 | Máquina 1 |
m2 | Máquina 2 |
m3 | Máquina 3 |
m4 | Máquina 4 |
r1 | Robot 1 |
r2 | Robot 2 |
r3 | Robot 3 |
###Plazas de control
Plaza | Descripción |
---|---|
c1 | Control 1 |
c2 | Control 2 |