Coupled GGAD Graphic tool es una herramienta de diseño de modelos DEVS acoplados. Entre sus funciones podemos destacar:
·
Diseño
gráfico de un modelo DEVS acoplado, incluyendo los modelos atómicos y/o acoplados
que lo componen , la interconexión de los mismos, y sus puertos de entrada y
puertos de salida.
·
Diseño
de la estructura y funcionalidad de un modelo atómico DEVS, incluyendo los
estados, transiciones internas y externas, los ports de entrada y salida, las variables de estado y las
acciones asociadas a las transiciones.
·
Almacenamiento
de los modelos generados y exportación de los mismos en formato GADscript para
ser simulados mediante la aplicación CD++.
La herramienta de simulación CD++ realiza simulaciones de modelos acoplados DEVS. Para la definición del modelo acoplado a simular usa un lenguaje que describe la interconexión entre los modelos atómicos y/o acoplados que lo componen. Los modelos atómicos pueden ser “clásicos”, es decir que el simulador CD++ ya conoce su funcionamiento, o “GGAD”, los cuales se definen a través de un archivo de texto que describe su estructura y funcionamiento y cuyo formato se denomina GADscript.
La herramienta Coupled GGAD Graphic tool está concebida en 2 partes. En una permite la creación y edición de un modelo DEVS acoplado y en la otra de modelos DEVS atómicos “GGAD”. El modelo acoplado inicial o raíz, puede incluir otros modelos acoplados, modelos atómicos GGAD o modelos atómicos clásicos.
Un modelo acoplado tiene un nombre y un archivo de texto que describe su composición (normalmente con extensión .ma). Los modelos atómicos GGAD también poseen un nombre de modelo y un archivo que los describe, a diferencia de los modelos atómicos clásicos que simplemente son incluidos con un nombre y una lista de parámetros y sus valores asociados, dado que el simulador CD++ ya conoce su estructura y funcionamiento.
Para la simulación de un modelo acoplado creado con esta herramienta, se debe exportar el mismo en formato GADscript. Esto creará un archivo con extensión “.ma” que tendrá una sección para cada modelo integrante del acoplado raíz. En las secciones correspondientes a modelos atómicos clásicos solo habrá parámetros, en las secciones correspondientes a submodelos acoplados estará la descripción de su estructura, y en las secciones correspondientes a modelos atómicos GGAD estará el nombre del archivo que contiene su estructura y funcionamiento más los parámetros que el modelo acepte.
Una vez iniciada la aplicación aparecerá tal como en la figura 1.
Figura 1
Aquí podemos ver la división de la ventana en 3 grupos de información:
Figura 2
·
la
zona de dibujo (1)
·
la
zona de definición jerárquica del modelo acoplado que estamos diseñando (2)
·
la
zona de propiedades y valores del objeto seleccionado (3)
Para comenzar a diseñar un modelo DEVS acoplado basta con escribir un nombre para el objeto a insertar, y presionar el botón correspondiente en la barra de herramientas.
Se pueden agregar modelos acoplados, modelos atómicos, ports de entrada o salida del modelo acoplado raíz, ports de entrada o salida de cada modelo atómico (si es que son modelos atómicos clásicos) y conexiones entre ports.
Figura 3
Para agregar modelos atómicos primero se escribe el nombre en el casillero “Name” y luego se presiona el botón correspondiente. Una vez agregado se puede cambiar el valor de sus atributos en la zona de propiedades de los objetos. Para ello, seleccione el modelo atómico recién creado con un click del mouse sobre su imagen, o en su nombre en la zona de definición jerárquica.
Atributos de un modelo atómico:
· Name : no modificable
· Definition file: nombre de archivo que define este modelo atómico (*.ggd). Se puede asignar en el momento de creación para que tome su estructura de un archivo ya existente, o se puede explotar el modelo atómico con el correspondiente botón de la barra de herramientas y en la nueva ventana diseñarlo gráficamente para después almacenarlo en un archivo.
· Params: lista de parámetros para este modelo atómico. Se debe usar cuando en el modelo acoplado se incluyen modelos atómicos clásicos (predefinidos en el CD++), que por estar ya compilados, necesitan parámetros para ser instanciados. También se pueden definir parámetros para un modelo atómico GGAD.
· Class: Nombre de la clase del modelo. En el caso de que sean modelos GGad su clase será Ggad. Cuando se agregan modelos clásicos, se debe especificar su clase en este casillero.
Figura 4
Para agregar ports, se escribe el nombre en el casillero “Name” y luego se presiona el botón correspondiente en la barra de herramientas, según sea de entrada o salida.
Los ports pueden ser creados en dos niveles:
·
·
Como
ports de un modelo atómico clásico para poder definir las conexiones que el
mismo tiene con el resto de los modelos
Si el objeto seleccionado es un modelo atómico, el port será creado para este modelo, en otro caso será un port del modelo acoplado raíz. La funcionalidad de crear ports para modelos atómicos está prevista para los modelos atómicos clásicos, si el modelo atómico seleccionado es GGAD, la forma correcta de agregarle un port es explotar el modelo y editarlo en la aplicación GGAD Graphic tool. Cabe destacar que al editar un modelo atómico con GGAD Graphic tool, se perderán todos los atributos y ports creados en el nivel del modelo acoplado.
Las conexiones entre ports tienen como punto inicial un port de entrada del modelo raíz o un port de salida de alguno de los modelos interiores, ya sea atómico o acoplado, y pueden terminar en un port de salida del modelo raíz o un port de entrada de otro de los modelos interiores.
Para realizar una conexión, siga estos pasos:
1- Seleccione en la zona de definición jerárquica el port de inicio de la conexión
2- Presione el botón correspondiente en la barra de herramientas
3- Del cuadro de diálogo abierto, elija un port de finalización de la conexión y presione Ok
Figura 5
Figura 6
Nota: Una
manera alternativa de realizar conexiones, es arrastrando y soltando el port
inicial sobre el port final en la zona de definición jerárquica del modelo
acoplado.
Para borrar un objeto, selecciónelo y luego presione el botón correspondiente
en la barra de herramientas. Los modelos atómicos y las conexiones entre ports
pueden ser seleccionados indistintamente en la zona gráfica de dibujo como en
la zona de la definición jerárquica del modelo, en tanto que los ports solo
pueden ser seleccionados en la zona de definición jerárquica, ya que no tienen
representación gráfica.
Tenga en cuenta que al borrar un objeto se borran automáticamente todos los objetos dependientes, es decir que si se borra un modelo atómico desaparecerán los ports del mismo y las conexiones en las que participe alguno de sus ports.
Al seleccionar un modelo y presionar el botón correspondiente en la barra de herramientas:
·
Si el
objeto seleccionado es un modelo acoplado sin Definition file
Þ
Se
abre otra ventana con la aplicación CGGAD Graphic tool con un modelo acoplado
en blanco. No se podrá volver al modelo raíz hasta no finalizar esta
aplicación. Si el modelo editado se guarda en un archivo (con extensión .cgd)
al cerrar esta nueva ventana, los cambios se verán reflejados en el atributo
“Definition file” del modelo en cuestión. Si el modelo tenía definidos ports
antes de ser explotado, estos serán reemplazados por los definidos mientras fue
editado.
·
Si el
objeto seleccionado es un modelo atómico de clase Ggad sin Definition file
especificado:
Þ
Se
abre otra ventana con la aplicación GGAD Graphic tool con un modelo vacío para
editar. No se podrá volver al modelo raíz hasta no finalizar esta aplicación.
Si el modelo editado se guarda en un archivo (con extensión .ggd) al cerrar
esta nueva ventana, los cambios se verán reflejados en el atributo “Definition
file” del modelo en cuestión. Si el modelo tenía definidos ports antes de ser explotado,
estos serán reemplazados por los definidos mientras fue editado.
·
Si el
objeto seleccionado es un modelo con Definition file especificado:
Þ
Se
abre otra ventana con la aplicación CGGAD ó GGAD Graphic tool, según si el
modelo explotado es atómico o acoplado, con el modelo descripto en el archivo
en cuestión. No se podrá volver al modelo raíz hasta no finalizar esta
aplicación.
Figura 7
Una vez terminado el modelo acoplado, el mismo puede ser guardado en un archivo “.cgd” para su posterior edición con el comando del menú File “Save”, o puede ser exportado para su uso por el simulador CD++ con extensión “.ma” con el comando del menú File “Export to CD++”. El formato de exportación (GADscript) solo almacena la información relevante para el simulador CD++, por lo que siempre se debe guardar el modelo acoplado en formato ”cgd” para su posterior edición.
Nota: Antes de poder exportar un modelo acoplado, todos sus componentes deben haber sido guardados en formato “.cgd” o “.ggd”
Una vez iniciada la aplicación (por haber explotado un modelo atómico en la aplicación CGGAD), aparecerá tal como en la figura
Figura 8
Aquí podemos ver la división de la ventana en 3 grupos de información:
Figura 9
·
la
zona de dibujo (1)
·
la
zona de definición jerárquica del modelo atómico que estamos diseñando (2)
·
la
zona de propiedades y valores del objeto seleccionado (3)
Para comenzar a diseñar un modelo DEVS atómico basta con escribir un nombre para el objeto a insertar, y presionar el botón correspondiente en la barra de herramientas.
Se pueden agregar estados, transiciones internas o externas, ports de entrada o salida, variables del modelo, o acciones a las transiciones.
Figura 10
Para agregar estados primero se escribe el nombre en el casillero “Name” y luego se presiona el botón correspondiente. Una vez agregado se puede cambiar el valor de sus atributos en la zona de propiedades de los objetos.
Atributos de un estado:
· Name : no modificable
· Time advance: tiempo que el simulador permanecerá en este estado antes de disparar una transición interna. Su valor puede ser expresado en unidades de tiempo con el formato 00:00:00:00 (horas:minutos:segundos:centésimas de segundo) o como “infinite” (sin las comillas) si se desea que el time advance sea infinito.
Figura 11
Para agregar ports, se escribe el nombre en el casillero “Name” y luego se presiona el botón correspondiente en la barra de herramientas, según sea de entrada o salida.
Las transiciones internas conectan 2 estados y pueden tener una función de salida asociada. La función de salida consiste en 0 o más pares de port/valor, es decir que ante la ocurrencia de la transición interna se puede especificar distintos valores que serán enviados por los ports de salida elegidos.
Para crear una transición interna siga estos pasos:
·
Seleccione
en la zona gráfica el estado incial haciendo un click sobre él.
·
Presionando
la tecla ctrl haga un click sobre el estado final de la transición también en
la zona gráfica
·
Si
la transición a crear tiene una función de salida asociada, seleccione el port
de salida correspondiente en la zona de definición jerárquica del modelo
·
Presione
el botón correspondiente de la barra de tareas
Figura 12
Figura 13
Si desea agregar más valores de salida en otros ports:
·
Seleccione
la transicion interna en la zona gráfica o en la zona de definición jerárquica
del modelo.
·
En
la zona de propiedades y
valores del objeto seleccionado, presione el botón correspondiente a la función
de salida (Output function).
·
En el
cuadro de diálogo rellene la tabla con los pares de ports y valores que serán
emitidos a través de ellos. Tenga en cuenta que solo serán agregados los pares
de port/valor cuyos nombres de port existan como ports de salida del modelo. El
valor a ser ingresado puede ser una expresión compuesta por llamadas a
funciones Built-in cuyos parámetros sean constantes o variables del modelo.
Figura 14
Las transiciones externas conectan 2 estados a partir de un evento externo. Un evento externo se define como la aparición de un valor en al menos un port de entrada del modelo.
Cada transición externa posee una condición que debe cumplirse para ser activada. Esta condición se define por medio de una función cuyos parámetros pueden ser valores recibidos en los ports de entrada, variables del modelo o constantes numéricas. Las funciones a aplicar deben estar soportadas por el simulador CD++. En su versión actual soporta las siguientes funciones:
·
Add(n1,n2):
devuelve la suma de n1 y n2
·
And(n1,n2): retorna verdadero si ambos
parámetros son verdaderos (1)
·
Any(port1): retorna verdadero si el port port1
recibió un valor en este evento
·
Between(n1,n2,n3): retorna verdadero si n2 es
mayor qeu n1 y menor que n3
·
Compare(n1,n2,n3,n4,n5): retorna n3, n4 o n5 si
n1 es mayor, igual o menor que n2
respectivamente
·
Divide(n1,n2):
retorna n1 divido n2
·
Equal(n1,n2):
retorna verdadero si n1 es igual a n2
·
Minus(n1,n2):
devuelve n1-2
·
Multiply(n1,n2):
retorna n1 multiplicado por n2
·
NotEqual(n1,n2):
retorna verdadero si n1 es distinto de n2
·
Pow(n1,n2):
retorna n1 a la potencia n2
·
Value(port1):
retorna el valor que recibió el port1 en este evento
Para crear la transición externa siga estos pasos:
·
Seleccione
en la zona gráfica el estado incial haciendo un click sobre él.
·
Presionando
la tecla ctrl haga un click sobre el estado final de la transición, también en
la zona gráfica
·
Seleccione
el primer port de entrada (si es en función a uno o más ports)
·
Presione
el botón correspondiente de la barra de tareas
Figura 15
·
Para modificar
la condición que dispara esta transición, seleccione la transición en el
diagrama jerárquico y edite la expresión. Recuerde que la expresión es una
función con los parámetros correspondientes, que pueden ser constantes,
variables del modelo, ports de entrada u otras funciones anidadas.
·
Por
ejemplo la expresión:
And ( Value ( Port1 ) ? 2 , Equal ( var1, 5 ) )
Significa que la condición se cumple
si en el port “Port1” hay un valor 2 y la variable “var1” es igual a 5.
Figura 16
·
Una
manera alternativa de modificar la condición de una transición externa es
presionando el botón “Edit Expression”. De esta manera aparecerá un cuadro de
diálogo como el de la figura 17 que permite editar más comodamente la expresión.
Haciendo doble click en la lista de funciones disponibles se agregará el nombre
de la función Builtin a la expresión.
Figura 17
Tanto las transiciones internas como las externas, tienen la capacidad de ejecutar una lista de acciones en el momento de su activación, es decir cuando la condición para su ejecución ha sido satisfecha. Las acciones permiten asignar valores a las variables del modelo en tiempo de ejecución. El valor asignado proviene de la ejecución de una función Built-in sobre parámetros que pueden ser ports de entrada, variables del modelo y constantes.
Para agregar acciones a una transición, selecciónela y presione el botón “Actions” en la zona de propiedades del objeto seleccionado.
Figura 18
Para borrar un objeto, selecciónelo en la representación gráfica del modelo y luego presione el botón correspondiente en la barra de herramientas. Tenga en cuenta que al borrar un objeto se borran automaticamente todos los objetos dependientes, es decir que si se borra un estado desaparecerán las transiciones internas y externas en las que participaba.
Una vez realizado el modelo atómico, el mismo puede ser guardado en un archivo “.ggd” para su posterior edición con el comando del menú File “Save”. Para realizar una simulación unicamente con este modelo atómico, genere un modelo acoplado que contenga únicamente a este modelo atómico y exporte el modelo acoplado. El formato de exportación solo almacena la información relevante para el simulador CD++, por lo que siempre se debe guardar el modelo atómico en formato CGGAD Graphic Tool para su posterior edición.
En el menú “Options” aparecen dos opciones:
·
Show
Transitions Names: Si está activada, en la zona del gráfico las transiciones
tendrán sobreimpreso un texto con la función de salida o la condición para
ejecutarse (Según sean internas o externas)
·
Show
Transitions Tooltips: al activarla, cada vez que el mouse pase por una transición
en la zona gráfica, aparecerá un “tooltip” con los atributos de la transición
(incluyendo las acciones)
En el menú
Tools, aparece un comando “Builtin functions”. A través de este comando se
puede editar las funciones builtin disponibles para las expresiones en
GGADTool. Para que tenga sentido deben estar implementadas en el simulador CD++.
CGGAD Graphic Tool Manual del Usuario
3 Edición
de modelos acoplados con GGADTool
3.4 Agregar conexiones entre ports
4 Edición
de modelos atómicos GGAD
4.4 Agregar transiciones internas
4.5 Agregar transiciones externas
4.6 Agregar acciones a las transiciones