Con el fin de atacar el problema del ruteo, se plantearon 2 acercamientos. El primero, habilitando ciertas rutas adicionales para disminuir los recorridos innecesarios. Se planteó un modelo en C++ para solucionar el problema y luego se simuló el resultado en Arena.
Para el segundo acercamiento, se evaluó la utilización de coches con mayor volumen, de manera que los ciclos no fueran de 24 referencias, sino de 48 (el doble de la capacidad de carga del coche actual).
8.1 Habilitación de rutas
Para atacar el problema de naturaleza combinatoria, y generar la primera alternativa, se planteó un modelo en C++ explicado a continuación.
1. Se construyó un grafo en donde se asignó un número de nodo a cada pasillo.
2. Se corre el algoritmo de Floyd-Warshall (mencionado más adelante en la sección 9.2.1) para obtener los costos (medidos en función de distancia) entre cada par de pasillos con el layout actual, y se almacena están estos costos como la primera matriz de adyacencia.
3. Se habilita una primera ruta posible (entre el primer par de nodos potenciales, esto es, entre los nodos 11 – 67), y se vuelve a correr el algoritmo de Floyd-Warshall. Se almacena esta segunda matriz de adyacencia.
4. Se deshabilita la ruta habilitada en el paso anterior, y se habilita una segunda ruta posible (entre el segundo par de nodos potenciales, esto es, entre los nodos 15 – 66). Se corre el algoritmo de Floyd-Warshall y se almacena la tercera matriz de adyacencia.
5. Este proceso se realiza 8 veces, hasta tener un total de 8 matrices de adyacencia.
6. Para la elaboración de las alternativas, se crea un vector binario de 8 posiciones, en donde cada posición del vector corresponde a una posible ruta para habilitar. Si el valor de la posición del vector[i] es 1, quiere decir que se habilita la ruta. Si el valor de la posición del vector[i] es 0, quiere decir que no se habilita esa ruta. La generación de alternativas, ó en este caso, de posibles valores de “1” en el vector se hace de tal forma que la suma de los valores del vector nunca sea mayor que 5, debido a que 5 es el número máximo de rutas que se pueden habilitar.
7. Luego se compara cada celdaij de la matriz 1 con la matriz 2, en el caso que se esté evaluando la habilitación de la nueva ruta 1 y 2. Para obtener una matriz de adyacencia resultante, se crea una nueva matriz con los menores valores de cada celdaij, Este proceso se repite en cada iteración, para las
combinaciones de k | k < 6 rutas a habilitar. Después de evaluar todas las alternativas, se tendrán 218 matrices de adyacencia.
8. La matriz de adyacencia que tiene menor costo va a ser la que tenga los menores valores en la matriz, de manera que al recorrer la muestra, estos costos penalicen lo menor posible. Esto se traduce en la combinación de rutas habilitadas que más ahorro genere, y las rutas a habilitar serán aquellas cuya posición en el vector tengan el valor igual a 1. De esta manera se generan y se evalúan cada una de las posibilidades.
Para la modelación en Arena de la solución a la cual se llegó con el modelo en C++, se hizo lo siguiente:
1. Se planteó el esquema gráfico del modelo, utilizando el layout real del A.C.D.R. De esta forma se pudo obtener una animación del modelo, de tal forma que al ejecutar el modelo, se pudiera tener una idea visual de los movimientos realizados por los operarios.
2. El modelo lógico comienza con la creación de las entidades, en este caso los pedidos, reflejados en bonos.
3. Después de tener las entidades creadas, el modelo asigna mediante probabilidad la dirección que debe recorrer el pedido para completarse. Las posibles trayectorias que puede tomar se listan a continuación:
a. Origen Zona 1 Fin
b. Origen Zona 1 Zona 2 Fin
c. Origen Zona 1 Zona 2 Zona 3 Fin
d. Origen Zona 2 Fin
e. Origen Zona 2 Zona 3 Fin
f. Origen Zona 3 Fin
La probabilidad de asignación se obtuvo a partir de la muestra, contabilizando las veces que cada tipo de trayectoria se presentaba.
4. Cuando cada entidad llega al nodo ubicado físicamente en la mitad de la zona destino, entra a un proceso de tipo delay, que corresponde al tiempo que se demora un operario haciendo el picking en el ciclo, en la zona en cuestión. Los tiempos de picking por zona, se obtuvieron a partir de la muestra, y gracias la ejecución del Input Analyzer de Arena, se obtuvieron las expresiones matemáticas que sirven como insumo para definir los tiempos de ejecución.
5. Para validar el modelo, de manera que se tenga seguridad de que se refleja el proceso real, se requiere ejecutar el modelo un número mínimo de veces, lo cual se traduce en el número de réplicas requeridas para la ejecución del modelo. Para esto se utilizó el tamaño de muestra ya obtenido, n=200 días.
8.2 Incrementar el volumen del coche
Incrementar el volumen del coche fue la otra opción que se estudió, mediante el aumento de la capacidad de carga del mismo, de manera que pueda incrementar su capacidad de carga en un 50%. Esto se logra construyendo un nuevo coche con dimensiones mayores a las actuales (en el Capítulo 11 se explican con más detalle las dimensiones). Para la cuantificación del ahorro, se utilizó el mismo modelo planteado en C++, pero con la diferencia que no se recorre el almacén hasta tener 24 referencias, sino hasta tener 36 referencias.