trabajo fin de gradobibing.us.es/proyectos/abreproy/90240/fichero/tfg_francisco+domí… · 3.2.1...

74
1 Trabajo Fin de Grado Grado en Ingeniería de Tecnologías Industriales Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo Autor: Francisco José Domínguez Barbadillo Tutor: José Manuel García Sánchez Dep. Organización Industrial y Gestión de Empresas I Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2015

Upload: others

Post on 05-Sep-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

1

Trabajo Fin de Grado

Grado en Ingeniería de Tecnologías Industriales

Programación de heurísticas para minimizar

tiempos de retraso de trabajos con máquinas en

paralelo

Autor: Francisco José Domínguez Barbadillo

Tutor: José Manuel García Sánchez

Dep. Organización Industrial y Gestión de Empresas I

Escuela Técnica Superior de Ingeniería

Universidad de Sevilla

20

Sevilla, 2015

Page 2: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo

2

ÍNDICE

1. Introducción y objetivos del proyecto.

2. Scheduling.

2.1 Introducción al scheduling.

2.2 Tipos de arquitectura

2.3 Representación; diagramas de Gantt

2.4 Notación.

2.5 Restricciones de procesamiento de trabajos.

2.6 Objetivos

2.7 Caracterización de nuestro problema.

3. Heurísticas

3.1 Introducción

3.2 Apuntes de optimización

3.2.1 Tipos de resolución de un problema de optimización

3.2.2 Tipos de problemas de optimización según su complejidad

3.2.3 Tipos de problemas de optimización según las características

del modelo

3.2.4 Modelo matemático

3.3 Heurística 1

3.4 Heurística 2

3.5 Heurística 3

4. Experimentación

4.1 Introducción.

4.2 Visual Basic.

4.3 LINGO.

4.4 Generación de problemas.

4.5 Búsqueda del óptimo.

4.6 Soluciones heurísticas.

4.7 Obtención de errores.

5. Resultados

5.1 Resultados aportados por nuestras heurísticas

Page 3: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo

3

5.2 Comportamiento de las heurísticas en función del número de

trabajos

5.3 Comportamiento de las heurísticas en función del número de

máquinas

5.4 Conclusiones

6. Conclusiones finales

7. Bibliografía.

8. Anexos.

Page 4: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo

4

1. INTRODUCCIÓN Y OBJETIVOS DEL PROYECTO

Los problemas de programación de tareas (scheduling) son muy importantes en

el mundo actual. Se puede decir que se presentan en todos los fundamentos de

la industria moderna, de ahí la importancia de hallar valores óptimos o lo más

cercanos posible a éstos, de forma que se pueda ahorrar recursos que estén

asociados al problema. La programación adecuada de trabajos en procesos de

fabricación, constituye un importante problema que se plantea dentro de la

producción en muchas empresas. El orden en que estos son procesados, no

resulta indiferente, sino que determinará algún parámetro de interés, cuyos

valores convendrá optimizar en la medida de lo posible. Así podrá verse afectado

el coste total de ejecución de los trabajos, el tiempo necesario para concluirlos o

el stock de productos en curso que será generado. Esto conduce de forma directa

al problema de determinar cuál será el orden más adecuado para llevar a cabo

los trabajos con vista a optimizar algunos de los anteriores parámetros u otros

similares, como puede ser el objetivo que es objeto de nuestro estudio, ligado a

disminuir los tiempos de retraso en la entrega de los pedidos.

Page 5: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo

5

El objetivo principal de este proyecto es el análisis de algunas heurísticas para

resolver el problema de scheduling asociado a la minimización de la suma de los

tiempos de retraso en la finalización de los trabajos, en un entorno con máquinas

idénticas en paralelo. El análisis de las heurísticas pasa por el diseño, la

implementación y el estudio experimental de su comportamiento con respecto a la

solución óptima o una cota superior de la misma, así como al análisis

comparativo entre las diferentes heurísticas.

Antes de la realización de dichas heurísticas, haremos una introducción a los

problemas de scheduling de forma general y nos centraremos en el caso de

problemas de máquinas en paralelo y el problema que es objeto de nuestro

estudio (Capítulo 2). Después haremos una explicación de los conceptos de

problemas de optimización que usaremos durante el trabajo y explicaremos

nuestras heurísticas (Capítulo 3). El siguiente paso será explicar cómo se ha

llevado a cabo la experimentación (Capítulo 4). Tras esto, se mostrarán los

resultados obtenidos y las conclusiones de dicha experimentación (Capítulo 5).

Además, se explicarán todas las conclusiones del proyecto (Capítulo 6). Al final

del mismo se encuentran los anexos y la bibliografía.

Page 6: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo

6

2. Scheduling

Page 7: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo

7

2.1 INTRODUCCIÓN AL SCHEDULING.

Los problemas de secuenciación se presentan en entornos económicos

(industriales y de servicios) en el que hay que gestionar una serie de recursos

para realizar una determinada actividad, utilizando un criterio determinado.

Por su parte, el criterio a seguir puede ser tanto de minimizar una variable

determinada, o de maximizar, como puede ser maximizar los beneficios

obtenidos.

Son problemas de optimización, puesto que son problemas donde se intenta

optimizar la utilización de ese conjunto de recursos.

En la amplia mayoría de ellos el uso del modelo matemático es ineficiente,

incluso en los problemas No Complejos. Por ello, se declina el uso de esta

alternativa de resolución y únicamente se buscará para su resolución

procedimientos exactos o aproximados, según la complejidad del problema.

A partir de un determinado criterio, se trata de establecer la secuencia para el

procesamiento de una serie de trabajos sobre un conjunto de máquinas.

Existe un amplio espectro de características que pueden asociarse a los trabajos

y al modo de procesamiento en el sistema.

Un problema se determina según 3 factores:

La arquitectura del taller

Las características de los trabajos

El criterio de optimización

Page 8: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo

8

2.2 TIPOS DE ARQUITECTURA

Respecto a la arquitectura del sistema en relación con la disposición de las

máquinas, se distinguen en una primera clasificación, los sistemas con

máquinas en serie y máquinas en paralelo. En los entornos con máquinas en

serie, cada máquina realiza una operación diferente, del conjunto de

operaciones a las que se someten los trabajos. Cuando hablamos de máquinas

en paralelo, se entiende que una determinada operación sobre un trabajo puede

ser procesada sobre una cualquiera de entre un conjunto de máquinas.

-Máquinas en serie:

Los entornos de máquinas en serie se clasifican en función del modelo o

esquema de paso de los trabajos por las diferentes máquinas:

Sistemas de flujo uniforme (Flow shop): El modelo de paso es el

mismo para todos los trabajos. Todos los trabajos pasan por cada

una de las máquinas del sistema usando el mismo orden de paso por

las mismas.

Page 9: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo

9

Sistemas de tipo taller (Job shop): Cada trabajo tiene su propio

esquema de paso por las máquinas.

Sistemas de taller abierto (Open shop): El modelo de paso de

cada trabajo por las máquinas es libre.

-Máquinas en paralelo:

Respecto a los sistemas de máquinas en paralelo se distinguen tres tipos

Máquinas idénticas: El tiempo de proceso de una operación es

idéntico en cada máquina.

Máquinas uniformes: Cada máquina posee una velocidad de proceso

diferente, independiente de los trabajos.

Máquinas no relacionadas: Cada máquina posee una velocidad de

proceso diferente sobre cada trabajo.

Page 10: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo

10

Sistema Híbrido: Taller flexible

Además de los sistemas con máquinas en serie y máquinas en paralelo,

también se distingue un sistema híbrido denominado sistema de flujo

uniforme con máquinas en paralelo (Flexible Flow Shop). Un sistema

híbrido es el caso del “Taller flexible”, que cuenta con m centros o

estaciones de máquinas en serie, cada uno de ellas formado por un

conjunto de máquinas en paralelo

m centros o estaciones de máquinas en serie, cada uno de ellas formado

por un conjunto de máquinas en paralelo .

Page 11: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo

11

2.3 REPRESENTACIÓN; DIAGRAMAS DE GANTT

Un diagrama de Gantt es una representación gráfica y simultánea tanto de

planificación como de programación concreta de procesos y/o proyecto

desarrollada por Henry L. Gantt a principios del siglo XX. Mediante el uso del

diagrama de Gantt podemos representar y monitorizar el desarrollo de las

distintas actividades de un proceso y / o proyecto durante un período de tiempo,

de manera fácil y rápida.

En este tipo de diagramas se representan de forma muy clara las distintas fases

de un proceso, de manera ordenada y en forma de gráfica (barras horizontales),

permitiéndonos planificar y programar las distintas fases de un proceso.

Los diagramas de Gantt se utiliza concretamente para:

La planificación y programar las actividades a realizar en la resolución de

problemas.

La planificación y programación de tareas derivadas de procesos de

mejora.

La planificación y programación de proyectos.

La planificación y programación de planes de acción.

Básicamente el diagrama está compuesto por un eje vertical donde se

establecen las actividades que constituyen el trabajo que se va a ejecutar, y un

eje horizontal que muestra en un calendario la duración de cada una de ellas.

Para la representación de los trabajos es muy común usar el diagrama de Gantt:

Page 12: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo

12

Donde el eje vertical muestra el número de máquinas que disponemos y en el

eje horizontal se muestra el tiempo. J1 y J2 son los trabajos que tienen que

pasar por las máquinas.

2.4 NOTACIÓN

Existen varias formas de representar un problema de secuenciación. Una de de

las más usadas se describe por una tripleta / / .

El primer campo indica el entorno de las máquinas (número de máquinas y tipo

de arquitectura del sistema) . El segundo describe las características y

restricciones de procesamiento de los trabajos. Por su parte, el tercer campo

especifica el objetivo del problema.

Page 13: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo

13

Terminología para los entornos de máquinas

M = {M1, M2,.., Mj, ..., Mm}: Conjunto de m máquinas

Fm: Sistema de flujo uniforme con m máquinas en serie

Jm: Sistema de taller con m máquinas en serie

Om: Sistema de taller abierto con m máquinas en serie

Pm: m máquinas idénticas en paralelo

Qm: m máquinas uniformes en paralelo

Rm: m máquinas no relacionadas en paralelo

Sm: Sistema de flujo uniforme con m centros de máquinas en paralelo

-Terminología asociada a los trabajos

J = {J1, J2,.., Ji, .., Jn}: Conjunto de n trabajos;

pij : Tiempo de proceso del trabajo Ji en la máquina Mj. (pi para el caso de

una sola máquina)

ri : Instante de llegada de Ji al sistema. Cuando todos los trabajos están

disponibles al comienzo del procesamiento, ri = 0.

di : Fecha de entrega del trabajo Ji.

wi : Peso(coste o valor) del trabajo Ji.

Page 14: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo

14

-variables

Ci : Tiempo de finalización de Ji. Cij tiempo de Ji en Mj

Fi = Ci – ri : Tiempo de permanencia del trabajo en el sistema.

Li = Ci – di : Mide la desviación respecto a la fecha de entrega. Si Li<0

(retraso negativo), |Li| representa las unidades de adelanto.

Ti = máximo {0, Li}= máximo {0, Ci – di}: Tardanza de Ji o número de

instantes de retraso de Ji;

Ei = máximo {0, di - Ci}: Número de instantes de adelanto de Ji.

Variables booleanas para el control de los trabajos que se retrasan y adelantan:

De manera análoga, se pueden definir variables booleanas para el control de

los trabajos finalizados sin retraso ni adelanto:

1 si

0 en otro caso

i i

i

C dU

1 si

0 en otro caso

i i

i

C dV

Page 15: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo

15

2.5 RESTRICCIONES DE PROCESAMIENTO DE LOS

TRABAJOS.

En este apartado destacamos determinadas características que pueden

presentarse en el procesamiento de los trabajos:

Preemption (prmt): Rotura de trabajos. Esta característica hace

referencia a la posibilidad de abandonar el procesamiento de un

trabajo en una máquina sin haber concluido la operación, regresando

más tarde para finalizarla.

Restricciones de precedencia (pre): En algunos entornos

aparecen relaciones de precedencia obligada entre pares de

trabajos.

No-wait (No-Wait): Aparece en entornos de máquinas en serie en los

que los trabajos deben ser procesados desde su inicio en la primera

máquina, hasta su finalización en la última máquina, sin ninguna

interrupción entre máquinas.

Blocking (Block): Esta característica aparece en sistemas de

fabricación en serie en los que no están permitidos los buffers

intermedios de un cierto tamaño entre máquinas, puesto que

bloquean el funcionamiento de las mismas.

Tiempos de setup (sik): Tiempo de cambio de procesamiento

entre trabajo i y trabajo k.

2.6 OBJETIVOS

Los objetivos o criterios para la búsqueda de soluciones se pueden agrupar en

tres grandes grupos:

Page 16: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo

16

Criterios basados en tiempos de finalización de los trabajos:

Ci : Minimizar la suma de los tiempos de finalización de los trabajos.

wiCi : Minimizar el coste total asociado a la finalización de los trabajos.

El peso wi se entiende como un coste de espera o un valor añadido al

trabajo Ji.

Cmax = Max{C1,…,Cn}: Minimizar el tiempo de finalización de todos

los trabajos, también llamado longitud de la programación (makespan).

Criterios basados en fechas de entregas:

Li : Minimizar la suma de retrasos o retraso total. Equivalente a minimizar

el retraso medio. De forma análoga al grupo anterior se estudian wiLi y

Lmax.

Ti : Minimizar la tardanza total. De forma análoga se definen wiTi y

Tmax.

(Ei + Ti): Minimizar la suma de las desviaciones de los instantes de

finalización de los trabajos respecto a sus fechas de entrega di. Cuando

se establecen penaltis ui para los adelantos y vi para los retrasos de

cada trabajo, el objetivo viene a ser (uiEi + viTi).

Ui : Minimizar el número de trabajos retrasados. También se estudia la

minimización del coste de los trabajos retrasados, representado por wiUi.

(Ui + Vi) : Minimizar el número de trabajos adelantados y retrasados.

Igual que anteriormente, también se plantea el criterio wi(Ui + Vi). Este

Page 17: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo

17

objetivo es equivalente al de maximizar los trabajos terminados justo en

su fecha de entrega (on time).

Criterios basados en costes de inventario y utilización de máquinas

Ij : Minimizar el tiempo total en que están desocupadas las máquinas,

siendo Ij = Cmax - pij , y pij la suma de los tiempos de procesado de

todos los trabajos sobre la máquina Mj.

vjIj : Minimizar el tiempo ponderado de desocupación de las

máquinas, siendo vj un peso por unidad de operación.

2.7 CARACTERIZACIÓN DE NUESTRO PROBLEMA

Una vez que hemos comentado en qué consiste el scheduling, la forma de definir

los problemas y de representarlos, vamos a describir nuestro problema en

concreto, cuyo objetivo era minimizar la suma de tiempos de retraso con

máquinas en paralelo. Siguiendo la nomenclatura que hemos ido explicando,

nuestro problema sería el siguiente:

Por tanto, nuestros problemas vendrán definidos por una serie trabajos, que

tendrán como características el tiempo de proceso y la fecha de entrega, y el

número de máquinas.

Pasamos a definir el modelo matemático.

Pi / / ∑Ti

Page 18: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo

18

Actores Tipología Características

Trabajos Conjunto

i=1..N Tiempo de proceso pi

Fecha de entrega di

Máquina Conjunto k=1..R

Page 19: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo

19

3. HEURÍSTICAS

Page 20: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo

20

3.1 INTRODUCCIÓN

Los problemas de scheduling , como hemos indicado anteriormente, son

problemas de optimización. ¿Cómo se distingue un problema de optimización?

Siempre hay que realizar alguna actividad y se está obligado a ello

Existen muchas formas de realizar esa actividad

Existe una valoración de cada forma de realizar esa actividad y lo

que se pretende es obtener la forma más eficiente según un

determinado criterio

Toda la información asociada a los recursos está determinada (es

conocida)

Pasamos a continuación a desarrollar algunas características e ideas de los

problemas de optimización a las que haremos referencia a lo largo de nuestro

proyecto.

3.2 APUNTES DE OPTIMIZACIÓN

3.2.1 tipos de resolución de un problema de optimización.

Resolución exacta

Se busca la mejor solución (denominada Óptimo) con respecto al criterio de

eficiencia.

Resolución aproximada o heurística

Dada la dificultad práctica para resolver de forma exacta (simplex,

“ramificación y acotación”, teoría de grafos, …) toda una serie de

Page 21: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo

21

importantes problemas combinatorios para los cuales, por otra parte, es

necesario ofrecer alguna solución dado su interés práctico, comenzaron a

aparecer algoritmos que proporcionan soluciones factibles (es decir; que

satisfacen las restricciones del problema), las cuales, aunque no optimicen

la función objetivo, se suponen que al menos se acercan al valor óptimo en

un tiempo de cálculo razonable. Podríamos llamarlas en lugar de óptimas,

“satisfactorias”, pues al menos es de suponer que son lo suficientemente

buenas para servirnos.

Este tipo de algoritmos se denominan heurísticas, del griego “heuriskein”,

encontrar (palabra quizá no demasiado afortunada ya que, siendo más exactos,

en principio lo que hacen es buscar). En un primer momento, las heurísticas no

eran bien vistas debido a su escaso rigor matemático, si bien, poco a poco, se

les fueron “abriendo las puertas” debido a la proliferación de resultados.

Una posible definición de estos métodos es la siguiente:

“Son procedimientos simples, a menudo basados en el sentido común, que se

supone ofrecerán una buena solución (no necesariamente la óptima) a

problemas difíciles, de un modo fácil y rápido”.

Las heurísticas se suelen utilizar en las siguientes situaciones:

Cuando no existe un método exacto de resolución o éste

requiere mucho tiempo de cálculo o memoria.

Cuando no es realmente necesario la obtención de la

solución óptima, basta con un acercamiento.

Cuando los datos son poco fiables

Cuando existen fuertes limitaciones temporales

Dentro de un algoritmo más complejo

Una importante ventaja que presentan las heurísticas respecto a las técnicas

que buscan soluciones exactas es que, por lo general, permiten una mayor

flexibilidad para el manejo de las características del problema.

Page 22: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo

22

Por otra parte, al estar fundamentadas en el sentido común en la mayoría de los

casos, suele ser más fácil de entender (por parte de los directivos de las

empresas y gente no experta en este tipo de problemas) la fundamentación de

las heurísticas que los complejos métodos matemáticos que utilizan la mayoría

de las técnicas exactas.

3.2.2 Tipos de problemas de optimización según su complejidad.

1. Clase

Son problemas No Complejos. Resolverlos de forma exacta no implica

mucho tiempo.

2. Clase

Son problemas Complejos. Obtener el óptimo suele ser costoso en

tiempo de proceso siempre que el tamaño del problema sea de una cierta

dimensión.

3.2.3 Tipos de problemas de optimización según las características del

modelo.

Los problemas de optimización dependen fundamentalmente para su

resolución del tipo de variables que forman parte del mismo y del carácter

lineal o no lineal de las restricciones.

Page 23: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo

23

Page 24: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Programación de heurísticas para minimizar tiempos de retraso de trabajos con máquinas en paralelo

24

3.2.4 Modelo matemático

Un modelo matemático es una representación del problema en forma

matemática. El modelo matemático de problemas de optimización suele tener 3

partes bien diferenciadas:

Una ecuación que representa la función objetivo.

Una serie de ecuaciones e inecuaciones que representan las

restricciones del problema.

La definición de las variables del problema, indicando el tipo de variable

(Entera, binaria…).

Cuando se posee el modelo matemático del problema, se simplifica mucho la

fase de resolución. Existen métodos de resolución exacta estándares que

pueden usarse para cualquier problema.

Un usuario puede parametrizar estos métodos para un uso más eficiente,

aunque ello no es necesario. Las librerías de optimización llevan

implementados estos métodos y no necesitan de la participación del usuario en

la resolución.

Se simplifica la fase de implementación, puesto que lo único que necesitamos

es el modelo.

Con el modelo matemático también se puede optar por una resolución

aproximada.

Page 25: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

25

3.3 HEURÍSTICA 1

Pasamos ahora a mostrar la primera de las heurísticas (H1 en adelante) que

hemos probado. Básicamente en una adaptación de la regla MDD (modificied

Due Date) que consiste en asignar en cada momento el trabajo con menor

holgura para incurrir en retraso. Esta regla se usa principalmente para los

problemas con una sola máquina con el objetivo de minimizar la suma de los

tiempos de retraso. La adaptación que hacemos trata de asignar el trabajo con

menor holgura para incurrir en retraso a la máquina menos cargada, pues al

tener más de una máquina en nuestro problema (recordar que teníamos

máquinas en paralelo) tenemos más de una opción a la hora de elegir la

máquina a asignar. En cada iteración del algoritmo se introduce un trabajo, en

concreto, aquél cuyo valor ni sea menor, donde ni = Max (di; t + pi) , siendo “di”

la fecha de entrega del trabajo “i” y “pi” el tiempo de procesado del trabajo “i”,

como hemos explicado en el capítulo anterior, y “t” es el instante en el que se

encontraría la máquina menos cargada.

Mostramos a continuación dos diagramas de flujo que describen de forma más

intuitiva el algoritmo de nuestra heurística.

Variables no aclaradas en el capítulo anterior:

sj= Tiempo de finalización de todos los trabajos asignados a la máquina j

S1=tiempo de finalización de la máquina menos cargada.

P1=Tiempo de proceso del trabajo de menor holgura.

T1=Instante de finalización del trabajo asignado.

Page 26: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

26

Cálculo de las holguras de todos los trabajos no asignados

ni=max(di ; t + pi)

Ordenar trabajos de menor a mayor holgura

Ordenar máquinas de menos cargada a más cargada. Asignar trabajo de menor holgura a la máquina menos cargada.

Calcular tiempo de finalización del trabajo asignado y actualización de

tiempo de carga de la que era la máquina menos cargada.

Actualizar el tiempo de fiinalización de la máquina menos

cargada

Comprobamos si el tiempo de finalización de l trabajo asignado

es mayor que su fecha de entrega.

Actualizamos el valor objetivo añadiéndole el retraso del trabajo asignado

Repetir proceso hasta que queden asignados todos los trabajos.

Page 27: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

27

ni=max(di,ti+pi) ino asignado

Ordenar trabajos de menor a mayor

ni

Ordenar máquinas de menor a mayor

sj

T1=S1+p1;

S1=S1+p1

t=min(sj)

¿T1>d1? ¿T1<d1?

Resultado=Resultado+(T1-d1)

Page 28: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

28

Además, añadimos aquí parte del código de Visual Basic usado para calcular

los resultados de los diferentes problemas.

For trabajos_asignados = 1 To NumTrabajos

For Contador1 = 1 To NumTrabajos 'calculamos las ni para el t dado

If t + Trabajos(Contador1).pi < Trabajos(Contador1).di Then

Trabajos(Contador1).ni = Trabajos(Contador1).di + Trabajos(Contador1).asig

End If

If t + Trabajos(Contador1).pi >= Trabajos(Contador1).di Then

Trabajos(Contador1).ni = t + Trabajos(Contador1).pi + Trabajos(Contador1).asig

End If

Next

Ordenar Trabajos 'De menor a mayor ni

OrdenarMaq Maquinas 'De menor a mayor sj

Trabajos(1).Ci = Maquinas(1).sj + Trabajos(1).pi

Maquinas(1).sj = Maquinas(1).sj + Trabajos(1).pi

Trabajos(1).maq = Maquinas(1).Indice

If Trabajos(1).Ci > Trabajos(1).di Then

Ti = Ti + Trabajos(1).Ci - Trabajos(1).di

End If

Trabajos(1).asig = 100000

OrdenarMaq Maquinas

t = Maquinas(1).sj

NumArchivo = FreeFile

Next

End sub

Page 29: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

29

3.4 HEURÍSTICA 2

Una vez que hemos explicado la primera heurística, pasamos a explicar la

segunda (H2 de aquí adelante).

El primer paso, al igual que en la anterior, es calcular las holguras de cada

trabajo para incurrir en retraso.

Siendo la fecha de entrega del trabajo i, t el instante de finalización de los

trabajos asignados a la máquina menos cargada y pi el tiempo de procesado

del trabajo i.

Tras esto, se ordenan las máquinas de mayor a menor tiempo de finalización

(de mayor a menor sj, instante en que la máquina acaba de procesar los

trabajos a ella asignada). En el instante inicial, por tanto, el ordenamiento sería

aleatorio, ya que todas las sj son cero al no haber ningún trabajo asignado.

Tras realizar esta ordenación, se asigna el trabajo con menor holgura (menor

ni) a la máquina más cargada que no conlleve incurrir en retraso; en caso de

que al asignar el trabajo a cualquiera de las máquinas se incurriese en retraso,

se asignaría a la menos cargada. Así sucesivamente, hasta que se hayan

asignado todos los trabajos.

Mostramos a continuación un diagrama de flujo que muestra de forma más

gráfica lo que proponemos.

Page 30: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

30

Se calculan las ni para todos los trabajos que no han sido asignados

ni=max(di ; t + pi)

Se orden las máquinas de más a menos cargada. Se asigna el trabajo con menor ni a la máquina más cargada siempre que no se incurra en retraso. En caso de que asignando el

trabajo a cualquiera de las máquinas se incurriese en trabajo, se asigna a la máquina menos cargada.

Si el instante en que se finalizael trabajo es mayor que la fecha de entrega de dicho trabajo, sumar dicha diferencia

al resultado final

Por último, se actualizan los datos, modificando el tiempo de finalización de la máquina a la que se ha añadido el

trabajo, siendo t igual al instante en que la máquina menos cargada acaba todos los trabajos a ell

Se repite el proceso hasta que todos los trabajos hayan sido asignados a alguna máquina

Page 31: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

31

Adjuntamos además parte del código de la heurística programada:

While trabajos_asignados < NumTrabajos

For Contador1 = 1 To NumTrabajos 'calculamos las ni para el t dad

If t + Trabajos(Contador1).pi < Trabajos(Contador1).di Then

Trabajos(Contador1).ni = Trabajos(Contador1).di + Trabajos(Contador1).asig

Else: Trabajos(Contador1).ni = t + Trabajos(Contador1).pi + Trabajos(Contador1).asig

End If

Next

Ordenar Trabajos 'De menor a mayor ni

OrdenarMaq Maquinas '''se ordenan de mayor a menor sj

Contador1 = 1

While Contador1 <= NumMaquinas '' busca maquina mas cargada que no de retraso.

If Trabajos(1).pi + Maquinas(Contador1).sj >= Trabajos(1).di Then

Contador1 = Contador1 + 1

Else

Trabajos(1).Ci = Maquinas(Contador1).sj + Trabajos(1).pi

Maquinas(Contador1).sj = Maquinas(Contador1).sj + Trabajos(1).pi

Trabajos(1).maq = Maquinas(Contador1).Indice

Trabajos(1).asig = 1000000000

Contador1 = NumMaquinas

End If

Wend

If Trabajos(1).asig <> 1000000000 Then 'para el caso de que en todas haya retraso, se asigna a la menos cargada

Trabajos(1).Ci = Maquinas(NumMaquinas).sj + Trabajos(1).pi

Maquinas(NumMaquinas).sj = Maquinas(NumMaquinas).sj + Trabajos(1).pi

Trabajos(1).maq = Maquinas(NumMaquinas).Indice

Trabajos(1).asig = 1000000000

End If

Page 32: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

32

If Trabajos(1).Ci > Trabajos(1).di Then

Ti = Ti + Trabajos(1).Ci - Trabajos(1).di

End If

trabajos_asignados = trabajos_asignados + 1

OrdenarMaq Maquinas

t = Maquinas(NumMaquinas).sj

Wend

Page 33: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

33

3.5 HEURÍSTICA 3

La tercera heurística que vamos a estudiar (H3 en adelante) difiere en gran

medida de las dos anteriores. En primer lugar se calcula el parámetro aux.

Es decir, aux es igual a la suma de los tiempos de proceso de todos los

trabajos dividido entre el número de máquinas. Con este parámetro

pretendemos estimar el tiempo necesario para acabar todos los trabajos con

las máquinas que tenemos disponibles.

Tras calcular aux, dividimos los trabajos en 2 grupos, los que tienen una fecha

de entrega anterior a aux y los que tienen una fecha de entrega posterior. De

esta manera nos hacemos una idea de los que van a retrasarse y los que no.

El siguiente paso es dividir los trabajos en función de su fecha de entrega. Los

trabajos con una fecha de entrega mayor que aux se agrupan en un grupo, y

los que tienen una fecha de entrega inferior en otro grupo aparte.

Tras esto, se ordenan los trabajos de cada grupo de menor a mayor tiempo de

proceso. Una vez que ya tenemos los dos grupos ordenados, vamos asignando

a la máquina con menos carga de trabajo (aquella que termina antes todos los

trabajos a ella asignados) los trabajos del grupo que contiene los trabajos con

fecha de entrega anterior a aux. Tras programar todos los trabajos de este

grupo, se procede con el otro con el mismo criterio de asignación a máquinas.

En cada asignación, se comprueba si el tiempo de finalización del trabajo es

mayor que su fecha de entrega. En caso afirmativo, se suma dicha diferencia al

resultado final.

Page 34: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

34

En primer lugar se clacula la variable aux, que es igual a la suma los tiempos de proceso de todos los trabajos entre el número de

máquinas del problema.

aux=∑pi/n

Se dividen los trabajos en dos grupos, los que tienen una fecha de entrega mayor que aux y los que tienen una fecha de entrega

menor

Se ordenan los trabajos de cada grupo de menor a mayor tiempo de proceso.

Se van asignando los trabajos del grupo de trabajos con fecha de entrega menor que aux, previamente ordenados, a la máquina menos cargada. En cada asignación, comprobar si el tiempo de finalización del trabajo es mayor que su fecha de entrega. En

caso afirmativo, sumar dicha diferencia al resultado final.

Tras asignar todos los trabajos del primer grupo, se procede con el mismo criterio con el otro. En cada asignación, comprobar si el

tiempo de finalización del trabajo es mayor que su fecha de entrega. En caso afirmativo, sumar dicha diferencia al resultado

final.

Page 35: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

35

Como en los casos anteriores, se muestra parte del código.

For Contador1 = 1 To NumTrabajos

suma_pi = suma_pi + Trabajos(Contador1).pi

Next

aux = suma_pi / NumMaquinas

For Contador1 = 1 To NumTrabajos

If Trabajos(Contador1).di < aux Then

Trabajos_Antes(Contador2) = Trabajos(Contador1)

Contador2 = Contador2 + 1

End If

If Trabajos(Contador1).di > aux Then

Trabajos_Despues(Contador3) = Trabajos(Contador1)

Contador3 = Contador3 + 1

End If

Next

Ordenar Trabajos_Antes ´De menor a mayor ni.

Ordenar Trabajos_Despues ´De menor a mayor ni.

OrdenarMaq Maquinas ´De menor a mayor sj

For trabajos_asignados1 = 0 To Contador2 - 2

Trabajos_Antes(c).Ci = Maquinas(1).sj + Trabajos_Antes(c).pi

Maquinas(1).sj = Maquinas(1).sj + Trabajos_Antes(c).pi

If Trabajos_Antes(c).Ci > Trabajos_Antes(c).di Then

Ti = Ti + Trabajos_Antes(c).Ci - Trabajos_Antes(c).di

End If

OrdenarMaq Maquinas

Page 36: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

36

c = c + 1

Next

c = 1

For trabajos_asignados2 = 0 To Contador3 - 2

Trabajos_Despues(c).Ci = Maquinas(1).sj + Trabajos_Despues(c).pi

Maquinas(1).sj = Maquinas(1).sj + Trabajos_Despues(c).pi

If Trabajos_Despues(c).Ci > Trabajos_Despues(c).di Then

Ti = Ti + Trabajos_Despues(c).Ci - Trabajos_Despues(c).di

End If

OrdenarMaq Maquinas De menor a mayor sj

c = c + 1

Next

Page 37: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

37

4. Experimentación

Page 38: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

38

4.1 INTRODUCCIÓN

En este capítulo vamos a explicar los programas, tipos de fichero y

procesos usados para obtener resultados que nos sirvan para sacar

conclusiones en relación a nuestras heurísticas.

En resumen, el proceso seguido para hallar datos experimentales, una vez que

se han diseñado las heurísticas, consta de los siguientes puntos:

1) Generación de una serie de problemas prototipo lo suficientemente amplia y

variada para poder sacar conclusiones, en formato txt.

2) Generación de los modelos matemáticos que definen los distintos

problemas, en formato lg4. Hallar el óptimo de estos modelos (veremos las

dificultades con las que nos encontramos durante el proceso y la solución

adoptada) mediante Lingo.

3) Hallar el resultado que aportan nuestras heurísticas a nuestros problemas.

4) Obtención de errores y comparación de heurísticas.

4.2 VISUAL BASIC

En el mundo de la programación informática, uno de los lenguajes más

populares y conocidos es e Visual Basic. Creado en 1991 por Alan Cooper para

Microsoft, este paquete permite programar contenidos informáticos gráficos de

manera simple y accesible.

Visual Basic ha sido desarrollado con el objetivo de entregar a los usuarios de

programación informática un paquete de utilidades simples y accesibles. Es por

esto que el Visual Basic puede ser usado y fácilmente comprendido por

expertos como también por usuarios principiantes. Su base parte del dialecto

BASIC pero con componentes novedosos que lo adaptan a los lenguajes

Page 39: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

39

informáticos modernos. A esto se suma que el Visual Basic es además un

lenguaje de programación guiado por eventos que permite mayor operatibilidad

y mejores resultados.

La creación de interfaces gráficas para diferentes utilidades es una de las

principales funciones del Visual Basic y es por esto que es altamente usado en

espacios profesionales donde se requieren soportes gráficos para mayor

organización de los contenidos y materiales. La programación gráfica se puede

llevar a cabo directamente ya que el Visual Basic no requerirá de los usuarios

la escritura de los códigos de programación. Visual Basic trabaja a partir de

lenguajes RAD, en inglés Rapid Application Development, o desarrollo rápido

de aplicaciones específicas para cada necesidad y función. Al mismo tiempo, el

Visual Basic, gracias a su simple lenguaje, es perfectamente adaptable a las

plataformas de los sistemas Windows y es fácilmente transformable a otros

lenguajes más complejos.

Microsoft ha desarrollado numerosas versiones para Visual Basic. Una de las

más antiguas data de 1992 y si bien presentaba el lenguaje en forma de texto,

permitía ya disfrutar y acceder a algunos de los elementos más importantes del

futuro Visual Basic. Hoy en día, la versión 6.0 es la más difundida a nivel

mundial gracias a la combinación de elementos simples y de elementos

perfeccionados; ésta última es la que nosotros hemos usado.

Page 40: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

40

4.3 LINGO

LINGO: (LINear Generalize Optimizer) es una herramienta simple para formular

problemas lineales y no lineales, resolverlos y analizar su solución. El resultado

que LINGO nos proporciona es la optimización que nos ayuda a encontrar el

mejor resultado: la ganancia más alta, o el costo más bajo. A menudo estos

problemas involucran el uso más eficiente de los recursos. Los problemas de

optimización son clasificados a menudo como lineales o no lineales,

dependiendo si las relaciones en el problema son lineales con respecto a las

variables. Uno de los rasgos más poderosos de LINGO es su aplicación en el

lenguaje de modelo matemático. El cual permite expresar un problema de una

manera muy similar a la anotación matemática normal pudiendo también,

expresar una serie entera de restricciones en una declaración compacta. Esto

lleva a modelos que son mucho más fáciles de mantener. Otro aspecto es la

sección de los datos, que le permite aislar los datos de la formulación del

modelo. De hecho LINGO puede leer datos incluso de una hoja de cálculo

separada, base de datos, o archivo de texto. Con datos independientes del

modelo, es mucho más fácil de hacer cambios, y hay menos oportunidad de

error cuando se realiza el modelo.

Page 41: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

41

Sintaxis de LINGO

La sintaxis que se utiliza en este programa es muy sencilla. Para el nombre de

las variables se establece que deben tener 32 caracteres como máximo, Deben

comenzar con una letra seguido de letras, dígitos o _ . El compilador de LINGO

no distingue entre mayúsculas y minúsculas. Con respecto a las sentencias:

Todas las sentencias deben terminar en un punto y coma. Para darle un

nombre a la función objetivo o a las restricciones, estos se deben colocar entre

corchetes. Para declarar la función objetivo debemos colocar las palabras

reservadas MAX o MIN, resaltadas en azul, seguidas del signo =. Los

comentarios deben comenzar con un signo !, los cuales son resaltados en

verde.

El formato que sigue un modelo en LINGO es el siguiente:

1. Título: descripción del modelo.

2. Función objetivo: Maximizar o minimizar con los valores de los costes de

todas las variables.

3. Restricciones del problema.

Page 42: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

42

4. Restricciones asociadas al tipo de variable.

A continuación se detallan las características más importantes

a cerca de la sintaxis de los modelos de LINGO:

1. Título

Es optativo y debe tener como máximo 128 caracteres.

FORMATO: {TITLE NOMBRE DEL MODELO ;}

2. Función objetivo

Para escribir la función objetivo se colocan las palabras reservadas

MAX o MIN, qué se resaltarán en azul, seguidas de signo =.

FORMATO: {[NOMBRE]} (MAX/MIN) = FUNCIÓN OBJETIVO;

3. Restricciones del problema

LINGO tiene la habilidad de nombrar las restricciones

en su modelo. Ésta es una buena práctica, por dos razones; primero,

los nombres de restricciones se usan en el reporte de las soluciones,

cosa que los hacen más fácil de interpretar. Segundo, muchos de los

mensajes de error de LINGO se refieren a una restricción dada por

nombre. Dar nombre a las restricciones es bastante simple, se

inserta el nombre entre corchetes delante de una línea de código,

Page 43: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

43

dicho nombre cumplirá los requisitos normales para un nombre

LINGO. Mostramos a continuación un ejemplo de cómo quedan

nuestros problemas modelados el LINGO.

Page 44: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

44

Page 45: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

45

La siguiente imagen muestra un ejemplo del formato que tendría los

modelos LINGO de nuestros problemas.

Page 46: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

46

4.4 GENERACIÓN DE LA BATERÍA DE PROBLEMAS

Para probar nuestras heurísticas se hizo necesario generar una serie de

problemas de las características de este trabajo lo suficientemente grande y

variada para poder sacar conclusiones. Estos problemas se han realizado con

un código de visual Basic que genera problemas aleatorios con parámetros lo

suficientemente heterogéneos. Aunque los problemas se generan de forma

aleatoria, hay unas variables que aseguran la heterogeneidad en las fechas de

Page 47: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

47

entrega, tiempos de procesado y diferencia entre estos parámetros dentro de

cada problema. Se han generado 360 problemas diferentes. Podríamos decir

que estos problemas quedan definidos por 3 características diferenciadoras.

Número de máquinas del problema.

Número de trabajos

El tiempo de proceso y la fecha entrega.

De los 360 problemas generados, 120 son problemas con 3 máquinas en

paralelo, 120 con 6 máquinas y los 120 restantes son problemas con 10

máquinas en paralelo. Por su parte, cada uno de estos 3 grupos podría

dividirse en función del número de trabajos, habiendo problemas con 25,50,

100 y 200 trabajos.

Nº de problemas

25 Trabajos 50 Trabajos 100 Trabajos 200 Trabajos

3 MÁQUINAS 30 30 30 30 6 MÁQUINAS 30 30 30 30

10 MÁQUINAS 30 30 30 30

Estos problemas se han realizado con un código de visual Basic que genera

problemas aleatorios con parámetros lo suficientemente heterogéneos. Los

datos que aporta de cada problema son el número de trabajos (Que a su vez

tenemos que indicárselo previamente), y la fecha de entrega y tiempo de

proceso de cada trabajo. Este programa crea unos ficheros formato “txt” de los

que sacamos esta información. Los ficheros “txt” de salida siguen la siguiente

estructura:

En la primera fila vendría un número que representa el número de trabajos del

problema. Después se añadirían tantas filas como trabajos tiene el problema,

Page 48: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

48

con los datos de tiempo de procesado e instante de entrega respectivamente,

separados por un espacio.

El ejemplo de la imagen representa un problema de 5 trabajos a procesas. El

primer trabajo, por ejemplo, tendría un tiempo de proceso de un periodo y su

fecha de entrega sería el instante 2. Así para cada trabajo.

Page 49: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

49

Se han generado 120 ficheros de este tipo. Observar que en estos no viene

indicado el número de máquinas del problema, por lo que el problema no

estaría completamente definido. Esto es así porque el número de máquinas lo

especificaremos en los códigos de generación de modelos y en el de las

heurísticas. De hecho, como vamos a basar nuestro estudio en problemas con

3, 6 y 10 máquinas en paralelo, los 120 ficheros generados por los 3 grupos de

problemas según el número de máquinas, hacen los 360 problemas que

indicamos anteriormente.

4.5 BÚSQUEDA DEL ÓPTIMO

Una heurística es un método de resolución que pretende dar soluciones

posibles que se acerquen al óptimo, por lo que para saber lo buena o mala que

es una heurística deberemos compararla con éste.

Como hemos explicado anteriormente, hemos usado el programa LINGO para

sacar el óptimo a estos problemas. Recordemos que hasta ahora sólo hemos

generado los problemas, y la información de éstos la tenemos en ficheros “txt”

con un formato muy concreto. Por lo tanto, a partir de estos ficheros deberemos

crear los modelos en formato “lg4” para poder sacar sus óptimos mediante

LINGO. Esto lo hemos realizado mediante otro código de VISUAL BASIC. Los

resultados aportados por Lingo, por su parte, se han ido almacenando en una

hoja de Excel.

Ahora vamos a hacer un paréntesis en cuanto al óptimo hallado. Aunque lo

más apropiado habría sido comparar el resultado de nuestras heurísticas con el

óptimo de los problemas, debido a la complejidad de los problemas de

minimización de la suma de tiempos de retraso con máquinas en paralelo, no

nos es posible hallar el óptimo de los problemas, pues para los más sencillos

necesitábamos más de 72 horas con LINGO funcionando, por lo que era

totalmente inviable. Como solución decidimos hallar el óptimo continuo de

Page 50: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

50

nuestro problema, que resulta más asequible de hallar. Este valor es el

resultado del modelo del problema pero asumiendo variables continuas en

lugar de enteras. Recordar, por otra parte, que el objetivo principal de nuestro

trabajo es comparar los resultados que aportan las heurísticas propuestas, por

lo que no es necesario encontrar el óptimo. Usaremos los resultados que

aporta el óptimo continuo para comprobar que nuestras heurísticas dan valores

coherentes y para tener una cota inferior de referencia.

Diferencia entre programación lineal continua y programación lineal entera.

Los modelos de Programación Entera son aquellos donde la totalidad o un

subconjunto de las variables de decisión toman valores enteros. En cambio, si

las variables toman valores continuos, estaríamos hablando de programación

continua.

Se puede demostrar (no entra dentro de los objetivos de este trabajo) que si

tenemos dos problemas de programación con las mismas restricciones y

función objetivo, pero uno con variables enteras y otro con variables continuas,

el óptimo del problema con variables enteras será siempre mayor o igual que el

óptimo del problema con variables continuas en problemas de minimizar (Que

es nuestro caso). Dicho de otra manera, el óptimo continuo siempre es “mejor o

igual” que el entero.

¿Cómo afecta esto a nuestros resultados? Como hemos explicado

anteriormente, ante la imposibilidad de calcular el óptimo de los problemas que

hemos planteado para comprobar las heurísticas, hemos hecho una

modificación de los modelos cambiando las variables enteras por continuas.

De esta manera, el modelo usado ya no representa nuestro problema, de

hecho aporta resultados erróneos, pero estos modelos son mucho más

Page 51: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

51

sencillos de resolver con Lingo y además, como hemos comentado

anteriormente, tienen relación.

El resultado aportado por las heurísticas será siempre peor que el óptimo

(entendiendo en nuestro caso “peor” como “más grande”, ya que nuestro

problema consiste en minimizar una suma de tiempos) debido a que en la

misma definición de solución óptima está implícito que es el valor más pequeño

de todas las soluciones posibles. Por otra parte, hemos dicho que el resultado

de nuestro modelo tomando variables continuas será siempre menor o igual

que el óptimo de nuestro problema sin ningún cambio, por lo que el error de la

heurística con respecto al óptimo será siempre menor o igual que el error con

respecto al óptimo continuo. Dicho de otro modo:

Resultado óptimo continuo ≤ Resultado óptimo ≤ Resultado heurística

Page 52: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

52

Veamos un sencillo ejemplo práctico de lo que esto supone a la hora de

interpretar nuestros resultados.

Supongamos los siguientes valores:

-Óptimo continuo aportado por Lingo=10,8 (Valor continuo, no representa el

óptimo de nuestro problema ya que hemos variado el modelo matemático).

-Resultado de la heurística=10

Por tanto, el error absoluto de la heurística con respecto al óptimo continuo es:

10,8 – 8 = 2,8.

Teniendo en cuenta que:

Resultado óptimo continuo ≤ Resultado óptimo ≤ Resultado heurística

Deducimos que

10,8≤ óptimo ≤ 8

Por lo que el error absoluto de la heurística con respecto al óptimo es menor o

igual que 2,8.

Esta conclusión es aplicable a todos los tipos de error. De esta manera,

calculando el óptimo continuo (que nos resulta asequible con Lingo) podemos

acotar el error que tiene nuestra heurística con respecto al óptimo.

.

4.6 HALLAR EL RESULTADO QUE APORTAN NUESTRAS HEURÍSTICAS.

En este apartado vamos a explicar el proceso seguido para hallar y almacenar

los resultados que aportan las heurísticas a nuestros problemas. Recordar que

para ello hemos usado códigos de Visual Basic. Pasamos a describir de forma

breve la estructura de estos códigos:

En primer lugar nos encontramos la inicialización de las variables.

Page 53: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

53

Después viene la función principal. Aquí es donde tenemos que indicar

el número de máquinas de los problemas que vamos a resolver. El

código está diseñado para resolver los 120 problemas en formato “txt”

antes comentado, indicando el número de máquinas, en una sola

ejecución. Por tanto, con el bucle “for” que se ve en la imagen, se

ejecuta las sub-funciones leer archivo (Que lo que hace es leer los datos

de cada problema) y algoritmo de cada problema. La función algoritmo

ejecuta el código de la heurística en concreto que estamos estudiando-

Esta función es la que se ha mostrado en el capítulo anterior al describir

las heurísticas.

Page 54: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

54

Los resultados se almacenan en ficheros “txt” en la carpeta indicada. Se ha

hecho una macro para almacenar estos en una hoja Excel de forma

automática, indicando la ubicación de la carpeta que los contiene.

Page 55: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

55

4.6 OBTENCIÓN DE ERRORES.

Una vez que se han obtenido los resultados de las heurísticas y el óptimo

continuo, el siguiente paso es hallar los errores de las heurísticas con respecto

al óptimo. Vamos a basar nuestro estudio de errores usando el error absoluto,

el error relativo y el error cuadrático medio. Dejamos a continuación la

definición de estos errores.

Error absoluto. Es la diferencia entre el valor de la medida y el valor

tomado como exacto. Puede ser positivo o negativo, según si la medida

es superior al valor real o inferior (la resta sale positiva o negativa).

Tiene unidades, las mismas que las de la medida.

Page 56: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

56

Error relativo. Es el cociente (la división) entre el error absoluto y el valor

óptimo. Si se multiplica por 100 se obtiene el tanto por ciento (%) de

error. En nuestro caso será siempre positivo, pues el resultado de las

heurísticas será siempre mayor que el óptimo. no tiene unidades.

Error cuadrático medio. Se calcula como la suma de las diferencias entre

los resultados aportados por la heurística y el óptimo, elevado al

cuadrado, entre el número de problemas.

Page 57: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

57

5. Resultados y conclusiones

Page 58: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

58

0

5000

10000

15000

20000

25000

30000

35000

1 10 19 28 37 46 55 64 73 82 91

100

109

118

127

136

145

154

163

172

181

190

199

208

217

226

235

244

253

262

Resultados

H1

H2

H3

OPTIMO

5.1 VALORES APORTADOS POR LAS HEURÍSTICAS

En este capítulo vamos a mostrar los resultados de las experimentaciones

antes comentadas, sacando una serie de conclusiones. Para ello vamos a usar

varias gráficas, ya que aportan información de una forma más visual e intuitiva.

Recordar, por otra parte, que en anexos encontraremos las tablas con los

datos generadas durante este trabajo. Pasamos a comentar la siguiente

gráfica. El eje Y representa los resultados aportados por las heurísticas y el

valor del óptimo continuo para los distintos problemas del eje X.

Numeración 1-90 91-180 181-270

Número de trabajos 25 50 100

Page 59: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

59

De esta gráfica podemos sacar varias conclusiones. En primer lugar, aunque

no se pueda observar claramente, el valor aportado por el óptimo continuo es

siempre menor o igual al aportado por las heurísticas. El caso contrario

significaría que la experimentación es errónea, ya que en la misma definición

de óptimo está implícito que sea el mejor valor, y al ser nuestros problemas de

minimizar, la solución aportada por éste será necesariamente siempre la menor

(más aún tratándose del óptimo continuo). De esta manera, no podemos

asegurar categóricamente que los valores aportados por las heurísticas sean

valores posibles, ya que pueden hallarse en la franja que va desde el óptimo

continuo al óptimo del problema (desconocido), pero esta posibilidad parece

muy remota. Por otra parte, observamos que lo valores de las heurísticas están

relativamente cerca del óptimo aportado, por lo que a priori cumplen su función,

que no es más que aportar un resultado lo más cercano al óptimo posible,

teniendo en cuenta que nunca nos darán un valor mejor que éste. De todas

maneras, comentaremos esto más a fondo cuando hagamos un análisis de los

errores de las distintas heurísticas.

Observar, por otra parte, que no se han tomado datos de todos los problemas,

ya que para los problemas más grandes (los de 200 trabajos) se han

encontrado dificultades para hallar el óptimo continuo, debido a la complejidad

del tipo de problema que es objeto de nuestro estudio. En parte, esto refuerza

uno de los motivos de nuestro trabajo, ya que éste es uno de los puntos fuertes

de las heurísticas, que son capaces de aportar soluciones bastante buenas de

forma sencilla en problemas, como es el caso que estamos comentando, en los

que el valor óptimo es muy difícil de hallar.

Para la correcta interpretación de los cálculos de errores es importante recordar

que se están calculando con respecto al óptimo continuo; es decir, los errores

calculados no son realmente los errores de los resultados de las heurísticas

con respecto al óptimo, sino que es una cota superior de este error.

Page 60: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

60

5.2 COMPORTAMIENTO DE NUESTRAS HEURÍSTICAS EN FUNCIÓN DEL

NÚMERO DE TRABAJOS

Vimos que nuestros problemas quedaban definidos por el número de trabajos,

el número de máquinas, y los parámetros de cada problema; es decir, su

tiempo de realización y el instante de entrega. Pasamos a estudiar cómo se

comportan nuestras heurísticas en función del número de trabajos del

problema.

Para ello, comenzamos agrupando los problemas según el número de trabajos,

y valoramos las soluciones de las heurísticas con el error cuadrático medio

(ECM en adelante) como criterio.

ECM H1 H2 H3

25 827,867246 4878,6574 6385,6367 50 33480,08533 490590,924 235525,354

100 227885,5207 8871899,06 2090034,54 200 550337,7756 74572086,3 6291504,48

*Para el cálculo del error cuadrático medio de los problemas con 200 trabajos

se han tomado 10 valores. Para el resto 90 resultados por cada grupo.

Page 61: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

61

Era evidente que conforme más grande fuese el número de problemas, mayor

sería el ECM. Por otra parte, observamos que la heurística 1 es la que mejor se

comporta, independientemente del número de trabajos. Además, conforme

aumenta el número de trabajos, aumenta el error cuadrático medio de las

soluciones aportadas por nuestras heurísticas.

Pasamos a mostrar gráficas que muestran los resultados para los problemas

de 25 y 50 trabajos respectivamente, ya que no resulta tan claro observando la

gráfica anterior.

0

10000000

20000000

30000000

40000000

50000000

60000000

70000000

80000000

25 50 100 200

Títu

lo d

el e

je

Error cuadrático medio en función del número de trabajos

H1

H2

H3

Page 62: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

62

0

1000

2000

3000

4000

5000

6000

7000

H1 H2 H3

Error cuadrático medio de las heurísticas para

problemas de 50 trabajos

Podemos observar que a priori la heurística 2 se comporta mejor para

problemas de 25 trabajos que la 3, pero que para problemas más grandes (A

partir de 50 trabajos ya se confirma en nuestro estudio) se comporta mejor la

heurística 3.

0

100000

200000

300000

400000

500000

600000

H1 H2 H3

Error cuadrático medio de las heurísticas para

problemas de 25 trabajos

0

500

1000

1500

2000

2500

3000

3500

4000

1 13 25 37 49 61 73 85 97

109

121

133

145

157

169

181

193

205

217

229

241

253

265

Títu

lo d

el e

je

Errores absolutos

H1

H2

H3

Page 63: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

63

Aunque no se vea del todo claro (los datos numéricos se muestran en anexos)

la heurística 1 da siempre valores más pequeños que las otras dos heurísticas.

Por otra parte, observamos que conforme aumenta el número de trabajos,

Tanto el ECM como el error absoluto aumentan.

Vemos en esta gráfica y otros muchos datos de este proyecto, que aunque la

H1 de siempre mejores resultados que las otras dos heurísticas, las tres tienen

un comportamiento muy parecido, y por tanto las conclusiones que vamos a ir

sacando a partir de los resultados de la primera heurística se podrían aplicar a

las otras dos.

Page 64: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

64

5.3 COMPORTAMIENTO DE NUESTRAS HEURÍSTICAS EN FUNCIÓN DEL

NÚMERO DE MÁQUINAS.

Recordemos que los problemas venían definidos por el número de trabajos, el

número de máquinas, y los parámetros de cada trabajo (tiempo de procesado e

instante de entrega). Observemos como influye el número de máquinas en el

error de la heurística:

Observamos 2 fenómenos:

Independientemente del número de máquinas, el error relativo de la

heurística se estabiliza a partir de problemas con un determinado

número de trabajos. En problemas con una relación Número de

trabajos/Número de máquinas pequeña la heurística no da resultados

convincentes.

0

5

10

15

20

25

30

35

40

1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77 81 85 89

Tít

ulo

de

l eje

ERRORES RELATIVOS

3 MAQ

6 MAQ

10 MAQ

Page 65: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

65

Mientras mayor es el número de máquinas, peor funcionará para

problemas con pocos trabajos. Aclarar que el error relativo de los

trabajos anteriores a la zona “inestable” no es cero, sino que no

aparecen en la gráfica porque el resultado del óptimo continuo es cero, y

al estar en el denominador (definición de error relativo) daría valor

infinito.

Por otra parte, comentar que a mayor número de trabajos menor error relativo a

priori, aunque el error absoluto se mayor como vimos anteriormente.

En cuanto al error cuadrático medio, observamos que a mayor número de

máquinas, mayor ECM.

ECM 3 MAQ 6 MAQ 10 MAQ

25 945,794873 995,884234 411,966667 50 11220,1598 23090,7402 32649,2707

100 48239,5873 133769,427 273762,027

0

50000

100000

150000

200000

250000

300000

25 50 100

3 MAQ

6 MAQ

10 MAQ

Page 66: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

66

5.4 CONCLUSIONES

-Nuestras heurísticas dan valores cercanos al óptimo, y aunque no podamos

demostrarlo, es altamente probable que den siempre valores factibles, por lo

que cumplen su función.

-Amparándonos en los resultados de la experimentación realizada, podemos

afirmar que la heurística que mejor se comporta es la H1 para todos los casos.

Por otra parte, La H3 se comporta mejor que la H2 para problemas de muchos

trabajos, siendo al revés en problemas con pocos trabajos (Aunque hay

bastantes excepciones en ambos casos).

-Las tres heurísticas tienen un comportamiento muy parecido en cuanto a la

variación de los resultados según el número de trabajos, el número de

máquinas o los parámetros de los trabajos.

-Conforme aumenta el número de trabajos, aumenta el error absoluto del

resultado aportado por nuestras heurísticas y el error cuadrático medio. Por su

parte, comentar que respecto al error cuadrático medio, nuestras heurísticas no

dan soluciones factibles cuando la relación número de trabajos / número de

máquinas es bastante baja. Para problemas con muchos trabajos el error

relativo es estable y bastante pequeño.

-En cuanto a la relación existente entre el número de máquinas y el error de

nuestras heurísticas, comentar que a mayor número de máquinas mayor error

cuadrático medio y mayor error absoluto. Pasando a analizar el error relativo,

nuestras heurísticas no dan soluciones factibles cuando la relación número de

trabajos / número de máquinas es bastante baja. Para problemas con muchos

trabajos el error relativo es estable y bastante pequeño independientemente

del número de máquinas.

Page 67: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

67

6. CONCLUSIONES

Page 68: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

68

Una vez que se ha mostrado los resultados de nuestro trabajo, pasamos a

desarrollar una serie de conclusiones respecto al mismo. Por lo general,

estamos bastante satisfechos con el resultado final, sobre todo teniendo en

cuenta los problemas que nos hemos ido encontrando.

En primer lugar, destacar la cantidad de conocimientos adquiridos en los

estudios previos y durante la realización del mismo. Por otra parte, me ha

servido para poner en práctica conocimientos y técnicas adquiridas durante la

carrera.

El primer paso para la realización de este trabajo fue repasar y ampliar los

conocimientos sobre problemas de scheduling en general, y de nuestro

problema en particular. Tras esto, se realizó una búsqueda de información en

publicaciones sobre el tema en cuestión y en internet. Esto sirvió para tener

una base sobre la que diseñar las heurísticas que iban a ser objeto de nuestro

estudio.

El siguiente paso, por tanto, fue el diseño de nuestras heurísticas. No fue

sencillo, ya que buscábamos que las heurísticas diseñadas diesen valores

parecidos al óptimo. Para comprobarlo, las chequeamos con problemas pocos

complejos de los que conocíamos el óptimo, para comprobar que daban

valores cercanos a éste. De las 4 iniciales, decidimos realizar el estudio de las

3 heurísticas que pensamos que darían mejores resultamos.

Una vez que se había diseñado las heurísticas, hacía falta programarlas en

Visual Basic, ya que nuestro estudio se iba a realizar sobre los resultados

aportados de muchos problemas, algunos imposible de resolver de forma

manual. Además se intentó que el proceso de obtención de los resultados de

las distintas heurísticas fuese lo más automático posible, por lo que el código

de cada heurística se modificó para tal proceso y se creó una macro de Excel

para almacenar los resultados de forma automática.

Tras programar las heurísticas en Visual Basic, realizamos la batería de

problemas sobre la que sacaríamos nuestras conclusiones. Esta batería se

Page 69: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

69

generó con otro programa de Visual Basic que generaba problemas aleatorios

dentro de unas especificaciones concretas; de esta manera, como hemos

explicado, se consiguió generar una batería de problemas lo suficientemente

heterogénea pero sin contemplar casos extremos.

Una vez que teníamos los problemas sobre los que se iba a probar las

heurísticas y habíamos obtenido los resultados que éstas aportaban a los

problemas generados, pasamos a buscar el óptimo de éstos. Tras intentarlo

para varios problemas mediante LINGO, nos dimos cuenta que no iba a ser

posible hallarlo, debido a la complejidad del tipo de problemas que es objeto de

nuestro estudio (tardaba más de 72 horas para los problemas más sencillos). El

óptimo nos servía para chequear los resultados de nuestras heurísticas, ya que

siempre deben de ser peores que el óptimo; en caso contrario, no darían

resultados válidos a nuestros problemas.

Como decíamos, vimos que no iba a ser posible hallar el óptimo, y como

herramienta alternativa hicimos una modificación de los modelos de LINGO de

nuestros problemas para hallar el óptimo continuo. Este es el resultado de

asumir variables continuas en lugar de variables enteras. Estos resultados no

eran soluciones válidas a nuestros problemas, pues dan valores mejores que el

óptimo (cosa imposible) pero nos servía como cota del error de nuestras

heurísticas.

Tras hallar mediante LINGO el óptimo continuo de los nuestros problemas,

pasamos a realizar un análisis de los datos obtenidos. Lo primero que

observamos fue que los valores de las heurísticas siempre eran mayores que el

óptimo continuo, (lo que era de esperar, pues en caso contrario significaría que

las heurísticas estaban mal programadas) pero a su vez daban valores

relativamente cercanos. Por otra parte, vimos que la primera de nuestras

heurísticas es la que mejores resultados daba en todos los casos.

Tras este primer paso, realizamos un análisis comparativos de las heurísticas,

calculando los errores con respecto al óptimo continuo, que como hemos visto

Page 70: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

70

nos servía de referencia. De esta manera podíamos comparar el

comportamiento de las heurísticas. Esto nos permitía sacar una serie de

conclusiones en cuanto al comportamiento de las heurísticas según el número

de trabajos del problema o el número de máquinas, entre otras.

Por último, una vez que dimos por concluida la parte experimental, pasamos a

redactar el presente documento, que contiene breves explicaciones de la teoría

que sustenta nuestro estudio. Mostramos de nuevo las conclusiones que

hemos hallado de nuestro proyecto.

-Nuestras heurísticas dan valores cercanos al óptimo, y aunque no podamos

demostrarlo, es altamente probable que den siempre valores factibles, por lo

que cumplen su función.

-Amparándonos en los resultados de la experimentación realizada, podemos

afirmar que la heurística que mejor se comporta es la H1 para todos los casos.

Por otra parte, La H3 se comporta mejor que la H2 para problemas de muchos

trabajos, siendo al revés en problemas con pocos trabajos (Aunque hay

bastantes excepciones en ambos casos).

-Las tres heurísticas tienen un comportamiento muy parecido en cuanto a la

variación de los resultados según el número de trabajos, el número de

máquinas o los parámetros de los trabajos.

- Además, se han sacado un serie de conclusiones en cuanto al

comportamiento de las heurísticas en función del número de máquinas y el

número de trabajos.

Page 71: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

71

Bibliografía

Enciclopedia de Visual Basic. Autor: Francisco Javier Ceballos. Editorial: ra-ma.

Pablo Cortés Achedad, José Manuel García Sánchez, José Guadix

Martín, Ester Gutiérrez Moya, Jesús Muñuzuri Sanz, Luis Onieva

Giménez, Juan Nicolás Ibañez Rivas. (Edición 2008). “Ingeniería de

Organización: Modelos y Aplicaciones”.

Visual Basic. Autor: José Eduardo Maluf de Cervalho. Editorial: McGraw-Hill.

Optimización heurística y redes neuronales. Autores: A.Díaz, F.Glover, H.M.Chaziri, J.L.González, M.Segura, P.Moscato, F.T.Seng. Editorial: Paraninfo.

Sheduling. Theory, Algorithms and Systems. Autor: M.Pinedo. Editorial: Prentice-Hall, 1995.

Page 72: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

72

Anexos

Los resultados de las columnas H1, H2 y H3 corresponde a los resultados

obtenidos aplicando la primera, segunda y tercera heurística respectivamente.

Por su parte, la columna CONT representa el óptimo continuo obtenido con

Lingo. En el encabezado aparece el número de máquinas del problema.

3 MAQ 6 MAQ 10 MAQ

Problema H1 H2 H3 CONT H1 H2 H3 CONT H1 H2 H3 CONT

1 34 107 122 9,5 9 20 16 0 9 9 9 0

2 74 153 181 36,8 4 15 15 0 4 4 4 0

3 12 91 60 0,0 10 27 11 0 10 11 10 0

4 11 83 83 0,0 0 4 1 0 0 0 0 0

5 30 71 102 0,0 7 10 10 0 7 8 8 0

6 41 92 137 0,0 13 16 21 0 12 12 12 0

7 153 224 255 102,6 35 52 52 0 20 23 22 0

8 40 149 158 0,0 14 24 26 0 14 15 14 0

9 77 136 142 0,0 10 26 27 0 7 8 7 0

10 58 156 130 6,5 6 31 13 0 5 6 6 0

11 228 228 314 198,3 32 56 50 0 13 20 26 0

12 282 370 350 260,7 17 44 63 0 11 14 12 0

13 314 340 414 290,3 10 52 79 0 8 15 12 0

14 298 298 380 281,1 11 53 54 0 8 9 8 0

15 333 333 425 317,9 32 41 95 0 21 23 21 0

16 340 340 443 319,4 67 78 98 0 36 42 46 0

17 197 231 258 180,7 5 36 17 0 5 12 5 0

18 283 283 387 267,6 41 91 96 0 25 27 30 0

19 220 235 304 196,7 14 37 55 0 14 14 14 0

20 306 336 369 290,0 34 103 88 0 13 24 26 0

21 384 430 499 345,2 46 109 104 0 31 31 31 0

22 307 356 391 276,0 27 74 70 0 17 23 18 0

23 283 378 343 260,5 6 38 43 0 6 9 6 0

24 302 340 415 249,7 41 89 65 0 30 30 35 0

25 375 405 458 343,6 37 115 99 0 23 23 33 0

26 346 411 421 329,8 29 89 94 0 7 16 19 0

27 446 517 530 420,6 132 203 194 76,8 42 81 65 0

28 437 465 533 395,7 86 176 129 18,1 26 58 43 0

29 554 586 565 546,0 159 277 211 117,0 51 119 81 0

30 389 389 476 354,0 40 169 98 0,0 18 36 18 0

31 1621 1851 1918 1.521,3 124 546 462 6,0 13 92 79 0

32 822 1372 1104 650,1 62 374 195 0,0 37 129 69 0

33 1764 2390 2056 1.615,9 376 1086 670 115,6 77 318 165 0

34 1613 2180 1919 1.439,6 165 744 657 35,0 55 160 117 0

Page 73: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

73

35 893 1526 1231 708,8 34 506 179 0,0 19 69 49 0

36 1416 1802 1771 1.264,0 122 515 472 0,0 47 134 101 0

37 928 1394 1288 801,4 21 322 149 0,0 18 66 40 0

38 1211 1830 1507 1.073,8 174 626 426 0,0 38 158 102 0

39 1328 2086 1538 1.224,8 44 659 336 0,0 17 88 48 0

40 1402 2272 1688 1.265,9 140 702 474 0,0 36 77 114 0

41 2478 2535 2657 2.421,1 607 1010 904 516,6 42 324 279 0

42 2597 2711 2867 2.515,9 740 1104 1054 596,7 158 497 303 0

43 2895 3004 3119 2.818,4 794 1214 1076 663,4 83 349 260 0

44 2531 2531 2744 2.464,5 718 1012 1093 563,6 178 328 334 0

45 2215 2438 2452 2.139,0 571 943 878 378,3 108 287 229 0

46 2173 2437 2387 2.115,8 462 949 690 342,4 17 289 137 0

47 2701 2928 2885 2.643,3 936 1262 1149 783,6 324 706 455 58

48 2338 2656 2491 2.272,2 577 1019 841 481,1 31 348 214 0

49 2809 2987 3042 2.757,5 820 1273 1161 688,9 181 428 416 0

50 2633 2821 2872 2.532,7 698 1124 1025 535 75 354 273 0

51 3864 4423 4046 3.799,2 1212 2230 1507 1.058 264 854 500 32

52 4099 4606 4314 4.003,0 1374 1954 1646 1.173 365 890 604 80

53 3258 3381 3559 3.171,1 1095 1674 1425 882 381 797 573 11

54 4091 4755 4311 4.001,8 1404 2142 1732 1.164 387 806 714 71

55 4138 4587 4422 4.047,2 1335 1989 1721 1.163 359 886 714 71

56 4068 4381 4290 3.956,7 1238 1638 1524 1.087 268 844 551 12

57 4053 4359 4275 3.976,2 1436 2069 1727 1.275 513 969 767 230

58 3837 4230 4112 3.744,7 1255 1942 1590 1.069 356 788 676 44

59 4391 4493 4599 4.320,9 1491 2109 1783 1.341 446 913 834 179

60 3718 3972 3946 3.642,9 908 1290 1318 758 87 435 260 0

61 10706 12760 11422 10.427,0 3401 6116 4151 2.972 788 2987 1598 185

62 10927 13467 11512 10.687,4 3441 6106 4246 3.057 824 3327 1873 315

63 13597 16859 14285 13.358,4 4647 7604 5481 4.230 1367 4222 2444 710

64 11510 14801 12057 11.153,5 3441 6063 4198 2.941 608 2903 1589 97

65 11959 14020 12559 11.558,6 3807 6229 4647 3.268 939 2604 1955 292

66 11484 13758 12060 11.267,6 3610 5913 4546 3.223 890 3248 2008 272

67 10729 13285 11450 10.317,5 3305 5704 4207 2.731,254 725 2915 1748 41

68 14088 16645 14733 13.852,0 4610 6385 5584 4.182,582 1206 3126 2354 563

69 12536 14675 13247 12.329,6 3846 6878 4895 3.456 721 3340 1985 345

70 10683 12836 11460 10.440,3 3032 5412 4102 2.548 394 2241 1564 117

71 14702 15002 15320 14.580,4 5512 7029 6278 5.258 2166 3794 3021 1.664

72 16546 16649 17129 16.360,3 6513 7832 7181 6.200 2735 4346 3407 2291,82

73 17845 18622 18255 17.733,4 6821 8006 7510 6.608 2673 4474 3603 2.291

74 18267 19688 18734 18.121,3 6995 8908 7774 6.744 2734 4987 3662 2304,39

75 16781 18320 17341 16.615,9 6286 8120 7043 5.932 2352 4023 3164 1.809

76 18413 19540 18881 18.287,5 7198 9067 7944 6.905 2930 4642 3811 2.513

77 15886 16197 16340 15.784,5 5934 7419 6509 5.756 2321 4131 3073 1.918

78 20077 20600 20523 19.932,6 7953 9245 8554 7.670 3305 4903 4099 2.871

79 17257 17827 17847 17.105,0 6530 8139 7281 6.225 2452 3972 3324 1.984

80 15857 16773 16422 15.761,4 5989 7457 6917 5.743 2414 4222 3386 1.913

Page 74: Trabajo Fin de Gradobibing.us.es/proyectos/abreproy/90240/fichero/TFG_Francisco+Domí… · 3.2.1 Tipos de resolución de un problema de optimización 3.2.2 Tipos de problemas de

Heurísticas para minimizar la suma de tiempos de retraso de trabajos con máquinas en

paralelo

74

81 22204 23586 22714 21.998,7 8584 10877 9373 8.355 3461 5949 4442 2.995

82 21637 22525 22336 21.473,0 8050 9882 9181 7.769 3061 5610 4303 2.544

83 27059 28705 27603 26.868,3 10898 12863 11600 10520,08 4728 7035 5558 4.145

84 25170 27213 25723 24.926,8 10144 12964 10982 9.695 4465 6795 5437 3.800

85 21216 22289 21726 21.028,9 7782 10144 8501 7.512 2912 5756 3646 2.433

86 22330 23180 22940 22.103,6 8443 10549 9174 8.080 3254 5928 4152 2.685

87 23736 25019 24186 23.555,8 8912 11324 9760 8.657 3350 5777 4463 2956

88 27107 28069 27723 26.908,3 11116 13669 11853 10731,93 4965 7581 5870 4.368

89 27893 30217 28389 27.675,2 11664 13706 12300 11274,89 5380 7728 6228 4.798

90 25167 26582 25742 24.980,9 10219 12581 10960 9.862 4490 7319 5402 3.979

91 68424 75036 69813 68.013,5 27726 36242 29537 26907,11 12120 21624 14459 10925,5

92 70904 78375 72256 70.521,9 28719 37985 30557 27961,63 12501 20939 14846 11321

93 71819 78175 73344 71.293,3 29231 37736 31196 28492,25 13067 21708 15571

94 84788 91058 86022 84.480,8 35370 44478 36984 16049 25221 18023

95 75364 82913 76960 74.907,0 31152 38755 33166 30479,3 14267 22949 16698

96 75896 82245 77260 30738 38737 32620 13490 21805 15922

97 73839 80194 75448 30563 39499 32375 13793 22544 15893

98 69074 73709 70667 27622 35200 29676 11712 19594 14061

99 71623 78662 73266 28965 37668 30975 12584 21369 14953

100 75225 82174 76410 31461 39634 33133 14641 23075 16670

101 89175 91805 90281 38875 44300 40254 19145 24935 20746

102 95787 97972 96600 42614 46770 43863 21790 28057 23340

103 101617 103082 102676 44990 50094 46490 22849 29438 24608

104 105778 107271 106611 46774 50320 47987 23702 28721 25453

105 105644 108967 106525 47125 52471 48447 24113 30685 25897

106 93907 95801 94781 41177 46658 42302 20450 26553 21934

107 94989 98149 96031 41278 46087 42716 20343 26864 22112

108 88148 89060 89328 37811 41843 39237 18128 23743 19835

109 109531 112863 110254 48678 54202 50118 24769 30457 26685

110 96864 99195 98008 42111 46293 43698 20741 26624 22608

111 123792 127399 124914 54482 63368 56112 27295 36954 29273

112 134336 136478 135433 58865 67720 60598 29228 37361 31265

113 139218 144487 140552 62243 71892 63999 32042 40725 34080

114 134001 139996 135085 60388 69221 61814 31443 41052 33130

115 132067 136413 132967 58424 65796 59957 29571 38884 31614

116 157016 159634 158031 71040 77757 72443 37164 45389 39044

117 138435 142500 139735 61975 69545 63584 31845 39637 33779

118 145941 150973 147074 65484 73274 67019 33720 42874 35734

119 139053 145196 139979 62315 71450 63732 32100 39938 34080