solución al problema de asignación y atención de

18
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 [email protected] 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

Upload: others

Post on 11-Jul-2022

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Solución al problema de asignación y atención de

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

[email protected]

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

Page 2: Solución al problema de asignación y atención de

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

Page 3: Solución al problema de asignación y atención de

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.

Page 4: Solución al problema de asignación y atención de

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

Page 5: Solución al problema de asignación y atención de

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

Page 6: Solución al problema de asignación y atención de

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).

Page 7: Solución al problema de asignación y atención de

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

Page 8: Solución al problema de asignación y atención de

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

Page 9: Solución al problema de asignación y atención de

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.

Page 10: Solución al problema de asignación y atención de

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

Page 11: Solución al problema de asignación y atención de

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%.

Page 12: Solución al problema de asignación y atención de

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%

Page 13: Solución al problema de asignación y atención de

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.

Page 14: Solución al problema de asignación y atención de

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.

Page 15: Solución al problema de asignación y atención de

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.

Page 16: Solución al problema de asignación y atención de

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

Page 17: Solución al problema de asignación y atención de

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.

Page 18: Solución al problema de asignación y atención de

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.