Loading [MathJax]/extensions/TeX/AMSsymbols.js

October 23, 2012

Red Petri Python-Snakes

Para esta semana la tarea fue investigar sobre las redes de Petri y simular un sistema concurrente utilizando Python-snakes, en una entrada anterior hablé sobre ellas.

El sistema que escogí para simular trata sobre bandas de producción de una fábrica.

El sistema está compuesto por 3 bandas de producción a las cuales llamé:
  • Banda1.
  • Banda2.
  • Banda3.
Estas bandas tienen su estado de encendido, y funcionan de la siguiente manera:
  • Las bandas 1 y 2 se encontrarán encendidas un tiempo promedio ya que trabajan más rapido que la banda 3.
  • Después de un tiempo las bandas 1 y 2 cambiarán de estado inactivo a encendido.
Además del estado de encendido podemos encontrar los siguientes:
  • Reposo: estado de inactividad de las bandas.

Para simular este sistema hice uso de la librería de Python llamada Python-snakes.

Aquí el código:

#librerias necesarias
from snakes.nets import *
from snakes.data import *
import snakes.plugins
snakes.plugins.load('gv', 'snakes.nets', 'nets')
from nets import *
petri = PetriNet("Produccion")
#estados del sistema
#bandas encendidas
petri.add_place(Place('Encendida1', [0]))
petri.add_place(Place('Encendida2', [1]))
petri.add_place(Place('Encendida3', [2]))
#Reposo
petri.add_place(Place('Reposo', [3]))
#transiciones
petri.add_transition(Transition('t1', pos=(0, 0)))
petri.add_transition(Transition('t2', pos=(0, 1)))
petri.add_transition(Transition('t3', pos=(1, 0)))
#arcos y salidas
#banda1
petri.add_input('Encendida1', 't1', Variable('tiempoProm'))
petri.add_output('Reposo', 't1', Expression('tiempoProm > suspension'))
#banda2
petri.add_input('Encendida2', 't2', Variable('tiempoProm'))
petri.add_output('Reposo', 't2', Expression('tiempoProm > suspension'))
#banda3
petri.add_input('Encendida3', 't3', Variable('tiempo'))
petri.add_output('Encendida3','t3',Expression('produciendo == True'))
#red
petri.draw('Produccion.png')
view raw petri.py hosted with ❤ by GitHub


Red creada:

No comments:

Post a Comment