Habíamos visto la atención de clientes por un empleado JUAN

Anuncio
INTRODUCCIÓN AL USO DE CADENAS EN MODELOS CONSTRUIDOS CON GPSS
De modo simple, la atención de clientes por un empleado
JUAN donde los clientes esperan inexorablemente hasta ser
atendidos, independientemente de la demora que tengan:
GENERATE clientes
...
QUEUE
JUAN
SEIZE
JUAN
DEPART
JUAN
ADVANCE
tiempo de atención
RELEASE
JUAN
SIGUE
...
Conocemos como simular un tipo de impaciencia (la persona
se va si hay más de una determinada cantidad de personas en
cola, por ejemplo 7 personas):
GENERATE clientes
TEST LE
Q$JUAN,7,BYE
QUEUE
JUAN
SEIZE
JUAN
DEPART
JUAN
ADVANCE
tiempo de atención
RELEASE
JUAN
...
BYE
TERMINATE
pero una vez que una persona se pone en cola ya no deja la
cola cualquiera sea el tiempo que tenga que esperar. Por
otro lado el empleado JUAN trabaja ininterrumpidamente.
¿Cómo manejamos la impaciencia del cliente? (posibilidad de
irse cuando el tiempo de espera colmó su paciencia).
La idea es subdividir al cliente en dos:
El original es el cliente propiamente dicho, la copia es la
transacción que espera el tiempo de paciencia de ese
cliente (tiempo que está dispuesto a esperar sin irse).
Los clientes se numeran (se guarda ese número en el
parámetro 3) y la manera que tenemos para que la copia
reconozca al cliente del cual es copia es a través de la
coincidencia del citado parámetro 3:
GENERATE clientes
SAVEVALUE CUEN+,1
Generamos una copia del cliente
ASSIGN
3,X$CUEN
donde coinciden los valores del
SPLIT
1,IMPA
parámetro 3 del original y de la copia.
...
TEST LE
Q$JUAN,7,BYE
QUEUE
JUAN
Si otra transacción no la libera (ejecuta un
LINK
JUAN,FIFO
UNLINK, queda eternamente encadenada)
IMPA
CHAU
ADVANCE
tiempo de paciencia
UNLINK
JUAN,CHAU,1,3,*3
TERMINATE
DEPART
JUAN
TERMINATE
Valor con el que se compara.
Parámetro de la transacción
encadenada que se consulta.
1
INTRODUCCIÓN AL USO DE CADENAS EN MODELOS CONSTRUIDOS CON GPSS
Hasta aquí hemos simulado que los clientes se “encadenan” a
la cadena “JUAN” de la cual los saca la impaciencia. No
hemos simulado la atención normal por lo que todos los
clientes se irían de este modelo por impaciencia.
Antes de seguir adelante, analicemos el bloque:
UNLINK
JUAN,CHAU,1,3,*3
Este bloque lo ejecuta la transacción “hermanita” del
cliente que quiere llevarse al cliente sacándolo de la
cadena JUAN (lo manda al rótulo CHAU, donde el cliente deja
de esperar a JUAN, saliendo de la citada cola y se retira
del sistema)
El significado de cada operando de ese UNLINK es:
Intenta desencadenar de la cadena JUAN,
La transacción liberada es enviada al rótulo CHAU.
Libera 1 transacción
Se consulta el valor del parámetro 3 de la transacción a
liberar.
Se lo compara con el *3 de la transacción que ejecuta el
UNLINK, si son iguales, la transacción es liberada
Detallando la sintaxis de cada operando:
UNLINK
¨
A,B,C,D,E,F
A: Cadena de donde se libera
B: Rótulo al que va la transacción a liberar
C: Cantidad a liberar
D: Identificador del parámetro de la transacción a liberar
E: Valor con el que se compara a través del operador
F: Rótulo al que bifurca si no puede liberar C transacciones
Operandos D y E establecen la condición para liberar la transacción
parámetro D igual al operando E para que la transacción sea liberada.
Al modelo anterior le agregamos la atención del cliente que
hace el empleado JUAN quien saca a un cliente de la cadena
sin imponerle ninguna condición (la cadena es FIFO, First
Input, First Output por lo que atiende al más antiguo):
GENERATE clientes
SAVEVALUE CUEN+,1
ASSIGN
3,X$CUEN
SPLIT
1,IMPA
...
TEST LE
Q$JUAN,7,BYE
QUEUE
JUAN
LINK
JUAN,FIFO
ATIEN
SEIZE
JUAN
Aquí JUAN es una FACILITY
DEPART
JUAN
que es tomada por el cliente.
ADVANCE
TIEMPO DE ATENCION
RELEASE
JUAN
SIGUE
...
Aquí generamos a JUAN como transacción
OTRO
Aguarda un instante
para dar tiempo a
que el cliente tome a
la FACILITY JUAN
GENERATE
TEST G
UNLINK
ADVANCE
GATE NU
TRANSFER
,,,1
CH$JUAN,0
JUAN,ATIEN,1
1
JUAN
,OTRO
2
Aguarda que haya alguien en la cadena JUAN
para pasar al bloque siguiente y así ejecutar el
UNLINK de la cadena JUAN que libera a un
cliente enviándolo al rótulo ATIEN
La FACILITY JUAN estará NU
cuando haya atendido al cliente
INTRODUCCIÓN AL USO DE CADENAS EN MODELOS CONSTRUIDOS CON GPSS
IMPA
CHAU
ADVANCE
tiempo de paciencia
UNLINK
JUAN,CHAU,1,3,*3
TERMINATE
DEPART
JUAN
TERMINATE
Hasta aquí hemos simulado algo parecido al modelo sencillo
planteado inicialmente (únicamente hemos agregado que los
clientes se van si se colma su tiempo de paciencia).
Agregaremos la posibilidad de que el empleado, en un 5% de
los casos haga otra cosa antes de llamar a otro cliente:
GENERATE clientes
SAVEVALUE CUEN+,1
ASSIGN
3,X$CUEN
SPLIT
1,IMPA
...
TEST LE
Q$JUAN,7,BYE
QUEUE
JUAN
LINK
JUAN,FIFO
ATIEN
SEIZE
JUAN
DEPART
JUAN
ADVANCE
TIEMPO DE ATENCION
RELEASE
JUAN
SIGUE
...
OTRO
IMPA
CHAU
GENERATE
TEST G
UNLINK
ADVANCE
GATE NU
TRANSFER
ADVANCE
TRANSFER
ADVANCE
UNLINK
TERMINATE
DEPART
TERMINATE
,,,1
CH$JUAN,0
JUAN,ATIEN,1
1
JUAN
.95,,OTRO
tiempo en hacer otra cosa antes de llamar
,OTRO
tiempo de paciencia
JUAN,CHAU,1,3,*3
JUAN
Agregaremos la posibilidad de que el empleado, si no hay
nadie haga otra cosa antes de llamar a otro cliente:
GENERATE clientes
SAVEVALUE CUEN+,1
ASSIGN
3,X$CUEN
SPLIT
1,IMPA
...
TEST LE
Q$JUAN,7,BYE
QUEUE
JUAN
LINK
JUAN,FIFO
ATIEN
SEIZE
JUAN
DEPART
JUAN
ADVANCE
TIEMPO DE ATENCION
3
INTRODUCCIÓN AL USO DE CADENAS EN MODELOS CONSTRUIDOS CON GPSS
SIGUE
OTRO
IMPA
CHAU
NOHAY
RELEASE
...
JUAN
GENERATE
TEST G
UNLINK
ADVANCE
GATE NU
TRANSFER
ADVANCE
TRANSFER
ADVANCE
UNLINK
TERMINATE
DEPART
TERMINATE
ADVANCE
TRANSFER
,,,1
Se genera aquí al
CH$JUAN,0,NOHAY
empleado JUAN
JUAN,ATIEN,1
1
JUAN
.95,,OTRO
tiempo en hacer otra cosa antes de llamar
,OTRO
tiempo de paciencia
JUAN,CHAU,1,3,*3
JUAN
hace otra cosa porque no hay nadie
,OTRO
Hemos llegado a este modelo donde el cliente ejerce el
único derecho que le asiste cuando no lo atienden (irse por
impaciencia) y el empleado, se toma dos libertades:
1. En un 5% de los casos, hace otra cosa antes de volver
a llamar
2. Hace otra cosa si no hay clientes esperando.
¿Cómo simularíamos que PEDRO ayuda a atender los clientes
de JUAN cuando hay 5 o más clientes esperando a JUAN y deja
de atender cuando hay menos de dos clientes esperando ser
atendidos por JUAN?
Sólo hay que agregar lo siguiente al modelo anterior:
GENERATE
,,,1
(generamos al empleado PEDRO)
MIRO
TEST GE
Q$JUAN,5
OTP
UNLINK
JUAN,ATIEN2,1
ADVANCE
1
GATE NU
PEDRO
TEST L
Q$JUAN,2,OTP
TRANSFER
,MIRO
ATIEN2 SEIZE
PEDRO
DEPART
JUAN
ADVANCE
tiempo de atención
RELEASE
PEDRO
TRANSFER
,SIGUE
Es necesario leer y releer estas hojas hasta entender todos
los conceptos en su totalidad para poder avanzar en la
construcción de modelos complejos donde es necesario
dominar estos conceptos.
4
Descargar