Articulo de referencia

Petriscript

PetriScript es un lenguaje de modelado para redes de Petri , diseñado por Alexandre Hamez y Xavier Renault. [ 1 ] La plataforma CPN-AMI proporciona muchas herramientas para trab...

PetriScript es un lenguaje de modelado para redes de Petri , diseñado por Alexandre Hamez y Xavier Renault. [ 1 ] La plataforma CPN-AMI proporciona muchas herramientas para trabajar con redes de Petri, como herramientas de verificación y comprobación de modelos. [ 2 ]

Originalmente, las redes de Petri simples se creaban mediante diseño gráfico , pero una investigación interna realizada en LIP6 reveló la necesidad de automatizar dichas tareas. [ 3 ] PetriScript fue diseñado para proporcionar algunas herramientas en el modelado de lugares-transición y redes de Petri coloreadas dentro de la plataforma CPN-AMI. El propósito principal de Petriscript es automatizar las operaciones de modelado en redes de Petri mediante la fusión, creación y conexión de nodos . Admite casi todo lo necesario, como macros , control de bucles, listas y expresiones de cadena y aritméticas , y bloquea la intervención del usuario en la medida de lo posible. Su sintaxis es similar a Ada .

El siguiente script genera una cola FIFO con tres secciones:

define ( FIFO_SIZE , 3 ) define ( FIFO_BASE_X , 100 ) define ( FIFO_BASE_Y , 100 ) define ( FIFO_STEP , 120 ) int $ wave := 0 ; for $ wave in 1. . FIFO_SIZE loop create place "Slot_" & ' $ wave ' ( x FIFO_BASE_X + FIFO_STEP * $ wave , y FIFO_BASE_Y ); create place "Empty_" & ' $ wave ' ( x FIFO_BASE_X + FIFO_STEP * $ wave , y FIFO_BASE_Y + 100 , marked "1" ); end loop ; for $ wave in 1. . FIFO_SIZE + 1 bucle crear transición "t" & ' $ wave - 1 ' & "_to_" & ' $ wave ' ( x FIFO_BASE_X + FIFO_STEP * $ wave - FIFO_STEP / 2 ,y FIFO_BASE_Y + 50 ); si $ wave < FIFO_SIZE + 1 entonces conectar "1" transición "t" & ' $ wave - 1 ' & "_to_" & ' $ wave ' al lugar "Slot_" & ' $ wave '; conectar "1" lugar "Empty_" & ' $ wave ' al lugar "t" & ' $ wave - 1 ' & "_to_"& ' $ wave '; fin si ; si $ wave > 1 entonces conectar "1" transición "t" & ' $ wave - 1 ' & "_to_" & ' $ wave ' al lugar "Empty_" & ' $ wave - 1 '; conectar "1" lugar "Slot_" & ' $ wave - 1 ' a la transición "t" & ' $ wave - 1 ' & "_to_" & ' $ wave '; fin si ; fin bucle ; establecer transición "t0_to_1" a ( nombre "FIFO_Start" ); establecer transición "t" & ' FIFO_SIZE ' & "_to_" & ' FIFO_SIZE + 1 ' a ( nombre "FIFO_End" );

Lo cual produce el siguiente gráfico :

Aquí hay otro ejemplo que muestra el poder de PetriScript:

definir ( X , 250 ) definir ( Y , 350 ) definir ( radio , 50 ) definir ( R , 150 )definir ( SECCIONES , 15 )define ( INNER_ANGLE , 360 / SECTIONS ) define ( OUTER_ANGLE , 360 / ( 2 * SECTIONS ))int $ i := 0 ; int $ j := 0 ;para $ i en 1. . SECCIONES bucle crear lugar "F" & ' $ i ' ( x X , y Y , r radio , t $ i * INNER_ANGLE ); crear lugar "Sección_" & ' $ i ' ( x X , y Y , r R , t $ i * INNER_ANGLE ); crear transición "t" & ' $ i ' & "_a_" & ' $ i mod SECCIONES + 1 ' ( x X , y Y , r R , t $ i * INNER_ANGLE + OUTER_ANGLE ); fin del bucle ;para $ i en 1. . SECCIONES bucle conectar lugar "Sección_" & ' $ i ' a transición "t" & ' $ i ' & "_a_" & ' $ i mod SECCIONES + 1 ';conectar transición "t" & ' $ i ' & "_a_" & ' $ i mod SECTIONS + 1 ' para colocar "Sección_" & ' $ i mod SECTIONS + 1 ';si $ i /= 1 entonces conecta el lugar "F" & ' $ i ' a la transición "t" & ' $ i - 1 ' & "_to_" & ' $ i '; de lo contrario conecta el lugar "F1" a la transición "t" & ' SECTIONS ' & "_to_" & ' 1 '; fin si ;conectar transición "t" & ' $ i mod SECTIONS + 1 ' & "_to_" & '( $ i + 1 ) mod SECTIONS + 1 ' para colocar "F" & ' $ i ';fin del bucle ;para $ i en 1. . SECCIONES bucle si $ i mod 3 = 0 entonces establecer lugar "Sección_" & ' $ i ' a la marca "1" ; de lo contrario establecer lugar "F" & ' $ i ' a la marca "1" ; fin si ; fin bucle ;

Lo cual produce el siguiente gráfico:

Referencias

  1. Alexandre Hamez; Xavier Renault. "Manual de referencia de PetriScript 1.0" (PDF) . LIP6. Archivado del original (PDF) el 24 de octubre de 2016.
  2. Principios de los sistemas de información: Informática
  3. Sistemas de bases de datos empresariales: Informática, Gestión de bases de datos

La documentación completa está disponible aquí .

Obtenido de " https://en.wikipedia.org/w/index.php?title=Petriscript&oldid=1194055814 "