Skip to content

Instantly share code, notes, and snippets.

@ramonesteban
Created October 23, 2012 07:10
Creación de una red Petri
#!/usr/bin/python
import snakes.plugins
snakes.plugins.load('gv', 'snakes.nets', 'nets')
from nets import *
def main():
# Nueva red Petri
n = PetriNet('Gasolinera')
# Lugares
n.add_place(Place('Espera', [0]))
n.add_place(Place('CapturaCantidad', [1]))
n.add_place(Place('SeleccionarTipo', [2]))
n.add_place(Place('Premium', [3]))
n.add_place(Place('Magna', [4]))
n.add_place(Place('Mensaje', [5]))
n.add_place(Place('ComienzaLlenado', [6]))
# Transiciones
n.add_transition(Transition('EnciendeMarcador'))
n.add_transition(Transition('TecleaCantidad'))
n.add_transition(Transition('SeleccionDeTipo'))
n.add_transition(Transition('PremiumNoDisponible'))
n.add_transition(Transition('PremiumDisponible'))
n.add_transition(Transition('MagnaNoDisponible'))
n.add_transition(Transition('MagnaDisponible'))
n.add_transition(Transition('MuestraMensaje'))
n.add_transition(Transition('GasolinaServida'))
# Entradas
n.add_input('Espera', 'EnciendeMarcador', Value(1))
n.add_input('CapturaCantidad', 'TecleaCantidad', Value(1))
n.add_input('SeleccionarTipo', 'SeleccionDeTipo', Value(1))
n.add_input('Premium', 'PremiumDisponible', Value(1))
n.add_input('Premium', 'PremiumNoDisponible', Value(0))
n.add_input('Magna', 'MagnaDisponible', Value(1))
n.add_input('Magna', 'MagnaNoDisponible', Value(0))
n.add_input('Mensaje', 'MuestraMensaje', Value(1))
n.add_input('ComienzaLlenado', 'GasolinaServida', Value(1))
# Salidas
n.add_output('Espera', 'GasolinaServida', Value(0))
n.add_output('Espera', 'MuestraMensaje', Value(0))
n.add_output('CapturaCantidad', 'EnciendeMarcador', Value(1))
n.add_output('SeleccionarTipo', 'TecleaCantidad', Value(1))
n.add_output('Premium', 'SeleccionDeTipo', Variable('seleccion'))
n.add_output('Magna', 'SeleccionDeTipo', Variable('seleccion'))
n.add_output('Mensaje', 'PremiumNoDisponible', Variable('no'))
n.add_output('Mensaje', 'MagnaNoDisponible', Variable('no'))
n.add_output('ComienzaLlenado', 'PremiumDisponible', Variable('ok'))
n.add_output('ComienzaLlenado', 'MagnaDisponible', Variable('ok'))
# Dibujar la red
for engine in ('neato', 'dot', 'circo', 'twopi', 'fdp'):
n.draw('graph-%s.png' % engine, engine=engine)
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment