SPNP - PowerPoint PPT Presentation

1 / 35
About This Presentation
Title:

SPNP

Description:

void rateval(char *t, double val). Establece el par metro de una transici n temporal. ... void solve(double t) ... double ef3() { return(rate('t3' ... – PowerPoint PPT presentation

Number of Views:59
Avg rating:3.0/5.0
Slides: 36
Provided by: alu265
Category:
Tags: spnp | dbl

less

Transcript and Presenter's Notes

Title: SPNP


1
SPNP
  • Stochastic Petri Net Package

2
SPNP. 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

3
SPNP. Stochastic Petri Net Package
Modelos SPN y métodos de análisis
4
SPNP. 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.

5
SPNP. 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.

6
Lenguaje CSPL
  • Un archivo CSPL debe contener las siguientes
    funciones básicas
  • options()
  • net()
  • assert()
  • ac init()
  • ac reach()
  • ac final()

7
Lenguaje 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)

8
Lenguaje 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).

9
Lenguaje 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.

10
Lenguaje 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.

11
Lenguaje 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.

12
Ejemplo
  • / 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)

13
Ejemplo
  • 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")

14
Ejemplo
  • 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 /

15
Ejemplo
  • 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/

16
Tutorial 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.

17
Creació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.

18
Pantalla para elegir modelo
19
Creació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.

20
Creació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.

21
Definició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.

22
Definició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.

23
Definició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.

24
Rotar 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.

25
Para mostrar el número de Tokens
  • Se da click derecho sobre el estado y luego se
    elige la opción Display number Token(s).

26
Cambio 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)

28
Creación de variables
  • Cómo crear una variable?
  • Una variable se crea dentro de Variable/constant
    dentro del menu Model Editor

29
Creació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.
33
Cómo visualizar los resultados?
  • Simplemente hay que seleccionar la pestaña
    Output
  • También se pueden ver los archivos seleccionados
    en Configuraciones de entorno

34
Algunas otras opciones sobre la ejecución son
  • Simulación.
  • Características de Animación.
  • Mostrar una grafica.
  • Comparar graficas.

35
Fuente de información
  • SPNP DUKE ECE. August 29, 2001
    http//www.ee.duke.edu/kst/software_packages.html
Write a Comment
User Comments (0)
About PowerShow.com