Introducción Muchas veces en nuestro día a día, nos encontramos con una situación en la que necesitemos hacer una cola, esto a su vez genera un efecto que en nuestro caso se denomina líneas de espera, dicho comúnmente, líneas donde debemos esperar para ser atendidos y realizar una acción. Esto ocurre cuando existe un sobre flujo de personas para prescindir de un servicio. Ejemplos de estos casos serían los que se nos presentaría cuando estamos en un semáforo, el peaje de una autopista, un cajero automático, un autoservicio de comida rápida. Cada modelo de líneas de espera cuenta con características propias, por lo que es importante que el desarrollo de cada una no sea algo estándar, para que de esta manera se logre evaluar los valores sin importar el problema que se aborde, independientemente del servicio que se esté empleando (ya sea un establecimiento de comida rápida, un almacén o una entidad pública). Teniendo en cuenta lo anterior mencionado, consideramos que es necesario encontrar un balance adecuado para evitar éste tipo de problemas. Esta es una de las finalidades del estudio de líneas de esperas en teoría de colas, buscar la manera más eficaz y estable de que en un sistema que cumple este trabajo se logre optimizar el servicio y determinar una capacidad de servicio aprobada por los consumidores/clientes.
Planteamiento del Problema La sociedad va evolucionando, y con ello el ritmo de vida de las personas. El tiempo desde luego es lo más importante, y saber administrarlo es muy provechoso para la realización y el desempeño de las actividades en cualquier ámbito. En épocas anteriores, la organización de la población para poder adquirir algún servicio b ien sea prestado al público o de índole privado, era bastante ambiguo y arcaico su metodología de organización, ya que no se existían los recursos tecnológicos que dieran un avance en la sistematización de esta actividad. En llevó a que Agner Kraup Erlang (1909) ideara una teoría relacionada a las líneas de espera que quizás para ese entonces no hubiesen sido aplicables, pero que perdurarían en el tiempo a fin de poder ser utilizadas como inicio de un buen sistema de control de líneas de espera. Su objetivo era cumplir la demanda incierta de servicios en el sistema telefónico de su ciudad, analizando el tráfico o la congestión de llamadas. Esta teoría pasó a ser una herramienta muy importante en la simulación y ayudó a solucionar muchos problemas prácticos que tenían como características llegadas y salidas de datos. En el ámbito empresarial e industrial actual, existe esa inquietud de saber cómo potenciar la producción y la adquisición, en pro de para maximizar las ganancias, invertir y beneficiar a la empresa, y en otros para satisfacer efectivamente las demandas de quienes solicitan sus servicios. Es por ello que los organizadores deben hacer un estudio de las situaciones que se requieren para satisfacer la demanda, ya que éste puede tener una buena capacidad y no contar con la cantidad de servidores suficientes, lo cual puede acarrear consecuencias tanto para los usuarios como para la empresa. ¿Cómo tomaría la población en general la implementación de un sistema de líneas de espera?
Es algo muy objetivo en estos tiempos, porque depende del sentido de uso que se le dé y el contexto en el que se utilice, pero de nuestra parte, afectaría de manera positiva ya que facilitaría la gestión de tiempos y procesos de op eración. ¿Cómo se comporta este tipo de modelos? De manera sistematizada. Sin embargo, en los casos de uso que se pueden llevar acabo implementando estos mecanismos de gestión, se pueden presentar eventualidades positivas. En cuanto a lo positivo, mejor tiempo de respuesta. En cuanto a lo negativo, mayor coste del sistema al procesar actividades muy extensas, falta de actualizaciones para posterior mantenimiento. ¿Cuán efectivo sería automatizar los cálculos en un modelo de línea de espera? Muy efectivo, ya que la determinación de las respuestas de un subproblema de un modelo de línea de espera depende de cálculos previos (En el caso del cálculo de los coeficientes de probabilidad) y desarrollar una aplicación que lleve esto acabo con una simple acción del usuario disminuiría eficazmente el tiempo de servicio en dicho escenario. Debido a que este es un problema habitual en nuestra sociedad, en mucho de los casos es frustrante y tedioso el tener que esperar para utilizar un servicio, y se puede deber a muchos factores (Falta de mantenimiento a la plataforma que provee el servicio, carencia de organización de los sitios de espera). En gran parte de la ciudad, y en el país en general, esta problemática se frecuenta mucho por lo anterior mencionado, en donde si bien la implementación de un sistema automatizado de control de colas ayudaría a la empresa, establecimiento, o entidad en cuestión a mejorar la prestación de su servicio, todo va a depender también de cómo la población tome la política del lugar de disponer de dicho sistema.
Existen muchos modelos de colas con características y tratamientos distintos, que se pueden desarrollar de manera sistematizada, algunos son muy peculiares y otros se ajustan a modelos más típicos y generales. Un caso de uso en el que igual se aplican este tipo de modelo son en las empresas, en las que existen una recepción de servicio y un despachador, en los cuales hay un mayor o menos flujo. Es por esto que es necesario que las herramientas a proveer estén bien formuladas en base a las necesidades particulares del problema. Frente a esa situación, la solución para lograr la eficiencia en sistema de líneas de espera es clasificar y ordenar la información que se obtenga de los usuarios, ya sea el tiempo de llegada, la capacidad del servidor para prestar el servicio, el flujo de entrada y salida de los usuarios, a fin de llegar a una respuesta de saber cuál modelo de sistema es más efectivo y beneficia más a la empresa, tomando en cuenta además, las exigencias de los usuarios que frecuentan la utilización de un determinado sistema, toda esta información se obtiene a través de cálculos matemáticos que dependen de que con qué tipo de línea de esperas estamos trabajando, así pues, se tienen diferentes modelos, los cuales nos otorgan fórmulas para poder obtener información que describa el sistema. Para agilizar los cálculos matemáticos de los sistemas de líneas de esperas que queramos estudiar se puede realizar la implementación de una aplicación que automatice la obtención de datos que nos pormenoricen el comportamiento de los sistemas.
Antecedentes En épocas anteriores, la organización de la población para poder adquirir algún servicio bien sea prestado al público o de índole privado, era bastante ambiguo y arcaico su metodología de organización, ya que no se existían los recursos tecnológicos que dieran un avance en la sistematización de esta actividad. En llevó a que Agner Kraup Erlang (1909) ideara una teoría relacionada a las líneas de espera que quizás para ese entonces no hubiesen sido aplicables, pero que perdurarían en el tiempo a fin de poder ser utilizadas como inicio de un buen sistema de control de líneas de espera. Su objetivo era cumplir la demanda incierta de servicios en el sistema telefónico de su ciudad, analizando el tráfico o la congestión de llamadas. Esta teoría pasó a ser una herramienta muy importante en la simulación y ayudó a solucionar muchos problemas prácticos que tenían como características llegadas y salidas de datos. Jaimes Enrique Varela (Introducción a la Investigación de Operaciones) “las colas se presentan con frecuencia cuando se solicita un servicio por parte de una serie de clientes y tanto el servicio como los clientes son de tipo probabilístico.
Objetivos Objetivo General
Crear una aplicación que nos permita resolver diferentes tipos de modelos de líneas de espera.
Objetivos Específicos
Realizar una investigación sobre los diferentes tipos de modelos de línea de espera.
Estudiar las fórmulas de cada modelo de la teoría de colas para conocer cuáles son más convenientes utilizar en la aplicación.
Aplicar la teoría de colas para formular los procedimientos a aplicar en los problemas que se representen.
Implementar la aplicación en java (NetBeans).
Marco Teórico Una cola es una línea de espera para determinado servicio. Este servicio lo proporciona uno o varios servidores. La teoría de colas analiza la causa de la formación de la cola, que es la existencia de momentos en los que hay una mayor demanda de servicio que la capacidad de servicio. Clientes son los entes, trabajos o tareas a los que demandan servicio, y dependientes, empleados o servidores los que ofrecen servicio.
Proceso de Nacimiento y Muerte Es un proceso estocástico continuo en el tiempo, para el cual el estado del sistema en cualquier tiempo es un entero no negativo. Si un proceso de Nacimiento y Muerte está en el estado j, cuando el tiempo es t, entonces el movimiento del proceso está gobernado por las siguientes leyes: 1.
Con probabilidad λ j Δt, sucede un nacimiento entre el tiempo t y el tiempo
t + Δt . 2.
Con probabilidad π j Δt, sucede una muerte entre el tiempo t y el tiempo t + Δt . Una muerte disminuye en 1 el estado del sistema, para llegar al estado j – 1 . La variable
π j se llama tasa de mortalidad en el estado j. Se debe cumplir que π 0 = 0, para no tener estados negativos 3. Los procesos de nacimiento y muerte son independientes entre sí.
La mayor parte de los sistemas de cola con tiempos exponenciales entre llegadas y servicio, pueden modelarse como procesos de Nacimiento y Muerte.
Estas leyes se usan para demostrar que la probabilidad de que ocurra más de un evento entre el tiempo t y el tiempo t + Δt . es 0 (Δt). Todo proceso de Nacimiento y Muerte queda completamente especificado si se conoce la tasa de natalidad: λ j y la tasa de mortalidad:
j j.
Modelo M/M/1/DG/ / : Un servidor
Tiempos entre Llegadas iid: independientes e idénticamente distribuidos y las variables aleatorias tienen distribución exponencial, la rapidez de llegadas por unidad de tiempo es λ.
Hay UN servidor con Tiempo de Servicio por cada cliente iid y con distribución exponencial y rapidez = π.
La disciplina de la Línea de Espera es general GD.
El Número Máximo de Clientes permitidos en el Sistema es
La fuente de la cual se toman los clientes es parámetros:
= λ ( j = 0, 1, . . .)
j λ
0 =
j
=
0 ( j = 0, 1, . . .)
y
. Se puede modelar con los siguientes
Probabilidades de Estado Estable
Diagrama de rapidez para un sistema de Colas: M/ M/ 1/ DG/ o
0
Estado
1
1 1
j
2
2 2
/
J
J+1 j+1
3
Representa un “nacimiento” Llegada Representa una “muerte” se completa el
Modelo M/M/1/DG/c/ : Tamaño del sistema finito
Tiempos entre Llegadas iid: independientes e idénticamente distribuidos y las variables aleatorias tienen distribución exponencial, la rapidez de llegadas por unidad de tiempo es .
Hay
UN servidor con Tiempo de Servicio por cada cliente iid y con distribución
exponencial y rapidez = .
La disciplina de la Línea de Espera es general GD.
El Número Máximo de Clientes permitidos en el S istema es c y
La fuente de la cual se toman los clientes es
. Se puede modelar con los siguientes
parámetros: Este modelo es igual al anterior (M/M/1/DG/c/
), con excepción de que cuando hay c
clientes en el sistema, todas las llegadas se regresan y el sistema las pierde. j =
(j = 0, 1, ..., c-1)
c = 0
(j = c, c + 1, ...)
(2.1)
0 = 0 j =
(j = 0, 1, ...,c)
Como c
= 0, el sistema nunca alcanzara el estado c+1 o un estado mayor.
Representa el número de Clientes que llegan al sistema, ef representa el número promedio de Clientes que realmente ingresan al sistema. Llegan un promedio de , pero
c
de estas
llegadas encuentran el sistema lleno y se van, ef =
–
c
= (1 – c)
Probabilidades en Estado Estable Diagrama de rapidez para un sistema de Colas: M/ M/ 1/ DG/ c/
Estado
0
1
2
C–1
C
Modelo M/ M/ s/ DG/ ∞/∞
Tiempos entre Llegadas iid: independientes e idénticamente distribuidos y las variables aleatorias tienen distribución exponencial, la rapidez de llegadas por unidad de tiempo es λ .
Hay “S” servidores con Tiempo de Servicio por cada cliente iid y con distribución exponencial y rapidez = μ
La disciplina de la Línea de Espera es general GD.
El Número Máximo de Clientes permitidos en el Sistema es
y
Si hay j
s clientes, entonces los j clientes están en servicio; si hay j
s,
entonces los s servidores están ocupados y hay j – s clientes esperando en cola. Si hay k servidores ocupados, entonces se concluyen servicios con una frecuencia de:
+ +⋯+
= ; = (, )
Se puede modelar utilizando la metodología de Nacimiento y Muerte con los siguientes parámetros: j =
j =
( j = 0, 1, ...)
j
j = s
( j = 0, 1, ...,s) μ
( j = s + 1, s+ 2…)
Modelo M/M/R/DG/K/K: Fuente finita Reparación de máquinas – K máquinas y R técnicos
Tiempos entre Llegadas iid: independientes e idénticamente distribuidos y las variables aleatorias tienen distribución exponencial, la rapidez de llegadas por unidad de tiempo es
.
Hay “R” servidores con Tiempo de Servicio por cada cliente iid y con distribución exponencial y rapidez =
.
La disciplina de la Línea de Espera es general GD.
El Número Máximo de Clientes permitidos en el Sistema es K y
La fuente de la cual se toman los clientes es
K. Se puede modelar con los siguientes
parámetros: El Intervalo durante el cual una maquina permanece en buen estado sigue distribución
exponencial, con parámetro
. Al descomponerse se envía al centro de
reparación. Si hay j hay j
R máquinas dañadas, entonces las j máquinas están en servicio; si
R, entonces los R servidores están ocupados y hay j –R máquinas esperando en cola.
El tiempo promedio de reparación de una máquina es: 1/
. Una vez reparada regresa en
buen estado y es susceptible de volver a descomponerse. Se puede modelar utilizando la metodología de Nacimiento y Muerte, en el cual un nacimiento corresponde a una máquina que se descompone y una muerte a una máquina que acaba de ser reparada. Para calcular la frecuencia de natalidad en el estado j, se debe determinar la rapidez a la que se descomponen las máquinas en el estado j: Así hay (K – j) máquinas en buen estado. Como cada máquina se descompone con un frecuencia
, la frecuencia
total a la que se suceden las descomposturas cuando el estado es j es
+ +⋯+
↔
❑ = – = (–) Si hay 0
técnicos ocupados, entonces la tasa de mortalidad o conclusión de
servicios tiene una frecuencia de:
+
+ ... +
=
;
= min(j,R)
Los parámetros serían: j = (K – j)
( j = 0, 1, ... K )
j =
( j = 0, 1, ..., R)
j
j = s
( j = R + 1, R+ 2... K)
Elementos existentes en un modelo de colas Fuente de entrada o población potencial Es un conjunto de individuos (no necesariamente seres vivos) que pueden llegar a solicitar el servicio en cuestión. Podemos considerarla finita o infinita. Aunque el caso de infinitud no es realista, sí permite (por extraño que parezca) resolver de forma más sencilla muchas situaciones en las que, en realidad, la población es finita pero muy grande.
Cliente Es todo individuo de la población potencial que solicita servicio. Suponiendo que los tiempos de llegada de clientes consecutivos son 0
Capacidad de la cola Es el máximo número de clientes que pueden estar haciendo cola (antes de comenzar a ser servidos). De nuevo, puede suponerse finita o infinita. Lo más sencillo, a efectos de simplicidad en los cálculos, es suponerla infinita. Aunque es obvio que en la mayor parte de los casos reales la capacidad de la cola es finita, no es una gran restricción el suponerla infinita si es extremadamente improbable que no puedan entrar clientes a la cola por haberse llegado a ese número límite en la misma.
Disciplina de la cola Es el modo en el que los clientes son seleccionados para ser servidos. Las disciplinas más habituales son: La disciplina FIFO (first in first out), también llamada FCFS (first come first served): según la cual se atiende primero al cliente que antes haya llegado. La disciplina LIFO (last in first out), también conocida como LCFS (last come first served) o pila: que consiste en atender primero al cliente que ha llegado el último. La RSS (random selection of service), o SIRO (service in random order), que selecciona a los clientes de forma aleatoria.
Mecanismo de servicio Es el procedimiento por el cual se da servicio a los clientes que lo solicitan. Se deben conocer el número de servidores de dicho mecanismo y la distribución de probabilidad del tiempo que le lleva a cada servidor dar el servicio.
La cola Propiamente dicha, 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.
El Sistema de cola Es el conjunto formado por la cola y el mecanismo de servicio, junto con la disciplina de la cola, que es lo nos indica el criterio de qué cliente de la cola elegir para pasar al mecanismo de servicio. En la siguiente figura se pueden apreciar claramente los elementos:
Notación de Kendall:
Las distribuciones que se utilizan son:
M: Distribución exponencial (Markoviana).
D: Distribución degenerada (Tiempos Constantes).
E k: Distribución Erlang.
G: Distribución general.
Solución Propuesta Para la ejecución de la aplicación se seguirán los siguientes pasos ordenados (Algoritmo): 1.
Obtener la cantidad de servidores en series que tiene el sistema.
2.
Obtener todos los datos principales necesarios para cada uno de los servidores o
para el servidor.
Cantidad de servidores en paralelo (“s”).
Verificar si es de población finita (cantidad “c”) o infinita.
Numero promedio de llegadas al sistema por unidad de tiempo (Lambda λ ).
Numero promedio de servicios concluidos por unidad de tiempo (Mu μ).
1.
Verificar si el sistema en cuestión es estable si el modelo no es de población finita
(ρ>0). 2.
En caso de ser falso el paso 3 volver al paso 2.
3.
Identificar a qué tipo de modelo de líneas de espera pertenece el sistema.
M/M/1/DG/∞/∞
M/M/1/DG/c/∞
M/M/s/DG/∞/∞
M/M/R/DG/K/K
Modelo de colas abiertas
1.
Calcular número esperado de clientes en el sistema “L”, en cola “Lq” y en
servicio “Ls”. 2.
Calcular tiempo esperado por los clientes en el sistema “W”, en cola “Wq” y en
servicio “Ws”. 3.
Calcular las probabilidades de que no hayan clientes en el sistema “π0”.
4.
Mostrar los resultados en una tabla.
5.
Mostrar de manera gráfica la descripción del sistema.
6.
Si el usuario lo desea, calcular las probabilidades de que en estado estable haya
“j” clientes en el sistema (el valor de j lo introduce el usuario) “πj”.
Pruebas Prueba de caja negra
N°
N° Nueva
Prueba
ServidoresS
Lambda
Mu
Población
ServidoresP
Resultado
prueba
1
1
20
30
∞
1
Correcto
-
2
3
10|8|5
15|4|3
∞|6|∞
2|1|1
Correcto
3
3
3
10|8|8
15|4|3
∞|6|∞
2|1|5
Correcto
-
4
0
30
40
∞
1
Correcto
-
5
f
4
6
∞
2
correcto
-
6
1
20
30.3.3
4
1
Incorrecto
Nota: Para toda prueba donde los servidores en serie “ServidoresS” sea mayor a 1, se utiliza el “|” para identificar los valores de Lambda, Mu, Población y ServidoresP (Servidores en paralelo) de cada uno de los servidores en serie de izquierda a derecha como se muestra en el siguiente ejemplo: (DatoServidor1|DatoServidor2|DatoServidor3 Descripciones 1.
El programa se ejecuta perfectamente y muestra l os resultados.
2.
El programa lanza un mensaje esperado indicando que P=Lambda/Mu es mayor que 0 en
el servidor 3 y por lo tanto se deben modificar los valores de este ya que no es estable, la modificación se realiza y viene siendo nuestra prueba N° 3. En el servidor dos también P es mayor que 0, pero en este caso es válido porque es un servidor de población finita, como lo indica en la tabla con una población de 6 clientes.
3.
Se realiza la modificación de los datos, ahora tenemos 5 servidores en paralelo con los
mismos valores de Lambda y Mu, pero en este caso se ejecuta perfectamente la aplicación y muestra los resultados debido a que cambia el modelo de cola y por lo tanto la nueva fórmula para P es: (P= Lambda/ServidoresS*Mu). 4.
La aplicación no permite introducir el valor 0 en ServidoresS.
5.
La aplicación no permite introducir caracteres en S ervidoresS.
6.
La aplicación permite introducir un digito con más de una coma y tiene un error que hace
que deje de funcionar.
Análisis de Resultados Habiendo terminado casi en su totalidad la aplicación podemos comprobar que el proceso automatizado del cálculo de los datos para estudiar modelos de líneas de espera es bastante efectivo. La aplicación permite escoger entre varios modelos de líneas de espera e introduciendo las variables que se piden en principio se pueden calcular los datos respectivos para conocer cómo se comporta el sistema en estudio. La aplicación trabaja de manera fluida y el cálculo y reflejo de los datos deseados en pantalla se hace en cuestión de milisegundos. Las validaciones funcionan correctamente evitando que se introduzcan valores erróneos en el proceso de ejecución, así como también refleja cuando un sistema introducido no es estable.
Conclusión Con frecuencia, las empresas deben tomar decisiones respecto al caudal de servicios que debe estar preparada para ofrecer. Sin embargo, muchas veces es imposible predecir con exactitud cuándo llegarán los clientes que demandan el servicio y/o cuanto tiempo será necesario para dar ese servicio; es por eso que esas decisiones implican dilemas que hay que resolver con información escasa. Estar preparados para ofrecer todo servicio que se nos solicite en cualquier momento puede implicar mantener recursos ociosos y costos excesivos. Por otro lado, carecer de la capacidad de servicio suficiente causa colas excesivamente largas en ciertos momentos. Cuando los clientes tienen que esperar en una cola para recibir nuestros servicios, están pagando un coste, en tiempo, más alto del que esperaban. Las líneas de espera largas también son costosas por tanto para la empresa ya que producen pérdida de prestigio y pérdida de clientes. La teoría de las colas en si no resuelve directamente el problema, pero contribuye con la formación vital que se requiere para tomar las decisiones concernientes prediciendo algunas características sobre la línea de espera: probabilidad de que se formen, el tiempo de espera promedio. La automatización de los cálculos de los datos de los modelos de línea de espera, brindan resultados más certeros que ayudan a analizar el comportamiento de estos de manera más segura y rápida.