4.5 Automatizaciones y herramientas de soporte
4.5.3 La herramienta FIG
maestra de Douglas Adam. La herramienta FIG está disponible libremente en http://dsg.famaf.unc.edu.ar/tools bajo los términos de la licencia Pública General de GNU (GPL v3).
Los archivos con el modelo y las consultas tomados como entrada deben ser especificados siguiendo la sintaxis de modelado IOSA descripta en la Sub- sección 4.5.2. De aquí en más asumiremos que las consultas de propiedades se encuentran especificadas dentro del archivo donde se describe al modelo.
Destacamos el hecho de que FIG también puede tomar (ciertos tipos de) modelos descriptos en el formato de especificación de modelos jani versión 1.0 (JANI, [BDH+17]). Por un lado el formalismo IOSA abarca al de CTMC, así que
la herramienta puede tomar cadenas de Markov de tiempo continuo descriptas en JANI. Por otro lado los Autómatas Estocásticos Temporizados (STA por sus siglas en inglés) generalizan a IOSA, y FIG puede operar sobre cierta clase de modelos STAdescriptos en JANI. Específicamente, modelos STAcarentes de no determinismo que concuerden con la Definición 17 pueden ser aceptados por la herramienta.
La invocación básica de FIG requiere tres opciones obligatorias: <modelo>, <terminación>, y <estrategia>. Su sintaxis y semántica puede ser descripta brevemente como sigue:
<modelo> El archivo con la descripción del modelo IOSA (o JANI) y las consultas de propiedades.
<terminación> El criterio (o criterios) de parada. Puede ser
--stop-conf para simular hasta que el coeficiente de confianza y la precisión relativa especificadas sean alcanzados. Esos dos parámetros deben ser números en el intervalo abierto (0,1);
--stop-time para simular por el tiempo (pared) especificado, descripto en el formato<dígito>+[<s/m/h/d>].
<estrategia> La estrategia usada para simular. Debe ser una de:
--flat para realizar simulaciones de Monte Carlo estándar;
--amono para realizar simulaciones RESTARTusando una función de importancia monolítica, construida usando el método del Capítulo 3;
--acomp para realizar simulacionesRESTARTusando una función de importancia composicional, construida usando el método de este capítulo con un operador (o estrategia) de composición provisto como argumento obligatorio;
--adhoc para realizar simulaciones RESTARTusando una función de importancia ad hoc especificada por el usuario como argumento obligatorio.
>_
fig modelo.sa --flat --stop-conf .9 .4invoca a la herramienta para realizar simulaciones de Monte Carlo estándar en el archivo IOSAmodelo.sa. Para cada consulta de propiedad especificado dentro de dicho archivo, las simulaciones correrán hasta que se haya construido un intervalo de confianza alrededor del valor estimado para la propiedad, con un nivel de confianza del 90 % y una precisión relativa del 40 % (i.e. un error relativo del 20 %).
Ambos<modelo> y <estrategia> son opciones simples, mientras que <termi nación> es una opción múltiple. Esto significa que pueden especificarse varios criterios de parada, y se lanzarán corridas independientes para satisfacer cada uno de ellos. Por ejemplo
>_
fig modelo.sa --amono --stop-time 5m --stop-conf .9 .4lanza, para cada consulta de propiedad especificada dentro demodelo.sa: primero una estimación que durará 5 minutos (pared) de ejecución; y luego una estimación que correrá hasta haber construido un intervalo alrededor de la estimación con un nivel de confianza del 90 % y una precisión relativa del 40 %.
Como la opción--amonowas specified in the command above, all those simula- tions will use multilevel splitting. Like BLUEMOON,FIG implements RESTARTto perform splitting simulations. The--amono option makesFIGbuild an (automatic) monolithic importance function for each property, subsecuentemente usado en las simulaciones RESTART.
A diferencia de BLUEMOON, la herramienta FIG does not require to be told which kind of simulation (e.g. transient vs. steady-state) to run for each property query. This is deduced from the logical expression: for transient properties several independent simulations are launched, whose average yields the desired estimate; para propiedades transitorias se utiliza el método de batch means.
Como se dijo, para escoger la estrategia --adhoc el usuario debe proveer como parámetro la función de importancia que desea usar. Esta función debe tener imagen en los números naturales, y cualquier constante o variable del modelo puede aparecer en la expresión aritmética que la define. Por ejemplo, si
tandem_queue.sa contiene el modeloIOSAde la cola tándem del cual extrajimos el extracto presentado en el Código 4.3, entonces
>_
fig tandem_queue.sa --adhoc “q1+5*q2” --stop-conf .9 .4ejecutará simulaciones RESTART para estimar el valor de ambas propiedades (recall these were P(q2>0Uq2=c) and S(q2=c)), using the ad hoc importance
function which adds five times the number of packets in the second queue to el número de paquetes en la primera cola, i.e. q1+5*q2.
La situación es bastante diferente para la opción--acomp, aunque ella también toma un parámetro obligatorio. Se puede escoger un operador de composición, por ejemplo
4.5.3 La herramientaFIG 137
>_
fig tandem_queue.sa --acomp “+” --stop-conf .9 .4invoca a la herramienta para realizar estimaciones como se describió antes, sólo que usando una función composicional (automática) para las simulaciones RESTART. Addition is specified as composition operand, meaning the global importance function used will be A+Q1+Q2, where ‘A’, ‘Q1’ and ‘Q2’ stand for the local importance functions built for modules Arrivals, Queue1 and Queue2 respectively. Recall these local functions are built anew for each property studied, dado que la definición del evento raro podría diferir entre consultas.
En lugar de un operando de composición, the--acomp option can also take an ad hoc composition strategy, defined by the user in the way described in Subsección 4.3.1. It is worthy to mention that unlike the --adhoc option, the arithmetic expression passed as parameter to --acomp must contain names of modules of the system, que son interpretadas como las funciones locales de importancia de los módulos. Esto significa que el comando
>_
fig tandem_queue.sa --acomp “Arrivals+Queue1+Queue2” \--stop-conf .9 .4
imita a la invocación anterior, que había utilizado a la suma como operador de composición.
Pero lo más importante es que esta utilidad permite una implementación sencilla y directa de la estrategia de anillo/semianillo de la Subsección 4.3.3. Digamos por ejemplo que la cola tándem triple que habíamos modelado con el lenguaje de entrada PRISMen el Código 4.2, se encuentra descripta con la sintaxis de modeladoIOSAen el archivo3tandem_queue.sa. Suponiendo que los nombres de los módulos no fueron modificados, el comando
>_
fig 3tandem_queue.sa \--acomp “Cola1+max(Cola2,Cola3)” --stop-time 2h
usa el semianillo (m´ax,+) como se describió en la Subsección 4.3.3 para componer las funciones locales de importancia construidas para los módulos de las colas.
Hasta aquí hemos discutido la especificación de la función de importancia, but multilevel splitting simulations (i.e. whenever the --adhoc, --amono, or--acomp strategy option is specified) also require selecting the thresholds prior to running RESTART. To that aim and by default FIG runs Algoritmo 5, using as input the importance function built for the current property under study. This can be changed with the --thresholds option to use Adaptive Multilevel Splitting, a fixed (e.g. non-adaptive) strategy, or pure Sequential Monte Carlo. By default the tool utilises a “hybrid thresholds selection strategy” (viz. Algoritmo 5): upon a failure of Sequential Monte Carlo the subroutine choose_remaining(· · ·) is invoked, que implementa una estrategia no adaptativa de terminación garantizada.
FIGpuede tomar varias opciones adicionales para personalizar los mecanismos de estimación. The full list together with their invocation syntax and some practical examples is obtained calling the tool with the single argument --help.
We next describe the most relevant among these options, two of which were used to run the experiments reported in Sección 4.6. Also and from here onward, estimations whose termination is specified using the --stop-conf option will be referred to as estimaciones acotadas por confianza or merely estimaciones por confianza. Analogously estimaciones acotadas por tiempo or simply estimaciones por tiempo will refer to estimations cuya terminación fue especificada por medio de la opción --stop-time.
Independientemente del criterio de parada escogido, a maximum wall-clock execution time can be imposed by means of the option--timeout, which takes the same mandatory parameter than the --stop-timeoption. The --timeout option is very useful for confidence-bound estimations, when one has no idea whatsoever how long the estimation could take. Instead for time-bound estimations, if the --timeout option is given entonces las simulaciones durarán por el lapso más corto de los dos.
Remarcamos que el formato de la salida de las estimaciones por tiempo (o de aquellas que hicieron timeout) difiere del formato de las estimaciones por confianza. Si una estimación se detuvo porque alcanzó el nivel de confianza y la precisión relativa deseadas para el intervalo, la salida final se verá aproximadamente así:
>_
~~~~~~~~~· FIG · ~~~~~~~~~
This is the Finite Improbability Generator. Version: 1.1
Build: Release ...
RNG algorithm used: pcg32
Estimating P( (q2>0) U (q2==8) ), using simulation engine ”restart”
with importance function ”concrete_coupled” built using strategy ”auto”
with post-processing ”(null)” and thresholds technique ”hyb” [ 2 thresholds | splitting 5 ]
Confidence level: 80 % Precision: 40 %
RNG seed: 1944391357620130122 (randomized) · Computed estimate: 5.34e-06 (7344384 samples) · Computed precision: 1.67e-06
· Precision: 2.13e-06
· Confidence interval: [ 4.27e-06, 6.40e-06 ] · Estimation time: 29.04 s
Resaltamos que hay una precisión computada (“Computed precision”) y una precisión a secas (“Precision”). La primera es el ancho empírico del intervalo obtenido al usar las técnicas del Subsección 3.3.4. La segunda es la precisión relativa (teórica) solicitada, que en este caso es igual a 5.34e-06×0,4 = 2.13e-06.
4.5.3 La herramientaFIG 139
Sin en cambio las estimaciones finalizan por razones temporales, no habrá ninguna precisión teórica que reportar. En tales casos se muestra una serie de intervalos de confianza, construidos con los datos generados para niveles de confianza típicos, e.g.
>_
... [ 2 thresholds | splitting 5 ] Confidence level: 80 % Precision: 40 % Timeout: 00:00:10 RNG seed: 17463016430344695793 (randomized) · Computed estimate: 6.54e-06 (2508288 samples) · 80 % confidence- precision: 3.00e-06
- interval: [ 5.04e-06, 8.04e-06] · 90 % confidence
- precision: 3.86e-06
- interval: [ 4.61e-06, 8.47e-06] · 95 % confidence
- precision: 4.59e-06
- interval: [ 4.24e-06, 8.84e-06] · 99 % confidence
- precision: 6.04e-06
- interval: [ 3.52e-06, 9.56e-06] · Estimation time: 10.00 s
Es importante remarcar que según el Algoritmo 4, las funciones construidas automáticamente usarán el cero como mínimo valor de importancia. This means that the local initial state of a module is assigned the value 0 by its local importance function, which can be problematic for the compositional approach if the product is used either como operando de composición o en una estrategia de composición.
Tomemos por ejemplo el comando
>_
fig tandem_queue.sa --acomp “*” --stop-conf .8 .6que especifica al producto como operador de composición para usar con el método composicional. Say the rare event is a a saturation in both queues. Then e.g. the global importance function will yield the value 0, as long as the first queue is in its initial local state and regardless of the occupancy in the second queue. This is clearly at odds with the desired behaviour. Nos hemos referido a este hecho anteriormente en la Subsección 4.3.4 como el problema de nulificación.
Principalemte a raíz de este inconveniente FIG offers a --post-process option to modify the importance values once they have been computed. The local importance values can thus be increased or exponentiated como se describe a continuación, resolviendo el problema que causa el hecho de que cero sea el
elemento absorvente de ∗.
Retomando la situación anterior, el comando
>_
fig tandem_queue.sa --acomp “*” --stop-conf .8 .6 \--post-process shift 1
incrementa en uno los valores locales de importancia de todos los módulos del sistema. Eso significa que el menor valor devuelto por una función local de importancia será 1 en lugar de 0. Por consiguiente el problema de nulificación queda resuelto, dado que la primera cola tendrá importancia 1 cuando esté en su estado inicial.
En más detalle, la opción --post-process toma dos parámetros:
<tipo> el tipo de posprocesamiento que se aplicará, el cual puede ser o bienshift
para aumentar/disminuir la importancia de cada estado por algún valor, o exp para aplicar potenciación usando como exponente la importancia del estado;
<arg> el argumento numérico a usar, que para shift puede ser cualquier constante entera (el valor por el que se aumentará/disminuirá cada valor), y para expdebe ser un número de punto flotante mayor a 1,0 (la base a usar en la potenciación).
Para ilustrar el uso de la potenciación consideremos el comando
>_
fig tandem_queue.sa --acomp “*” --stop-conf .8 .6 \--post-process exp 2.0
Esto significa que en cada módulo, el valor de importancia i de cada estado local será reemplazado por el valor 2i. Nuevamente esto alcanza para solucionar el problema de nulificación, puesto que 20 = 1 y por ende el menor valor de
importancia en cualquier cola no será cero.
Esta subsección concluye discutiendo la interacción de la herramienta con el formato de especificación de modelos jani desarrollado por [BDH+17]. FIG puede
operate as bidirectional translator betweenIOSA andJANI, for which the options --to-janiand--from-janiare offered. When these are specified the tool assumes the translation role and runs no estimation. Nonetheless FIGcan be fed an (IOSA- compatible) JANI model as system model description, and upon a successful implicit translation the estimations will be carried out as usual. Entonces por ejemplo sea tandem_queue.jani un archivo con el modelo JANI correspondiente a la cola tándem modularisada que venimos tratando. El comando
>_
fig tandem_queue.jani --amono --stop-conf .95 .6invoca a la herramienta para realizar las simulaciones RESTARTusuales emplean- do la función de importancia monolítica, y las estimaciones concluirán una vez que se haya logrado construir un intervalo con un nivel de confianza del 95 % y un error relativo del 60 %.
4.6 Casos de estudio 141
En lo referido a la traducción, como ya se dijo sólo CTMC y ciertos tipos de Autómatas Estocásticos Temporizados deterministas (STA) coinciden con el formalismoIOSA. Cuando se exporta haciaJANIcon la opción--to-jani, unSTA compatible con IOSA es generado. Cuando se importa desdeJANI con la opción --from-jani es necesario realizar muchos chequeos. Los más básicos incluyen la ausencia de variables globales y el uso de una estrategia de sincronización tipo broadcast como la de IOSA. Cualquier modelo CTMC que satisfaga estas condiciones debería ser aceptado. Los STAson más complicados ya que permiten varias manipulaciones de los relojes que los Autómatas Estocásticos en general desconocen (e.g. asignarle un valor preciso a un reloj), y además permiten varios relojes habilitantes por arista. Por ende la restricciones de la Definición 17 deben ser cotejadas con cuidado cuando se importa un modelo JANI de STA:
1. primero se chequean a nivel sintáctico las restricciones (a) y (b), 2. luego se construye un modelo IOSA tentativo,
3. finalmente se evalúan las restricciones (c) a (g)
Si estas pruebas son superadas con éxito, i.e. si el modelo resultante descripto en la sintaxis IOSA satisface la Definición 17, un archivo de modelo (IOSA) es producido como salida. En caso contrario se muestra un mensaje de error y la traducción aborta.
4.6.
Casos de estudio
Varios sistemas fueron tomados de la bibliografía de RES y analizados con
FIG. La descripción general de estos sistemas y el resultado de los experimentos se muestran en esta sección. Los autómatas estocásticos con entrada/salida usados a este propósito se encuentran listados en el Apéndice A.
4.6.1.
Entorno de experimentación
Todos los modelos aquí estudiados se encuentran descriptos en la sintaxis de modelado IOSA. Algunos casos de estudio markovianos analizados en la Sección 3.5 son reproducidos en esta sección. Estas pruebas sirvieron para validar el correcto funcionamiento de la herramienta FIG. Sistemas no markovianos, que usan relojes asociados e.g. a la distribución log-normal, también son estudiados en la presente sección.
Siguiendo el formato general de la Sección 3.5 we launched independent experiments for each case, perfecting an interval around a point estimate until some convergence or time criterion was reached. Some experiments ran until meeting a confidence criterion, or were truncated upon exceeding an execution timeout; in these cases the measure of interest is the speed of convergence. Notice this was the setting for all experiments in Sección 3.5. Other experiments ran for a predefined execution time bound; in these cases the measure of interest is the precision achieved, donde el objetivo es construir el intervalo más angosto posible.
Se emplearon dos sistemas computacionales. El servidor JupiterAce posee un procesador Intel Xeon E5-2620v3 con 12 núcleos de 2.40GHz, with 128 GiB 2133MHz of available DDR4 RAM. Los nodos del clusterMendieta count instead with 8-cores 2.70GHz Intel Xeon E5-2620 processors, each with access to aDDR3 RAM memory of 32 GiB and 1333MHz. For each case study especificamos si los cálculos fueron realizados en JupiterAce o en Mendieta.
Algunos sistemas markovianos fueron importandos del capítulo previo and analysed in the same way, that is, convergence was tested for decreasing values of the rare event probability γ. Notice this includes the database system with redundancy, which could not be evaluated thoroughly en el Capítulo 3 debido a las limitaciones de la estrategia monolítica.
En esta sección también introducimos dos sistemas no markovianos, whose analysis is carried out somewhat differently. The triple tandem queue we present in la Subsección 4.6.3 was tested for different configurations of its parameters, all of which yield roughly the same value of γ. Furthermore there are two variants of the oil pipeline system we study in Subsección 4.6.6: in one of them the system components fail according to exponentially distributed clocks; the other variant uses clocks which sample time de una distribución Rayleigh (i.e. una Weibull con parámetro de forma 2).
Cuando fue posible, evaluamos cuatro estrategias for each model and configu- ration: standard Monte Carlo, RESTART using ad hoc importance functions, RESTART using the monolithic importance function from Capítulo 3, and RESTART using the compositional approach from this capítulo. Also, when the system model from the literature could be imitated exactly, we checked the consistency of the confidence intervals obtained by comparing them to the published values. Otherwise we verified that all simulation strategies converged to similar values, e.g. corroborando si todos los intervalos producidos compartían una región común.
Presentamos gráficos y tablas que muestran o bien los timepos de conver- gencia o sino la precisión de los intervalos obtenidos, depending on whether the execution bound was criterio de confianza or presupuesto de tiempo respectively. Time measurements consider wall-clock time, including preprocessings like the compilation of the model files y la selección de los umbrales.
En algunos casos específicos los resultados evidencian a somewhat high sensi- tivity to the choice of seed fed to the Random Number Generator routine (RNG). This is exacerbated by the relatively low replication we could perform: three to four independent experiments were run for each configuration of each case study, which presents a risk from the statistic viewpoint. Therefore a per case replication was performed whenever needed to verify consistency. This, on top of previous studies like the ones from [BDM17], dan base a la solidez de las medidas que presentamos a lo largo de esta sección.
Se notará que en general, the simulation times obtained are longer than those presented before in la Sección 3.5, and also that the confidence convergence criteria is laxer. In that respect we highlight that a simulation step in PRISM
4.6.2 Cola tándem 143
relojes de todos los módulos deben ser actualizados para realizar la misma tarea.