Title: SPNP
1SPNP
- Stochastic Petri Net Package
2SPNP. Stochastic Petri Net Package
- Es una herramienta (software) para el análisis de
sistemas complejos (Stochastic Petri Net models)
a través de algoritmos numéricos. - Puede resolver diferentes tipos de modelos
- GSPN. Generalized Stochastic Petri Net (sin
memoria) - Procesos no Markovianos (con memoria)
- FSPN. Fluid Stochastic Petri Nets
3SPNP. Stochastic Petri Net Package
Modelos SPN y métodos de análisis
4SPNP. Stochastic Petri Net Package
- De los procesos que se resuelven con este
software se pueden obtener métricas de estado
estable o métricas transitorias. - Permite evaluar los efectos en la salida del
sistema por cambios realizados en la entrada.
5SPNP. Stochastic Petri Net Package
- Trabaja con un lenguaje parecido a C, llamado
CSPL (C-based SPN Language), aunque no se
requiere un previo conocimiento del primero para
su uso. - Sin embargo, cuenta con una interfaz gráfica,
llamada iSPN, que reduce aún más la necesidad de
conocer el lenguaje C.
6Lenguaje CSPL
- Un archivo CSPL debe contener las siguientes
funciones básicas - options()
- net()
- assert()
- ac init()
- ac reach()
- ac final()
7Lenguaje CSPL
options() net() assert() ac init() ac
reach() ac final()
- void options(void)
- Se usa para establecer las opciones para resolver
el sistema, como el nombre y orden de las
variables de salida, la precisión de la solución
del sistema y la creación de variables extras. - Incluye las siguientes funciones
- void iopt(IOP TYPE option, int val)
- void fopt(FOP TYPE option, double val)
- int input(char msg)
- double finput(char msg)
8Lenguaje CSPL
options() net() assert() ac init() ac
reach() ac final()
- void net(void)
- Esta es la función para definir las redes
estocásticas. - void place(char p). Establece una posición con
el nombre p. - void init(char p, int n). Establece el número de
tokens (n) en la posición p. - void rateval(char t, double val). Establece el
parámetro de una transición temporal. - void iarc(char t, char p)
- void oarc(char t, char p)
- Establecen arcos de la posición p a la transición
t (entrada) o viceversa (salida).
9Lenguaje CSPL
options() net() assert() ac init() ac
reach() ac final()
- int assert(void)
- Es una función que sirve para verificar la
validez de un grafo de alcance, que se evalúa de
acuerdo a condiciones establecidas por el
usuario. Si un grafo es válido regresa RES NOERR
y si no es válido regresa RES ERROR.
10Lenguaje CSPL
options() net() assert() ac init() ac
reach() ac final()
- void ac init(void)
- Esta función se llama antes de iniciar la
construcción del grafo de alcance para que la
información de salida del modelo sea guardada en
un archivo .out. - void ac reach(void)
- Esta función, a diferencia de la anterior, se
ejecuta después de la construcción del grafo de
alcance. Se usa para que la información de salida
del grafo de alcance sea guardada en el archivo
.out.
11Lenguaje CSPL
options() net() assert() ac init() ac
reach() ac final()
- void ac final(void)
- Se usa esta función para establecer las salidas
después de realizar el análisis de la red. - Dentro de esta función se pueden usar las
siguientes - void solve(double t). Para resolver en sistema en
un tiempo t, que se puede definir como infinito
(INFINITY) para análisis de estado estable - void pr_std_average (void). Da como salida la
probabilidad de que una posición no esté vacía y
su número promedio de tokens. - void pr expected(char string, double (func)()).
En el archivo de salida da como resultado lo que
regrese la función func() precedida por una
cadena de caracteres string.
12Ejemplo
- / This example adapted from M.K. Molloy's IEEE
TC paper / - include "user.h"
- void options() /SE USA PARA
ESTABLECER LAS OPCIONES PARA RESOLVER EL
SISTEMA/ - iopt(IOP_SSMETHOD, VAL_GASEI)
- iopt(IOP_PR_FULL_MARK,VAL_YES)
- iopt(IOP_PR_MARK_ORDER,VAL_CANONIC)
- iopt(IOP_PR_MC_ORDER,VAL_TOFROM)
- iopt(IOP_PR_MC,VAL_YES)
- iopt(IOP_PR_PROB,VAL_YES)
- iopt(IOP_MC,VAL_CTMC)
- iopt(IOP_PR_RSET,VAL_YES)
- iopt(IOP_PR_RGRAPH,VAL_YES)
- iopt(IOP_ITERATIONS,20000)
- fopt(FOP_ABS_RET_M0,0.0)
- fopt(FOP_PRECISION,0.00000001)
13Ejemplo
- void net()
- place("p0") /ESTADOS/
- init("p0",1) /NUMERO DE TOKENS
QUE NECESITA/ - place("p1")
- place("p2")
- place("p3")
- place("p4")
-
- rateval("t0",1.0) /VALOR DE LAS
TRANSICIONES TEMPORALES/ - rateval("t1",3.0)
- rateval("t2",7.0)
- rateval("t3",9.0)
- rateval("t4",5.0)
- iarc("t0","p0") oarc("t0","p1") oarc("t0","p
2") /ARCOS DE ENTRADA Y SALIDA DE - TRANSICIONES/
- iarc("t1","p1") oarc("t1","p3")
- iarc("t2","p2") oarc("t2","p4")
- iarc("t3","p3") oarc("t3","p1")
- iarc("t4","p3") iarc("t4","p4") oarc("t4","p
0")
14Ejemplo
- int assert()
/PARA COMPROBAR LA VALIDEZ DE UN GRAFO DE
ALCANCE/ - if (mark("p3") gt 5)
- return(RES_ERROR)
- else
- return(RES_NOERR)
-
- void ac_init() /LAS
FUNCIONES QUE SE ESCRIBAN APARECERAN AL INICIO
DEL ARCHIVO .OUT/ - fprintf(stderr,"\nExample from Molloy's
Thesis\n\n") - pr_net_info() / information on the net
structure / -
- void ac_reach() /LAS
FUNCIONES QUE SE ESCRIBAN APARECERAN AL FINAL DE
LA - EJECUCION EN EL ARCHIVO .OUT/
- fprintf(stderr,"\nThe reachability graph has
been generated\n\n") - pr_rg_info() / information on the
reachability graph /
15Ejemplo
- double ef0() return((double)mark("p0"))
/VARIABLES QUE NOS REGRESAN LOS - VALORES NECESITADOS/
- double ef1() return((double)mark("p1"))
- double ef2() return(rate("t2"))
- double ef3() return(rate("t3"))
- double eff() return(rate("t1") 1.8
(double)mark("p3") 0.7) - void ac_final()
/ESTABLECE LAS SALIDAS REQUERIDAS/ - solve(INFINITY)
/ANALISIS EN ESTADO ESTABLE/ - pr_mc_info() / information about the Markov
chain / - pr_expected("mark(p0)",ef0)
/REGRESA EL VALOR DE ef0/ - pr_expected("mark(p1)",ef1)
- pr_expected("rate(t2)",ef2)
- pr_expected("rate(t3)",ef3)
- pr_expected("rate(t1) 1.8 mark(p3)
0.7",eff) - pr_std_average() /PROBABILIDAD DE QUE
UNA POSICION NO ESTE - VACIA Y EL PROMEDIO DE TOKENS/
16Tutorial de SPNP graphics 0.2
- A continuación presentaremos una guía referente a
la utilización del paquete SPNP en su versión
gráfica 0.2, mostrado paso por paso, lo cual nos
permitirá editar y solucionar GPSNs.
17Creación de un nuevo proyecto
- Al iniciar el programa nos aparece esta pantalla.
- Enseguida nos dirigimos a file y escogemos new.
- En la pantalla que se despliega ingresamos el
nombre del proyecto el nombre del modelo y el
tipo de modelo.
18Pantalla para elegir modelo
19Creación de estado o transición
- Se da click en la opción Place del menú
principal. - Se pueden crear transiciones inmediatas o
temporales. - Para crear cualquiera de las dos se da click en
la opción deseada ya sea Imm.Trans para la
primera o Time trans para la segunda.
20Creación de un arco
- Click en en la opción arc del menú principal.
- Enseguida damos click en el estado o transición
deseada. - Y nos despalzamos con el click oprimido hasta el
estado o transición que queremos conectar.
21Definición de un estado
- Click derecho en el estado que deseamos definir,
elegimos property del menú que se despliega - Nos aparece una pantalla en la cual podemos
cambiar el nombre del estado e indicar el número
de tokens que va a tener. - Un estado que tenga más de un token aparece de
color rojo.
22Definición de una transición inmediata
- Click derecho en la transición inmediata que se
desea definir y elegimos property. - En la pantalla que aparece podemos cambiar el
nombre de la transición, darle un valor
prioritario, agregarle una función guard y
definir la probabilidad.
23Definición de una transición temporal
- Click derecho en la transición de tiempo que se
desea definir y elegimos property. - En la pantalla que aparece podemos cambiar el
nombre, la prioridad y definir la distribución
entre otras.
24Rotar una transición y modificar un arco
- Podemos rotar una transición con el fin de
diseñar el diagrama idóneo. - Damos click derecho en la transición deseada y
elegimos rotate. - Asimismo podemos modificar los arcos para que
tengan una mejor trayectoria. - Dando click en mod. Arc y en el menú principal,
para luego desplazarnos con el mouse según como
se desee el arco.
25Para mostrar el número de Tokens
- Se da click derecho sobre el estado y luego se
elige la opción Display number Token(s).
26Cambio de cardinalidad y de multiplicidad
- Podemos cambiar la cardinalidad o dirección del
arco. - Damos click derecho en el arco escogemos
Property y en la pantalla que se despliega
tenemos la opción de cambiar desde donde hasta
donde va el arco. - Asimismo en esta misma pantalla podemos cambiar
la multiplicidad del arco.
27- Configuraciones de entorno, ya sea para análisis
numérico o simulación. - Estas son seleccionadas en Model editor del
menu Environment - Al momento de la ejecución del paquete se crean
diferentes archivos que se pueden seleccionar.
(En el submenú Option Files) - Permite seleccionar diferentes opciones de
análisis, precisión y algoritmo. (En el submenú
Numerical Analysis) - Se pueden seleccionar parámetros de simulación.
(En el submenú Simulation)
28Creación de variables
- Cómo crear una variable?
- Una variable se crea dentro de Variable/constant
dentro del menu Model Editor
29Creación de funciones
- Cómo crear una función?
- En function definition del menu Model Editor
- Se pueden crear, editar y borrar funciones.
30- En caso de no saber la sintaxis de una función
31 Ejecución del modelo (análisis numérico)
- Antes de ejecutar el modelo se pueden crear
salidas especificas que se necesiten, esto en
Function Definition de Model Editor
Una vez seleccionados los diferentes parámetros y
el tipo de archivos que se desean, se puede
ejecutar el modelo
32 Ejecución del modelo (análisis numérico)
- Para correr el modelo hay que entrar a
Analysis del menu Analysis Editor. - Se seleccionaran las diferentes salidas que se
requieren sobre el modelo.
Si la salida requiere parámetros se deben
anexar. Si una salida no se desea se debe borrar.
33Cómo visualizar los resultados?
- Simplemente hay que seleccionar la pestaña
Output - También se pueden ver los archivos seleccionados
en Configuraciones de entorno
34Algunas otras opciones sobre la ejecución son
- Simulación.
- Características de Animación.
- Mostrar una grafica.
- Comparar graficas.
35Fuente de información
- SPNP DUKE ECE. August 29, 2001
http//www.ee.duke.edu/kst/software_packages.html