1.- INTRODUCCIÓN TEORIA DE COLAS 1.1.- Introducción a la teoría de colas Tal y como se ha comentado anteriormente, los sistemas de colas son modelos de sistemas que proporcionan un servicio. Como modelo, pueden representar cualquier sistema donde clientes llegan buscando un servicio de algún tipo y salen después de que dicho servicio haya sido atendido. 1.1.1. Elementos de un sistema de colas Los principales elementos que se pueden encontrar en todo sistema de colas son: Población potencial o fuente de entrada, es el conjunto de individuos (no necesariamente seres vivos) que pueden llegar al sistema para demandar el servicio en cuestión. La población puede ser finita o infinita. Aunque el caso de infinitud no es realista, si permite resolver de forma más sencilla muchas situaciones en las que, en realidad, la población es finita pero muy grande. Dicha suposición de infinitud no resulta restrictiva cuando, aún siendo finita la población potencial, su número de elementos es tan grande que el número de individuos que ya están solicitando el citado servicio prácticamente no afecta a la frecuencia con la que la población potencial genera nuevas peticiones de servicio. Clientes, son cada uno de los individuos pertenecientes a la población y que demandan el servicio. Un parámetro importante a conocer de la fuente sería la probabilidad con que esta genera clientes. Lo más habitual es tomar como referencia los instantes de llegada de dos clientes consecutivos y fijar su distribución de probabilidad. Normalmente, cuando la población potencial es infinita se supone que la distribución de probabilidad del tiempo entre llegadas no depende del número de clientes que estén en espera de completar su servicio, mientras que en el caso de que la fuente de entrada sea finita, la distribución variará según el número de clientes en proceso de ser atendidos. Cola, es el conjunto de clientes que hacen espera, es decir, los clientes que ya han solicitado el servicio pero que aún no han pasado al mecanismo de servicio al no estar este disponible en el momento de la llegada del cliente. Varios son los parámetros que la caracterizan: 1. Capacidad, se define como el número máximo de clientes que pueden estar esperando antes de ser servidos. La capacidad puede ser finita o infinita, siendo este último caso el más sencillo, aunque en la realidad el caso más frecuente sea el de capacidad finita. 5
2. Disciplina de gestión, es el modo en el que los clientes son seleccionados para ser servidos. Son varias las posibles disciplinas de gestión de colas que se pueden seleccionar, sin embargo se expondrán a continuación las que van a ser empleadas en el presente proyecto: FCFS (first come first served) tambien llamada FIFO (first in first out), según la cual se atiende primero al cliente que antes haya llegado. LCFS (last come first served), también conocida como LIFO (last in first out) o pila, que consiste en atender primero al cliente que ha llegado el último. SJF (short job first), que consiste en atender primero a los clientes que demandan menor tiempo de servicio. En caso de existir varios clientes demandando el mismo tiempo de servicio, estos serán atendidos según su orden de llegada. Demanda o mecanismo de servicio, es el procedimiento por el cual se da servicio a los clientes que lo solicitan. Para determinar totalmente el mecanismo de servicio se debe conocer el número de servidores de dicho mecanismo (si dicho número fuese aleatorio, la distribución de probabilidad del mismo) y la distribución de probabilidad del tiempo que le lleva a cada servidor dar un servicio. En caso de que los servidores tengan distinta destreza para dar el servicio, se debe especificar la distribución del tiempo de servicio para cada uno. En el presente proyecto todos los servidores tendrán siempre igual capacidad para dar el servicio, es decir, todos los servidores tendrán la misma distribución del tiempo de servicio. 1.1.2. Especificación de un sistema de colas. Por convención, un sistema de colas se especifica siguiendo la Notación de Kendall de la siguiente forma: A/B/m/k/N/Z Los distintos parámetros a especificar en la Notación de Kendall son: A distribución de la variable aleatoria tiempo entre llegadas. B distribución de la variable aleatoria tiempo de servicio. Las distribuciones que se emplean son: M distribución exponencial. D distribución determinista. U distribución uniforme. Hk distribución Erlang-K G distribución genérica. 6
m número de recursos o servidores. K número máximo de tareas en el sistema en un instante dado ( es la suma de las tareas que se encuentran en la cola y en los servidores). La cola dispondrá de k-m posiciones. N tamaño de la población potencial. Z disciplina de gestión de la cola. Los valores por defecto son k =1, N =1, Z = FCFS. 1.1.3. Prestaciones de un sistema de colas Los parámetros de los sistemas de colas permiten hacer una evaluación de las prestaciones. Estas prestaciones se pueden dividir en tres grupos: 1. Orientadas al gestor. Sirven para conocer la demanda de recursos y planificar el sistema. Estas prestaciones son: Tráfico o intensidad de tráfico, es el tráfico medio ofrecido al sistema tomando un número de posiciones infinito. Factor de uso, es la probabilidad que un recurso del sistema se encuentre ocupado. También puede interpretarse como el tiempo medio que un servidor se encuentra ocupado. Caudal o throughput, es el número medio de clientes atendidos por unidad de tiempo. 2. Orientadas al usuario. Miden el grado de servicio percibido por el usuario. Estas prestaciones son: Tiempo de respuesta T, es el tiempo que transcurre desde que el cliente entra en el sistema hasta que sale de él tras ser atendido. Tiempo de espera en cola W, es el tiempo que el cliente permanece en la cola esperando a ser atendido. Para realizar una evaluación de estas prestaciones en la práctica se supone que ambas variables aleatorias son idénticamente distribuidas y se emplea la el valor medio y la varianza de cada una de ellas. 3. Otras prestaciones. En esta división se tienen las siguientes prestaciones: Número de usuarios en el sistema N(t), es el número de usuarios en el sistema en un instante dado. Número de usuarios en cola Q(t), es el número de usuarios en la cola en un instante dado. Tal y como se hizo con las prestaciones orientadas al usuario, se supone que N (t) y Q(t) son variables aleatorias idénticamente distribuidas y es necesario valerse de los valores medios y las varianzas para evaluar las prestaciones. 7
1.2.- Simulación para teoría de colas Desde hace mucho tiempo la simulación ha sido una herramienta importante en gran cantidad de ámbitos. En el ámbito físico con frecuencia se emplea la simulación en la utilización de maquetas en construcciones, maniquíes, canales hidrodinámicos y túneles de viento. Por ejemplo, la simulación del vuelo de un avión en un túnel de viento es una práctica normal cuando se diseña un nuevo avión. En teoría se podrían usar las leyes de la física para obtener la misma información sobre los cambios que sufre el avión si se modifican los parámetros, pero en el sentido práctico, el análisis sería muy complicado. Una alternativa sería construir aviones reales para cada uno de los diseños y probarlos en vuelos reales, pero esto sería demasiado costoso (a la vez que peligroso). Por lo tanto, después de realizar un análisis teórico preliminar para desarrollar un diseño básico, la herramienta más viable para experimentar con los diseños específicos es la simulación del vuelo en un túnel de viento. Esta simulación significa imitar el desempeño de un avión real en un medio controlado con el fin de estimar cual seria el desempeño real. Después de desarrollar un diseño detallado se puede construir un modelo prototipo y probarse en un vuelo real para dar los últimos detalles del diseño final. 1.2.1. Conceptos básicos La simulación es una técnica que permite la inferencia de características de un sistema real mediante un modelo que imita su comportamiento. La utilización de un simulador se justifica cuando la experimentación con el sistema real es más costosa o imposible. Es importante resaltar que la simulación no es un ejercicio de programación que da una respuesta exacta, esto es así porque se emplean modelos que son simplificaciones de los sistemas reales. El elemento clave de la simulación es el modelo a utilizar, es por ello, que el proceso de modelado del sistema real es pieza clave para asegurar que la simulación cumpla con sus objetivos de diseño. El modelado de un sistema consiste en la abstracción simplificada del mismo, dicho modelo, debe ser válido a pesar de no representar todas las características del sistema real y es necesario resaltar que no es una implementación sino una simplificación. 1.2.2. Tipos de modelos de simulación Varios son los modelos de simulación existentes, la elección de uno u otro dependería en cada caso de las características del sistema modelado. A continuación se describen los principales modelos de simulación existentes. 8
Estocásticos / deterministas. Los sistemas estocásticos contienen componentes aleatorios mientras que los deterministas no. Dinámicos / estáticos. La simulación se dice estática si en el modelo no juega ningún papel el transcurso del tiempo mientras que es dinámica si el tiempo es una de las variables importantes del modelo. En la simulación estática resulta muy sencillo comparar distintas estrategias ante las mismas condiciones del azar, mientras que esto es más complicado en la simulación dinámica, exigiendo un trabajo mayor de planificación. Además, el coste computacional de la simulación estática es bastante más moderado. En la simulación dinámica, normalmente se trata de ir analizando los distintos estados por los que va pasando un sistema que evoluciona en el tiempo. Esto provoca, en general, un mayor coste computacional y problemas de estabilización y dependencia. Continuos / discretos. Son un caso particular dentro de los sistemas dinámicos. En la simulación continua el sistema se cambia de estado continuamente mientras que en la estática, los cambios se producen en instantes de tiempo singulares. En el primer caso el conjunto de estados es continuo mientras que en el segundo es discreto. Por eventos / por cuantos. Son un caso particular dentro de los sistemas discretos. En la simulación por cuantos, se controla la variable tiempo avanzándola una pequeña cantidad fija de tiempo, teniendo en cuenta que solo un evento o suceso puede producirse en un cuanto. En la simulación por eventos se avanza la variable tiempo hasta el siguiente suceso o evento. Dada las características de los sistemas de colas, el modelo de simulación más adecuado para la consecución de los objetivos propuestos es la simulación estocástica / dinámica / discreta basada en eventos. Por este motivo, se dedicaran unas cuantas líneas a describir con algo más de detalle la simulación basada en eventos. Simulación orientada a eventos Como se ha descrito anteriormente, en la simulación orientada a eventos se controla la variable tiempo moviéndola hasta la ocurrencia del siguiente suceso (o evento). Esto implica la necesidad de controlar minuciosamente cuál es dicho próximo eventos: saber cuáles son los posibles eventos en un futuro inmediato y cural de ellos es el más inmediato. El modo de actuación en la simulación por eventos se resume a continuación: Se avanza el tiempo hasta el momento en que ocurre el siguiente evento de cualquier tipo. Se actualiza el sistema determinando su nuevo estado, que es el resultado de este evento y generando aleatoriamente (si no se generó antes) el tiempo hasta la siguiente ocurrencia de un evento de cualquier tipo que pueda ocurrir estando en este estado. 9
También se registra la información deseada sobre el comportamiento del sistema (volver al paso anterior). 1.2.3.- El método de simulación Una vez se tiene elegido el tipo de simulación adecuada a las características del problema es cuestión, se está en situación de seguir el método de simulación que se cita a continuación. 1. Formulación del problema y del tipo de respuesta esperado. 2. Recolección de datos del sistema real. 3. Formulación de un modelo. 4. Validación del modelo. 5. Codificación. 6. Verificación del programa resultante. 7. Ejecuciones piloto del programa. 8. Diseño de experimentos. 9. Realización de los experimentos. 10. Análisis de resultados. 10