solución al problema de asignación y atención de
TRANSCRIPT
Solución al problema de asignación y atención de
requerimientos tecnológicos para la empresa VGG
Aplicaciones S.A.S, usando un modelo de asignación de
tareas.
Roosvell Camilo Velandia
VGG Aplicaciones
Resumen
La empresa VGG Aplicaciones S.A.S. presta servicios de tecnología, para esto precisa de la
asignación de los requerimientos solicitados por el usuario, a distintos ingenieros
especializados capaces de llevar a cabo la labor requerida. El problema de asignación de
tareas a una fuerza de trabajo con distintas habilidades, ha sido objeto de investigación por
la comunidad académica e industrial desde mediados del siglo pasado. Esto se debe a su alta
complejidad matemática y computacional, y a su amplio espectro de aplicación en áreas
como: ciencias de la computación, telecomunicaciones, logística y transporte. Debido a su
dificultad, los métodos de solución exactos no han presentado un comportamiento adecuado
en casos prácticos. En ese orden de ideas, en este trabajo se presenta un algoritmo
aproximado, inspirado en el comportamiento de las colonias de hormigas (ACO), para
resolver el problema de asignación de trabajos a máquinas paralelas no relacionadas, con
tiempos de preparación dependientes de la secuencia, buscando minimizar el tiempo total de
completación de las tareas (Cmax). El ACO propuesto mantiene la estructura básica y es de
fácil implementación, por lo que se puede extender a la resolución de otros problemas de
scheduling. El algoritmo propone establecer un umbral para el mejoramiento de las hormigas
(soluciones), por lo que a la fase de mejora solo son seleccionadas las hormigas
prometedoras. Esto logra reducir el esfuerzo computacional realizado por los operadores de
la búsqueda local. Para validar la metodología propuesta se utilizaron el conjunto de
instancias de prueba disponibles en la literatura. Además de esto, se compararon los
resultados obtenidos por el algoritmo propuesto contra los mejores trabajos previos
publicados. El ACO logra mejorar el 30% de las mejores soluciones conocidas (Best known
solutions) y alcanzar el 30% de los BKS. Sumado a esto, los resultados muestran que el
comportamiento promedio del ACO supera al desempeño promedio del mejor trabajo previo
publicado. Por otro lado, el algoritmo desarrollado fue incorporado a un sistema de apoyo a
la decisión para resolver el problema de asignación de VGG aplicaciones, el cual está en fase
de prueba. Como trabajo futuro se propone adaptar el ACO a otras variantes del problema,
por ejemplo a los de minimización de la tardanza. Además de esto, se propone mejorar el
ajuste de los parámetros del ACO de forma reactiva, es decir, que dependan de la información
obtenida durante el proceso de optimización.
Palabras clave: Ant Colony Optimization, Multi-skill workforce scheduling, Unrelated
Parallel Machine Scheduling Problem
1. INTRODUCCIÓN
La programación del personal, o rostering, es el proceso de construir horarios de trabajo para
sus empleados, para que una organización pueda satisfacer la demanda de sus bienes o
servicios (Ernst et al., 2004). Específicamente el problema de VGG Aplicaciones S.A.S
consiste en asignar trabajos a personal calificado buscando minimizar el tiempo total
requerido para satisfacer los servicios requeridos, garantizando que cada requerimiento sea
asignado a personal adecuado para llevarlo a cabo. Esta variante del rostering se conoce
formalmente en la literatura como Multi-skill workforce scheduling (Firat & Jurkens, 2012).
El cual se define como un conjunto de tareas a programar a un grupo de técnicos para un
horizonte de tiempo dado. Durante el tiempo de planeación la programación busca reducir el
tiempo máximo de finalización de todas las tareas (conocido formalmente en la literatura
como Cmax o Makespan). VGG Aplicaciones es una empresa de servicios tecnológicos,
donde la oportuna asignación de requerimientos es la base para mantener un nivel de servicio
adecuado. Actualmente, se han presentado casos de demoras por parte de los funcionarios en
la entrega de respuestas a las solicitudes recibidas, lo cual tiene un impacto negativo en la
calidad del servicio e imagen corporativa de la organización. Por lo tanto, en este trabajo se
propone una alternativa al proceso de asignación, que puede contribuir a las labores del
equipo de trabajo en lo que concierne a reducir tiempo de entrega de las solicitudes y por
ende los costos de operación de la empresa. Para esto, VGG ha desarrollado una clasificación
de cada trabajador según sus capacidades y experiencia, como también una categorización
de los requerimientos según su grado de complejidad. De esta forma, se busca garantizar que
las solicitudes no sean asignadas a trabajadores no calificados para dicha labor, causal de
reprocesos en la empresa.
Una variación de la familia de problemas Multi-skill workforce scheduling, consiste en la
asignación de trabajos a máquinas paralelas no relacionadas con tiempos de configuración
dependientes de la secuencia, en inglés Unrelated Parallel Machine Scheduling problem with
Sequence Dependent Setup Times (Cheng & Sin, 1990). Este problema ha sido demostrado
como NP-hard en (Pinedo, 2016), de acuerdo con la teoría de complejidad computacional.
En el campo de la optimización este ha sido resuelto mediante técnicas exactas o
aproximadas. Los métodos exactos tienen la cualidad de encontrar la mejor solución posible,
pero normalmente incurren en altos tiempos de cómputo (incluso para problemas de pequeño
porte) y además de esto, el uso de optimizadores comerciales para soluciones privadas
implica asumir altos costos de licenciamiento. Por otro lado, los métodos aproximados a
pesar de no garantizar la solución óptima de nuestro problema de optimización, permiten
encontrar soluciones eficientes en cortos tiempos de cómputo.
En las primeras investigaciones reportadas para la resolución de este problema mediante
métodos exactos, la filosofía de los algoritmos implementados era dar prioridad a trabajos
independientes (Moodie & Roberts, 1967) y posteriormente se adicionó el concepto de orden
parcial preferente para las unidades de trabajo a asignar (Muntz & Coffman, 1969).
Adicionalmente, algunas investigaciones han sido conducidas a la teoría de grafos
(Allahverdi et al., 1999). Los resultados obtenidos en los trabajos anteriormente mencionados
concluyen ser poco eficientes, dado la complejidad computacional de los algoritmos
propuestos. Por lo que, en la comunidad científica también se han planteado modelos de
optimización de tipo aproximados, heurísticas, metaheurísticas y algoritmos híbridos.
Existe un gran número de métodos aproximados exitosos en sus aplicaciones. En especial,
para los problemas de programación de personal, se han propuesto algoritmos
metaheurísticos de trayectoria como: el recocido simulado propuesto por (Kim et al., 2002),
el algoritmo de búsqueda en vecindario variable de (De Paula et al., 2007) y la búsqueda
tabú presentada por (Armentano & Yamashita, 2000). Sin embargo, en la última década ha
habido un auge de los algoritmos evolutivos como el propuesto por (Joo & Kim, 2015), el
cual consiste en un algoritmo genético con tres reglas de despacho (tiempo procesado, tiempo
total en máquina y secuencia de tarea). También se puede incluir en esta clasificación el
algoritmo Artificial Immune System propuesto por (Afzalirad & Rezaeian, 2018), basado en
el comportamiento del sistema inmune que está expuesto a bacterias o patógenos. En
consecuencia, en la última década aparecen también algoritmos híbridos que combinan las
técnicas de trayectoria con el manejo de poblaciones de solución en un mismo algoritmo;
cómo se puede observar en el trabajo de (Abreu & Prata, 2018), cuyo método de solución
combina el recocido simulado con un algoritmo genético, que utiliza tres tipos de operadores
genéticos (OX order Crossover, PMX Partially Matched Crossover y CX Cycle crossover).
En este trabajo se propone un algoritmo evolutivo de colonia de hormigas (ACO) cuya lógica
consiste en generar soluciones factibles aleatorias para el problema en cuestión (hormigas);
Cada hormiga deja un rastro artificial (feromonas) de las características positivas que
conforman esta solución, la cual se utiliza para la creación de siguientes generaciones
(Dorigo & Stützle, 2014). Para validar el comportamiento del algoritmo propuesto, se
comparará su desempeño con respecto a los mejores trabajos previos publicados en la
literatura especializada. Por último, se proveerá una herramienta a medida para la empresa
VGG aplicaciones y también como código abierto de apoyo para investigaciones posteriores
de la comunidad académica y público general.
En lo que resta del documento en la (Sección 2) se detalla una descripción general y formal
del problema. En la Sección 3 se ilustra la técnica utilizada y como se adapta para
proporcionar el algoritmo propuesto. La Sección 4 presenta el diseño de experimentos y los
resultados computacionales de la aplicación desarrollada, así como su correspondiente
análisis. Finalmente, en la Sección 5 se exponen las conclusiones y trabajos futuros fruto de
esta investigación.
2. DESCRIPCION DEL PROBLEMA
La empresa VGG Aplicaciones es una organización española desarrolladora de software
especializado en Logística de almacenamiento. Los requerimientos de los usuarios por fallas
o modificaciones de la aplicación, tienen diferentes niveles de complejidad técnica. Como se
ve en la Tabla 1.
Nivel de requerimientos Descripción
A Instalación y desarrollos a medida
B Configuración de lógica y puesta en marcha de operativas
C Diseño de reportes (Excel, PDF, Archivo plano)
D Funcionalidades básicas del programa
Tabla 1. Tipos de requerimientos. Fuente (VGG Aplicaciones).
Así mismo, el departamento de soporte cuenta con cuatro ingenieros dedicados a la atención
y solución de requerimientos. Ahora bien, la categorización de la capacidad de los ingenieros
para resolver las solicitudes de cada nivel, estará dada por los años de experiencia en el
manejo de las aplicaciones como se muestra en la Tabla 2.
Nivel Cantidad Años experiencia Nivel de requerimientos
1 1 2 años o más A y B
2 2 entre 1 y 2 años B, C, D
3 1 menos de un año C, D Tabla 2. Clasificación de ingenieros. Fuente (VGG Aplicaciones).
En el Gráfico 1 se presenta el diagrama de flujo de trabajo actual a seguir para la atención de
solicitudes entrantes. Donde en primera instancia, el ingeniero de Nivel 1 debe caracterizar
el requerimiento en (A, B, C o D). Para hacerlo debe tener en cuenta la información
consignada en la Tabla 1, y definir qué tipo de solicitud ha ingresado. Posteriormente, debe
tener en cuenta los criterios señalados en la Tabla 2 para asignar la tarea a algún integrante
del equipo de trabajo. Para esto, analiza los siguientes factores: (el tipo de requerimiento, la
disponibilidad y la experiencia del personal). Finalmente, se debe verificar el estado de la
solución previamente a la respuesta que se da al cliente.
Hoy en día, el ingeniero nivel 1 en calidad de jefe de soporte realiza la asignación de tareas
manualmente, ya que no se cuenta con el apoyo de un software gestor de requerimientos
tecnológicos cuya naturaleza hace que sean difíciles a la hora de administrar. Lo cual implica
que, en organizaciones de servicios tecnológicos, los directores destinen por lo menos un día
de la semana para la programación de actividades de su equipo de trabajo (E. Bechtol, M.
Brusco, 1994). Por lo tanto, el nivel de servicio se ve afectado cuando no realiza
oportunamente la labor de asignación.
Debido a que la atención de las solicitudes por parte del departamento de soporte de VGG
Aplicaciones es de manera remota. Los medios de comunicación utilizados por los clientes
son (correo electrónico, Skype, llamada telefónica, WhatsApp o verbalmente). En el último
trimestre, se realizó un estudio del comportamiento de llegada de requerimientos
tecnológicos discriminado por medio de comunicación. Los resultados obtenidos se ilustran
en el Gráfico 2 (para una muestra de 66 observaciones de un día aleatorio de la semana).
Gráfico 1: diagrama de flujo de asignación de
tareas. Fuente (VGG Aplicaciones).
Gráfico 2: Cantidad de requerimientos último
trimestre.
De esta forma, la asignación de solicitudes a ingenieros (equipo de soporte) se puede modelar
como un problema de asignación de tareas a máquinas, con el objetivo de minimizar el
tiempo total de completación de las tareas. En especial, los ingenieros se interpretan como
máquinas que trabajan en paralelo, donde el tiempo requerido para terminar la misma tarea
puede variar entre ellas, lo cual en la literatura se conoce como máquinas paralelas no
relacionadas. Por otro lado, las solicitudes pueden modelarse como las tareas a realizarse de
manera secuencial en las máquinas, donde sus tiempos de preparación dependen de la
secuencia en que se realizan, esto se conoce en la literatura como Sequence-Dependent Setup
Time. Es así entonces que el problema de VGG encaja en la definición del Unrelated Parallel
Machine Scheduling problem with Sequence Dependent Setup Times (UPMSPST).
J1 J2 J3 J4 J5 J6 J7 J8 J9 J10
Máquina1 7 19 14 11 8 12 5 18 8 12
Máquina2 9 9 20 5 8 20 18 16 14 16 Tabla 3. Ejemplo de tiempos de duración de las tareas en horas, para diez tareas en dos máquinas.
Fuente (L.R. Abreu y B.A. Prata).
Para ilustrar el UPMSPST, se utiliza la información en la Tabla 3, donde se tienen los tiempos
requeridos para completar diez tareas, con disponibilidad de dos máquinas. Esta matriz de
tiempos, la llamaremos M. Donde Mij es el tiempo de procesamiento de la tarea j en la
máquina i. Adicionalmente, se cuenta con una tabla de tiempos de preparación (setup times)
que indica el tiempo que debe trascurrir entre la ejecución de dos tareas secuenciales. Un
ejemplo de los datos de tiempo de preparación entre las diez diferentes tareas se ilustra en la
Tabla 4. Dado que el objetivo consiste en encontrar la asignación de tareas a máquinas, que
minimice el tiempo total de completación, una solución ejemplo de este problema puede ser
asignar a la Máquina 1 las tareas 1, 7, 9, 3, y a la Máquina 2 las tareas restantes (tareas 4, 5,
2, 10, 6 y 8), como se ilustra en la Gráfica 3, alcanzando así un tiempo total de completación
de 94 horas.
0
20
diciembre enero febrero
Nu
mer
o d
e re
qu
erim
ien
tos
mes
Cantidad de requerimientos por cada medio
correo skype llamada whatsapp/verbal
J1 J2 J3 J4 J5 J6 J7 J8 J9 J10
J1 0 9 15 7 5 1 9 1 9 1
J2 9 0 9 11 1 0 13 1 3 4
J3 15 9 0 2 0 5 15 13 12 2
J4 7 11 2 0 5 9 8 7 14 13
J5 5 1 0 5 0 2 15 11 4 9
J6 1 0 5 9 2 0 14 9 0 1
J7 9 13 15 8 15 14 0 0 15 13
J8 1 1 13 7 11 9 0 0 8 6
J9 9 3 12 14 4 0 15 8 0 10
J10 1 4 2 13 9 1 13 6 10 0 Tabla 4. Ejemplo de tiempos de preparación entre tareas en horas.
Fuente (Abreu & Prata, 2018).
Gráfico 3: Solución del problema de asignación de máquinas paralelas con tiempos de preparación.
Fuente (Abreu & Prata, 2018).
3. METODOLOGÍA DE SOLUCIÓN
El algoritmo de colonia de hormigas (Ant Colony Optimization, ACO) fue propuesto en la
tesis de doctorado de (Dorigo, 1992), inspirado en el rastro de feromona que dejan ciertas
especies de hormigas y la influencia que tienen en el posterior comportamiento de la
comunidad. Como aplicación para solucionar problemas de optimización, en los primeros
artículos se abordó el problema de cartero viajante (Reinelt, 1994). A pesar de los resultados
prometedores, sus resultados no fueron competitivos con respecto a los algoritmos existentes
en ese momento. Sin embargo, debido a su buen rendimiento a nivel computacional inspiró
a nuevas investigaciones de este tipo. Tanto es así, que en la actualidad se ha implementado
en la solución de distintos problemas como: orden secuencial (Gambardella & Dorigo, 2000),
scheduling (Blum, 2005), balanceo de la línea de montaje (Blum, 2008), TSP probabilístico
(Balaprakash et al., 2009), plegamiento de proteínas 2D-HP (Shmygelska & Hoos, 2005),
secuenciación de ADN (Blum et al., 2008), acoplamiento de proteína-ligando (Korb et al.,
2007) y enrutamiento de paquetes conmutados en redes similares a Internet (Caro & Dorigo,
1998). La lógica del ACO consiste en generar soluciones factibles (hormigas) de forma
aleatoria, basado en las características históricas de la población. Para esto cada hormiga debe
dejar un rastro artificial (feromonas).
Procedimiento 1. ACO algorithm for combinatorial optimization problems
1
2
3
4
5
6
7
initialization
While Termination_condition is not met
ConstructAntSolutions
ApplyLocalSearch *Optional
UpdatePheromones
End while
End ACO algorithm for combinatorial optimization problems Gráfico 4: Estructura general algoritmo ACO (M. Gendreau, J.Y. Potvin Handbook of metaheuristics)
La filosofía que persigue este trabajo busca mantener la estructura sencilla del ACO (ver
Procedimiento 1), incorporando operadores afines a la estructura matemática y
computacional del problema. Para esto, utilizando los conceptos básicos del algoritmo ACO,
se realiza una construcción aleatoria de soluciones, las cuales pueden ser mejoradas si pasan
un filtro establecido. La idea de filtrar las hormigas creadas consiste en mantener un
equilibrio en los costos computacionales, de forma tal que, no se busque mejorar hormigas
construidas de muy mala calidad y a la vez garantizar el refinamiento de hormigas
promisorias.
Algortimo 1. ACO propuesto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Establish_Parameters(#hormigas,#generaciones,Alpha,Betha, Umbral)
Pheromones = TiemposProceso
For i = 0 to #generaciones
Population = ConstructionAntSolutions(Pheromones, #hormigas)
For each Ant in Population
If FO(Ant) is in Umbral Then
While Improvement
For j in Jobs
For l in Jobs
Savings.add(Estimar_Swap(Ant,j,l))
Savings.add(Estimar_ Insertion (Ant,j,l))
Improvement = Applyoperators(Savings, Ant)
End While
UpdateIncumbent(Ant)
End If
End For
Updatepheromones(Pheromones)
End For
Return Incumbent
El pseudocódigo del ACO propuesto se presenta en el Algoritmo 1. En este se detalla los
pasos principales de la metodología, la cual busca no ser un algoritmo muy a la medida que
no pueda ser adaptable fácilmente a otras versiones del problema de asignación de personal.
El algoritmo comienza con el establecimiento de los parámetros de la metaheurística, el cual
consta del número de hormigas, el número de generaciones a simular, los valores de Alpha y
Betha (intrínsecos del ACO), y el valor umbral para el filtrado de hormigas (ver Línea 1 del
Algoritmo 1). Seguido de esto, se inicializa la matriz de feromonas (Pheromones) con los
valores de los tiempos de procesamiento de las tareas requeridas en las máquinas disponibles
y los tiempos de configuración entre tareas (ver Línea 2). Luego, se ingresa al esquema
iterativo del algoritmo, el cual consiste en generar las hormigas basado en la matriz de
feromonas y la cantidad a generar (ver Línea 4) e intentar mejorarlas a través de una búsqueda
local definida por los operadores de troca e inserción (ver Líneas 5 al 16). Posteriormente, se
actualizan los valores de la incumbente (mejor hormiga alcanzada durante el proceso de
búsqueda) y la matriz de feromonas (Incumbent y Pheromones, en las Líneas 14 y 17,
respectivamente).
La fase de construcción en primer lugar establece el primer trabajo de manera aleatoria (ver
Línea 1 del Algoritmo 2), y se asigna a la máquina con el menor tiempo total (ver Líneas 2 y
3). Posteriormente, siempre y cuando existen trabajos aún sin ser asignados, se calculan las
probabilidades de asignación de trabajo a la máquina, con base en la Ecuación 1, únicamente
a los trabajos no asignados con base en las feromonas artificiales (ver Líneas 3 y 4). Por
último, se utiliza el criterio de asignar los trabajos a la máquina con menor tiempo total de
procesamiento (ver Líneas 6 y 7).
Algortimo 2. ConstructAntSolutions
1
2
3
4
5
6
7
8
Random = random_between (1, jobs)
Best_machine = best_machine (machines, Random)
First_job = assign (Best_machine, random)
While job is not assigned
Probability = ecuacion1 (job,pheromones) (1)
Best_machine = best_machine (machines, jobs)
Next_job = assign (Best_machine, Probability)
End while
𝑝(𝑐𝑖𝑗|𝑠𝑝) =
𝜋𝑖𝑗𝛼 [𝑛(𝑐𝑖
𝑗)]
𝛽
∑ 𝑐𝑖𝑙 ∈ 𝑁(𝑠𝑝)𝜋𝑖𝑙
𝛼 ∗ [𝑛(𝑐𝑖𝑙)]
𝛽, ∀ 𝑐𝑖
𝑗 ∈ 𝑁(𝑠𝑝) (𝟏)
(1)
La Ecuación 1 tiene vital importancia en el algoritmo ACO, ya que es la encargada de asignar
una probabilidad a los trabajos no asignados con base en el tiempo de ejecución del trabajo
y la información disponible de las feromonas. Por tal razón, es importante explicar esta
igualdad en detalle, donde se tiene 𝜂 como una función que asigna a cada componente factible
de una solución un valor probabilístico, comúnmente denominado información heurística.
los parámetros Alpha y Betha, respectivamente determinan la influencia de la información
heurística en el algoritmo. En ese orden de ideas, si α = 0 las probabilidades serán
proporcionales a las unidades de tiempo de cada trabajo y así el comportamiento del
algoritmo sería el de un GRASP. Mientras tanto, si β = 0 el cálculo de las probabilidades
únicamente tendrá en cuenta la información heurística recolectada de la población.
Por otro lado, cada hormiga puede ser modificada (mejorada) dependiendo si su función
objetivo se encuentra dentro del umbral (Umbral) establecido. En caso de ser una solución
prometedora, se estimarán dos tipos de operadores con el fin de aplicar la transición que
consiga el mayor ahorro en tiempo. Por lo que se estimarán el operador de troca (swap) y el
operador de inserción.
El operador swap consiste en la sustitución de un trabajo i a realizarse en la máquina k, por
un trabajo j a realizarse en la máquina l. Cabe resaltar que, pueden ser trabajos para realizarse
en la misma máquina (intra-maquina) cuando k=l. Así mismo, pueden ser trabajos asignados
a diferentes máquinas (Inter-maquina) cuando k ≠ l. A continuación, se ilustran detalles de
cómo son tratados.
Intra-máquina: en el Gráfico 5, se tiene el trabajo i = 1 a realizarse en la máquina k y el
trabajo j = 8 a realizarse en la máquina l, donde l = k. Entonces el operador transforma la
máquina k.
Máquina k antes de Swap intra-máquina
1 2 3 4 5 6 7 8 9 10
Máquina k después de Swap intra-máquina
8 2 3 4 5 6 7 1 9 10 Gráfico 5. Operador SWAP intra-máquina.
Inter-máquina: en el Gráfico 6, se tiene el trabajo i = 1 a realizarse en la máquina k y el
trabajo j = 18 a realizarse en la máquina l, donde k ≠ l. Entonces el operador transforma las
máquinas k y l.
Máquina K antes de Swap inter-máquinas
1 2 3 4 5 6 7 8 9 10
Máquina L antes de Swap inter-máquinas
11 12 13 14 15 16 17 18 19 20
Máquina K después de Swap inter-máquinas
18 2 3 4 5 6 7 8 9 10
Máquina L después de Swap inter-máquinas
11 12 13 14 15 16 17 1 19 20 Gráfico 6. Operador SWAP Inter-máquina.
Por último, el operador de inserción consiste en insertar un trabajo i a realizarse en la máquina
k, en la cadena de trabajos a realizarse en la máquina l. Como una ilustración de inserción,
se tiene el trabajo i = 1 a insertarse en la máquina l donde k ≠ l. Para este caso en particular,
la inserción del trabajo i = 1 se hará en la primera posición de la cadena formada por los
trabajos a realizarse en la máquina l. En ese orden de ideas, el operador inserción transforma
las máquinas k y l como se muestra en el Gráfico 7.
Cabe resaltar que el algoritmo está programado para analizar todas las posibles posiciones en
la cadena de trabajos l realizando una búsqueda exhaustiva hasta encontrar las mejores de las
transiciones (trocas o inserciones). Las cuales son realizadas de forma ordenada aplicando
primero las mejores, hasta que todas las máquinas hayan sido alteradas o no queden mejoras
encontradas en el proceso.
Máquina K antes de Inserción
1 2 3 4 5 6 7 8 9 10
Máquina L antes de Inserción
11 12 13 14 15 16 17 18 19 20
Máquina K después de Inserción
2 3 4 5 6 7 8 9 10
Máquina L después de Inserción
1 11 12 13 14 15 16 17 18 19 20 Gráfico 7. Operador Inserción.
4. RESULTADOS COMPUTACIONALES
Para validar el desempeño de la metodología propuesta se utilizaron el conjunto de instancias
propuestas por (Abreu & Prata, 2018). Un total de 40 instancias que combinan problemas
con (2, 4, 8 y 12) máquinas y (10, 25, 50 y 100) trabajos. Dichas instancias se encuentran
publicadas (Abreu, 2019). Los resultados se obtuvieron luego de ejecutar el algoritmo en un
equipo con las siguientes características: Procesador Intel® Core™ i5-6200U, Memoria 4.00
Gb. Todo el algoritmo fue implementado en el lenguaje de programación C# y se ejecutó 30
veces cada instancia para encontrar los descriptores estadísticos, debido a la aleatoriedad
inmersa en el algoritmo. Los parámetros establecidos, fueron seleccionados de forma
experimental (diseño de experimentos con dos niveles para cada variable), utilizando toda la
batería de casos de prueba anteriormente descritos y los valores de los intervalos para cada
parámetro recomendado en la literatura. Los mejores parámetros obtenidos se ilustran en la
Tabla 5.
Parámetro Valor obtenido
Número de hormigas 10
Número de generaciones 10
Alpha 1
Betha 2
Umbral 0.3
Tabla 5. Parámetros óptimos obtenidos en el diseño de experimentos
En la Tabla 6 se presentan los resultados obtenidos por la metodología propuesta, con los
valores de los parámetros que obtuvieron mejor desempeño, en esta se ilustra también la
mejor solución publicada en la literatura, el algoritmo genético (AG) propuesto por (Abreu
& Prata, 2018). La información está organizada de la siguiente manera, primero se comparan
la mejor solución obtenida considerando las 30 ejecuciones del ACO propuesto versus las 10
ejecuciones del AG, ilustrando el valor de la solución, el tiempo computacional y el GAP
(diferencial porcentual entre soluciones). Seguido de esto, se compara el comportamiento
promedio de ambas metodologías, ilustrando el valor promedio de las soluciones y su GAP.
Por último, se muestran los intervalos de confianza del algoritmo propuesto para ilustrar el
comportamiento del valor de la solución alcanzada para la muestra de 30 ejecuciones. Los
encabezados de las columnas de la Tabla 6 se formalizan a continuación.
1- ID: Nombre de la instancia.
2- MEJOR ACO: Mejor resultado encontrado después de 30 ejecuciones realizadas
con el algoritmo de colonia de hormigas.
3- MEJOR AG: Mejor resultado reportado por (Abreu & Prata, 2018).
4- GAP MEJOR: Variación con respecto a lo reportado por (Abreu & Prata, 2018).
Obtenido de la siguiente manera: (𝐌𝐄𝐉𝐎𝐑 𝐀𝐆− 𝐌𝐄𝐉𝐎𝐑 𝐀𝐂𝐎 )
𝐌𝐄𝐉𝐎𝐑 𝐀𝐆∗ 100%
5- TIEMPO ACO: Promedio de tiempo de ejecución de los resultados encontrados
después de 30 ejecuciones realizadas con el algoritmo de colonia de hormigas.
6- TIEMPO AG: Promedio de tiempo de ejecución reportado por (Abreu & Prata,
2018).
7- GAP TIEMPO: Variación con respecto a lo reportado por (Abreu & Prata, 2018).
Obtenido de la siguiente manera: (𝐀𝐆 𝐓𝐈𝐄𝐌𝐏𝐎− 𝐀𝐂𝐎 𝐓𝐈𝐄𝐌𝐏𝐎 )
𝐀𝐆 𝐓𝐈𝐄𝐌𝐏𝐎∗ 100%
8- PROMEDIO ACO: Promedio de los resultados encontrados después de 10
ejecuciones realizadas con el algoritmo de colonia de hormigas.
9- PROMEDIO AG: Promedio reportado por (Abreu & Prata, 2018).
10- GAP PROMEDIO: Variación con respecto a lo reportado por (Abreu & Prata,
2018). Obtenido de la siguiente manera: (𝐀𝐆 𝐏𝐑𝐎𝐌𝐄𝐃𝐈𝐎− 𝐀𝐂𝐎 𝐏𝐑𝐎𝐌𝐄𝐃𝐈𝐎 )
𝐀𝐆 𝐏𝐑𝐎𝐌𝐄𝐃𝐈𝐎∗ 100%
11- IC -: Representa el límite inferior de las ejecuciones del algoritmo ACO Con un
intervalo de confianza del 95%.
12- IC +: Representa el límite superior de las ejecuciones del algoritmo ACO Con un
intervalo de confianza del 95%.
Tabla 6. Resultados obtenidos para el conjunto de instancias de la literatura y comparación el mejor trabajo previo
ID MEJOR
ACO
MEJOR
AG
GAP
MEJOR
(%)
TIEMPO
ACO
TIEMPO
AG
GAP
TIEMPO
(%)
PROMEDIO
ACO
PROMEDIO
AG
GAP
PROMEDIO
(%)
IC - IC +
MP-10x01 62 62 0,00 0,10 3,53 -97,06 62,63 89 -29,63 61,14 63,13
MP-10x02 72 72 0,00 0,09 3,56 -97,53 72,40 106 -31,70 72,21 72,59
MP-10x03 61 61 0,00 0,04 3,54 -98,73 64,73 105 -38,35 63,18 66,29 MP-10x04 61 61 0,00 0,08 3,54 -97,83 64,27 100 -35,73 63,46 65,07
MP-10x05 68 68 0,00 0,08 3,51 -97,81 71,80 106 -32,26 70,84 72,76
MP-10x06 80 80 0,00 0,10 3,56 -97,19 81,20 120 -32,33 80,43 81,97 MP-10x07 73 73 0,00 0,64 3,53 -81,92 78,60 113 -30,44 78,03 79,17
MP-10x08 65 65 0,00 0,08 3,52 -97,70 67,20 103 -34,76 65,92 68,48 MP-10x09 59 59 0,00 0,09 3,49 -97,51 60,93 96 -36,53 59,88 61,98
MP-10x10 67 67 0,00 0,07 3,54 -97,89 71,93 108 -33,40 70,75 73,12
MP-25x01 68 68 0,00 3,50 8,07 -56,62 70,87 100 -29,13 70,13 71,6 MP-25x02 69 66 4,55 3,89 8,13 -52,11 76,00 113 -32,74 74,89 77,11
MP-25x03 73 75 -2,67 4,00 8,14 -50,80 80,97 115 -29,59 80,22 81,71
MP-25x04 73 69 5,80 3,24 8,1 -60,03 77,67 111 -30,03 76,63 78,71 MP-25x05 74 72 2,78 3,19 8,07 -60,41 80,13 116 -30,92 79,11 81,16
MP-25x06 78 73 6,85 3,86 8,14 -52,52 81,50 117 -30,34 80,66 82,32
MP-25x07 69 68 1,47 3,81 8,12 -53,05 74,70 113 -33,89 73,82 75,58 MP-25x08 74 70 5,71 3,41 8,14 -58,10 76,37 115 -33,59 75,53 77,2
MP-25x09 75 73 2,74 3,45 8,07 -57,29 81,27 119 -31,71 80,28 82,25
MP-25x10 71 72 -1,39 3,73 8,06 -53,74 77,00 116 -33,62 75,78 78,22 MP-50x01 132 125 5,60 3,54 21,17 -83,28 139,60 176 -20,68 137,16 142,04
MP-50x02 232 237 -2,11 19,27 21,4 -9,95 243,27 288 -15,53 241,46 245,07
MP-50x03 238 235 1,28 8,25 21,27 -61,21 245,33 292 -15,98 243,9 246,77 MP-50x04 238 236 0,85 25,16 21,39 17,63 248,87 290 -14,18 246,92 250,82
MP-50x05 235 231 1,73 27,07 21,27 27,29 245,80 287 -14,36 243,58 248,03
MP-50x06 230 227 1,32 17,73 21,97 -19,28 242,87 284 -14,48 240,52 245,21 MP-50x07 239 232 3,02 44,98 21,19 112,27 244,87 289 -15,27 243,23 246,5
MP-50x08 239 235 1,70 14,58 21,31 -31,59 245,57 287 -14,44 243,84 247,3
MP-50x09 237 235 0,85 9,96 21,62 -53,91 243,30 286 -14,93 241,31 245,29 MP-50x10 238 233 2,15 13,76 21,43 -35,78 245,90 288 -14,62 244,18 247,62
MP-100x01 297 306 -2,94 70,44 59,04 19,31 316,80 368 -13,91 314,21 319,39
MP-100x02 302 308 -1,95 90,24 59,11 52,67 318,80 366 -12,90 316,22 321,38 MP-100x03 308 312 -1,28 55,40 61,24 -9,53 320,77 371 -13,54 318,65 322,88
MP-100x04 307 307 0,00 84,52 58,94 43,40 318,03 369 -13,81 315,84 320,23
MP-100x05 309 319 -3,13 56,44 59 -4,34 317,90 366 -13,14 315,93 319,87 MP-100x06 299 327 -8,56 93,22 59,18 57,52 316,53 370 -14,45 313,22 319,85
MP-100x07 308 319 -3,45 83,23 58,94 41,22 315,03 368 -14,39 312,94 317,13
MP-100x08 310 329 -5,78 68,50 59,13 15,85 321,37 370 -13,14 319,78 322,95 MP-100x09 311 317 -1,89 63,97 58,92 8,57 320,80 370 -13,30 318,98 322,62
MP-100x10 305 335 -8,96 84,13 59,26 41,96 316,13 367 -13,86 314,11 318,16 TOTAL 7000 8633
PROMEDIO 0,11% 24,30 23,08 -34,68% -23,54%
Para sintetizar la información de la Tabla 6, se agrupan las instancias según el número de
máquinas disponibles (2, 4, 8 y 12). Para cada grupo se halló el promedio del porcentaje de
variación con respecto a los resultados obtenidos por (L.R. Abreu y B.A. Prata, 2018). Como
se muestra a continuación en la Tabla 7.
Número
de Máquinas
Gap
Comportamiento
Promedio (%)
Gap
Mejor Solución
Alcanzada (%)
Gap
Tiempo (%)
2 -33.51% 0.00 -96.12
4 -31.56% 2.58 -55.47
8 -15.45% 1.64 -13.78
12 -13.64% -3.79 26.66
PROMEDIO -23.54% 0.11 -34.68
Tabla 7. Resumen de las diferencias obtenidas en comparación al trabajo previo.
Para realizar un análisis conveniente del rendimiento del algoritmo propuesto, se debe
abordar desde tres puntos de vista así:
Mejor solución: Para el primer apartado se hallaron mejores soluciones para 12 instancias
de 40, nueve de ellas fueron encontradas en el conjunto de problemas de gran porte. En 12
instancias se igualó el mejor resultado reportado en la literatura, 10 de ellas pertenecientes a
las instancias pequeñas. En 26 instancias la solución construida por ACO es inferior en
comparación con lo señalado en investigaciones anteriores, con una desviación máxima del
6.85% para la instancia MP-25x06.
Tiempo de ejecución: En lo que concierne al tiempo de ejecución, en general se estima que
algoritmo propuesto e implementado es -34,68% más rápido que lo presentado por (Abreu &
Prata, 2018). Sin embargo, para el conjunto de instancias más grandes el promedio es 26.66%
más lento debido al alto costo computacional de la búsqueda exhaustiva realizada en la
ejecución de los operadores implementados en el algoritmo ACO. Ahora bien, es necesario
agregar que dadas las características técnicas de los equipos donde han sido corridos los
algoritmos, existe una ventaja del equipo utilizado en este trabajo, el cual esta categorizado
como high to mid-range con una puntuación de 4.020 y la máquina utilizada en el trabajo
con el cual se comparan los resultados, esta categorizado como low to mid-range con una
puntuación de 1,434 según (Passmark, 2019).
Valor promedio de soluciones: El principal fuerte de este algoritmo se encuentra en su
estabilidad. Lo cual queda sustentado ya que para todas las instancias el promedio encontrado
es menor a lo presentado por la literatura, en general un 23.54%. Finalmente, para mostrar
mayor evidencia de ello, se construye un intervalo de confianza al 95% para el valor
promedio de soluciones obtenidas. Donde se evidencia que inclusive el límite superior del
intervalo es menor al promedio reportado en la literatura.
La finalidad de este proyecto, es reemplazar los medios informales por el cual llegan los
requerimientos (Skype ®, WhatsApp® y verbalmente) que representan el 60% del trabajo,
por una herramienta que clasifique las solicitudes recibidas según el tipo de requerimiento y
además asigne apropiadamente el trabajo a los ingenieros. Según los criterios y restricciones
de la Tabla 1 y Tabla 2, La Gráfica 8 ilustra la modificación del flujo de trabajo a seguir para
la atención de requerimientos entrantes.
Gráfico 8: Diagrama de flujo de la solución.
La aplicación desarrollada trabaja con un almacenamiento en el motor de bases de datos SQL
Server 2014. Esta base de datos cuenta con tres tablas (Máquinas, Trabajos y Setup) las cuales
son alimentadas por el usuario directamente desde la aplicación. Dicho esto, es importante
ilustrar las tablas por aparte utilizando como ejemplo la instancia MP-25x01. Cada máquina
en el problema UPMSPST es la unidad encargada de realizar uno o más trabajos
secuencialmente. La aplicación permite al usuario agregar, modificar y eliminar máquinas
como se puede observar en el Gráfico 9.
Gráfico 9: Interfaz de usuario Máquinas.
Cada trabajo en el problema de VGG es un servicio pendiente por realizar. Se sabe que puede
variar la duración en que se termina esta labor dependiendo la máquina a la cual sea asignado.
la aplicación permitirá al usuario establecer los tiempos de ejecución en cada máquina. Así
mismo como agregar y eliminar trabajos como puede observar en Gráfico 10.
Gráfico 10: Interfaz de usuario Trabajos.
En VGG, cuando se realizan dos trabajos de manera consecutiva en la misma máquina, debe
existir un tiempo de preparación entre la ejecución de los mismos. La aplicación permitirá al
usuario establecer los tiempos de preparación entre cada trabajo, como se puede observar en
el Gráfico 11.
Gráfico 11: Interfaz de usuario Setup.
Una vez se tengan almacenados los datos de Máquinas, Trabajos y Setup la aplicación
ejecutará el ACO y para facilidad del usuario de la aplicación, el resultado será presentado
en pantalla de la siguiente manera. En la parte izquierda a manera de diagrama de Gantt
exponiendo en detalle la secuencia obtenida para cada máquina, y en la parte derecha el
tiempo computacional de ejecución del algoritmo y el makespan indicador del tiempo que
transcurre entre el inicio y finalización de las tareas según la asignación entregada por el
algoritmo. Lo anterior mencionado, se puede ver en el Gráfico 12.
Gráfico 12: Salida ACO instancia MP-25x01
5. CONCLUSIONES
Durante la exploración de las principales causas a la demora en atención de requerimientos
tecnológicos para la empresa VGG Aplicaciones S.A.S, se logró determinar que los múltiples
medios de comunicación utilizados y la mala asignación de servicios a ingenieros, complican
las labores del personal de la compañía. Además de esto, la correcta y oportuna asignación
de tareas en una empresa de servicios tecnológicos, es el punto de partida para cumplir con
las políticas de servicio al cliente. Los problemas mencionados, indicaron que se debería
hacer una intervención de este proceso en la empresa. Con este proyecto, se pudo asignar las
solicitudes a los ingenieros del equipo de soporte y formalizar el lenguaje utilizado en cada
requerimiento. Por medio de una herramienta confiable y de bajo costo que optimiza el
tiempo de completación de los servicios (requerimientos de los usuarios), lo que a vez
minimiza el tiempo perdido de los ingenieros de la compañía.
Manteniendo la filosofía básica del algoritmo de colonia de hormigas ACO, se ha logrado
implementar una solución eficiente para el problema de máquinas paralelas no relacionadas
con tiempos de preparación dependientes a la secuencia de procesamiento. Debido a la
estructura del algoritmo, se puede extender para el tratamiento de otros problemas de
scheduling modificando y suprimiendo algunas restricciones. En cuanto a la lógica
presentada, hay dos factores decisivos para el desempeño positivo de este algoritmo. El
primero de ellos es el establecimiento de un umbral para el mejoramiento de soluciones, ya
que ayuda a seleccionar las soluciones prometedoras a las cuales se les debe aplicar los
operadores en busca de mejoras, lo cual en términos computacionales tiene alto impacto en
el tiempo de ejecución. Por otro lado, el establecimiento de probabilidades con base en
información de individuos anteriormente creados, mejora la calidad de soluciones a lo largo
del tiempo y este comportamiento pseudoaleatorio permite refinar la creación,
diversificación e introducción de nuevos individuos en la población.
Como sugerencia para trabajos futuros, se podría hacer que los parámetros Alpha, Betha y
Umbral, que en este trabajo han sido establecidos mediante un diseño de experimentos, sean
dinámicos o reactivos, de forma tal que, cambien en el tiempo como respuesta a diversos
factores, como podrían ser otros parámetros del algoritmo o información obtenida en el
proceso de optimización, entre ellos el número generaciones, el tamaño de la población y el
número promedio de hormigas que pasan el filtro. Por otra parte, con el fin de diversificar
aún más la población sería conveniente crear un operador genético de mutación el cual
modifique drásticamente algunas soluciones, lo cual sería útil para agregarle algoritmo un
grado de exploración.
REFERENCIAS
Abreu, L. R., & Prata, B. A. (2018). A Hybrid Genetic Algorithm for solving the Unrelated
Parallel Machine Scheduling problem with Sequence Dependent Setup Times. IEEE
Latin America Transactions, 16(6), 1715-1722.
Abreu, L. R., (2019). Set of instances for the Unrelated Parallel Machine Scheduling problem
with Sequence Dependent Setup Times. Disponible en línea:
https://www.researchgate.net/publication/315771587_Instances_Tested. Consultado
10 de enero de 2019.
Afzalirad, M., & Rezaeian, J. (2016). Resource-constrained unrelated parallel machine
scheduling problem with sequence dependent setup times, precedence constraints and
machine eligibility restrictions. Computers & Industrial Engineering, 98, 40-52.
Allahverdi, A., Gupta, J. N., & Aldowaisan, T. (1999). A review of scheduling research
involving setup considerations. Omega, 27(2), 219-239.
Balaprakash, P., Birattari, M., Stützle, T., Yuan, Z., & Dorigo, M. (2009). Estimation-based
ant colony optimization and local search for the probabilistic traveling salesman
problem. Swarm Intelligence, 3(3), 223-242.
Blum, C. (2005). Beam-ACO—Hybridizing ant colony optimization with beam search: An
application to open shop scheduling. Computers & Operations Research, 32(6), 1565-
1591.
Blum, C. (2008). Beam-ACO for simple assembly line balancing. INFORMS Journal on
Computing, 20(4), 618-627.
Blum, C., Vallès, M. Y., & Blesa, M. J. (2008). An ant colony optimization algorithm for
DNA sequencing by hybridization. Computers & Operations Research, 35(11), 3620-
3635.
Cheng, T. C. E., & Sin, C. C. S. (1990). A state-of-the-art review of parallel-machine
scheduling research. European Journal of Operational Research, 47(3), 271-292.
De Paula, M. R., Ravetti, M. G., Mateus, G. R., & Pardalos, P. M. (2007). Solving parallel
machines scheduling problems with sequence-dependent setup times using variable
neighbourhood search. IMA Journal of Management Mathematics, 18(2), 101-115.
Di Caro, G., & Dorigo, M. (1998). AntNet: Distributed stigmergetic control for
communications networks. Journal of Artificial Intelligence Research, 9, 317-365.
Dorigo, M., & Stützle, T. (2014). The ant colony optimization metaheuristic: Algorithms,
applications, and advances. In Handbook of metaheuristics (pp. 250-285). Springer,
Boston, MA.
Dorigo, M. (1992). Optimization, learning and natural algorithms (in Italian). PhD thesis,
Dipartimento di Elettronica, Politecnico di Milano, Italy.
Ernst, A. T., Jiang, H., Krishnamoorthy, M., & Sier, D. (2004). Staff scheduling and
rostering: A review of applications, methods and models. European journal of
operational research, 153(1), 3-27.
Fırat, M., & Hurkens, C. A. J. (2012). An improved MIP-based approach for a multi-skill
workforce scheduling problem. Journal of Scheduling, 15(3), 363-380.
Gambardella, L. M., & Dorigo, M. (2000). An ant colony system hybridized with a new local
search for the sequential ordering problem. INFORMS Journal on Computing, 12(3),
237-255.
Joo, C. M., & Kim, B. S. (2015). Hybrid genetic algorithms with dispatching rules for
unrelated parallel machine scheduling with setup time and production
availability. Computers & Industrial Engineering, 85, 102-109.
Kim, D. W., Kim, K. H., Jang, W., & Chen, F. F. (2002). Unrelated parallel machine
scheduling with setup times using simulated annealing. Robotics and Computer-
Integrated Manufacturing, 18(3-4), 223-231.
Korb, O., Stützle, T., & Exner, T. E. (2007). An ant colony optimization approach to flexible
protein–ligand docking. Swarm Intelligence, 1(2), 115-134.
Moodie, C. L., & Roberts, S. D. (1967). Experiments with priority dispatching rules in a
parallel processor shop. International Journal of Production Research, 6(4), 303-312.
Muntz, R. R., & Coffman, E. G. (1969). Optimal preemptive scheduling on two-processor
systems. IEEE Transactions on Computers, 100(11), 1014-1020.
Passmark, (2019). Sitio web especializado para benchmark de computadores. Disponible en
línea: http://www.passmark.com. Consultado 20 de febrero de 2019.
Pinedo, M. (2016). Scheduling_Theory, Algorithms, and Systems. ed. 5, Editorial Springer,
Cap 5.
Reinelt, G. (1994). The traveling salesman: computational solutions for TSP applications.
Springer-Verlag.
Shmygelska, A., & Hoos, H. H. (2005). An ant colony optimisation algorithm for the 2D and
3D hydrophobic polar protein folding problem. BMC bioinformatics, 6(1), 30.
Yamashita, D. S. (2000). Tabu search for scheduling on identical parallel machines to
minimize mean tardiness. Journal of intelligent manufacturing, 11(5), 453-460.