Вы находитесь на странице: 1из 26

tico y su implementacio

n en EJS
Un modelo matema

SISTEMA DE COLAS ES
QUE
PREFERIBLE?
19 de marzo de 2016

Eduardo Lucas Marn


Universidad de Murcia
Laboratorio de Modelizacion
eduardo.lucas@um.es

QU
UN

SISTEMA DE COLAS ES PREFERIBLE ?


EJS

MODELO MATEMTICO Y SU IMPLEMENTACIN EN


Eduardo Lucas Marn

Resumen El trabajo desarrolla el modelado de un sistema sencillo de colas, comenzando con la intuicin y los
datos experimentales necesarios para establecer un planteamiento inicial, continuando con el tratamiento matemtico de estos datos y la elaboracin de un modelo matemtico apropiado que se ajuste a nuestros datos e intuiciones,
y culminando con la ejecucin del modelo y su comparacin con resultados analticos. El objetivo ser tratar de
determinar una organizacin ptima del sistema de colas, variando para ello parmetros como el nmero de cajas
o el nmero de colas individuales, para luego realizar un sencillo anlisis estadstico y ver qu distribuciones son
preferibles.
Pronto nos saldremos del campo abarcable por clculos analticos exactos, aadiendo las verdaderas variables
de inters como la modificacin del criterio de los clientes para escoger cola o la adicin de la funcionalidad de
cola nica agrupando varias cajas. No obstante mientras sea posible, compararemos nuestros resultados con aquellos
analticos para comprobar la fiabilidad de nuestro modelo. Concluiremos haciendo una sntesis de la informacin y
los resultados de inters obtenidos, y propondremos futuras implementaciones que creemos son de inters.

NDICE
1. Introduccin
2. Planteamiento inicial
2.1. Intuicin . . . . . . . . . . . . . . . . . . . . . . . .
2.1.1. Deduccin de la distribucin exponencial
2.1.2. Deduccin de la distribucin de Poisson .
2.2. Datos experimentales . . . . . . . . . . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

3
3
3
5
8

3. Modelo con una cola


10
3.1. Resolucin analtica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2. Validacin del modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4. Modelo con N colas
15
4.1. Resolucin analtica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.2. Validacin del modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5. Modelo completo
18
5.1. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6. Implementacin del modelo en EJS
6.1. Variables . . . . . . . . . . . . . . . . . . . . . . . .
6.2. Inicializacin . . . . . . . . . . . . . . . . . . . . . .
6.3. Evolucin . . . . . . . . . . . . . . . . . . . . . . . .
6.3.1. Generacin de clientes . . . . . . . . . . .
6.3.2. Control de las cajas y servicio de clientes
6.4. Visualizacin . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

19
19
21
21
21
22
23

7. Conclusiones

23

8. Trabajos futuros

24

9. Bibliografa

25

Modelado de un sistema de colas

pgina 1 de 25

1.

INTRODUCCIN

Quin no ha sentido alguna vez la sensacin de que la cola que ha escogido es la ms lenta? Todos nos hemos sentido vctimas de las llamadas Leyes de Murphy1 de las colas, aquellas que declaran que la rapidez de una cola no depende
de su longitud, sino de que uno est o no en ella. Por supuesto, tambin todos se han visto afectados por el fenmeno de
Monty Hall inverso de las colas, que establece que si uno se cambia de cola es muy probable que haya errado. Sin duda
hay muchos factores que no podemos controlar a la hora de escoger cola.
El objetivo de este trabajo es tratar de determinar en lo posible uno de los factores que s se pueden controlar: La
organizacin del sistema de colas. Cmo debe un establecimiento organizar las colas de modo que se optimice el tiempo
individual que cada cliente debe esperar para salir de la tienda, de media? Quiz con colas individuales, o con una cola
nica que redirija a los clientes a la primera cola que quede libre? O una combinacin de ambas? Estas son algunas de
las preguntas que trataremos de responder, mediante una combinacin de resultados tericos y simulaciones del proceso.
Dentro de las Matemticas esto no es ninguna novedad, de hecho, hay toda una
rama dedicada al estudio del tema, de la cual nosotros apenas acariciaremos la superficie para justificar nuestros modelos y simulaciones, conocida como Teora de Colas. A menudo se atribuye su origen a Agner Krarup Erlang (1878-1929), un matemtico dans que, trabajando para la empresa de telefona de Copenhague, public
un artculo en 1909 [4] en el que relacionaba el funcionamiento de la red telefnica
con modelos probabilsticos. En concreto, justificaba que las distribuciones exponencial y de Poisson describan apropiadamente el trfico telefnico, en cuestiones como
el nmero de llamadas esperadas por intervalo de tiempo, o el tiempo entre llamadas.
Cuestiones muy importantes en la poca teniendo en cuenta que las llamadas deban ser manualmente recibidas y dirigidas a su destinatario por operadores mediante
la insercin de clavijas en conmutadores, en las antiguas centralitas de telefona. Esta
transcripcin de la realidad a un modelo matemtico le permiti estudiar ms a fondo
el comportamiento de la red telefnica y de las colas en general, y durante varios aos
prosigui su investigacin, hasta el punto de que la Oficina Postal de Gran Bretaa decidi aceptar su modelo para realizar la planificacin y los clculos de las instalaciones
de redes telefnicas.

Figura 1: A. K. Erlang

No es difcil ver como esto no es sino teora de colas, donde los operadores son los servidores o las cajas, y las llamadas en espera estn en cola hasta que quede libre un servidor. El propio Agnes resolvi por completo dos modelos
sencillos, es decir, dio explcitamente las distribuciones que describen los modelos y calcul sus distintas propiedades,
como el tiempo medio de espera en cola, la cantidad media de clientes en cola... El primero se trata del modelo con una
nica cola, donde el tiempo entre la llegada de clientes sigue un modelo exponencial y el tiempo de servicio es fijo, que
Agnes resolvi en 1917. Tres aos despus resolvi el equivalente con un nmero arbitrario (fijo) de colas.
En este trabajo realizaremos un proceso escalonado de modelizacin, comenzando por modelos sencillos con resolucin analtica y culminando con otro ms complejo donde aadiremos factores de inters que no nos permitirn
resolverlo de forma analtica. Como suele ocurrir en la realidad, cunto ms til es un modelo menos probable es poder resolverlo analticamente. Es aqu donde la simulacin tomar un papel protagonista. Es inmediato enmarcar este
modelo dentro las siguientes clasificaciones:
Se trata de un modelo discreto, dado que si bien simularemos un proceso temporal esto es puramente por motivos
de visualizacin, realmente slo nos interesan del modelo los distintos estados que experimenta entre cambio y
cambio del sistema de colas, y con esto es suficiente para obtener la informacin de inters que luego estudiaremos
para sacar conclusiones. De hecho, podramos haberlo modelado simplemente saltando de cambio en cambio.
Es adems un modelo dinmico pues se trata de estudiar la evolucin del sistema de colas y su estado vara con el
tiempo, no podemos alcanzar el estado final directamente (salvo en los modelos ms sencillos) sino que debemos
simular la interaccin entre los distintos valores del modelo con el tiempo para poder obtener los valores finales
que estemos buscando. Nuestra aproximacin es particularmente dinmica dado que estamos simulando todo el
proceso con el tiempo, no slo los diferentes estados.
Finalmente es un claro ejemplo de modelo estocstico dado que los principales elementos que intervienen, como
ya ha quedado claro en los prrafos previos, siguen ciertos modelos probabilsticos que justificaremos adecuadamente en las secciones posteriores.
1

Visualizacin de las Leyes de Murphy y el fenmeno de Monty Hall de las colas en https://www.youtube.com/watch?v=IPxBKxU8GIQ

Modelado de un sistema de colas

pgina 2 de 25

2.

PLANTEAMIENTO

INICIAL

Antes de tratar de estudiar el proceso completo, vamos a comenzar analizando cmo se comportan (aproximadamente) ciertos elementos bsicos que tendrn que tomar parte necesariamente en el desarrollo de cualquier modelo de
un sistema de colas, independientemente del enfoque. Estos son, en concreto, la llegada de clientes y el servicio (la
salida) de clientes. Para ello vamos a recurrir a dos pilares que a menudo forman parte del comienzo de un proceso
de modelizacin: La componente experimental de recoleccin de datos y la componente de intuicin, intuicin sobre
cuales son los principios bsicos que rigen el fenmeno que estamos estudiando, o a menudo, una versin simplificada
y aproximada del mismo. En esta seccin cubrimos y resolvemos estas dos cuestiones.
En este modelo, ambas situaciones han sido modeladas mediante procesos estocsticos, dado que a priori no dependen de ninguna regla determinista, o al menos no a una que este a nuestro alcance. En particular, el tiempo de llegada
de clientes y el tiempo de servicio han sido modelados mediante distribuciones exponenciales, los cuales resultan en
una distribucin de Poisson para la cantidad de clientes esperando en la cola en un momento determinado. Podemos
justificar nuestra decisin analizando ambas componentes mencionadas arriba.

2.1.

INTUICIN

En lo que respecta a la intuicin, es natural imaginar que la probabilidad de que un cliente llegue a la tienda no
depende de cuando haya llegado el cliente anterior, lo cual si bien recuerda a la independencia de sucesos, ms adelante
veremos como no se debe interpretar de esa forma. De hecho, ms precisamente, en el campo de la probabilidad y la
estadstica se suele conocer a esta propiedad por memorylessness2 , es decir, la cualidad de que los acontecimientos anteriores no afecten a los futuros, dicho en trminos ms cotidianos. Desde luego que la llegada de clientes se comporte de
esa forma no es algo que se pueda demostrar, pero parece la asuncin ms sensata y nos permite comenzar a deducir.
2.1.1.

DEDUCCIN DE LA DISTRIBUCIN EXPONENCIAL

Vamos a traducir esta intuicin a lenguaje matemtico. Elaborndola un poco ms, esa independencia significa que
dado un cierto instante de tiempo, la probabilidad de que el siguiente cliente llegue en s segundos no depender del
tiempo t transcurrido desde que lleg el cliente anterior. Si llamamos T a la variable aleatoria que mide el tiempo
transcurrido entre cada llegada, esta condicin se traduce en
P(T > t + s|T > t) = P(T > s)

(1)

Que se leera "La probabilidad de que haya que esperar t+s segundos, sabiendo que llevamos t segundos esperando, es
la probabilidad de que haya que esperar s segundos". Es aqu donde queda patente la diferencia con independencia de
sucesos, que por contra se traducira en
P(T > t + s|T > t) = P(T > t + s)
Esto es, "La probabilidad de que haya que esperar t+s segundos, sabiendo que llevamos t segundos esperando, es la
probabilidad de que haya que esperar t+s segundos", es decir que siempre se mantiene la probabilidad del tiempo desde el
instante inicial hasta el final, en lugar del tiempo restante como es nuestro caso. Recordemos la definicin de probabilidad
condicionada
P(A | B) =

(T > t + s) (T > t)
P(A B)
= P(T > t + s|T > t) =
P(B)
P(T > t)

Es evidente que la interseccin de los sucesos T > t + s y T > t es simplemente el suceso T > t + s dado que s > 0
al ser una medida de tiempo, luego la probabilidad condicionada ser
P(T > t + s)
P(T > t)
Y nuestra condicin intuitiva (1) nos dice que eso es igual a P(T > s). Por tanto, tenemos que
P(T > t + s) = P(T > t)P(T > s)
Si lo vemos como una funcin del tiempo f (t), esa condicin nos est diciendo que f (t + s) = f (t) f (s), de naturaleza similar a la clsica ecuacin funcional de Cauchy3 , cuya nica solucin continua no nula en R son las funciones
exponenciales. Vamos a demostrar esta afirmacin siguiendo la misma filosofa que Cauchy, aunque nos centraremos
slo en los valores positivos por tratarse de medidas de tiempo. Tenemos
f (x + y) = f (x) f ( y) x, y R = f (0) = f (0 + 0) = f (0)2
2

Ms informacin en el magnfico recurso de Wolfram, http://mathworld.wolfram.com/Memoryless.html


Cours danalyse de lcole Royale Polytechnique, 1821, por Augustin Louis Cauchy, disponible online en formato digital en la biblioteca libre del
Archive: https://archive.org/details/coursdanalysedel00cauc
3

Modelado de un sistema de colas

pgina 3 de 25

Lo cual nos proporciona por una lado la solucin trivial


f (0) = 0 = f (x) = f (x + 0) = f (x) f (0) = 0 = f 0
Y por otro lado, si f (0) 6= 0 entonces cancelando debe ser f (0) = 1. Llamemos a := f (1), entonces se tiene f (2) =
f (1 + 1) = f (1)2 = a2 . Por induccin, ser
f (n) = f ((n 1) + 1) = f (n 1) f (1) = a n1 a = a n
Luego ya tenemos el valor de f para los naturales. Tambin se verifica para los enteros, aunque esto no nos interesa.
Observemos que por induccin, la ecuacin funcional se cumple para cualquier nmero finito de trminos, ya que
n
n1
n1
n1
n
X
X
X
Y
Y
f(
xi) = f (
xi + xn) = f (
x i ) f (x n ) =
f (x i ) f (x n ) =
f (x i )
i=1

i=1

i=1

i=1

i=1

Esto nos permite deducir el valor de f en los inversos de los naturales, pues
n

n

n
Y
X1
1
1
1
1
=
f
a = f (1) = f
=f
= f
= an
n
n
n
n
i=1
i=1
Usando esto y aplicando de nuevo la misma propiedad, tenemos tambin el valor de f en los racionales
m
Y
m
m
m
X1
Y
1
1 m
m
1
f
=f
=
f
=
an = an = a n
n
n
n
i=1
i=1
i=1
Finalmente para hallar el valor de la funcin en los reales, basta combinar dos ingredientes: La densidad de los
racionales en los reales, y la continuidad de la funcin solucin. Por la densidad, podremos aproximar cualquier real
mediante una sucesin de racionales, y luego podremos permutar el lmite con la funcin por la continuidad. Ms
precisamente, dado x R cualquiera, la densidad de Q en R implica que
z Q

n
{zn }nN
x

Usando la continuidad y la definicin de f sobre los racionales




f (x) = f lm zn = lm f (zn ) = lm azn = almn zn = a x
n

Como queramos ver. Por tanto, nuestra funcin es f (t) = P(T > t) = a t para un cierto a real, pero adems estamos
tratando con una probabilidad, lo cual nos da informacin adicional. Calculemos la funcin de distribucin F
F (t) = P(T t) = 1 P(T > t) = 1 a t
Derivando obtenemos la funcin de densidad, g(t) = a t log a. Para que el logaritmo est definido debe ser a
positivo. Por ser una funcin de densidad ha de ser positiva, luego el logaritmo ha de ser negativo, es decir, a < 1.
Concluimos que debe ser a (0, 1), as que se trata de una funcin exponencial decreciente. Esto tambin lo podramos
haber deducido del hecho de que la probabilidad es decreciente, ya que esperar t + s segundos implica esperar t segundos, luego es un subsuceso del mismo y por tanto su probabilidad es menor.
Adems, como a > 0 podremos escribir a = e c para cierto c que adems ser negativo dado que debe ser e c < 1. En
conclusin, podemos escribir
P(T > t) = et ,

>0

Que es la expresin clsica de una distribucin exponencial. Es interesante observar que se trata de una familia
uniparamtrica de distribuciones, pues , que podramos ver en nuestro caso como la afluencia de clientes, determina
por completo la distribucin. Recapitulando, partiendo de nuestra sencilla condicin intuitiva, hemos obtenido que necesariamente la funcin de probabilidad P(T > t) debe ser una distribucin exponencial de probabilidad.
Lo mismo se puede decir, en principio, para la distribucin que sigue el servicio de clientes, es decir, el tiempo
requerido para ser servido en caja, asumiendo que se mantiene un ritmo constante de servicio a clientes, ya que tambin
cumple la condicin intuitiva de no tener memoria respecto a los acontecimientos anteriores, dado que si nos estn
sirviendo, el tiempo que queda no depende de lo que llevemos esperando (sino ms bien de la cantidad de productos
que falte por escanear, un factor que no conocemos y que por tanto modelaremos en base a tiempos experimentales).
Usando S para la variable aleatoria que mide el tiempo requerido para servir a un cliente, escribimos
P(S > t) = et ,

Modelado de un sistema de colas

>0

pgina 4 de 25

(a) Funcin de densidad

(b) Funcin (cumulativa) de distribucin

Figura 2: Ejemplos de distribuciones exponenciales


Naturalmente, estamos interesados en que el parmetro sea mayor que , de modo que los clientes sean servidos
ms rpido de lo que llegan, o de lo contrario las colas creceran de forma indefinida. Ms tarde aproximaremos los
valores de estos parmetros mediante datos experimentales.
2.1.2.

DEDUCCIN DE LA DISTRIBUCIN DE POISSON

De cara a modelar el procedimiento en directo, con esto es suficiente dado que podremos establecer el ritmo
de generacin de nuevos clientes y el ritmo al que son servidos en cada caja, y esto determina por completo el estado de la cola en cada momento en nuestro modelo inicial (en el que no habr otras contingencias como cambios de cola).
No obstante, no es suficiente para realizar clculos dado que en particular no podemos estimar el tiempo que los
clientes esperan en la cola. Esto depender del nmero de clientes que haya en cola cuando llegue el nuevo cliente.
De ah la mencin que hicimos a la distribucin de Poisson: Si la distribucin exponencial describe la longitud de los
intervalos de tiempo entre ocurrencias de un cierto proceso, entonces la distribucin de Poisson describe el nmero de
ocurrencias por intervalo de tiempo. En nuestro caso, partiendo de que el tiempo entre clientes sigue una distribucin
exponencial, deducimos que la cantidad de clientes que han llegado en el instante t sigue una distribucin de Poisson,
igual que los que se han ido. Esto es suficiente para determinar la distribucin que sigue la cantidad neta de clientes en
cola en cada momento y, por tanto, para determinar la distribucin que sigue el tiempo de espera en cola.
De este modo, podremos obtener de forma analtica la distribucin del tiempo total (tiempo de cola + tiempo de
servicio) de cada cliente sin necesidad de simular toda la accin intermedia para ello, aunque igualmente lo haremos
para comprobar que los clculos y los resultados de la simulacin coinciden. Veamos que, en efecto, la distribucin que
mide la cantidad de clientes en cola es de Poisson.
Para esto, conviene ver el proceso como una cadena de posibles estados por la que nos movemos con el tiempo, donde
cada estado es la cantidad exacta de clientes en cola, y cada transicin entre estados est descrita por una distribucin
de probabilidad exponencial. Por tanto, cuando llega un cliente avanzamos al siguiente estado, y cuando sale un cliente,
retrocedemos. Imaginemos para empezar que slo hay una transicin, es decir, un estado inicial (con 0 clientes), y un
estado final (con 1 cliente).

P0

P1

Lgicamente, como los tiempos de llegada siguen una distribucin exponencial, para un cierto tiempo t, la probabilidad P1 (t) de que haya llegado el cliente, es decir de que se haya realizado la transicin, ser la integral de nuestra
funcin de densidad hasta el punto t
P1 (t) =

es ds = 1 et

Modelado de un sistema de colas

pgina 5 de 25

Y por tanto la probabilidad de que no se haya producido, P0 (t), ser et . Observemos que, derivando, se verifican
las relaciones
d P0
d P1
= P0
= P0 (t)
dt
dt
Es decir, estas son las ecuaciones diferenciales que describen una transicin entre un estado y otro. Vayamos al caso
general, nos preguntamos por la expresin de Pn (t), es decir, la probabilidad de que al cabo de t segundos, hayan llegado
exactamente n clientes.

P0

P1

P4

P3

P2

Escribiendo las ecuaciones diferenciales que gobiernan cada transicin


Transicin
P0 P1
P1 P2
P2 P3
P3 P4
..
.

d P0
dt

d P1
dt

P0
P1

P0

d P2
dt

P1
P2

d P3
dt

d P4
dt

P2
P3

P3

...

..

Obtenemos un sistema de ecuaciones diferenciales ordinarias en Pn acopladas


d P0
dt
d P1
dt
d P2
dt
d P3
dt
d P4
dt

P0

(2)

=P0 P1

(3)

=P1 P2

(4)

=P2 P3

(5)

=P3 P4

(6)

Como condiciones iniciales imponemos las ms naturales


P0 (0) = 1

Pn (0) = 0,

n N

Es decir, en el instante inicial no hay ningn cliente. A partir de estas condiciones es inmediato resolver, escalonadamente, nuestro sistema de ecuaciones. Integrando, la primera sigue valiendo lo mismo que en el caso de una transicin
P0 (t) = et
Sustituyendo en (3) obtenemos una ecuacin lineal de primer orden en P1 (t)
d P1
= P1 + P0 = P1 + et
dt
La cual resolvemos mediante el procedimiento usual de variacin de parmetro. Comenzamos resolviendo la parte
homognea, que es esencialmente la ecuacin (2)
d P1
= P1 = P1 (t) = K et
dt
Y ahora suponemos que la constante es una funcin de t, P1 (t) = K(t)et . Entonces, comparando las derivadas
d P1
=
Ket + K 0 et
dt
d P1
= P1 + et = Ket + et
dt
Igualando podemos obtener el valor de K
K 0 et = et = K 0 = = K(t) = t + C,
Modelado de un sistema de colas

C R
pgina 6 de 25

(a) Funcin de densidad

(b) Funcin (cumulativa) de distribucin

Figura 3: Ejemplos de distribuciones de Poisson

Obtenemos la solucin de (3) siguiente


P1 (t) = K(t)et = (t + C)et = C et + t et
Haciendo uso de la condicin inicial, P1 (0) = 0, precisamos el valor de C
P1 (0) = C = 0 = P1 (0) = t et
Observemos que se trata de una distribucin de Poisson de parmetro t. Vamos a probar que esto es cierto para
todo n N por induccin, es decir, supongamos que se verifica
Pn1 (t) =

(t)n1 t
e
(n 1)!

Recordemos la ecuacin diferencial correspondiente


d Pn
(t)n1 t
= Pn + Pn1 = Pn +
e
dt
(n 1)!
De nuevo la solucin homognea es Ket , y aplicando variacin del parmetro
Pn (t) =K(t)et
d Pn
=
Ket + K 0 et
dt
d Pn
n t n1 t
n t n1 t
= Pn +
e
= Ket +
e
dt
(n 1)!
(n 1)!
Igualando
0 t

Ke

n t n1 t
n
=
e
= K =
(n 1)!
(n 1)!

t n1 d t =

n
(n 1)!

tn
(t)n
+ C =
+ C,
n
n!

C R

Luego la solucin general es


Pn (t) = K(t)et =

(t)n t
e
+ C et
n!

Y usando la condicin inicial


(t)n t
e
n!
Que es una distribucin de Poisson de parmetro t, como queramos probar. Ntese que la distribucin de Poisson es
discreta, y tenemos una para cada valor de t, que nos mide la probabilidad de que hayan llegado n clientes en el instante
t, esto es lo que hemos denotado por Pn (t).
Pn (0) = C = 0 = Pn (t) =

Modelado de un sistema de colas

pgina 7 de 25

2.2.

DATOS

EXPERIMENTALES

En esta seccin vamos a justificar mediante el uso de datos experimentales que la distribucin que describe apropiadamente la longitud de los intervalos de tiempo de llegada (y salida) entre clientes es la distribucin exponencial, de
este modo junto con la justificacin intuitiva tendremos la certeza de que nuestra hiptesis es bastante slida. Adems,
los datos experimentales nos permitirn deducir los valores de los parmetros y que determinan nuestras distribuciones de probabilidad, para poder implementarlos y obtener un modelo ms o menos realista. Desde luego, el valor de
estos parmetros depende de factores como la afluencia de clientes o la rapidez de los cajeros en el momento concreto
en que los datos fueron tomados.
Los datos de intervalos de tiempo entre llegada de clientes se componen de 386 muestras tomadas por el autor en
Leroy Merlin durante una tarde. Por otro lado, los datos de tiempo de servicio en caja consisten en 96 muestras tomadas
por el compaero Adil Ziani durante el mismo experimento. Comencemos con los tiempos de llegada entre cliente y
cliente. Para determinar si los datos se ajustan a una distribucin exponencial vamos a aplicar el test 2 (chi cuadrado),
que es el test de bondad de ajuste ms comn. Este test se basa esencialmente en medir el error relativo entre los datos
observados y los datos esperados supuesto que siguen una cierta distribucin, exponencial en nuestro caso. No justificaremos en detalle el funcionamiento del test, simplemente lo aplicaremos para comprobar la fiabilidad de nuestro modelo.
Comenzamos estimando el parmetro , que en el caso de la distribucin exponencial se trata de la inversa de la
1
media de los valores. Como vemos, este valor es aproximadamente 30

Figura 4: ltimos clientes del experimento, en la hoja Excel de datos


Por tanto nuestra hipottica distribucin exponencial tiene funcin de densidad
1 t
e 30
30
Esto nos permite hallar frecuencias de tiempo esperadas, usando la definicin frecuentista de probabilidad
f (t) =

Casos favorables
= Casos esperados = Probabilidad Casos totales
Casos totales
Donde en nuestro caso, los casos totales son 386 y la probabilidad la podemos hallar integrando la funcin de
densidad. Por ejemplo, dividiendo en intervalos de longitud 10 segundos, podemos hallar la probabilidad de que el
tiempo entre un cliente y el siguiente est entre 0 y 10 segundos, y consiguientemente la frecuencia esperada de tiempos
en este rango haciendo
Probabilidad =

386 P(0 < t < 10) = 386

10

1
e 30
d x = 386 1 p
109,4
3
30
e

Procediendo de esta forma, calculamos las frecuencias esperadas Fe en cada intervalo de tiempo. Finalmente, el test
requiere que calculemos las distancias entre stas y las frecuencias observadas Fo dividido por las frecuencias esperadas,
es decir, una especie de error relativo. Por tanto, aplicamos a cada intervalo
(Fo Fe )2
Fe
A continuacin se muestra una tabla con los datos recogidos y ordenados en intervalos de 10 segundos de duracin

Modelado de un sistema de colas

pgina 8 de 25

Intervalo (segundos)
0-9
10 - 19
20 - 29
30 - 39
40 - 49
50 - 59
60 - 69
70 - 79
80 - 89
90 - 99
100 - 109
110 - 119
120 - 129
130 - 139
140 - 149
150 - 159
160 - 169
170 - 179
180 - 189
190 - 199
200 - 209

Frecuencias observadas
120
70
50
33
36
17
19
9
10
7
3
6
2
1
1
0
0
0
0
1
1

Frecuencias esperadas
109,4
78,4
56,1
40,2
28,9
20,6
14,8
10,6
7,6
5,5
3,9
2,8
2
1,4
1
0,7
0,5
0,4
0,3
0,2
0,1

Error
1,02
0,90
0,66
1,28
1,74
0,62
1,19
0,24
0,75
0,40
0,20
3,65
0
0,11
0
0,7
0,5
0,4
0,3
3,2
8,1

El test se basa entonces en sumar los errores, y para poder determinar si el error es grande o pequeo se compara
el resultado con un valor crtico que se calcula en base al nivel de significacin o confianza que busquemos. Nosotros
usaremos una significacin del 5 %, que es lo generalmente aceptado como franja entre resultados significativos o no,
es decir, que el modelo aproxima apropiadamente los datos o no. En caso de que el error sea menor que el valor crtico,
se acepta la hiptesis.
En nuestro caso, la suma de los errores es 26,03. El valor crtico depende de dos factores: El nivel de significacin,
0,05 en nuestro caso, y el nmero de grados de libertad, que es el nmero de sumandos (21), menos el nmero de
parmetros estimados (1, nuestro ) menos 1. Es decir, 19. Ahora basta consultar una tabla 2 para determinar el valor
crtico, que resulta ser 30,14. Luego como nuestro error es inferior, aceptamos nuestra hiptesis de que los datos siguen
1
.
una distribucin exponencial de parmetro = 30
Puede parecer ajustado pero de hecho, los datos son bastante mejores. No hemos tenido en cuenta que debido a la
naturaleza de este test, los valores con frecuencias esperadas muy bajas distorsionan bastante el resultado, dado que
pueden aparecer sumandos de error notablemente grandes correspondientes nicamente a unas pocas observaciones,
como es el caso de los ltimos dos sumandos que a pesar de corresponder nicamente a dos observaciones aisladas,
proporcionan errores de 3,2 y 8,1 respectivamente. Esto repercute negativamente en el test. En general, como regla
de oro, se suele emplear un umbral de 5 como frecuencia esperada mnima, y si los datos son inferiores, se combinan
sus correspondientes categoras (algo conocido como pooling). En este caso, y siguiendo esa regla, se combinaran las
ltimas 9 categoras por un lado (hasta que sus frecuencias sumen ms de 5), y las siguientes 2 categoras por otro. La
nueva tabla resultante sera
Intervalo (segundos)
0-9
10 - 19
20 - 29
30 - 39
40 - 49
50 - 59
60 - 69
70 - 79
80 - 89
90 - 99
100 - 119
120 - 209

Frecuencias observadas
120
70
50
33
36
17
19
9
10
7
9
6

Frecuencias esperadas
109,4
78,4
56,1
40,2
28,9
20,6
14,8
10,6
7,6
5,5
6,7
6,6

Error
1,02
0,9
0,66
1,28
1,74
0,62
1,19
0,24
0,75
0,40
0,78
0,05

La suma de errores es 9,70 y el valor crtico es 21,03, con lo cual se sobrepasa con holgura la frontera, es decir, los
1
.
datos se aproximan con mucha confianza a un modelo exponencial con parmetro = 30

Modelado de un sistema de colas

pgina 9 de 25

Realicemos rpidamente el mismo procedimiento para los tiempos de servicio en caja. En este caso la media es 1
1
minuto 45 segundos, luego el parmetro es = 105
. Agrupando en intervalos de 1 minuto los 96 datos, dado que los
servicios son ms largos, obtenemos un error de 9,6, mientras que el valor crtico con una significacin de 0,05 es 7,8,
es decir que no podemos aceptar la hiptesis en este caso si somos tan severos. Tomando una significacin de 0,02, no
obstante, se tiene un valor crtico de 9,83. Lo ms probable es que esta falta de precisin se deba a la reducida muestra
en comparacin con los datos anteriores, as como a una mayor dispersin de los datos, es decir, los tiempos de servicio
suelen variar ms que los tiempos de llegada de clientes, porque dependen mucho de la compra de cada cliente.
Vamos a ajustar los parmetros obtenidos para poder implementarlos de forma realista, dado que los datos se tomaron monitorizando distinto nmero de cajas y por tanto no concuerdan, de hecho, es ms del triple que , algo que
no tiene sentido pues entonces las colas creceran de forma indefinida, y claramente no fue el caso.
La media de tiempos entre clientes de 30 segundos se obtuvo monitorizando 10 cajas de un total de 17, asumiendo
10
obteniendo aproximadamente 18, ser nuestro
que la entrada de clientes es similar en el resto, lo multiplicamos por 17
parmetro para generar clientes. La media de tiempos de servicio de 105 segundos se obtuvo monitorizando una caja,
luego la dividimos por 17 y obtenemos aproximadamente 6 segundos, ser nuestro parmetro para generar tiempos de
servicio. Por tanto usaremos
1
1
=
18
6
Es decir, los clientes se sirven aproximadamente el triple de rpido que llegan a la tienda. Un ratio muy bueno que
probablemente se deba a la poca afluencia de gente el da del experimento.
=

3.

MODELO

CON UNA COLA

Ahora que ya conocemos, por la seccin 2, la distribucin que siguen tanto la llegada de clientes al local como el
tiempo de servicio en caja, vamos a pasar a modelar el proceso completo. Es decir, vamos a buscar expresiones explcitas de las propiedades que ms nos interesen del sistema de colas. Para ello conviene empezar modelando un sistema
sencillo e ir aadiendo complejidad conforme vayamos consolidando bien nuestros pasos. En nuestro caso, haremos dos
modelos iniciales que podremos resolver analticamente, y veremos si coinciden o no con los resultados devueltos por
la implementacin en EJS. En un tercer modelo, aadiremos el resto de factores de inters que ya no podremos resolver
analticamente, de manera que la simulacin tomar un papel protagonista.

3.1.

RESOLUCIN

ANALTICA

Este primer modelo contar nicamente con una cola, los clientes llegaran a un ritmo exponencial y sern servidos
tambin a un ritmo exponencial, tal y como hemos justificado en la seccin previa. Usaremos como parmetro de
generacin de clientes y como parmetro de servicio a clientes. Siguiendo la filosofa de la seccin anterior, podemos establecer el siguiente diagrama de flujo entre los distintos estados de la cola, donde cada estado representa la
cantidad exacta de clientes en la cola y la transicin entre uno y otro se describe mediante una distribucin exponencial. Observemos que ahora tambin se pueden realizar transiciones a estados inferiores porque los clientes van siendo
servidos.

P0

P1

P4

P3

P2

Esto no representa ningn aumento de dificultad conceptual con respecto al caso anterior, dado que ya sabemos
como modelar cada transicin mediante un par de ecuaciones diferenciales que la describen. Ahora tendramos que
hacer lo mismo con las transiciones haca atrs, por ejemplo, la transicin de P0 a P1 viene descrita por
d P0
= P0
dt
Anlogamente, la transicin de P1 a P0 viene descrita por

d P1
= P0 (t)
dt

d P1
d P0
= P1
= P1 (t)
dt
dt
Aplicando lo mismo a cada transicin tenemos la siguiente relacin de ecuaciones diferenciales

Modelado de un sistema de colas

pgina 10 de 25

Transicin
P0 P1
P1 P2
P2 P3
P3 P4
..
.

d P0
dt

P0 + P1

d P1
dt

d P3
dt

d P4
dt

P2 P3
P3 + P4

P3 P4

d P2
dt

P0 P1
P1 + P2

P1 P2
P2 + P3

...

..

De nuevo obtenemos el siguiente sistema de ecuaciones diferenciales en Pn acopladas


d P0
dt
d P1
dt
d P2
dt
d P3
dt
d P4
dt

= P0

+ P1

(7)

=(P0 P1 ) + (P2 P1 )

(8)

=(P1 P2 ) + (P3 P2 )

(9)

=(P2 P3 ) + (P4 P3 )

(10)

=(P3 P4 ) + (P5 P4 )

(11)

Ahora es ms complicado hallar las soluciones para un instante de tiempo t cualquiera, de modo que la calcularemos
slo para el dato que, a largo plazo, nos interesa: Una vez que se ha alcanzado el equilibrio. Es decir, supondremos que
las derivadas se anulan y veremos qu solucin obtenemos. Veremos que esto no siempre ocurre, sino slo para ciertos
valores de nuestros parmetros. Observemos que esto tambin podramos haberlo hecho en la seccin anterior, pero la
nica solucin en tal caso, dado que slo habamos implementado la llegada de clientes, era la solucin idnticamente
nula, como es natural (en cualquier otro caso la cola crece de forma indefinida).
De la primera ecuacin, haciendo

d P0
dt

= 0, se deduce que P1 = P0 . Vamos a probar por induccin que


n

Pn =
P0

Supongmoslo cierto y consideremos la ecuacin diferencial correspondiente


 n1
n 

n
d Pn

= (Pn1 Pn ) + (Pn+1 Pn ) =
P0
P0 + Pn+1
P0 = 0
dt

De donde se deduce lo que buscamos


Pn+1

n
n+1
n
n+1

P0 =
P0
P0 = Pn+1 =
P0

Adems podemos deducir el valor de P0 del hecho de que la suma de todas las probabilidades es 1, dado que en
cada momento la cola debe estar necesariamente en alguno de esos estados y no hay ms. Por tanto
P0

n
X

n=0

P0
1

= 1 = P0 = 1

Y por tanto la probabilidad de que haya n clientes en cola es

Pn = 1

Esto nos permite ahora calcular la longitud esperada de la cola una vez alcanzado el equilibrio, esto es, la longitud
media de la cola. En trminos probabilsticos esto no es sino la esperanza matemtica de la variable aleatoria que mide
la cantidad de clientes en cola, es decir, el estado en el que nos encontramos, volviendo a nuestra cadena de estados
inicial. Aplicando la definicin de la esperanza matemtica de una variable aleatoria discreta tenemos
E=

X
n=0

Si denotamos =

n Pn =

n 1

n=0

y suponemos que < , es decir, < 1, tenemos

Modelado de un sistema de colas

pgina 11 de 25

E = (1 )

n=0

n1

d
d X n
1
d n
= (1 )
= (1 )
=
= (1 )
d
d n=0
d 1
1
n=0

El tener que suponer < para que la serie converja nos indica, como es natural, que en caso contrario la esperanza
no existe debido a que la cola crece de forma indefinida, como ya anticipbamos antes de comenzar, y por tanto nunca
alcanza un estado de equilibrio salvo en el trivial caso en que = 0, que proporciona la solucin idnticamente nula
(no llegan clientes).
Vamos a emplear esto para dar respuesta a la pregunta que ms nos interesa: Cunto tiempo pasa de media un
cliente en el sistema, incluyendo el tiempo de cola y el tiempo de servicio? Para esto vamos a calcular explcitamente la
distribucin que sigue el tiempo de espera, y luego le calcularemos la esperanza. Observemos que el tiempo de espera
depende esencialmente de la cantidad de clientes que haya en cola.
Traducindolo matemticamente, si denotamos esta cantidad por n, tenemos que esperar a que se produzcan n
eventos cuya longitud sigue una distribucin exponencial de parmetro . Podramos pensar que, realmente, debemos
esperar a que termine el cliente que est siendo actualmente servido, y luego los restantes n 1 clientes, pero gracias a
la propiedad de ser memoryless (1) que tiene la distribucin exponencial, como vimos en la seccin 2, el tiempo restante
del cliente que est siendo servido no depende de lo que lleve siendo servido, y por tanto sigue la misma distribucin
que los otros n 1 clientes, una exponencial de parmetro .
En resumen, tenemos una distribucin que es suma de n distribuciones exponenciales de parmetro , y esta distribucin tiene nombre propio, se trata de la distribucin de Erlang, quien la introdujo en sus trabajos cuando estudiaba
el funcionamiento de la red telefnica de Copenhague. Observemos que se trata de una distribucin biparamtrica, a
diferencia de las dos que hemos usado hasta ahora. As pues, modelamos este tiempo de espera total mediante una
distribucin de Erlang que denotaremos por E(n, ). Observemos que si al llegar el nuevo cliente hay n clientes en cola,
la distribucin de su tiempo de cola ser E(n, ), mientras que su tiempo total ser E(n + 1, ) dado que tambin debe
ser servido. Nosotros calcularemos este segundo tiempo que es el que nos interesa.

(a) Funcin de densidad

(b) Funcin (cumulativa) de distribucin

Figura 5: Ejemplos de distribuciones de Erlang para distintos valores de n y


La funcin de densidad de la distribucin de Erlang es
n x n1 x
e
x, 0
(n 1)!
En efecto, una manera de comprobarlo es calcular la funcin generatriz de momentos correspondiente a esa distribucin, y por otro lado calcular la funcin generatriz de momentos de una distribucin exponencial. Como la funcin
generatriz de una suma de distribuciones es el producto de las funciones generatrices de cada distribucin, y en este caso
son todas las n distribuciones iguales, debera ocurrir que la funcin generatriz de Erlang fuese la de una exponencial
elevado a n, debido a que existe una biyeccin entre las distribuciones de probabilidad y sus funciones generatrices, y
por tanto una determina a la otra.
f n, (x) =

Esto no lo probaremos dado que se desva demasiado del objetivo del trabajo, sin embargo, no escapa a los conocimientos que tenemos ya que el autor ha tenido xito al probarlo. En cualquier caso, nuestra funcin de densidad buscada
Modelado de un sistema de colas

pgina 12 de 25

ser la suma en n de las funciones de densidad correspondientes por la probabilidad de que la cola se encuentre en el
estado n, es decir, de que haya n clientes en cola (esto se debe al teorema de la probabilidad total). Por tanto la densidad
de la distribucin del tiempo de espera es

f (x) =

Pn f n, (x) =

n=0

X
X
(x)n
n+1 x n x
e
= (1 )ex
= (1 )exx = (1 )e(1)x
(1 ) n
n!
n!
n=0
n=0

Observemos que se trata de una distribucin exponencial con parmetro (1 ) = 1 = . Como la


esperanza de una distribucin exponencial es la inversa del parmetro, tenemos inmediatamente la respuesta a nuestra
pregunta. El tiempo medio de espera total del cliente, contando tanto el tiempo de cola como el tiempo de servicio, ser
1

3.2.

VALIDACIN

DEL MODELO

En esta seccin vamos a comprobar si los resultados que devuelve nuestro modelo en EJS coinciden con los calculados
en la seccin anterior. En el modelo, la cantidad de cajas, as como cuntas de ellas estn asignadas a una cola nica, son
variables que se pueden ajustar y el aspecto grfico de la simulacin se reajusta para conformar la nueva configuracin.
En este caso, ponemos una nica caja. Recordemos que los parmetros que habamos deducido para un modelo realista,
si bien esto no es de mayor importancia, eran
1
1
=
18
6
Si los implementamos en la simulacin, y ejecutamos el programa hasta rellenar 10000 clientes, obtenemos el siguiente resultado que paso a explicar
=

Figura 6: Ejecucin de la simulacin con =

Modelado de un sistema de colas

1
18

y=

1
6

pgina 13 de 25

La esquina superior izquierda corresponde a una sencilla visualizacin grfica del proceso, con una caja y una cola de
clientes que crece y decrece debajo. Despus podemos ver tres histogramas con sus respectivas grficas sobreimpuestas.
Las grficas corresponden a las distribuciones que deben seguir los histogramas a la larga.
El grfico azul corresponde a la frecuencia con la que aparecen los distintos intervalos de llegada entre cliente y clien1
, se
te, que como es lgico dado que lo estamos modelando mediante una distribucin exponencial de parmetro = 18
asemeja mucho a ella. Algo anlogo ocurre con el grfico rojo que se corresponde con los tiempos de servicio en caja, y
que de nuevo es muy similar a la respectiva grfica de una densidad exponencial de parmetro = 16 .
Lo verdaderamente interesante llega con el grfico verde, que guarda los tiempos totales que cada cliente pasa en el
sistema, es decir, la suma de sus tiempos de cola y servicio. La grfica sobreimpuesta corresponde a la densidad de una
distribucin exponencial de parmetro
1
1
1

=
6 18
9
Y como podemos ver, se ajusta a la perfeccin a los datos del histograma, luego nuestras conclusiones de la seccin
anterior parecen verse bastante respaldadas. Adems, la media esperada que sera 9 es muy cercana a la media que
obtenemos con la simulacin, de 8,54. Podemos variar algo los parmetros si queremos experimentar un poco, por
ejemplo:
=

Figura 7: Ejecucin de la simulacin con =

1
24

y=

1
20

De nuevo vemos que la distribucin que se obtiene se ajusta muy bien a la grfica de la hipottica distribucin.
Observemos que la media esperada con estos parmetros sera de
1
=

1
1
20

1
24

= 72

Muy cercana a la obtenida en la simulacin. Cabe mencionar que esta es una ejecucin bastante buena, pues conforme aumentan los parmetros los datos salen ms dispersos y tardan ms en asemejarse a la distribucin que siguen.
Modelado de un sistema de colas

pgina 14 de 25

Como ejemplo, si bien con estos parmetros la mayora de las medias obtenidas no variaban en ms de 5 unidades, en
una ocasin se obtuvo una media de 65 y en otra de 80. Para solventar esto se puede simplemente aumentar el nmero
de clientes, aunque esto ralentiza notablemente la simulacin debido al tamao de los arrays que se manejan.
Como nota tcnica, decir que la grfica de la exponencial se fuerza a cortar al eje Y a la altura de la primera barra
del histograma, esto no cambia su forma sino que simplemente se asegura de que la escala es correcta, de modo que la
visualizacin cumpla su objetivo. Esto se hace de forma dinmica en cada fotograma, de manera que viendo la simulacin se puede observar como la grfica va aproximndose con mayor precisin a los datos del histograma conforme
pasa el tiempo.

4.

MODELO

CON

COLAS

Este modelo consiste en un sistema con n colas (un nmero arbitrario pero fijo), y de nuevo tanto los tiempos de
llegada de clientes como los de servicio en caja siguen una distribucin exponencial de parmetros y respectivamente.
Este modelo tambin podramos resolverlo analticamente, no obstante ello no aportara ideas innovadoras pero s una
cantidad ingente de clculos, de modo que slo describiremos el procedimiento general y las diferencias con el modelo
anterior, y resaltaremos el resultado final.

4.1.

RESOLUCIN

ANALTICA

De nuevo vamos a realizar un diagrama de flujo entre estados, donde los estados representan la cantidad exacta de
clientes en el sistema en un instante determinado.

P0

P1

P4

P3

P2
2

Observemos que ahora la nica diferencia es que la transicin entre un estado y otro no es igual. Si bien las transiciones positivas siguen descritas mediante una exponencial de parmetro (la llegada de un cliente), cada vez es ms
probable realizar una transicin hacia atrs porque hay ms cajas o servidores activos, en concreto, tras k transiciones
hay k cajas con parmetro activas siempre y cuando k N . Una vez estn todas las cajas activas la probabilidad ya
no cambia, y por tanto todas las transiciones siguen una exponencial de parmetro N . Es decir

PN 2

PN 1

PN +1

PN
N

(N 1)

PN +2

Por tanto tenemos dos situaciones fundamentalmente distintas a estudiar. Es importante observar que estamos asumiendo que, siempre que haya cajas libres, los clientes irn a ellas, pues de lo contrario las transiciones no seran necesariamente as. Pero es sin duda lo ms razonable. Esto condicionar como debemos modelar el proceso ms adelante.
Cada transicin se describe de forma idntica a como hicimos en la seccin anterior, con la salvedad de que en este
caso hay que ir cambiando el parmetro de las transiciones negativas (hacia atrs) por mltiplos de . Obtendramos la
siguiente tabla
Transicin
P0 P1
P1 P2
P2 P3
P3 P4
..
.
Transicin
PN 2 PN 1
PN 1 PN
PN PN +1
PN +1 PN +2
..
.

d P0
dt

P0 + P1

P0 P1
P1 + 2P2

d P2
dt

P1 2P2
P2 + 3P3

d P3
dt

d P4
dt

P2 3P3
P3 + 4P4

P3 4P4

...

..
d PN 2
dt

PN 2 + (N 1)PN 1

Modelado de un sistema de colas

d P1
dt

d PN 1
dt

PN 2 (N 1)PN 1
PN 1 + N PN

d PN
dt

PN 1 N PN
PN + (N + 1)PN +1

.
d PN +1
dt

PN (N + 1)PN +1
PN +1 + (N + 2)PN +2

pgina 15 de 25

...

..

De nuevo obtenemos el siguiente sistema de ecuaciones diferenciales en Pn acopladas


d P0
dt
d P1
dt
d P2
dt
d P3
dt
d P4
dt

= P0

+ P1

(12)

=(P0 P1 ) + (2P2 P1 )

(13)

=(P1 P2 ) + (3P3 2P2 )

(14)

=(P2 P3 ) + (4P4 3P3 )

(15)

=(P3 P4 ) + (5P5 4P4 )

(16)

d PN 2
dt
d PN 1
dt
d PN
dt
d PN +1
dt

=(PN 3 PN 2 ) + ((N 1)PN 1 (N 2)PN 2 )

(17)

=(PN 2 PN 1 ) + (N PN (N 1)PN 1 )

(18)

=(PN 1 PN )

+ (N PN +1 N PN )

(19)

=(PN PN +1 )

+ (N PN +2 N PN +1 )

(20)

Y de nuevo, nos centramos como antes en hallar la solucin una vez alcanzado el equilibrio, es decir una vez la
derivadas se anulen. Para que esto ocurra debemos asumir cierta condicin sobre los parmetros, en particular, que
< N , de lo contrario se generan ms clientes de los que se sirven y la cola crece indefinidamente (esta condicin se
hace patente en los clculos posteriores). A partir de aqu se procede de forma similar a la seccin anterior, de modo
que omitir los clculos.
Igualando la primera condicin a 0 obtenemos P1 = P0 = P0 , siguiendo la notacin de antes, y para el caso
general n < N , si consideramos la ecuacin correspondiente tras igualar a 0, y lo asumimos cierto para todos los ndices
menores que n
[nPn (n 1)Pn1 ] = [Pn1 Pn2 ]
Es inmediato probar por induccin que
n
P0
n!
Por otro lado, si n N , entonces usando la ecuacin correspondiente es anlogo comprobar que se verifica
Pn =

Pn =

P0
N nN N !
Para calcular P0 basta usar de nuevo el hecho de que la suma de las probabilidades es 1, y despejar P0 de la serie
resultante. En este caso, el clculo de la distribucin que sigue el tiempo de espera es harto complicado y su inclusin
no tiene inters alguno para los propsitos del trabajo. Por mera curiosidad, la funcin de densidad resultante es la
siguiente

n
N 1
1

(n1 )x
X n
P
1

(n

)e
0

+
f (x) = e
1+
con P0 =

n! (N )(N 1)!
n!(1 n
n 1
)
n=0
Lo cual proporciona la siguiente esperanza para el tiempo de espera del cliente (cola + servicio)
E(x) =

1 C(N , )
+
N

(21)

Donde C es la funcin de Erlang, definida como

C(N ,

)= P
N 1

N
N!

n=0 n!

Modelado de un sistema de colas


+

1 N
N
N!

1 N

=

1+ 1

1
 N ! PN 1
N

n
n=0 n!

pgina 16 de 25

Desde luego todo esto est puesto meramente a ttulo informativo, en la siguiente seccin cuando comprobemos el
funcionamiento del modelo simplemente calcularemos el valor de la esperanza explcitamente para un par de valores
de parmetros y con esto validaremos el modelo, sin darle mayor relevancia a estos resultados.
Es interesante antes de terminar observar que si hacemos N = 1 en la frmula anterior obtenemos simplemente ,
y sustituyendo en (21) obtenemos
E(x) =

Que coincide con el resultado obtenido para el modelo de una cola.

4.2.

VALIDACIN

DEL MODELO

Para validar el modelo hemos implementado en EJS el clculo de la media esperada mediante las frmulas de la
seccin anterior, de manera que sea inmediato comprobar si la distribucin se ajusta o no. Como la distribucin es ms
complicada slo comprobaremos que la media obtenida se aproxima a la media esperada mediante la frmula (21), sin
1
1
representar tambin la grfica de la distribucin. Veamos un ejemplo con 12 cajas y parmetros = 10
y = 100
tras
casi terminar los 10000 clientes

Figura 8: Ejecucin de la simulacin con =

1
10 ,

1
100

y N = 12

Hay que mencionar que, como se desprende de la deduccin del modelo, es necesario asumir que siempre que haya
alguna cola libre el cliente ir a ella. Una vez que todas las colas estn ocupadas la asignacin pasa a ser aleatoria. En
el siguiente y ltimo modelo, que ya no resolveremos analticamente por razones evidentes, implementaremos todos
estos detalles que casi se dan por hechos, como por ejemplo que la asignacin no sea verdaderamente aleatoria sino que
dependa de factores como la longitud de las colas.
1
1
A continuacin un par de ejemplos algo ms extremos, tomando 24 cajas y con parmetros = 10
y = 230
. En la
primera captura vemos una ejecucin muy buena, con un resultado que se aproxima mucho a la media esperada, pero

Modelado de un sistema de colas

pgina 17 de 25

con nmeros tan altos no es difcil obtener una alta variabilidad de los resultados con tan slo 10000 clientes, a esas
alturas la media an flucta mucho, como muestra la segunda captura

(a) Ejecucin buena

(b) Ejecucin mala

Figura 9: Dos ejecuciones con N = 24, =

5.

MODELO

1
10

y=

1
230

COMPLETO

En este modelo hemos introducido una serie de variables de inters que nos hacen apartarnos por completo del
terreno resoluble de forma analtica. En primer lugar, hemos introducido el concepto de la cola nica, una cola que
agrupa varios cajeros y que asigna la caja a los clientes conforme se van liberando. En segundo lugar, introducimos la
capacidad de decisin de los clientes, en el sentido de que los clientes no suelen ir a cajas aleatorias sino a aquella con
la cola ms corta. Veremos si esto influye realmente en la media del tiempo final en sistema o no.
Los detalles de la implementacin de estas cualidades, as como de las del resto del modelo, se vern en la prxima
seccin, en esta nos centraremos en presentar algunos ejemplos que podemos obtener y analizar los resultados obtenidos.
Antes de comenzar, un comentario importante: Este modelo se ha realizado en un fichero distinto a partir del anterior, dado que era ms sencillo que implementar ambas funcionalidades en la misma simulacin. De modo que para
acceder a la simulacin con estas capacidades se debe acceder a la simulacin tildada de ColaUnica, mientras que la
otra es capaz de ejecutar tambin simulaciones con N cajas pero sin cola nica y con asignacin aleatoria.

5.1.

RESULTADOS

Dado que este modelo no lo resolveremos analticamente, pasamos directamente a ver los resultados. Aqu podemos
ver el modelo en accin en una configuracin de 10 cajas, 6 de las cuales estn asignadas a la cola nica, y con unos
1
1
parmetros de = 10
y = 90
(omitiendo las grficas cuyo contenido no presenta nada innovador).

Figura 10: Ejecucin de la simulacin con =

1
10 ,

1
90 ,

N = 10 y 6 cajas en la cola nica.

A continuacin vamos a ejecutar la simulacin varias veces en distintos estados para tratar de determinar nuestro
objetivo inicial, la distribucin ptima del sistema de cajas. Para ello hemos decidido fijar los parmetros de generacin
de clientes y el nmero de cajas en
=
Modelado de un sistema de colas

1
10

1
50

N = 10
pgina 18 de 25

Y hemos variado el nmero de cajas asignadas a la cola nica, haciendo varias ejecuciones en cada uno y tomando
el valor ms representativo. Los resultados, una vez terminada la simulacin de los 10000 clientes (de ah que las colas
estn vacas) son los siguientes

(a) Sin cola nica

(b) 2 cajas en cola nica

(a) 4 cajas en cola nica

(b) 6 cajas en cola nica

(a) 8 cajas en cola nica

(b) 10 cajas en cola nica

Los resultados son sin duda muy interesantes. Con los datos escogidos no haba mucha variabilidad entre ejecuciones, con una o quiz dos unidades entre el menor y el mayor resultado. Deducimos que, sin tener ningn factor ms
complejo en cuenta, es aproximadamente equivalente que todas las colas sean o bien individuales o bien asignadas a la
cola nica. Dicho de otro modo, los extremos son las distribuciones preferibles y las situaciones intermedias son peores,
un resultado nada esperado.
Pasemos a ver como se ha hecho la implementacin de todos estos modelos en el software EJS.

6.

IMPLEMENTACIN

DEL MODELO EN

EJS

Como es natural los modelos anteriores se han ido desarrollando uno sobre el otro aadiendo complejidad, con lo
cual hablar de la implementacin del ltimo modelo completo es hablar de la implementacin de todos los modelos.
La implementacin de este modelo se ha basado esencialmente en imitar la idea de programacin orientada a objetos,
pero todo esto se ha hecho simplemente con un conjunto de arrays diseados para distintas tareas. Por ejemplo, cada
cliente se puede ver como una entidad con sus distintos miembros y conoce por ejemplo su posicin o a qu caja est
asignado. Anlogamente, cada caja tambin conoce qu clientes tiene asignados, cuntos ha servido ya, cuntos clientes
tiene en su cola, etc. Todo esto se hizo as por mera simplicidad a la hora de aadir funcionalidades al programa, ya
que partiendo de cualquier punto se puede llegar a cualquier otro, por ejemplo, dado un ndice de un cliente se puede
saber el ndice de su caja asignada y de ah el resto de clientes en su misma cola, por ejemplo.

6.1.

VARIABLES

Como es natural hay muchas variables auxiliares que no es necesario mencionar. En esta seccin vamos a explicar
brevemente el propsito de las variables realmente importantes, como los arrays mencionados arriba.
Con respecto a las variables de entrada tenemos nicamente 3, una variable n que indica la cantidad de clientes
a generar en nuestra simulacin, la variable counters que nos indica la cantidad de cajas, y la variable autoCounters
que nos indica la cantidad de ellas que estn asignadas a la cola nica. sta ltima slo est presente en la segunda
simulacin dado que la primera no implementa la funcionalidad de cola nica. Ntese que estos datos, junto con los
parmetros de probabilidad, determinan por completo las cualidades de la simulacin, lo cual nos indica que el resto ya
no sern variables de entrada. Los susodichos parmetros se han decidido poner en una pestaa aparte de probabilidad.

Modelado de un sistema de colas

pgina 19 de 25

Tenemos luego una serie de variables que hemos denominado variables de inicializacin, son aquellas que no
tomarn partido activamente en el desarrollo de la simulacin, simplemente se generarn sus valores al comienzo y
quedarn fijos, siendo usados para diversas tareas. En concreto, tenemos por mera comodidad de manejo una variable
que contiene la cantidad de cajas con cola individual, que no es ms que manualCounters = counters - autoCounters.
Luego tenemos 6 variables ms que simplemente ataen a la representacin grfica de las cajas, en concreto, contienen
las abscisas y las ordenadas de las cajas, sus tamaos, la separacin entre ellas, y el punto de comienzo de la primera
de ellas. La razn de estas variables est en que la representacin de las cajas se hace de forma que queden centradas
horizontalmente en pantalla y se ajusten al tamao, con lo cual esto se calcula en base al nmero de cajas que se haya
introducido como variable de entrada. Los nombres de las variables son descriptivos de su propsito y por ello no los
he explicitado.
Luego tenemos las variables de estado general, como son el tiempo t que est medido en segundos y va aumentando 1 por fotograma, y la variable nAc tual que indica el ndice del ltimo cliente que fue generado, o en otra palabras,
cuntos clientes han sido generados hasta ahora. Sirve entre otras cosas para estar al tanto del progreso de la simulacin
y para detenerla cundo valga n. Luego tenemos la variable tGen que guarda el tiempo restante hasta la generacin de un
nuevo cliente, o dicho de otro modo, se trata de una muestra de una distribucin exponencial de parmetro . Anloga
es la variable tServ para los tiempos de servicio en caja, que lgicamente es un array pues cada caja tiene su tiempo
de servicio independiente. Finalmente tMedio se encarga de acumular todos los tiempos de estancia en el sistema, para
finalmente dividir por n y obtener la media, que luego usamos para comparar con la media esperada.
El siguiente conjunto de variables es el ms extenso y es el que controla todo el funcionamiento de asignacin de
cajas a clientes, visibilidad de clientes, etc. Se trata de las variables de estado de clientes. Comencemos con las que
estn en ambos modelos. Primero encontramos una matriz client que contiene, para cada cliente, sus distintos miembros,
en concreto se guarda el ndice de caja asignada, su tiempo de entrada al sistema, de entrada a caja, y de salida del
sistema. Luego tenemos dos arrays para sus abscisas y ordenadas, respectivamente. Despus un array booleano que
determina la visibilidad de los clientes, ya que estos siempre existen con lo cual la diferencia entre estar y no estar la
determina meramente su visibilidad. Finalmente, hay 4 arrays que manejan toda la estructura de asignacin, los arrays
que anticipbamos al comienzo:
clientCounters - Se trata de una matriz que contiene, para cada caja, la lista de ndices de clientes asignados a esta
caja.
counterIndexes - Un vector que para cada caja, indica el nmero de cliente siendo servido en esa caja. Usado para
poder localizar al cliente que est siendo servido actualmente en cada caja.
counterIndexesGen - Un vector que para cada caja, indica el nmero de cliente asignado a esa caja, o dicho de otro
modo, cuntos clientes han sido asignados a esa caja hasta ahora. Usado para saber en qu posicin del array
primero introducir nuevos clientes cuando se asignen a cada caja. Desde luego, este nmero siempre es mayor
que el anterior, por ejemplo, se pueden haber asignado 5 clientes a una cola de los cuales 3 ya han sido servidos.
counterClients - Un vector que para cada caja, contiene la cantidad de clientes actualmente en cola o servicio.
Unos anlogos a estos se aaden en la segunda simulacin para contener los mismos datos, pero referidos nicamente
a la cola nica. stos son
clientCounterSQ - Un vector que contiene la lista de ndices de clientes asignados la cola nica.
counterIndexesSQ - Un nmero que indica el nmero de cliente siendo servido, del array anterior.
counterIndexesGenSQ - Un nmero que indica el nmero de clientes asignados a la cola nica.
clientesEnColaUnica - Un nmero que contiene la cantidad de clientes actualmente en cola.
clientesEnColaUnicaOEnCaja - Un nmero que contiene la cantidad de clientes actualmente en cola o en servicio,
naturalmente mayor o igual que el anterior.
Los clientes asignados a la cola nica tienen sus propios arrays de abscisas y ordenadas, distintos del resto en este
caso pues se comportan de forma distinta. Adems, por la forma en la que la simulacin est programada, tambin son
tiles un vector booleano que determina si las cajas estn o no activas (es decir, sirviendo a un cliente), y un vector
booleano de visibilidad de clientes propio para los clientes de cola nica, distinto del general porque de nuevo estn
programados de forma distinta. Esto concluye las variables de estado de clientes.
Es indudable que se podra haber tomado un enfoque que recortase en variables ampliamente, no obstante a falta
de objetos tener muchas variables que nos indiquen el estado exacto y los miembros y propiedades de cada cosa en cada
momento es muy til y permite modificar el programa flexiblemente sin problemas.

Modelado de un sistema de colas

pgina 20 de 25

Naturalmente tenemos una pestaa para variables de probabilidad. Aqu se crean dos instancias de distribuciones exponenciales, provistas por el paquete de matemticas de Apache Commons, para generar tiempos entre clientes y
tiempos de servicio, apropiadamente llamadas generarCliente y generarServicio. Despus tenemos dos variables lambda
y mu que contienen los valores de los respectivos parmetros de las distribuciones anteriores. Finalmente una variable
que contendr la media esperada, la cual se calcula aplicando la frmula (21) ms adelante, y una variable par que
contiene el parmetro de la distribucin que sigue el tiempo de espera en el caso ms sencillo de una cola, en el que
recordemos que pudimos calcular que era una distribucin exponencial de parmetro .
Finalmente tenemos unas variables graficas que esencialmente guardan valores necesarios para realizar la grfica
de las distribuciones exponenciales, grficas que ms tarde se sobreimponen en los histogramas. En concreto contienen el
corte con el eje Y necesario para que la grfica tenga la misma escala que el histograma. Esto se actualiza cada fotograma.
Con esto se terminan las variables principales. Dentro del programa se declaran diversas variables auxiliares de vez
en cuando que no tienen mayor repercusin o importancia.

6.2.

INICIALIZACIN

Es necesario inicializar mltiples datos antes de comenzar la simulacin. Comenzamos inicializando los datos grficos que determinan la posicin, el tamao y la separacin entre cajas. Luego creamos las distribuciones exponenciales,
pues hasta ahora slo habamos declarado las variables pero estas distribuciones son, naturalmente, objetos y requieren
creacin con new. Creamos un tiempo aleatorio para la generacin del primer cliente y tambin para los primeros tiempos de servicio de cada caja, es decir, inicializamos tGen y tServ. Es interesante observar que en este primer modelo, los
tiempos de servicio se generan antes de que se asigne el cliente a la caja, cosa que despus cambia en el modelo con
cola nica. Agregamos estos datos a los respectivos histogramas.
Finalmente, activamos la velocidad rpida por defecto a 100 PPV y calculamos, mediante la funcin C de Erlang y
despus la frmula (21), la media esperada con los datos que tenemos (recordemos que depende de N , y ).
En la simulacin con cola nica tambin es necesario inicializar las posiciones de los clientes en cola nica. Aprovechamos para explicar ahora este funcionamiento para evitar confusiones.
En el caso de clientes en colas individuales, cada cliente tiene asignado su propia representacin grfica en forma
de crculo, y conforme se mueve la cola se actualizan las posiciones de los clientes, movindolas o cambiando su
visibilidad. Esto se hace as porque el movimiento de los clientes es sencillo, simplemente andan hacia arriba.
En el caso de los clientes de la cola nica, esto por comodidad no se hace as, sino que se crean desde el comienzo
una cantidad suficiente de crculos con posiciones ya determinadas, y en base a la cantidad de clientes que haya
en cola en cada instante, se hacen visibles tantos como haya que hacer. Esto es as porque es ms fcil que calcular
el movimiento de los clientes, dado que ahora la forma de la cola es ms compleja: Cuando se llena la primera
fila horizontal, bajan y hacen una segunda en sentido contrario, y as hasta llegar al final de la pantalla.
Es por este motivo que es necesario inicialmente calcular cules son estas posiciones predeterminadas de los clientes
de la cola nica y asignarlas. Con esto termina la inicializacin de la simulacin.

6.3.

EVOLUCIN

La evolucin es sin duda la parte ms interesante de la simulacin, y en este caso se divide esencialmente en dos
fragmentos: la generacin de clientes y el control de las cajas, donde se realiza el servicio a clientes. Cada fragmento
tiene su propia pestaa que pasamos a detallar a continuacin.
6.3.1.

GENERACIN DE CLIENTES

Dado que esta es la primera pgina en ejecutarse, lo primero que hacemos es aumentar el tiempo una unidad (un
segundo, si queremos verlo de forma compatible a nuestros datos experimentales), siempre y cuando an queden clientes. El funcionamiento de esta evolucin viene determinado por el valor de tGen. Este valor contiene una muestra de
distribucin exponencial, indica el tiempo entre cliente y cliente.
Si tGen no es 0 quiere decir que an no es momento de generar un nuevo cliente, con lo cual lo disminuimos en una
unidad y no hacemos nada ms.
Si tGen es 0 y an quedan clientes por generar, entonces es momento de generar un nuevo cliente y asignarlo a
una cola. Lo primero que hacemos es determinar dnde asignarlo. En el modelo completo, esto se hace de la siguiente
forma: Tomamos la proporcin entre las cajas asignadas a la cola nica y las cajas totales, y mediante un dato aleatorio decidimos si el cliente ir a una caja con cola individual o a una de las de la cola nica, manteniendo la misma
proporcin. La idea es que si un 60 % de las cajas tienen cola individual, de media el 60 % de los clientes irn a cajas
con cola individual y viceversa. Desde luego este criterio se podra modificar atendiendo a cuestiones nimias de la vida

Modelado de un sistema de colas

pgina 21 de 25

real, pero cualquier modificacin relevante descompensa por completo la cola, alterando la media o incluso provocando
divergencia si fluyen muchos ms clientes en un sentido que en otro, pues recordemos que si los parmetros no verifican
ciertas condiciones las colas crecen de forma indefinida, luego la forma ms estable de hacerlo es que vayan cantidades
de clientes proporcionales a la cantidad de cajas en cada seccin.
Una vez determinado esto, si la eleccin ha sido a un caja con cola individual, se determina a cul de ellas ir. En
el caso de la primera simulacin, esto se hace tomando una caja vaca si existe, y si todas estn ocupadas entonces se
toma una al azar. Recordemos que esto lo hacemos as para que se ajuste al mximo a la forma en la que modelamos
tericamente el procedimiento. En la segunda simulacin, los clientes siempre van a la cola ms corta. De nuevo, este
criterio se podra modificar pero difcilmente tendra repercusiones notables, como se desprende de nuestros experimentos finales en la seccin anterior. Es importante observar que si un cliente se ha asignado a la cola nica, no tendr
caja asignada hasta que se libere una y le toque, como es natural.
Una vez tomada esta decisin, en ambos casos la asignacin del cliente a una caja se realiza mediante el mismo
algoritmo. Primero se anota la caja en el miembro del cliente, luego se anota el cliente en el miembro de la caja. Los
ndices correspondientes se aumentan para que el siguiente cliente asignado a esta caja no sobreescriba el ndice del
cliente actual. Se activa la visibilidad del cliente. Se guarda su tiempo de entrada. Se aumentan los contadores de clientes en las colas correspondientes, y finalmente en el caso de las colas individuales, se calculan las abscisas y ordenadas
del cliente.
Para terminar, se comprueba si quedan clientes por generar y en tal caso, se genera un nuevo tiempo tGen que
se aade al histograma, y se aumenta el ndice de clientes generados, nActual. En otras palabras, se deja el terreno
preparado para la prxima iteracin/fotograma.
6.3.2.

CONTROL DE LAS CAJAS Y SERVICIO DE CLIENTES

El manejo de las cajas se realiza, como cabra esperar, de forma distinta dependiendo de si se trata de una caja con
cola individual o a una de las cajas asignadas a la cola nica, aunque sin duda se trata de realizar esencialmente lo
mismo. Todo lo que viene a continuacin se realiza para cada caja, y por tanto est enmarcado dentro de un bucle que
recorre las distintas cajas, las de cola individual primero y las de la cola nica despus. Dicho lo cual, pasamos a detallar
sendos algoritmos.
COLAS INDIVIDUALES Comprobamos mediante el contador si hay algn cliente en cola o en caja. Si no es as, no hacemos nada. Si hay algn cliente, entonces de forma anloga a la evolucin anterior, comprobamos el valor de tServ.
Si el tServ correspondiente (recordemos es un vector) an no es 0 quiere decir que hay un cliente siendo servido,
luego lo disminuimos en una unidad y no hacemos nada ms.
Si el tServ correspondiente es 0 entonces acaba de terminar el servicio de un cliente, y toca despacharlo. Para ello,
desactivamos su visibilidad, guardamos su tiempo de salida del sistema, calculamos su tiempo de estancia en el sistema
total usando su tiempo de entrada guardado anteriormente, y aadimos este tiempo al histograma, as como al acumulador que usamos para calcular el tiempo medio. Disminuimos adems el contador de clientes en cola.
Ahora aumentamos el ndice de cliente, para dejarlo preparado para tratar al siguiente, y generamos un nuevo tServ,
de nuevo para dejarlo preparado para el siguiente cliente. Observemos que, con independencia del valor de este tiempo,
lo primero que hacemos es comprobar si hay clientes en cola, de modo que mientras no lleguen clientes a esta cola no
se va a hacer nada, ni disminuir el tServ ni despachar supuestos clientes.
Finalmente tenemos que mover a los clientes que hay en cola una posicin hacia arriba, es decir, actualizar la cola.
Por tanto iteramos por los clientes restantes, si los hay, y modificamos sus coordenadas.
COLA NICA Antes de entrar siquiera en el bucle para las cajas asignadas a la cola nica, comprobamos mediante el
contador si hay algn cliente en la cola, dado que ahora esto afecta a todas las cajas. Si no hay, entonces no hacemos
nada, si hay, entonces entramos en el bucle que itera por las cajas.
Para cada caja, comenzamos de nuevo comprobando el tServ. Si es positivo lo disminuimos en una unidad y pasamos. El funcionamiento el ligeramente distinto a partir de ahora en comparacin al caso anterior. Supongamos que el
tServ es 0, entonces tenemos que distinguir si acaba de hacerse 0 o si ya era 0 desde antes. Es para esto que tenemos las
variables booleanas que nos indican si una caja est activa o no.
En el primer caso, si el tServ acaba de hacerse 0, lo cual observamos porque la caja est activa, significa que el
servicio a un cliente acaba de terminar, con lo cual lo despachamos. El algoritmo para ello es idntico al caso anterior,
pero adems nos debemos asegurar de que marcamos la caja como inactiva.

Modelado de un sistema de colas

pgina 22 de 25

Si el tServ era 0 antes de este fotograma, cosa que detectamos porque la caja est inactiva, entonces no es necesario
despachar a ningn cliente.
En ambos, lo siguiente que se hace es comprobar si hay clientes en la cola nica esperando. Observemos que estos
an no tenan caja asignada. Lo que hacemos es asignarles la caja del mismo modo a como hicimos con los otros, guardar sus tiempos de entrada en caja, y generar un nuevo tServ que determinar cunto se queda este cliente en la caja.
Aumentamos el ndice de cliente siendo servido, marcamos la caja de nuevo como activa, y disminuimos el contador de
clientes en cola, pues ahora est en caja.
Con esto, el terreno se queda preparado hasta que su tServ llegue a 0 en cuyo caso se despachar y se comenzar de
nuevo.
El modelo carece de mtodos propios salvo uno auxiliar para calcular factoriales, necesario a la hora de calcular la
media esperada mediante la frmula (21). Tampoco es necesario emplear ninguna relacin fija y ningn elemento para
el modelo. Por tanto, queda slo ver la visualizacin.

6.4.

VISUALIZACIN

En esta seccin no nos explayaremos en exceso dado que no tiene mayor complejidad. Nuestra vista se basa en un
panel de dibujo que contiene todo. Dentro tenemos un panel central que contiene dos subpaneles: Uno para la simulacin, y otro para los controles.
El panel de simulacin, llamado queuePanel, es de tipo rejilla 2x2 y contiene la visualizacin de las colas y los 3
histogramas de tiempos. El panel de controles contiene una visualizacin del tiempo y nmero de cliente actual, para
estar al tanto del progreso de la simulacin, y botones para dirigir la simulacin, en concreto para reproducirla/pausarla,
dar un paso, o reiniciarla. Tambin tenemos dos botones para determinar la velocidad de la simulacin, que permiten
escoger entre 1 PPV (velocidad normal), 100 PPV (velocidad rpida) y 1000 PPV (velocidad ultrarrpida). Esta ltima
opcin consume bastante y no es de extraar que ralentice la simulacin.
Para terminar, unos comentarios acerca de las visualizaciones principales. Dentro del panel de dibujo del sistema de
colas podemos encontrar todos los elementos que formar parte de la simulacin grfica. En particular, los clientes se dividen en tres secciones: Los asignados a colas individuales, los asignados a la cola nica, y los que estn siendo servidos
en cajas correspondientes a la cola nica. La visibilidad de estos elementos, as como su posicin, viene determinada
por los arrays booleanos y dobles anteriormente definidos.
Tambin podemos encontrar un conjunto de objetos que representa las cajas o mostradores, as como las paredes
de la cola nica y los textos, que emplean un formateo especfico a la hora de mostrar los nmeros: Se toman 5 cifras
significativas.
Es interesante observar como en cada panel con ejes, de los 3 existentes, tenemos tanto un histograma como una
grfica de curva. Estas curvas analticas estn definidas usando sintaxis Java pues requieren de la librera Math para
representar la exponencial.
Con esto concluimos la implementacin del modelo en EJS, que con suerte permitir al lector entender y reproducir
el modelo si as lo desea.

7.

CONCLUSIONES

Para terminar, vamos a recapitular los resultados importantes que hemos obtenido a lo largo del desarrollo del
modelo, y particularmente en la seccin (5) donde hemos presentado el modelo completo. En primer lugar, podemos
por fin dar respuesta a la pregunta que serva como motivacin para desarrollar este trabajo:
Qu organizacin es preferible para un sistema de colas?
En vista de los resultados obtenidos con el modelo completo, podemos decir que, teniendo nicamente en cuenta
los parmetros de decisin considerados, es preferible y aproximadamente equivalente que todas las cajas tengan colas
individuales o que todas estn asignadas a una cola nica, mientras que las configuraciones intermedias son, sorprendentemente, inferiores. Dicho de otro modo, las configuraciones ideales son las extremas, para la perplejidad del autor.
Todo esto empleando como criterio de preferibilidad minimizar el tiempo medio que los clientes pasan en el sistema,
contando la cola y el servicio. No obstante, si aadimos el beneficio extra del orden, la cola nica mantiene a los clientes
ms ordenados y reduce el caos en el establecimiento, con lo cual se podra considerar suficiente, bajo estos criterios,
para darle cierta superioridad.

Modelado de un sistema de colas

pgina 23 de 25

Hay una pequea cuestin que nos gustara indicar. El tiempo entre que termina un servicio y comienza el siguiente
es un tiempo que tambin habra que tener en cuenta, y es algo que no ha sido implementado pues se trata de algo
muy variable y con poco efecto. No obstante, si bien en las colas individuales apenas hay retraso entre servicios, ya que
cuando acaba un cliente el siguiente ya est listo para ser servido, en la cola nica cuando se libera una caja se debe
esperar a que el cliente vaya desde el final de la cola hasta la caja correspondiente, un tiempo que cuanto ms larga
sea la cola nica, es decir cuantas ms cajas abarque, ms relevante se har para los cmputos finales. En situacin de
equivalencia esto puede hacer tornar la balanza hacia un sistema de colas individuales.
Observemos que tambin podemos obtener otro corolario interesante del trabajo. Que los clientes escojan la cola de
manera aleatoria o que escojan la cola ms corta disponible no afecta al tiempo medio que pasan en el sistema, algo
evidenciado por el hecho de que nuestra primera simulacin emplea el primer criterio y la segunda, el segundo; y no se
han apreciado diferencias representativas en este aspecto tras la ejecucin de ambas simulaciones. Esto es un hecho muy
interesante y que en parte acredita ese comportamiento peculiar de las colas que mencionbamos en la introduccin:
Colas cortas que tardan ms que las largas, fenmenos de Monty Hall inversos, etc.
No es ms que una cuestin de probabilidades que en este caso depende del comportamiento de las distribuciones
hermanas exponencial y de Poisson, y de la propiedad memorylessness que mencionbamos al comienzo. Sera mucho
menos probable que esto ocurriera en una distribucin donde los acontecimientos anteriores s afectan a la probabilidad
de los futuros, como son la mayora de distribuciones. Intuitivamente, podemos pensar que los tiempos se distribuyen
de forma que el tiempo ahorrado por algunos clientes por ir a colas cortas se compensa con otras colas largas que van
rpido, y que el tiempo perdido por clientes que han escogido colas largas se compensa con otras colas cortas que resultan ser lentas.
An as, no cabe duda que el autor de este trabajo seguir escogiendo siempre la cola ms corta.

8.

TRABAJOS

FUTUROS

Nos gustara concluir el trabajo indicando algunas ideas que nos han surgido como posibles futuros estudios, implementaciones, y ampliaciones del trabajo. Algunas de las cuales el autor pens incluir hasta advertir la verdadera
dificultad de una implementacin realista con tales ideas. En general, podramos clasificarlas en varias categoras.
CRITERIOS DE ELECCIN Es indudable que los criterios con los cuales los clientes escogen una cola son mucho ms
complejos que los implementados en este modelo. Si bien en vista de los resultados estos criterios no parecen tener
mayor relevancia a la larga, sera interesante implementarlos en un modelo que se asemeje ms a la realidad, en cuyo
caso quiz podran comenzar a tener cierta envergadura. En particular, se podran estudiar los siguientes criterios de
decisin
La distancia a la caja. Generar la clientela en un espacio apartado del sistema de colas y usar la distancia a ellas
como factor a tener en cuenta a la hora de escoger, ya que una gran separacin entre el cliente y una cola corta
puede hacerle tomar la decisin de tomar una ms larga. Estos criterios son muy subjetivos si no se hace un estudio
experimental previo, razn por la cual no se han implementado en este modelo, pero sera interesante realizar
observaciones reales enfocadas en esta direccin.
El criterio de la longitud de las colas, cuando tenemos varias cajas asignadas a una cola nica, ya no es tan
intuitivamente claro. Naturalmente los clientes estarn inclinados a escoger la cola nica incluso si es bastante
ms larga que las individuales, siendo conscientes de que previsiblemente ir mucho ms rpido. Pero, hasta que
punto es esto cierto? quiz hasta el doble/triple que una cola normal? De nuevo esto requerira algn estudio
experimental previo.
El estado actual de la cola, como la clase de clientes que hay, pueden afectar a nuestra decisin de escoger la cola.
CRITERIOS DE PREFERIBILIDAD De nuevo, si bien hemos escogido como criterio que el cliente pase el menor tiempo
total en el sistema de media, podramos considerar otros criterios que resulten de inters desde el punto de vista del
dueo del establecimiento, o del cliente. Algunos de ellos podran ser
Los criterios de ndole econmica, sin duda la principal preocupacin del empresario, es algo que merecera la
pena estudiar.
Minimizar las posibles intersecciones de clientes en sus trayectos a las colas con el fin de mejorar el orden. Por
ejemplo, si las cajas mejor acondicionadas para cargas grandes se ponen lejos del rea de productos voluminosos,
es ms probable que clientes crucen de un lado a otro con el fin de ir a la cola apropiada, entorpeciendo el resto
de cola intermedias.
En general, criterios que mejoren el orden y la fluidez del sistema de colas.

Modelado de un sistema de colas

pgina 24 de 25

CRITERIOS VARIOS De nuevo, otras ideas diversas que pueden ser verdaderamente interesantes, algunas de las cuales
requieren de un estudio experimental previo para ser implementadas de una forma realista, podran ser las siguientes
Comportamientos dinmicos de los clientes, entre los cuales los ms usuales seran cambiarse de cola cundo hay
una ms corta disponible, y el abandonamiento de la cola cuando el tiempo en cola es excesivamente largo.
Observar si cambia la organizacin ptima cuando se varan los criterios de servicio al cliente. En este modelo
hemos implementado el criterio prcticamente universal de servir en orden de llegada de los clientes, no obstante
se pueden tomar otros criterios como servir en orden de la cantidad de productos que lleven los clientes, lo cual
en ciertas situaciones (no necesariamente de comercios) puede resultar preferible.
La inclusin de cajas de autoservicio, en las que el cliente paga su compra sin necesidad de un empleado en
caja. En esto influye tanto la carga del cliente, como su experiencia con el sistema, por ello es ms complejo de
implementar.
La inclusin de cajas express, es decir cajas a las cuales slo pueden acceder clientes con un reducido nmero de
objetos a comprar (en general 5 10, aunque depende del establecimiento). Estas cajas van mucho ms rpido
que el resto y filtran a los clientes, dejando los lentos en el resto de colas. Sera una modificacin muy a tener en
cuenta y con mucho atractivo.
La inclusin de cajas en efectivo y de cajas con tarjeta, entre otras donde slo se acepta un cierto modo de pago,
tambin clasifica bastante a los clientes y los separa en categoras. Conociendo datos de uso de distintos modos
de pago sera sencillo implementar esta funcionalidad y comprobar si es beneficioso, o no, tener este tipo de cajas
en el sistema.
Otros tipos de cajas a considerar pueden ser aquellas acondicionadas para ciertos tipos de compras, para ciertos
tipos de productos, por ejemplo para los productos voluminosos o para los alimenticios, etc. Estos son factores
ms personales de cada establecimiento pero que tambin afectan al cmputo, si queremos una imagen realista.
La posibilidad de agrupar las cajas en colas mltiples de forma ms flexible, por ejemplo particionando el conjunto
de todas las cajas y asignando cada subconjunto de cajas a una cola nica. Es posible que sea mejor dos colas
nicas, cada una con la mitad de las cajas, que una cola nica con todas las cajas?
Sin duda son muchos ms criterios los que terminan determinando la verdadera organizacin de un sistema de colas,
pero como bien sabemos, el modelo cientfico slo puede aspirar a aproximar el funcionamiento de la realidad y a refinarse paulatinamente con el tiempo, y por ello siempre es importante instar a la continuacin del trabajo proporcionando
distintas vas e ideas.

9.

BIBLIOGRAFA

LITERATURA
[1] Sheldon M. Ross, Stochastic Processes 2da edicin, 1995.
[2] Leonard Kleinrock, Queueing Systems: Volume I - Theory 1ra edicin, 1975.
[3] Janos Sztrik, Basic Queueing Theory, notas online.
[4] A. K. Erlang, The theory of probabilities and telephone conversations, Nyt Tidsskrift for Matematik, 1909.
SITIOS WEB
[1] http://www.mathpages.com/home/kmath026/kmath026.htm (Notas acerca de la deduccin de la distribucin de Poisson)
[2] http://www.um.es/or/ampliacion/node13.html (Teora general para el modelo con N colas)
[3] Numerosos artculos libres de la Wikipedia.
REFERENCIAS VARIAS
[1] Imagen de portada por Mary OConnor, ilustradora de la versin online del diario The Brown Daily Herald, http:
//www.browndailyherald.com, peridico estudiantil de la Universidad de Brown. Modificada por el autor
para incluir el mensaje.
[2] El resto de imgenes son todas de dominio pblico sujetas a licencia Creative Commons y obtenidas del repositorio
Wikimedia Commons, https://commons.wikimedia.org/. Los diagramas de flujo son creacin del autor.

Modelado de un sistema de colas

pgina 25 de 25

Вам также может понравиться