SEUDOCÓDIGO CHALLENGE If el pedido no se ha completado en esa ruta then
JUAN FERNANDO CASTRO, MAYRA GARCIA
OPTIMIZACIÓN DE OPERACIONES Call imprimir ruta
SEUDOCÓDIGO ALGORITMO PROPIO End if
Loop while contador<contador de sku de cada pedido
Sub ContarSku() Contar cantidad de sku que tiene cada pedido Ruta(j+1)= -1 Calcular distancias e imprimir ruta Sub AsignarSku() Asignar Sku en cada rack y solt con base en el sub Sub buscarRacks () OrdenarSku Buscar sku del pedido en el rack que se ubico y su Sub AsignarRuta() posición en el slot
For i=1 to numPedidos Sub VMC(partida, pedido, rack)
Contador=0, caja=0 For i=1 to CantidadSku(pedido) Do caja = caja + 1 Cond1=distancias(partida,datosPedido(i).rack)<min Cond2=datospedido(i).visitados=false if el pedido requiere más cajas then Cond3=volumencaja+datosPedido(i).volumen<=1 ruta(1)=nodo en el que se dejo la anterior caja else If cond1 & cond2 & cond3 then ruta(1)= -1 Min= distancias(partida,datosPedido(i).rack) inicio=-1 VMC=i, rack=datosPedido(i).rack end if Sub VMCbandaTransportadora (partida,índice) for j=2 to 1550 For i=1 to 3 siguiente=VMC(inicio,pedido,rack) If distancias(partida,i)<min then if siguiente<>0 then Min= distancias(partida,i) ruta(j)=datosPedido(siguiente).posicion VMC=i Se calculan distancias y actualiza volumen de la caja y Índice=i poner verdadero al sku atendido en el pedido Contador=contador+1 SEUDOCÓDIGO ALGORITMO GENETICO Inicio=rack Ultimorack=siguiente Sub principalGenetico
Else Llama a la subrutina que genera la población, llama
subrutina que asigna FO y FA de cada población. Ruta(j)=VMCbandaTransportadora(rack,índice) Llama subrutina que genera hijos y subrutina que realiza Calcular distancias la mutación de los mismos; Actualiza la población con Dejar punto en banda transportadora donde se dejo la los hijos pero cambia al peor hijo por el mejor papá. caja Sub GenerarPoblación End if Next j Genera una población de manera aleatoria Function generarCromosoma
Genera un orden aleatorio en nuestro vector orden de los
skus, comparando que el mismo no haya sido asignado anteriormente
Function assignId
Asigna un id a los cromosomas
Sub AsignarFOFAyProb
Calcula la función objetivo de cada cromosoma y su
función de adaptabilidad, así cómo la probabilidad de que sea padre
Sub GenerarHijos
Asigna 2 papás distintos y llama a la subrutina de cruce
Sub cruce
Esta subrutina recibe la información de los dos papás,
realiza corte de información para entregarla al hijo de papá uno y la transfiere igual, de papá 2 recibe los valores faltantes en orden
Sub mutación
En caso de que el hijo se encuentre dentro de la
probabilidad de mutar, invierte 2 valores del vector