TFG-LUCIA SORIANO PALOMO

Anuncio
Trabajo Fin de Grado
Grado en Ingeniería de Tecnologías Industriales
MODELOS DE PROGRAMACIÓN LINEAL
PARA DOS PROBLEMAS DE SECUENCIACIÓN
CON VARIOS CONJUNTOS DE TRABAJOS
Autor: Lucía Soriano Palomo
Tutor: Paz Pérez González
Dep. de Organización Industrial y G.E.I.
Escuela Técnica Superior de Ingeniería
Universidad de Sevilla
Sevilla, 2014
1
MODELOS DE PROGRAMACIÓN LINEAL PARA DOS
PROBLEMAS DE SECUENCIACIÓN CON VARIOS
CONJUNTOS DE TRABAJOS
AUTOR: LUCÍA SORIANO PALOMO
TUTOR: PAZ PÉREZ GONZÁLEZ
UNIVERSIDAD DE SEVILLA
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA
2
3
CONTENIDO
Pag.
LISTA DE FIGURAS
6
LISTA DE TABLAS
7
INTRODUCIÓN
10
1
SECUENCIACIÓN
15
1.1
ENTORNOS
16
1.2
RESTRICCIONES DE PROCESAMIENTOS
17
1.3
OBJETIVOS
18
1.4
MÉTODOS DE RESOLUCIÓN
19
2
SECUENCIACIÓN CON VARIOS CONJUNTOS
3
PROBLEMA DE SECUENCIACIÓN CON DOS CONJUNTOS DE
TRABAJOS EN MÁQUINAS PARALELAS Y OBJETIVO MAKESPAN
22
26
3.1
DESCRIPCIÓN
26
3.2
PROBLEMAS RELACIONADOS
27
3.3
EJEMPLOS NUMÉRICOS
31
3.4
MODELO DE PROGRAMACIÓN LINEAL
37
4
PROBLEMA DE SECUENCIACIÓN CON DOS CONJUNTOS DE
TRABAJOS EN FLOW SHOP DE PERMUTACIÓN Y OBJETIVO TIEMPO
TOTAL DE FINALIZACIÓN
41
4
4.1
DESCRIPCIÓN
41
4.2
EJEMPLOS NUMÉRICOS
42
4.3
MODELO DE PROGRAMACIÓN LINEAL
51
4.4
EXPERIMENTOS
52
4.4.1
Batería de problemas y cálculo de épsilon
54
4.4.2
Resultados
55
5
CONCLUSIONES
63
6
ANEXOS
66
6.1
BATERIA DE PROBLEMAS
66
6.2
CÁLCULO ÉPSILON
66
6.3
MODELO MATEMÁTICO EN MATLAB
67
BIBLIOGRAFIA
73
5
LISTA DE FIGURAS
ILUSTRACIÓN 1: SECUENCIA FACTIBLE PARA
EN EL EJEMPLO DEL PROBLEMA
.........................................................................................................................30
ILUSTRACIÓN 2: SECUENCIA FACTIBLE PARA
PARA EL EJEMPLO DEL PROBLEMA
.........................................................................................................................30
ILUSTRACIÓN 3: REPRESENTACIÓN DE LA PRIMERA ASIGNACIÓN PARA EL PROBLEMA
.....................................................................................................................33
ILUSTRACIÓN 4: REPRESENTACIÓN DE LA TERCERA ASIGNACIÓN PARA EL PROBLEMA
.....................................................................................................................34
ILUSTRACIÓN 5: PRIMERA SECUENCIA ADMISIBLE PARA ÉPSILON MÍNIMO EN EL
PROBLEMA
......................................................................................................44
ILUSTRACIÓN 6: SECUENCIA ADMISIBLE PARA ENCONTRAR ÉPSILON MÍNIMO EN EL
PROBLEMA
......................................................................................................44
ILUSTRACIÓN 7: SECUENCIA ADMISIBLE PARA ENCONTRAR ÉPSILON MÁXIMO EN EL
PROBLEMA
......................................................................................................45
ILUSTRACIÓN 8: SECUENCIA ADMISIBLE PARA ENCONTRAR ÉPSILON MÁXIMO EN EL
PROBLEMA
......................................................................................................46
ILUSTRACIÓN 9: SECUENCIA ADMISIBLE PARA ENCONTRAR ÉPSILON MÁXIMO EN EL
PROBLEMA
......................................................................................................46
ILUSTRACIÓN 10: SECUENCIA ADMISIBLE PARA ENCONTRAR ÉPSILON MÁXIMO EN EL
PROBLEMA
......................................................................................................47
ILUSTRACIÓN 11: SOLUCIÓN ÓPTIMA PARA ÉPSILON=11 EN EL PROBLEMA
..........................................................................................................................................................50
ILUSTRACIÓN 12: TIEMPOS MEDIOS DE RESOLUCIÓN PARA EL PROBLEMA
PARA LOS DISTINTOS TAMAÑOS
6
......................................61
LISTA DE TABLAS
TABLA 1: TIEMPOS DE PROCESO DEL CONJUNTO B PARA EL EJEMPLO DEL PROBLEMA
29
TABLA 2: TIEMPOS DE PROCESO DEL CONJUNTO A PARA EL EJEMPLO DEL PROBLEMA
29
TABLA 3: TIEMPOS DE PROCESO DEL CONJUNTO A PARA EL EJEMPLO
31
TABLA 4: TIEMPOS DE PROCESO DEL CONJUNTO B PARA EL EJEMPLO
31
TABLA 5: SECUENCIAS POSIBLES ASIGNANDO PRIMERO LOS TRABAJOS DEL CONJUNTO
B PARA EL PROBLEMA
32
TABLA 6: SECUENCIAS POSIBLES ASIGNANDO PRIMERO LOS TRABAJOS DEL CONJUNTO
A PARA EL PROBLEMA
33
TABLA 7: SECUENCIAS ADMISIBLES PARA ÉPSILON=4 PARA EL PROBLEMA
34
TABLA 8: SECUENCIAS ADMISIBLES PARA
=5 PARA EL PROBLEMA
35
TABLA 9: SECUENCIAS ADMISIBLES PARA
=6 PARA EL PROBLEMA
36
TABLA 10: SECUENCIAS ADMISIBLES PARA
=7 PARA EL PROBLEMA
36
TABLA 11: TIEMPOS DE PROCESO DE DOS CONJUNTOS DE TRABAJOS EN EL PROBLEMA
43
TABLA 12: SOLUCIONES ADMISIBLES PARA LOS DISTINTOS VALORES DE ÉPSILON EN EL
PROBLEMA
49
TABLA 13: SOLUCIONES ADMISIBLES PARA LOS DISTINTOS VALORES DE ÉPSILON EN EL
PROBLEMA
49
TABLA 14: RESULTADOS PARA
56
TABLA 15: RESULTADOS PARA
56
7
TABLA 16: RESULTADOS PARA
57
TABLA 17: RESULTADOS PARA
58
TABLA 18: RESULTADOS PARA
58
TABLA 19: RESULTADOS PARA
59
TABLA 20: TIEMPOS QUE TARDA GUROBI EN RESOLVER EL PROBLEMA
PARA
60
8
9
INTRODUCIÓN
La secuenciación, conocida como scheduling, se define como la asignación de
recursos a tareas durante periodos de tiempo determinados, con objeto de
optimizar una determinada medida de comportamiento [Pinedo, 2012]. Los
recursos y las tareas pueden presentarse de diferentes formas. Los recursos
pueden ser máquinas en un taller, puertas de embarque en un aeropuerto o aulas
en centros de enseñanza, entre otros. Las tareas a las que podemos asociar
dichos recursos son por ejemplo, operaciones en un proceso de producción,
vuelos de llegada o de salida o grupos de alumnos. Los objetivos a optimizar,
pueden ser muy diferentes también: minimizar la suma de los tiempos de
finalización de los trabajos, minimizar el tiempo total en que están desocupadas
las máquinas o minimizar la suma de retrasos, son algunos ejemplos. La
secuenciación es por tanto un proceso de toma de decisiones que existe tanto en
entornos de producción como en entornos de servicios logísticos [Cortés et al.,
2010].
Los resultados de la teoría de programación de una sola máquina se pueden
aplicar al estudio de sistemas de múltiples máquinas, pero a pesar de esta
simplificación en absoluto es un problema fácil. En la programación en varias
máquinas añadimos un nivel adicional de complejidad debido a la asignación de
máquinas. Así, la complejidad del problema de programación en varias máquinas
se infla, a menudo de manera exponencial. Como resultado, de la complejidad, es
la aparición del concepto NP. La tendencia en la investigación es por lo tanto o
encontrar un algoritmo polinómico para un problema tratable, o mostrar que el
problema es intratable y buscar un algoritmo de aproximación [Cheng et al., 1990].
En un problema de programación nos podemos encontrar con distintos entornos
de máquinas. En una primera clasificación se distinguen los sistemas con
máquinas en serie y los sistemas con máquinas en paralelo.
10
En entornos con máquinas en paralelo, una determinada operación sobre un
trabajo puede ser procesada sobre una máquina cualquiera de entre un conjunto
de máquinas. [Lee et al., 2005] Pinedo señaló que un entorno de máquinas en
paralelo es una situación que es importante tanto desde un punto de vista teórico,
ya que es una generalización de la máquina individual, como desde un punto de
vista práctico, debido a la ocurrencia de los recursos en paralelo en el mundo real.
Cuando se trata con máquinas en paralelo, minimizar el makespan, el tiempo de
finalización de todos los trabajos (longitud de la programación), se convierte en un
objetivo de considerable interés. La programación en máquinas en paralelo se
puede ver en dos pasos:

En un primer paso, determinar qué trabajos van a ser asignados a qué
máquinas

En segundo lugar, hay que determinar la secuencia de los trabajos
asignados a cada máquina.
Si el objetivo es minimizar el makespan, sólo es importante el proceso de
asignación, ya que minimizar el makespan, conlleva equilibrar la carga de las
máquinas. Este problema es NP-hard, y durante el último par de décadas se han
desarrollado muchas heurísticas para resolverlo considerando un conjunto de
trabajos.
En entornos en máquinas en serie, cada máquina realiza una operación diferente
del conjunto de operaciones a las que se someten los trabajos. Entre las distintas
configuraciones de máquinas en serie, los sistemas de flujo uniforme o flow-shop
como son conocidos, han sido unos de los temas más investigados en la historia
de la secuenciación [Framinan et al., 2003]. Este problema implica la
determinación del orden de los trabajos sobre las máquinas para cumplir con un
objetivo deseado. Además para muchas situaciones [J.M. Framinan et al., 2005],
se supone que este orden es el mismo en cada máquina (permutation flow-shop).
Entre los objetivos a tener en cuenta al programar en flow-shop, los más comunes
que se encuentran en la literatura sobre secuenciación son minimizar el makespan
o la suma de los tiempos de finalización [Framinan et al., 2005]. Aunque en las
11
últimas décadas la mayoría de la investigación se centra en el makespan, más
recientemente se ha incrementado el estudio de la minimización de la suma de los
tiempos de finalización o completion time. Esta minimización conduce a un uso
estable de los recursos, un rápido paso de los trabajos de máquina a máquina y
por lo tanto la reducción del mínimo inventario en proceso.
En secuenciación existe la posibilidad de encontrarse con varios objetivos [PérezGonzález et al., 2014]. Por lo tanto, los problemas multicriterio han sido
ampliamente estudiados en la literatura de programación de operaciones. En la
literatura clásica de secuenciación multicriterio, lo usual es considerar que los
criterios considerados afectan a todos los trabajos. Pero también es posible tener
situaciones en las que los trabajos pertenecen a clases o conjuntos distintos y con
criterios asociados a cada conjunto [Balasubramanian et al., 2009]. Este tipo de
problemas surgen en un número grande de aplicaciones de la vida real y por lo
tanto han sido objeto de interés por parte de investigadores y profesionales en los
últimos años a pesar de la falta de no haber ni siquiera un nombre común para
dichos problemas. Para ello en [Pérez-González et al., 2014] se trata de dar una
visión unificada sobre el tema que permita avanzar en investigaciones futuras.
Así, teniendo en cuenta el marco de secuenciación descrito, en este Trabajo fin de
Grado se va a llevar a cabo el estudio de dos problemas.

Un primer problema de secuenciación de trabajos pertenecientes a dos
conjuntos distintos en máquinas en paralelo, asociando a cada uno de los
conjuntos el criterio makespan.

El
segundo problema está enmarcado en
un entorno flowshop, con
restricción de permutación, considerando también trabajos pertenecientes a
dos conjuntos distintos y con criterios asociados a estos conjuntos, el
tiempo total de flujo o completion time.
Este trabajo aborda ambos problemas en cuatro capítulos. El capítulo 1, describe
qué son los problemas de secuenciación y la notación que se emplea en ellos.
También se describe brevemente las distintas formas que existe de abordar un
problema de programación de operaciones.
12
En el capítulo 2, se describe la secuenciación con varios conjuntos de trabajos, la
importancia dentro de los problemas de secuenciación y la notación particular,
aplicada a los problemas que se tratan en capítulos siguientes.
En el capítulo 3, se estudia el primer problema, un problema con máquinas en
paralelo, con dos conjuntos de trabajos, asociados a cada uno de ellos el criterio
makespan. Se va a partir de problemas relacionados ya estudiados en la literatura
sobre secuenciación, para continuar con el estudio de pequeñas instancias del
problema para analizar su comportamiento, para posteriormente modelar el
problema con un modelo de programación lineal entero mixto..
En el capítulo 4, se aborda el segundo problema, un problema en un entono
flowshop con restricción de permutación, con dos conjuntos de trabajos, asociados
a cada uno de ellos la suma de los tiempos de finalización. Al igual que el
problema anterior en máquinas paralelas, en el estudio de este problema se parte
de un pequeño ejemplo, en el que se puede ver el comportamiento de éste, para
seguidamente modelarlo mediante programación lineal. Además, en el último
apartado de este capítulo, se programa el problema en el lenguaje Matlab y con la
ayuda de un solver Gurobi se estudia el tiempo de cómputo necesario para que
éste devuelva el óptimo, estudiando la capacidad de Gurobi para dicho resolver de
forma óptima problema, analizando para qué tamaños el tiempo supera un criterio
de parada máximo de una hora.
En el capítulo 5, se exponen las conclusiones llegadas tras el estudio de los
problemas abordados en el capítulo 3 y en el capítulo 4.
Por último en el capítulo 6, se encuentra el código en lenguaje Matlab que se
explica en el capítulo 4.
13
14
1 SECUENCIACIÓN
Como ya se ha comentado en la introducción, los problemas de secuenciación
pueden entenderse como un problema de asignación de recursos en el tiempo,
para llevar a cabo un conjunto de tareas. En este capítulo se van a introducir unas
nociones básicas de los conceptos y la notación usual utilizada en secuenciación
siguiendo el libro de Pinedo, [Pinedo, 2012].
En todos los problemas de secuenciación se ha de considerar el número de
trabajos y el número de máquinas, ambos números se suponen finitos. Al número
de trabajos se denota por n, mientras que al número de máquinas por m. Por lo
general el subíndice j se refiere a trabajos y el subíndice i a máquinas. Si un
trabajo requiere ser procesado por una máquina, dicha etapa se denota como el
par (i, j), operación de trabajo j en la máquina i. Existen unos datos asociados a las
tareas a tener en cuenta, en la formulación y resolución de los problemas de
secuenciación:

Tiempo de proceso o ejecución (
): representa el tiempo de proceso del
trabajo j en la máquina i.

Fecha de llegada ( ): es el tiempo en el que el trabajo llega al sistema, es
decir, el tiempo más temprano en el que puede comenzar su
procesamiento.

Fecha de entrega ( ): representa el envío cometido o fecha de finalización,
la fecha en que el trabajo se le promete al cliente.

Peso (
): es básicamente un factor de priorización. Denota la importancia
del trabajo j con el resto de trabajos en el sistema. Por ejemplo, este peso
puede representar el coste de producción, de almacenamiento o la cantidad
de valor añadido, entre otras formas.
Un problema de programación se describe por un triplete α | β | γ notación
introducida por [R.L. Graham, 1977]. El campo α denota el entorno de las
máquinas y contiene solamente una entrada. El campo β proporciona las
15
características de procesamiento y las limitaciones. Este campo puede contener
ninguna entrada, una entrada o varias entradas. Por último el campo γ describe el
objetivo a minimizar.
En el primer apartado de este capítulo 1, se presentan los diferentes tipos de
entornos que se pueden encontrar, entendiendo por entorno la disposición de los
recursos en la planta. Una vez definido el campo α, en el apartado 2.2 se analiza
el segundo campo del triplete, presentando las restricciones más comunes en los
problemas de secuenciación. Y por último, en el apartado 2.3 se exponen algunos
de los objetivos más relevantes en la literatura..
1.1 ENTORNOS
Como se expuso en la introducción, existen diferentes tipos de entornos de
máquinas:

Una máquina (1): es el caso de una sola máquina. Es el más simple de
todos los entornos y por lo tanto un caso especial de todos los otros más
complicados.
En los entornos con máquinas en serie, se puede establecer una clasificación
respecto al esquema de paso de los trabajos por las diferentes máquinas:

Sistemas de flujo uniforme (Flow shop): todos los trabajos siguen la misma
ruta, es decir, tienen que ser procesados primero en la máquina 1, luego en
máquina 2, y así sucesivamente. Después de terminar en una máquina, el
trabajo se une a una cola que operará bajo la disciplina FIFO (first in, first
out).

Sistemas de tipo taller (Job shop): cada trabajo tiene su propia ruta
predeterminada a seguir.

Sistemas de taller abierto (Open shop): el paso de cada trabajo por las
máquinas es libre.
Respecto a los entornos con máquinas en paralelo se distinguen tres tipos:
16

Máquinas idénticas en paralelo (
): el trabajo requiere una sola operación
y puede ser procesado en cualquiera de las m máquinas.

Máquinas con diferentes velocidades en paralelo (
máquina i se denota por
uniformes.
): la velocidad de la
. Este entorno es conocido como máquinas
denota el tiempo que gasta la máquina i en procesar el
trabajo j. Si todas las máquinas tienen la misma velocidad,
=1 y
= ,
por lo tanto estaríamos en el caso anterior.

Máquinas independientes en paralelo (
): Es una generalización del caso
anterior. Cada máquina posee una velocidad de proceso diferente sobre
cada trabajo. Trabajo j es procesado con velocidad
en máquina i. Si las
velocidades de las máquinas son independientes de los trabajos
= , por
lo tanto estaríamos en el caso anterior.
Existen otros entornos más complejos, entornos híbridos que no se incluyen en
este trabajo, para más información ver, por ejemplo, Pinedo 2012.
1.2 RESTRICCIONES DE PROCESAMIENTOS
Las restricciones de proceso y limitaciones especificadas en el campo β pueden
ser más de una, por lo que este campo puede incluir múltiples entradas, como ha
sido comentado anteriormente. A continuación se presentan algunas de las más
comunes en la literatura sobre secuenciación:

Fechas de llegada ( ): si este símbolo aparece en el segundo campo, el
trabajo j no puede iniciar su proceso antes de su fecha de llegada. Si
no
aparece en el campo β, el procesamiento de la tarea j puede comenzar en
cualquier momento.

Preemptions (prmp): Interrupción, es decir, no es necesario mantener un
trabajo en una máquina, una vez iniciado hasta su terminación. Se permite
interrumpir el proceso de un trabajo en cualquier punto en el tiempo y poner
un trabajo en diferentes máquinas (en el caso de que haya máquinas
iguales para realizarlo).
17

Restricciones de precedencia (prec): Requiere que uno o más trabajos
deban ser completados antes de permitir que otro trabajo inicie su proceso.

Tiempos de setup (sik): es el tiempo de cambio en el proceso de los trabajos
i y los trabajos k.

Permutación (prmu): sólo se da en el flowshop. Las colas en las máquinas
operan de acuerdo con la disciplina FIFO (first in first out). Esto implica que
el orden o permutación en el que los trabajos pasan por la primera máquina
se mantiene a lo largo del sistema.
Para conocer más restricciones, ver, por ejemplo, Pinedo 2012.
1.3 OBJETIVOS
Los objetivos a minimizar más comunes se definen en función del tiempo de
finalización de los trabajos. Por ello se definen los siguientes parámetros:

Tiempo de finalización del trabajo j en la máquina i (
): instante de
terminación del proceso de la operación j en la máquina i. En los entornos
con una única máquina se denota
permutación, se suele denotar por
en la última máquina

. En los entornos
flowshop de
al tiempo de finalización del trabajo j
.
Retraso de un trabajo j ( ): se define como
= - . Mide la desviación
respecto a la fecha de entrega. Es positiva cuando el trabajo j se haya
completado tarde y negativa cuando dicho trabajo se ha completado
temprano.

Tardanza de un trabajo j ( ): se define como
=max ( - , 0)=max
( ,0).Mide el tiempo de retraso cuando el trabajo se termina más tarde de
su fecha.
A continuación se exponen algunos de los objetivos más comunes en la literatura
sobre secuenciación:

Tiempo de finalización (∑ ): minimizar la suma de los tiempos de
finalización de los trabajos.
18

): el makespan definido como el máximo de ( ,…,
Makespan (
), es
equivalente al tiempo en el que la última tarea sale del sistema.

Tiempo de finalización ponderado (∑
): minimizar el coste total asociado
a la finalización de los trabajos.

Retraso total (∑ ): minimizar la suma de retrasos o retraso total.

Retraso máximo (
): se define como el máximo de ( ,…,
). Minimizar
el retraso máximo sería, minimizar el retraso de todos los trabajos.

Retraso total ponderado (∑
): minimizar el coste total asociado al retraso
total.

Tardanza total (∑ ): minimizar la tardanza total.

Tardanza máxima (
): se define como el máximo de ( ,.., ). Minimizar
la tardanza máxima sería, minimizar la tardanza de todos los trabajos.

Tardanza total ponderada (∑
): minimizar el coste total asociado a la
tardanza total.
Hay ocasiones que interesa optimizar más de un objetivo. Se denominan
problemas multicriterio. Los enfoques en los problemas multicirterio más comunes
a optimizar, considerando el caso de dos objetivos

Combinación lineal convexa: Min λ

Épsilon Constraint: Min

Pareto: Min (
,
y
+ (1-λ)
sujeto a
), que se denota #(
son:
, con λ
(0,1)
≤ϵ, que se denota ϵ(
,
/
)
)
1.4 MÉTODOS DE RESOLUCIÓN
Para abordar un problema de secuenciación, se puede hacer mediante métodos
exactos o métodos aproximados [Pinedo, 2012].
Los procedimientos exactos buscan la mejor solución, denominada óptimo, con
respecto al objetivo que se quiere hallar. Dichos métodos son rápidos para
19
problemas polinomiales (P) y para algunos tamaños pequeños de problemas no
polinomiales (NP) que no sean excesivamente complejos. Estos métodos para
problemas NP-hard requieren a menudo un tiempo de búsqueda de la solución
muy grande cuando el número de trabajos/máquinas se incrementa. Entre estos
métodos se encuentran, por ejemplo, la programación dinámica y los algoritmos
de ramificación y acotamiento (branch and bound).
Los métodos aproximados o heurísticos se centran en buscar una buena solución,
sin necesidad de que tenga que ser la mejor, en periodos de tiempos pequeños o
razonables. Estas técnicas se clasifican de la siguiente forma:

Heurísticas de tipo constructivo, comienzan sin una secuencia, y se
construye una poco a poco mediante la adición de un trabajo cada vez de
acuerdo a una regla. Son heurísticas de este tipo las reglas de despacho o
dispatching rules, como por ejemplo FIFO (First In First Out), SPT (Shortest
Processing Time first) o LPT (Longest Processing Time first).

Metaheurísticas, se basan en mejorar soluciones ya encontradas. Los
procedimientos tratan de optimizar localmente alrededor de una solución,
para hallar mínimos locales. En este grupo se encuentran por ejemplo,
Algoritmos Genéticos, Colonias de Hormigas o Búsqueda de Entorno
Variable.
20
21
2 SECUENCIACIÓN CON VARIOS CONJUNTOS
En los últimos años [Agnetis et al., 2004], los problemas de secuenciación en los
que múltiples agentes compiten por el uso de recursos están recibiendo cada vez
más atención en diferentes entornos de aplicaciones y campos, como la
inteligencia artificial, la teoría de decisión, etc. En [Pérez-González et al., 2014]
encontramos algunas de estas aplicaciones en la vida real:

La secuenciación en una cadena de suministro: en una cadena de
suministro, un problema clásico es reducir los costes de fabricación y
distribución. Si los clientes están compitiendo por un recurso común
entonces el problema implica interferencia de dos conjuntos de trabajos.

Resecuenciación: actualizar la secuencia existente teniendo en cuenta
interrupciones u otros cambios, como por ejemplo la llegada de nuevos
trabajos a procesar. En este problema existen dos conjuntos de trabajos,
los trabajos que ya han sido programados y los nuevos a programar, por lo
que se puede formular como un problema de programación con dos
agentes.

Telecomunicaciones: la transmisión de paquetes de datos que deben llegar
a su destino dentro de un límite de tiempo es otro ejemplo. Mientras que
para algunas aplicaciones, esta transferencia de archivos o comunicación,
no debe exceder una demora media, para otras aplicaciones como voz o
video, tienen más prioridad lograr una tasa de pérdida específica. Se
identifica de nuevo varios conjuntos de trabajos con diferentes objetivos que
deben competir por el mismo recurso, el ancho de banda.
A pesar de estas aplicaciones en la vida real, no ha sido establecido una
definición, un nombre común, ni una notación específica para este tipo de
problemas hasta que en [Pérez-González et al., 2014] se ha dado una visión
unificada de este tipo de problemas que, aunque se trata de un caso especial de
problemas de programación multicriterio, la existencia de varios conjuntos de
22
trabajos hace que la complejidad de estos problemas cambie incluso si las
funciones objetivos son las mismas para todos los conjuntos.
El nombre más empleado para denominar a este tipo de problemas es multi-agent
scheuduling problem (MASP) [Pérez-González et al., 2014]. La situación es la
siguiente, se considera
conjuntos de
. Se define
y
tiene asignado un criterio
trabajos denotados por
. Cada conjunto de trabajos
. Como muchas referencias trata con dos conjuntos
(este trabajo particularmente también), se denota un conjunto como
conjunto como
objetivos
y
con
y
y otro
trabajos cada uno respectivamente, y funciones
. Como ya se señaló en el apartado 1.3, en la programación con
dos agentes, algunos de los enfoques que más se estudian para el problema
MASP, son combinación lineal convexa, épsilon constraint y pareto [Agnetis et al.,
2004]:

MÉTODO DE COMBINACIÓN LINEAL: Dado dos conjuntos de trabajos
y
, con objetivos
y
, se pondera cada objetivo dependiendo de su
importancia para buscar la solución óptima. Por lo tanto, dado un valor, λ
tal que λ
(0,1), encontrar una secuencia óptima
+ (1-λ)
sea
mínimo.MÉTODO DE RESTRICCIÓN-EPSILON: Dado dos conjuntos de
trabajos
y
con objetivos
secuencia óptima
y
y dado un valor
tal que
y
ϵ, encontrar una
sea mínima. Siguiendo la
notación de Gra am se indica este problema como
o también
siempre que esto no
se puede indicar simplemente como
genere confusión

ÉTODO DE PARETO Dado dos conjuntos de trabajos
objetivos
y
dominadas (
encontrar el conjunto
,
de
todas
las
) y una correspondiente secuencia de
cada par. Se indica este problema como
podemos encontrar como
y
soluciones
y de
con
no
para
o también lo
.
En el primer enfoque se pretende encontrar una solución en equilibrio para los
objetivos dependiendo del peso que se le da a cada agente/conjunto
23
(dependiendo de ). En el segundo enfoque, el agente A encuentra la mejor
solución para él, dada una secuencia aceptable para el agente B restringido por el
coste . Una secuencia del método restricción-épsilon puede no tener soluciones
factibles (por ejemplo, si
es muy pequeño). En el último enfoque, los dos agentes
proporcionan la lista de todas las posibles soluciones no dominadas, para negociar
el equilibrio más aceptable para los dos.
Otros enfoques que se pueden encontrar en la literatura son Goal Programming y
Lexicographical approach. El enfoque Goal Programming, denotado por
, también llamado modelo de decisión, es un caso especial del método
de restricción épsilon. El objetivo aquí es encontrar una secuencia factible
satisfaciendo
y
. El enfoque lexicográfico, denotado por
, minimiza todos los criterios en el orden dado. Sólo en los enfoques
épsilon constraint y lexicográfico, el orden en el que son considerados los criterios
es relevante, diferentes órdenes implican diferentes problemas.
Para el estudio de los problemas que se han considerado en este trabajo se van a
tener en cuenta las siguientes propiedades básicas de problemas con una
máquina y un conjunto de trabajos:

Propiedad 1: Si el makespan es el criterio para cada uno de los conjuntos,
entonces hay una secuencia óptima en el que todos los trabajos que
pertenecen al conjunto se procesan de forma consecutiva.

Propiedad 2: Si el tiempo total de finalización es el criterio para uno de los
conjuntos entonces existe una secuencia óptima en la que los trabajos son
procesados por la regla SPT (Shortest Processing Time), es decir, desde
menos a más duración.
24
25
3 PROBLEMA DE SECUENCIACIÓN CON DOS
CONJUNTOS DE TRABAJOS EN MÁQUINAS
PARALELAS Y OBJETIVO MAKESPAN
3.1 DESCRIPCIÓN
En la práctica, a menudo se tiene que hacer frente al problema de equilibrar la
carga en las máquinas en paralelo. En las máquinas idénticas en paralelo el
trabajo sólo requiere de una sola operación y puede ser procesado en cualquiera
de las m máquinas. Es por ello que [Pinedo, 2012] señala que es una
generalización del problema con una única máquina.
Mientras que con una máquina el objetivo makespan solo tiene interés cuando
hay tiempos de set-up (ya que sin tiempos de preparación el problema es trivial),
cuando se trata de máquinas en paralelo el maskespan se convierte en un objetivo
de considerable interés ya que minimizando el makespan de un banco de
máquinas en paralelo, se asegura un buen equilibrio [Pinedo, 2012]. Sin embargo,
en este caso el problema es NP-hard, por lo que obtener la solución óptima no es
fácil cuando el problema considera muchos trabajos.
Dado que en la práctica es posible tener situaciones en la que los trabajos
pertenecen a conjuntos distintos [Agnetis et al., 2003], con un criterio asociado con
cada conjunto, y este problema no se ha considerado anteriormente en la literatura
sobre secuenciación, se plantea el siguiente problema:
Sean
y
dos
agentes
y
B,
cada
uno
con
un
conjunto
de
trabajos
respectivamente. Cada conjunto tiene un número de trabajos a procesar
y
y
A
. El conjunto de trabajos tiene unos tiempos de proceso,
. Los trabajos van a ser procesados en máquinas idénticas paralelas,
denotado por
. Los agentes tienen que programar sus trabajos en dichas
máquinas paralelas, recursos comunes, pero cada agente desea minimizar una
función objetivo. Ambos agentes van a minimizar el tiempo de finalización del
último trabajo en procesaro makespan, denotado
26
,
para cada agente
respectivamente. El enfoque estudiado en este problema es el conocido como
épsilon constraint. Por lo tanto, utilizando la notación propuesta por Graham se
define el problema como sigue:
3.2 PROBLEMAS RELACIONADOS
Para el estudio del problema planteado en el apartado anterior, se va a partir del
estudio de problemas relacionados, en concreto dos. En el primero se minimiza el
makespan con un solo conjunto de trabajos en máquinas paralelas, y en el
segundo se minimiza el makespan de dos conjuntos de trabajo mediante el
enfoque de épsilon constraint para una sola máquina.
Primero se considera el problema
[Pinedo, 2012]. Este problema es
interesante porque, como ya se ha comentado anteriormente, minimizar el
makespan tiene el efecto de equilibrar la carga sobre las distintas máquinas, como
señala [Pinedo, 2012]. Este problema a partir de dos máquinas es NP-hard, por lo
que, durante el último par de décadas, se han desarrollado muchas heurísticas
para resolverlo. Una heurística muy común usada para resolver el problema de
forma sencilla, y que da una solución aproximada del problema, se describe a
continuación [Pinedo, 2012]:
Se ordenan los trabajos mediante la regla LPT (The Longest Processing Time
first). Luego se van asignando a la máquina más libre de carga. Esta heurística
tiende a colocar los trabajos más cortos al final del programa, donde pueden ser
utilizados para equilibrar las cargas.
Existe un teorema que demuestra que la solución encontrada por esta heurística
dista de la solución óptima una cantidad dependiente del número de máquinas y
no superior a :
27
Ahora se aborda el problema de encontrar una solución óptima de
. Para ello estudiamos primero el problema
analizado por
[Agnetis et al., 2003]. Se demuestra que este problema puede ser resuelto
eficientemente por una reducción conocida, problema de un solo agente
.Para este último Lawler (1973) elabora un algoritmo con complejidad
O(
.
Dada una secuencia σ para dos conjuntos de trabajos, el tiempo de finalización del
último trabajo:
donde para
Si existe una secuencia factible
finita
, entonces
resolviendo
con función objetivo
es también factible y óptima para
alcanza el mismo valor óptimo
. De lo contrario si
y
, entonces
no hay solución factible existente para el problema con dos agentes.
A continuación se va a aplicar el algoritmo de Lawler para el problema
en un pequeño ejemplo, para entender un poco mejor este algoritmo.
Se define el tiempo de finalización total
, como la suma de los tiempos de
proceso de todos los trabajos, tanto del conjunto A como del conjunto B (Tabla 2,
Tabla 1)
28
3
1
Tabla 1: Tiempos de proceso del conjunto B para el ejemplo del problema
2
4
Tabla 2: Tiempos de proceso del conjunto A para el ejemplo del problema
Si dicho tiempo p es menor que ϵ, la secuencia factible es procesar primeramente
todos los trabajos de A, y a continuación se procesan los trabajos del conjunto B,
como podemos observar en la Ilustración 1. En dicho diagrama de Gantt se
observa que el tiempo de finalización de la última tarea de A que se procesa, el
makespan de A, es un valor de cuatro, mientras que el de B es de diez.
29
Máquina 1
3
0
1
1
2
3
2
4
Ilustración 1: Secuencia factible para
5
4
6
7
8
9
10
11
12
en el ejemplo del problema
Si por el contrario el valor que toma épsilon es menor que la suma de los tiempos
de proceso de todos los trabajos de todos los conjuntos, es decir
, la
secuencia factible, sería procesar todos los trabajos de B, ya que el valor del
makespan del conjunto B está restringido por ϵ, y a continuación procesamos los
trabajos del conjunto A. Para dicha secuencia podemos observar en la Ilustración
2 que el makespan de A ahora toma un valor de diez y el de B toma un valor de
seis.
Máquina 1
2
0
1
4
2
3
Ilustración 2: Secuencia factible para
4
3
5
6
7
1
8
9
10
para el ejemplo del problema
30
11
12
3.3 EJEMPLOS NUMÉRICOS
En este apartado se va a analizar un ejemplo pequeño para el problema
, considerando m=2, y dos conjuntos de trabajos,
dos trabajos, j=1…2 y k=1…2 con sus tiempos de proceso
y
y
, con
dados en las
tablas 3 y 4respectivamente.
3
1
Tabla 3: Tiempos de proceso del conjunto A para el ejemplo
2
4
Tabla 4: Tiempos de proceso del conjunto B para el ejemplo
En este apartado se pretende estudiar las distintas secuencias posibles del
problema, que dependen del valor que tome la constante épsilon, que restringe el
valor del makespan del conjunto B. Existirá un valor de épsilon mínimo, por debajo
del cual el problema será infactible y un valor de épsilon máximo por encima del
cual el problema será siempre posible. Y entre estos dos valores extremos, épsilon
mínimo y épsilon máximo, oscilaran valores de épsilon para los cuales habrá
secuencias factibles y una o más secuencias óptimas.
31
Para estudiar los diferentes casos que se pueden encontrar según los valores del
parámetro
, se van a generar las distintas secuencias posibles. Asignando
primero todos los trabajos pertenecientes al conjunto B a las dos máquinas,
obtenemos las siguientes distintas secuencias posibles:
Primera
Segunda
Tercera
Cuarta
asignación
asignación
asignación
asignación
Máquina 2
,
,
,
,
Máquina 1
,
,
,
,
5
7
7
5
4
4
4
4
Tabla 5: Secuencias posibles asignando primero los trabajos del conjunto B para el
problema
Asignando primero los trabajos del conjunto B se pretende encontrar el
decir, el mínimo valor que puede tomar
, es
en el problema con el que podría ser
minimizado el objetivo de dicho conjunto, ya que si se recuerda la formulación del
problema, este objetivo está sujeto a dicho parámetro. En este ejemplo,
Por debajo de este valor,
.
no es posible resolver el problema ya que no existe
ninguna secuencia factible (problema infactible).
32
Máquina 2
Máquina 1
0
1
2
3
4
5
6
7
8
Ilustración 3: Representación de la primera asignación para el problema
Asignando ahora todos los trabajos de A lo antes posible:
Primera
Segunda
Tercera
Cuarta
asignación
asignación
asignación
asignación
Máquina 2
,
,
,
,
Máquina 1
,
,
,
,
3
3
3
3
5
7
7
5
Tabla 6: Secuencias posibles asignando primero los trabajos del conjunto A para el
problema
Procesando primero todos los trabajos del conjunto A, se atrasan todos los
trabajos del conjunto B, con lo que se pretende encontrar el
, el épsilon a
partir del cual todas las soluciones del objetivo del conjunto B son admisibles. En
este ejemplo,
.
33
Máquina 2
Máquina 1
0
1
2
3
4
5
6
7
8
Ilustración 4: Representación de la tercera asignación para el problema
Por lo tanto, los valores de
que va permitir que el problema tenga soluciones
admisibles serán valores:
Se analizan ahora las posibles soluciones admisibles con
oscilando entre dichos
valores mínimo y máximo.
Si ϵ=4, las asignaciones admisibles que se pueden tener en este ejemplo son:
Primera
Segunda
Tercera
Cuarta
Quinta
Sexta
asignación asignación asignación asignación asignación asignación
Máquina
,
,
,
,
,
,
,
,
,
,
5
7
7
5
6
6
4
4
4
4
4
4
2
Máquina
,
,
1
Tabla 7: Secuencias admisibles para épsilon=4 para el problema
34
Observando la Tabla 7, la primera asignación y la cuarta asignación son
soluciones óptimas para este valor de .
Si ϵ=5, todas las anteriores asignaciones son soluciones válidas (ϵ=4), más las
nuevas obtenidas para dicho valor de .
Séptima
asignación
Máquina
,
2
Máquina
,
1
5
5
Tabla 8: Secuencias admisibles para
Para este nuevo valor de
=5 para el problema
siguen siendo óptimas la primera y la cuarta
asignación.
Si ϵ=6, todas las anteriores asignaciones son soluciones válidas (ϵ=4,5), más las
nuevas obtenidas para dicho valor de .
35
Octava
Novena
asignación asignación
Máquina
,
2
Máquina
,
,
5
4
5
6
Tabla 9: Secuencias admisibles para
Para este nuevo valor de
,
=6 para el problema
es óptima la novena asignación, ya que conseguimos
reducir el makespan de A a un valor 4, sometiendo al conjunto B al valor de .
Si ϵ=7 todas las anteriores asignaciones son soluciones válidas (ϵ=4, 5,6), más las
nuevas obtenidas para dicho valor de .
Décima
asignación
Máquina
,
2
Máquina
,
1
5
5
Tabla 10: Secuencias admisibles para
=7 para el problema
36
Con este nuevo valor de
no es mejorada la secuencia novena, que sigue siendo
óptima para dicho valor.
Por lo tanto, se puede observar a partir del pequeño ejemplo que se ha analizado,
que dependiendo del valor de , el problema puede que sea infactible (cuando
es menor que
), que todas las asignaciones sean factibles, y el problema sea
trivial (cuando
es mayor que
), o que el problema tenga distintas
asignaciones factibles, y una o más sean óptimas (cuando
está entre
y
).
3.4 MODELO DE PROGRAMACIÓN LINEAL
Como define literalmente [Canca, 2013]:
“Un modelo es una cierta “estructura” construida con el propósito de reflejar
determinadas características y analizar el comportamiento de un determinado
objeto o sistema. Utiliza, de forma general, relaciones y definiciones matemáticas,
con el fin de representar relaciones internas del sistema que está siendo
modelado.”
Existen varias razones por las que emplear modelos. Hacer experimentos con
modelos reales supone una dificultad y puede conllevar algún riesgo. Otra razón
por la que utilizar modelos es que al modelar el problema se hace un estudio de
mayor profundidad del sistema que estamos modelando.
La construcción de un modelo implica la asociación de un criterio de maximizar o
minimizar el objetivo que estamos considerando. Es por ello que cuando hablamos
de modelar, hablamos de optimizar. Y en el ámbito del modelado, la programación
lineal es una parte muy importante, ya que a pesar de la difícil tarea que supone
esta característica al modelar, facilita la resolución del modelo.
La formulación del modelo de programación lineal que se presenta en este
apartado es una modificación del modelo de programación lineal formulado para
dos conjuntos de trabajos en máquinas paralelas, en el que se minimizan
37
y
,
[Balasubramanian et al, 2008]. Es una formulación en
tiempo discretizado que fue propuesta originalmente por Sousa y Wolsey(1992).
Para el problema estudiado,
se tienen las siguientes variables:


L indica el parámetro que decide el valor makespan.

T es el tiempo máximo de comienzo posible, que viene dado por
El modelo modificado es el siguiente:
(1) y (2) Aseguran que cada trabajo esté programado exactamente una vez. El
primer grupo también asegura que ningún trabajo de A se complete después de L.
(3) Se asegura de que no haya más trabajos en procesamiento que máquinas.
38
(4) Son limitaciones de integralidad en las variables de decisión.
Tras un estudio exhaustivo del problema, y la búsqueda de un modelo de
programación lineal más sencillo con el que se pueda representar el problema
estudiado, dada la complejidad del modelo modificado de [Balasubramanian et al,
2008], en este Trabajo Fin de Grado se ha optado por no programarlo con una
herramienta de resolución matemática (como Gurobi), siendo una línea de
investigación interesante para los investigadores en secuenciación.
39
40
4 PROBLEMA DE SECUENCIACIÓN CON DOS
CONJUNTOS DE TRABAJOS EN FLOW SHOP DE
PERMUTACIÓN Y OBJETIVO TIEMPO TOTAL DE
FINALIZACIÓN
4.1 DESCRIPCIÓN
Un flow-shop es un conjunto de m máquinas en serie, en las que cada trabajo
tiene que ser procesado en cada unas de éstas máquinas [Pinedo, 2012]. Es decir
todos los trabajos tienen que seguir la misma ruta, primero ser procesados en la
máquina 1, a continuación en la máquina 2, y así sucesivamente. Es por ello que
después de terminar en una máquina un trabajo, se une a la cola de la siguiente
máquina.
A esta disciplina está asociada la restricción de permutación (pmru), el orden por
el que pasan los trabajos en la primera máquina se mantienen a lo largo del
sistema. Operan bajo la disciplina FIFO, el primero que entra, es el primero en
salir.
Como se comentó en la introducción, entre los objetivos que podemos asociar a
flow-shop, encontramos la minimización del tiempo de finalización de la última
tarea, makespan, objetivo que implica por lo general una buena utilización de la
máquina. Es por ello que la mayoría de la investigación durante las últimas
décadas se han centrado en este objetivo, pero más recientemente, la
investigación dedicada a la minimización de los tiempos de finalización de los
trabajos (completion time) se ha incrementado ya que conduce a un uso estable
de los recursos y la reducción del inventario [J.M. Framinan et al., 2005]. Este
problema es NP para el caso con un único conjunto.
Al ser considerado más relevante dicho objetivo para el entorno de producción
dinámico actual, [J.M. Framinan et al., 2005], unido a que los problemas de
gestión en los que múltiples agentes compiten en el uso de recursos están
41
recibiendo cada vez más atención como se comentó en el Capítulo 0, se plantea el
estudio del siguiente problema:
Sean
dos
y
agentes
y
B,
cada
uno
con
un
conjunto
de
trabajos
respectivamente. Cada conjunto tiene un número de trabajos a procesar
y
y
A
. El conjunto de trabajos tiene unos tiempos de proceso,
. Los trabajos van a ser procesados en máquinas m máquinas en serie,
denotado por
. Los trabajos de ambos agentes tienen que pasar con en el
mismo orden que hayan pasado por la primera máquina por todas las máquinas.
Esta limitación es denotada como pmru en el campo beta de la notación de
Graham. Ambos agentes van a minimizar el tiempo de finalización cada uno de los
trabajos en la última máquina que los procesa
,
. El enfoque estudiado en
este problema es el conocido como épsilon constraint. Por lo tanto utilizando la
notación propuesta por Graham se define el problema como sigue:
Al igual que el caso con un único conjunto, este problema es NP, por lo que no
existe un algoritmo que proporcione la solución óptima en tiempo polinomial.
4.2 EJEMPLOS NUMÉRICOS
A partir de un pequeño ejemplo que va a ser analizado, se van a buscar los
distintos valores entre los que se mueve el valor de épsilon. Un épsilon mínimo,
por debajo del cual el problema es infactible y un épsilon máximo por encima del
cual todas las soluciones son factibles. También será analizado el problema
cuando se mueva entre estos valores extremos, identificando la o las soluciones
óptimas que pudiesen aparecer en el ejemplo.
Considérese dos conjuntos de trabajos,
proceso
y
, con dos trabajos, con tiempos de
, dependiente de la máquina en el que es procesado (i=1,2),
respectivamente.
42
Máquina 1
Máquina 2
2
4
4
3
2
1
1
4
Tabla 11: Tiempos de proceso de dos conjuntos de trabajos en el problema
Para ver con mayor facilidad dicho ejemplo se va a denominar los trabajos de
ambos conjuntos de j=1…4. Se va a tratar de encontrar para este ejemplo los
valores entre los que oscila el parámetro épsilon, parámetro que restringe el
objetivo del conjunto B. Por debajo de épsilon mínimo no hay soluciones
admisibles y por encima de épsilon máximo todas las soluciones son admisibles.
Para encontrar
hay que probar qué secuencia proporciona el menor valor del
tiempos total de terminación de los trabajos de B, es decir, el menor valor de
.
Se tendrá los menores valores cuando los trabajos de B se secuencien al principio
en la secuencia. Así, se probará el caso [3,4,x,x] y el caso [4,3,x,x], para
comprobar cuál de las dos secuencias da menor valor de
de
, y ése será el valor
. Notar que da igual en qué lugar se secuencian los trabajos de A (trabajos
1 y 2), ya que no influyen en este caso en el valor de
43
.
Máquina 2
3
Máquina 1
3
0
1
4
4
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Ilustración 5: Primera secuencia admisible para épsilon mínimo en el problema
Máquina 2
4
Máquina 1
4
0
3
3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Ilustración 6: Secuencia admisible para encontrar épsilon mínimo en el problema
En la Ilustración 5 secuenciando primero el trabajo 3 y después el 4,
puede
comprobarse que los tiempos de finalización de ambos trabajos pertenecientes al
conjunto B son:
Por lo tanto la suma de los tiempos de finalización del conjunto B para esta
secuencia:
44
En la Ilustración 6 secuenciando primero el trabajo 4 y después el 3, puede
comprobarse que los tiempos de finalización de ambos trabajos pertenecientes al
conjunto B son:
Por lo tanto la suma de los tiempos de finalización del conjunto B para esta
secuencia:
Así la primera secuencia ilustrada en este ejemplo da el valor de épsilon mínimo:
Para encontrar
los últimos trabajos en ser procesados, van a ser los del
conjunto B, alargando así lo máximo el tiempo total de terminación de B. Ahora
influyen el orden en el que se van a procesar los trabajos del conjunto A , por lo
que habrá que probar con las distintas secuencias, [1,2,3,4], [1,2,4,3], [2,1,3,4], y
[2,1,4,3] y ver para cada una, la suma de los tiempos de finalización del conjunto
B. El de mayor valor de entre las secuencias, será el épsilon máximo.
Máquina 2
1
Máquina 1
1
0
1
2
2
2
3
4
5
3
3
6
7
8
4
4
9
10 11 12 13 14 15 16 17
Ilustración 7: Secuencia admisible para encontrar épsilon máximo en el problema
En la Ilustración 7 se puede observar la secuencia [1,2,3,4] y como los tiempos de
finalización son los siguientes:
45
Y por lo tanto la suma de los tiempos de finalización para esta secuencia es:
Máquina 2
1
Máquina 1
1
0
1
2
2
2
3
4
4
5
6
7
4
3
3
8
9
10 11 12 13 14 15 16 17
Ilustración 8: Secuencia admisible para encontrar épsilon máximo en el problema
En la Ilustración 8 se puede observar la secuencia [1,2,4,3] y como los tiempos de
finalización son los siguientes:
Y por lo tanto la suma de los tiempos de finalización para esta secuencia es:
Máquina 2
Máquina 1
2
0
1
2
3
4
5
2
1
3
1
3
4
6
7
8
9
4
10 11 12 13 14 15 16 17
Ilustración 9: Secuencia admisible para encontrar épsilon máximo en el problema
46
En la Ilustración 9 se puede observar la secuencia [2,1,3,4] y como los tiempos de
finalización son los siguientes:
Y por lo tanto la suma de los tiempos de finalización para esta secuencia es:
Máquina 2
2
Máquina 1
2
0
1
2
1
1
3
4
5
4
6
7
4
3
3
8
9
10 11 12 13 14 15 16 17
Ilustración 10: Secuencia admisible para encontrar épsilon máximo en el problema
Y por último, en la Ilustración 10 se puede observar la secuencia [2,1,4,3] y como
los tiempos de finalización son los siguientes:
Y por lo tanto la suma de los tiempos de finalización para esta secuencia es:
Al retrasar lo máximo la finalización de los trabajos tres y cuatro, pertenecientes al
conjunto B, la máxima suma de tiempos de finalización de dichos trabajos es 29,
como se puede ver en la secuencia admisible en la Ilustración 8. Se observa en
este ejemplo que por lo tanto
.
Por lo tanto, los valores que puede tomar épsilon en este ejemplo serían:
47
Se analizan ahora las posibles soluciones admisibles con épsilon oscilando entre
dichos valores mínimo y máximo.
48
ϵ=10
ϵ=10
ϵ=11
ϵ=11
ϵ=13
ϵ=14
ϵ=14
ϵ=16
ϵ=16
ϵ=16
ϵ=17
ϵ=18
Secuencia [3,4,1,2] [3,4,2,1] [4,3,1,2] [4,3,2,1] [4,1,3,2] [4,2,3,1] [3,1,4,2] [1,3,4,2] [3,2,4,1] [4,2,1,3] [4,1,2,3] [3,2,1,4]
22
22
21
22
20
20
21
18
24
18
18
20
10
10
11
11
13
14
14
16
16
16
17
18
ϵ=26
ϵ=27
ϵ=29
Tabla 12: Soluciones admisibles para los distintos valores de épsilon en el problema
ϵ=19
ϵ=19
ϵ=20
ϵ=22
ϵ=22
ϵ=23
ϵ=23
ϵ=24
ϵ=25
Secuencia [3,1,2,4] [1,4,3,2] [2,3,4,1] [1,3,2,4] [1,4,2,3] [2,3,1,4] [2,4,3,1] [2,1,3,4] [2,4,1,3] [1,2,3,4] [2,1,4,3] [1,2,4,3]
19
18
21
17
17
18
21
16
20
15
16
15
19
19
20
22
22
23
23
24
25
26
27
29
Tabla 13: Soluciones admisibles para los distintos valores de épsilon en el problema
49
En la Tabla 12, aparece para cada valor de épsilon las secuencias admisibles y el
tiempo total de terminación (o flowtime) de cada conjunto de trabajos. A medida
que aumentamos el valor de épsilon todas las secuencias establecidas para
épsilon menores son también admisibles.
Si
todas las secuencias anteriores (para épsilon menores hasta
) son
factibles. Así sucesivamente. Por ejemplo, la secuencia óptima para dicho épsilon
sería [4,3,1,2]:
Máquina 2
4
Máquina 1
4
0
3
3
1
2
1
1
3
4
2
2
5
6
7
8
9
10
11
12
13
14
15
Ilustración 11: Solución óptima para épsilon=11 en el problema
Los tiempos de finalización que podemos observar en la Ilustración 11 para todos
los trabajos son:
Por lo tanto, el flow-time de ambos conjuntos de trabajos es de:
50
4.3 MODELO DE PROGRAMACIÓN LINEAL
El siguiente modelo de programación lineal está basado en el modelo Manne,
[Tseng et al. ,2004], que propone un modelo de programación lineal entera para el
problema general de job shop. En su modelo, Manne asegura que solo se puede
cumplir una de las siguientes opciones, que o el trabajo j precede al trabajo k en
algún lugar de la secuencia, o el trabajo k precede al trabajo j.



(1) Asegura que el tiempo de finalización de cada trabajo en la máquina 1 no
ocurra antes de la duración del tiempo de proceso del trabajo en la máquina 1.
(2) Asegura que el tiempo de finalización de cada trabajo en la máquina i no sea
antes que el tiempo de finalización del trabajo en la máquina i-1 más el tiempo de
proceso en la máquina i.
51
(3) y (4) Son restricciones disyuntivas pareadas que aseguran que el trabajo j
precede al trabajo k, o bien el trabajo k sigue en la secuencia, pero no ambos.
(5) Suma de los tiempos de finalización de los trabajos del conjunto B en la última
máquina.
4.4 EXPERIMENTOS
En este apartado se va a comprobar la capacidad que puede llegar a soportar el
solver Gurobi resolviendo el modelo de programación lineal del apartado 4.3, es
decir, el número máximo de trabajos que puede resolver el solver sin llegar a
tomarse un tiempo excesivamente alto. Para ello, aparte de hacer uso del
programa Gurobi, también se va a hacer uso del programa Matlab:

Matlab, según sus creadores (http://www.mathworks.es/products/matlab/),
es un lenguaje de alto nivel y entono interactivo para el cálculo numérico, la
visualización y la programación. Mediante Matlab es posible analizar datos,
desarrollar algoritmos y crear modelos o aplicaciones. El lenguaje, las
herramientas y las funciones matemáticas incorporadas permiten explorar
diversos enfoques y llegar a una solución antes que con hojas de cálculo o
lenguajes de programación tradicionales.

Gurobi (http://www.gurobi.com/) es un solver para
programación
matemática.
Resuelve
dar solución a la
programación
lineal
(LP),
programación cuadrática (QP), programación cuadrática restringida (QCP),
programación lineal entera mixta (MILP), programación cuadrática mixta
(MIQP) y programación cuadrática entera mixta restringida (MIQCP).
Existen diversos lenguajes de programación y modelado que soporta
Gurobi, por ejemplo, Java,C++ ,Python y Matlab, entre otros muchos.
Para resolver el modelo (http://www.gurobi.com/documentation/5.6/referencemanual/matlab_gurobi), lo primero es construir el modelo con el lenguaje Matlab.
Los datos asociados con un modelo de optimización se deben almacenar en un
52
Matlab struct. Los campos de esta estructura contienen las diferentes partes del
modelo:

model.A: la matriz de restricciones del modelo. Es un campo obligatorio.

model.obj: el vector objetivo. Es un campo obligatorio.

model.rhs: el vector término independiente de las restricciones (b). Es un
campo obligatorio.

model.sense: el vector de caracteres que indica el sentido de cada
restricción. Puede ser <,= ó >. Es un campo obligatorio.
 model.modelsense: es el objetivo de optimización. Puede ser ‘min’,
minimizar la función o ‘max’, maximizar la función. El valor predeterminado
en ausencia de indicación es minimizar la función. Es un campo opcional.

model.vtype: es un vector de caracteres que indica los tipos de las
variables. Las variables pueden ser de tipo continuas ‘C’, enteras ‘I’,
binarias ‘B’, semi-continuas ‘S’ o semi-enteras ‘N’. El valor predeterminado
en ausencia de indicación es de tomar variables como continuas. Es un
campo opcional.
Gurobi devuelve una estructura, con los diversos resultados de la optimización
almacenados en sus campos. La siguiente es una lista de campos más habituales
disponibles en el resultado devuelto:

result.status: el estado de la optimización, lo devuelve como una cadena. Si
el resultado es "óptimo”, indica que se ha encontrado una solución óptima al
modelo. Entre otros estados posibles, por ejemplo es si el modelo no tiene
solución factible.

result.objval: el valor objetivo de la solución encontrada.
53

result.runtime: el tiempo en segundos de la resolución de la optimización.

result.x: la solución calculada. Este vector contiene un valor para cada
columna de A.

result.slack: la holgura de cada restricción de la solución. Este vector
contiene un valor para cada fila de A.
4.4.1 Batería de problemas y cálculo de épsilon
Para comprobar la capacidad del modelo se ha generado una serie de problemas,
con diez instancias para cada tamaño de problema. Cada vez que se crea una
instancia, mediante la función “bateria” (puede verse en el Anexo 6.1) se crea un
problema con el número de trabajos elegido por el usuario para el conjunto de
trabajos
, y el número de trabajos para el conjunto de trabajos
. Este número
de trabajos para cada conjunto es el elegido por el usuario cambiando la variable
nc en la función “batería”. Se a supuesto que el número de trabajos es igual para
. En la función “batería” se generan los
ambos conjuntos, por lo tanto
tiempos de proceso para cada máquina, siguiendo una distribución aleatoria
uniforme entre 1 y 99, teniendo que ser todos los valores generados números
enteros.
También para cada instancia se calcula el valor de épsilon, en otra función en
lenguaje Matlab “calculoepsilon” (puede verse en el Anexo 6.2) que opera de la
siguiente manera. Se suman los tiempos de procesos para cada trabajo del
conjunto B en todas las máquinas
y con estos resultados se
emplea la regla SPT (Shortest Processing Time), ordenando los trabajos del
conjunto B de menor a mayor suma de los tiempos de procesos en todas las
máquinas. Con este orden se calcula el valor de la suma de los tiempos de
finalización y éste será el valor de épsilon. La elección de este proceso es para
garantizar que no haya ningún valor de épsilon demasiado pequeño que haga el
problema infactible, y que no haya ningún valor de épsilon demasiado grande que
haga el problema trivial.
54
4.4.2 Resultados
En este apartado se ha llevado a cabo la resolución del problema para distintos
valores de
, incrementando el número de trabajos en los conjuntos,
para ver el tiempo que puede llevarse el modelo buscando la solución óptima.
Para cada número de trabajos elegido en cada conjunto, se han creado diez
instancias y se han calculado para cada instancia, el valor de los tiempos de
procesos de todos los trabajos en dos máquinas y el valor de épsilon como se
especificó en el apartado 4.4.1. Con todos los datos calculados,
y
se procede
a formular el modelo mediante la forma especificada en el apartado 4.4 y a llamar
al solver Gurobi para que busque el óptimo en cada instancia. Esta función es la
que aparece descrita en el Anexo 6.3. Gurobi devuelve la solución óptima que
buscamos, el valor de la función objetivo en dicha solución óptima (es decir, la
suma de los tiempos de finalización de los trabajos del conjunto A) y el tiempo que
tarda en encontrar este óptimo. También devuelve los tiempos de finalización de
todos los trabajos en todas las máquinas, de los que se sirve la función para
calcular la suma de tiempos de finalización del conjunto B (pudiendo comprobarse
así que la solución es factible, esta suma es menor o igual que épsilon).
A continuación se muestran los resultados obtenidos para
Instancias
.
Tiempo (seg)
1
2
2
164
496
164
0,016
2
2
2
283
679
283
0,031
3
2
2
276
611
276
0
4
2
2
173
489
173
0,031
5
2
2
231
491
231
0
6
2
2
194
492
194
0
7
2
2
158
471
158
0
8
2
2
243
457
243
0
9
2
2
185
426
185
0,016
10
2
2
205
428
205
0,016
Media de tiempos
0,011
55
Tabla 14: Resultados para
En la Tabla 14, se muestran los resultados obtenidos cuando el número de
trabajos elegido para ambos conjuntos es de dos. El tiempo que tarda Gurobi en
proporcionar el óptimo para cada instancia es prácticamente cero, da una solución
inmediata para tan pocos trabajos. También se puede observar en cada instancia
como la suma de los tiempos de terminación para el conjunto B nunca es mayor
que el épsilon calculado, siempre tiene que ser igual o menor.
Instancias
Tiempo (seg)
1
3
3
520
1076
520
0,0468
2
3
3
639
1292
639
0,0936
3
3
3
276
849
276
0,2028
4
3
3
445
944
443
0,0780
5
3
3
343
914
343
0,0312
6
3
3
313
944
312
0,0936
7
3
3
465
897
465
0,1248
8
3
3
444
778
411
0,1716
9
3
3
423
650
422
0,1872
10
3
3
543
830
540
0,1404
Media de tiempos
0,1170
Tabla 15: Resultados para
En la Tabla 15, se muestran los resultados para seis trabajos en total, tres trabajos
pertenecen al conjunto A y otros tres pertenecen al conjunto B. Comparando la
tabla anterior con ésta se puede ver cómo se ha incrementado el tiempo que tarda
Gurobi en proporcionar una solución óptima, llegando de media a tardar en
resolver una instancia 0,2 segundos. Este tiempo sigue siendo muy bajo. Se sigue
observando el cumplimiento de la restricción (5) del apartado 4.3, la suma de los
tiempos de terminación del conjunto B se mantienen por debajo del valor que toma
épsilon, en cada instancia.
56
Instancias
Tiempo (seg)
1
4
4
565
1225
565
0,2964
2
4
4
269
1000
254
0,1404
3
4
4
738
1474
738
0,4836
4
4
4
764
1227
761
0,2340
5
4
4
763
1721
763
0,2184
6
4
4
596
1522
569
0,2496
7
4
4
603
1486
603
0,0780
8
4
4
688
1346
674
0,2496
9
4
4
909
1495
877
0,3120
10
4
4
983
1156
983
0,3900
Media de tiempos
0,2652
Tabla 16: Resultados para
En la Tabla 16, se muestran los resultados al añadir un trabajo más a cada
conjunto con respecto al experimento de la Tabla 15. Ahora se procesan cuatro
trabajos del conjunto A y cuatro del conjunto B. En total se están procesando ocho
trabajos en las dos máquinas. El tiempo en segundos que tarda Gurobi en
proporcionar una solución óptima para cada instancia ha aumentado de nuevo,
pero sigue siendo un tiempo muy pequeño, décimas de segundos, no es un
tiempo todavía muy notable. Y cómo para todos los casos anteriores, puede verse
reflejada en la solución el criterio Épsilon Constraint elegido para los objetivos de
ambos conjuntos de trabajos.
Instancias
Tiempo (seg)
1
5
5
652
2271
638
0,2180
2
5
5
844
2236
843
1,0608
3
5
5
700
1826
669
0,3590
4
5
5
838
2169
834
0,4840
5
5
5
777
1592
777
1,0608
6
5
5
1157
2364
1156
0,9050
57
7
5
5
590
2215
590
0,2650
8
5
5
788
1971
788
1,0608
9
5
5
1018
2357
1009
0,4520
10
5
5
1135
1852
1133
0,5620
Media de tiempos
0,6660
Tabla 17: Resultados para
En Tabla 17están expuestos los resultados obtenidos cuando el conjunto A tiene
para procesar cinco trabajos y el conjunto B otros cinco trabajos. Al aumentar en
dos el número total de trabajos pertenecientes a ambos conjuntos con respecto al
caso anterior (Tabla 16), el tiempo que tarda Gurobi en resolver cada instancia es
mayor pero sigue siendo la resolución muy rápida también. Aquí también se
presentan casos en los que la suma de tiempos de terminación de los trabajos del
conjunto B son menores que épsilon, como en la instancia 1, y casos en los que
esta suma es igual al valor de épsilon, por ejemplo la instancia 7.
Instancias
Tiempo (seg)
1
6
6
1056
2857
1056
2,8236
2
6
6
904
3132
904
1,6380
3
6
6
1264
2993
1254
1,1076
4
6
6
1038
2862
1037
0,9204
5
6
6
1126
3305
1126
1,0140
6
6
6
1356
2984
1356
1,5600
7
6
6
1170
2958
1164
1,6848
8
6
6
1103
2803
1077
1,0764
9
6
6
1094
3276
1094
1,3728
10
6
6
1431
3451
1425
7,1604
Media de tiempos
2,0358
Tabla 18: Resultados para
58
En la Tabla 18, se vuelve a ver los resultados obtenidos al incrementar en uno los
trabajos de ambos conjuntos con respecto al experimento anterior, en el que la se
tenían en total diez trabajos. Ahora Gurobi tiene que programar doce trabajos,
cumpliendo que la suma de los tiempos de terminación de los trabajos del
conjunto B sea menor o igual que épsilon (comparando las columnas cuatro y seis
de la tabla, se ve que se cumple) y buscando el óptimo en la suma de los tiempos
de terminación de los trabajos del conjunto A (en la columna cinco, están las
soluciones óptimas proporcionadas por Gurobi en cada instancia). La media de
tiempos que tarda en dar la solución se ha incrementado bastante respecto a los
casos anteriores, pero aún así es un tiempo pequeño, dos segundos.
Instancias
Tiempo (seg)
1
7
7
1734
4334
1718
100,1200
2
7
7
2085
4471
2080
147,6500
3
7
7
1277
3550
1277
15,8810
4
7
7
2080
4536
2075
15,8960
5
7
7
1410
2641
1404
68,9050
6
7
7
1860
4124
1858
38,1890
7
7
7
1487
3321
1469
13,0260
8
7
7
1373
3737
1371
790,1700
9
7
7
1500
2935
1497
13,8220
10
7
7
1430
3819
1429
3,5412
Media de tiempos
120,7200
Tabla 19: Resultados para
En la Tabla 19, se muestran los resultados obtenidos en las diez instancias para
catorce trabajos, siete pertenecientes al conjunto A y siete pertenecientes al
conjunto B. El tiempo medido en segundos, que tarda Gurobi en proporcionar la
solución óptima se ha incrementado considerablemente respecto a los casos
59
anteriores. Con este número de trabajos tarda una media de dos minutos,
mientras que en los casos anteriores no se llegaba a tardar ni el minuto. Se sigue
cumpliendo el criterio Épsilon Constraint.
A medida que aumentamos el número de los trabajos en cada conjunto (Tabla 20),
el tiempo que necesita Gurobi para buscar una solución óptima es mayor. Aunque
éste cambio se percibe más al incrementar a partir de 6 el número de trabajos.
Nº
trabajos
Instancias
1
2
3
4
5
6
7
8
9
10
Media de
tiempos
0,0156
0,0312
0
0,0312
0
0
0
0
0,0156
0,0156
0,0109
0,0468
0,0935
0,2028
0,0780
0,0311
0,0936
0,1248
0,1716
0,1872
0,1404
0,1170
0,2964
0,1404
0,4836
0,2340
0,2184
0,2496
0,0779
0,2496
0,3120
0,3900
0,2651
0,2184
1
0,3588
0,4836
1
0,9048
0,2652
1
0,4524
0,5616
0,6661
Tabla 20: Tiempos que tarda Gurobi en resolver el problema
2,8236
1,6380
1,1076
0,9204
1,0140
1,5600
1,6848
1,0764
1,3728
7,1604
2,0358
100,1200
147,6500
15,8810
15,8960
68,9050
38,1890
13,0260
790,1700
13,8220
3,5412
120,7200
para
Este incremento de tiempo se puede percibir en la Ilustración 12, donde en el eje
abscisas están representados los problemas con los distintos números de trabajos
asignados a cada conjunto, y en el eje de ordenadas están representados los
tiempos medios que tarda el solver en dar la solución óptima.
60
140
120
100
80
60
40
20
0
0
1
2
3
4
5
6
Ilustración 12: Tiempos medios de resolución para el problema
7
8
para los
distintos tamaños
Al experimentar con un tamaño
, el solver Gurobi tarda en dar una
solución óptima para el modelo en cada instancia, más de una hora, por lo tanto
se paró de experimentar. Se puede decir que
trabajos para resolver el problema
es el umbral máximo de
con las herramientas Matlab
y Gurobi.
61
62
5 CONCLUSIONES
La secuenciación o la programación de operaciones es una forma de toma de
decisiones que juega un papel crucial en las industrias manufactureras y de
servicios. En el entorno competitivo actual la programación efectiva se ha
convertido en una necesidad para la supervivencia de las empresas en el
mercado. De ahí la necesidad de programar los trabajos para utilizar los recursos
de la manera más eficiente [Pinedo, 2012].
Por este papel que juega la secuenciación en la actualidad, se ha contribuido con
el estudio de dos problemas. Pero estos dos problemas no han sido dos
problemas clásicos de secuenciación con un único conjunto de trabajos. Sino
ambos, con dos conjuntos de trabajos que como vimos en el capítulo 3 tienen
algunas aplicaciones en la vida real.
Cada uno de los problemas ha tratado un caso particular de los distintos entornos
de las máquinas que se pueden dar en la programación de operaciones, paralelo y
serie. Cada uno de los problemas ha tratado diferentes objetivos, en uno el
makespan y en el otro, flow-time, para ambos conjuntos de trabajos. Pero han
tenido en común la manera de abordar el problema con varios conjuntos de
trabajos, es decir, no sobrepasando el valor del objetivo del conjunto B, una cierta
cantidad fijada, épsilon, y minimizando el objetivo del conjunto A.
Es por ello que para cada problema se han buscado mediante pequeños ejemplos,
los valores máximos y mínimos de este parámetro, examinando cuando el
problema se hace factible, o infactible, y buscando entre las soluciones factibles la
óptima.
A partir de analizar el comportamiento del problema en casos pequeños, se ha
modelado cada uno de ellos con programación lineal, una tarea bastante
complicada por la búsqueda de la linealidad, que facilita el proceso de resolución.
A pesar de esta premisa, el modelo obtenido para el problema de máquinas en
paralelo con dos conjuntos de trabajos y objetivo makespan para ambos, es
bastante complejo, por lo que no se ha llevado a cabo su programación con solver
63
(Gurobi en este caso). Por ello la programación de dicho modelo mediante algún
solver, puede ser una futura línea de investigación.
El modelado del segundo problema, minimizar el flow-time de dos conjuntos de
trabajos en un flow-shop, al ser más sencillo que el anterior y se ha programado
mediante lenguaje Matlab y ha sido resuelto por el solver Gurobi. Se ha probado
con distintos números de trabajos para cada conjunto para ver el tiempo que tarda
el solver en obtener el óptimo. Se ha obtenido que a partir de ocho trabajos para
cada conjunto, el programa tarda un tiempo excesivamente alto en dar la solución.
Por ello entre las futuras líneas de investigación de este problema, puede ser
resolverlo mediante otro solver, para comprobar si el tiempo computacional puede
bajar al aumentar el número de trabajos.
Ambos problemas se han abordado desde la búsqueda del óptimo, por lo que
otras posibles investigaciones, teniendo en cuenta que ambos problemas son NP,
sería abordar el problema desde una búsqueda aproximada de soluciones.
64
65
6 ANEXOS
6.1 BATERIA DE PROBLEMAS
function [m,nc,pA,pB]=bateria
nc=8;
m=2;
pA=[];
for i=1:m
for b=1:nc
pA(i,b)=floor(random('unif',1,99));
end
end
pB=[];
for i=1:m
for b=1:nc
pB(i,b)=floor(random('unif',1,99));
end
end
DATOS=[pA pB];
dlmwrite('datostrabajos.txt',DATOS);
6.2 CÁLCULO ÉPSILON
function [epsilon]=calculoepsilon(pB,nB)
A=pB(1,:)
B=pB(2,:)
for k=1:nB-1
for j=1:nB-1
if A(j)+B(j)>A(j+1)+B(j+1)
aux=A(j)
aux2=B(j)
A(j)=A(j+1)
B(j)=B(j+1)
A(j+1)=aux
B(j+1)=aux2
end
end
end
pB=[A;B]
datostrabajose=[pB]
sumam1=datostrabajose(1,1)
sumam2=sumam1+datostrabajose(2,1)
epsilon=sumam2
for j=2:nB
66
sumam1=sumam1+datostrabajose(1,j)
if sumam1<sumam2
sumam2=sumam2+datostrabajose(2,j)
epsilon=sumam2+epsilon
else
sumam2=sumam1+datostrabajose(2,j)
epsilon=sumam2+epsilon
end
end
6.3 MODELO MATEMÁTICO EN MATLAB
function [R1]=restriccion1(m,n)
c=zeros(m,n);
x=zeros(n,n);
totalvariables=(m*n)+(n*n);
R1=zeros(n,totalvariables);
for j=1:n
for i=1
c(i,j)=1;
end
R1j=[c(:)' x(:)'];
R1(j,:)=R1j;
c=zeros(m,n);
end
end
function [R2]=restriccion2(m,n)
c=zeros(m,n);
x=zeros(n,n);
totalvariables=(m*n)+(n*n);
R2=zeros((n*(m-1)),totalvariables);
for i=2:m
for j=1:n
c(i,j)=1;
c(i-1,j)=-1;
R2j=[c(:)' x(:)'];
R2(j,:)=R2j;
c=zeros(m,n);
end
end
end
function [R3]=restriccion3(m,n,nA)
c=zeros(m,n);
67
x=zeros(n,n);
totalvariables=(m*n)+(n*n);
R3=zeros(1,totalvariables);
for i=m
for j=nA+1:n
c(i,j)=1;
end
end
R3=[c(:)' x(:)'];
end
function [R4]=restriccion4(m,n)
c=zeros(m,n);
x=zeros(n,n);
R4=[];
b=1;
for i=1:m
for j=1:n
for k=j+1:n
c(i,j)=1;
c(i,k)=-1;
x(j,k)=1000;
R4b=[c(:)' x(:)'];
R4(b,:)=R4b;
b=b+1;
c=zeros(m,n);
x=zeros(n,n);
end
end
end
function [R5]=restriccion5(m,n)
c=zeros(m,n);
x=zeros(n,n);
R5=[];
b=1;
for i=1:m
for j=1:n
for k=j+1:n
c(i,j)=1;
c(i,k)=-1;
x(j,k)=1000;
R5b=[c(:)' x(:)'];
R5(b,:)=R5b;
b=b+1;
c=zeros(m,n);
68
x=zeros(n,n);
end
end
end
function [b1]=independiente1(n,datostrabajos)
b1=[];
for i=1
for j=1:n
b1=[b1 datostrabajos(i,j)];
end
end
function [b2]=independiente2(datostrabajos,m,n)
b2=[];
for i=2:m
for j=1:n
b2=[b2 datostrabajos(i,j)];
end
end
function [b3]=independiente3(epsilon)
b3=epsilon;
end
function [b4]=independiente4(datostrabajos,n,m)
b4=[];
for i=1:m
for j=1:n
for k=j+1:n
b4=[b4 datostrabajos(i,j)];
end
end
end
function [b5]=independiente5(datostrabajos,n,m)
b5=[];
for i=1:m
for j=1:n
for k=j+1:n
b5=[b5 1000-datostrabajos(i,k)];
69
end
end
end
function [objetivo]=vectorobjetivo(n,m,nA)
c=zeros(m,n);
x=zeros(n,n);
for i=m
for j=1:nA
c(i,j)=1;
end
end
objetivo=[c(:)' x(:)'];
end
RESULTADO=[];
for instancia=1:10
[m,nc,pA,pB]=bateria;
load datostrabajos.txt;
nA=nc;
nB=nc;
n=nA+nB;
[epsilon]=calculoepsilon(pB,nB);
[R1]=restriccion1(m,n);
[R2]=restriccion2(m,n);
[R3]=restriccion3(m,n,nA);
[R4]=restriccion4(m,n);
[R5]=restriccion5(m,n);
A=[];
for j=1:n
A=[A;R1(j,:)];
end
for j=1:(n*(m-1))
A=[A;R2(j,:)];
end
A=[A;R3];
[fil,col]=size(R4);
for j=1:fil
A=[A;R4(j,:)];
end
for j=1:fil
A=[A;R5(j,:)];
end
[b1]=independiente1(n,datostrabajos);
[b2]=independiente2(datostrabajos,m,n);
70
[b3]=independiente3(epsilon);
[b4]=independiente4(datostrabajos,n,m);
[b5]=independiente5(datostrabajos,n,m);
B=[b1 b2 b3 b4 b5];
[objetivo]=vectorobjetivo(n,m,nA);
model.A=sparse(A);
model.obj=objetivo;
model.rhs=B;
for j=1:n
model.sense(j)='>';
end
for j=1:(n*(m-1))
model.sense(j+n)='>';
end
model.sense(n+(n*(m-1))+1)='<';
for j=1:fil
model.sense(j+n+(n*(m-1))+1)='>';
end
[fil2,col2]=size(R5);
for j=1:fil2
model.sense(j+n+(n*(m-1))+1+fil)='<';
end
for z=1:(n*m)
model.vtype(z)='C';
end
for p=((n*m)+1):((n*m)+(n*n))
model.vtype(p)='B';
end
model.modelsense='Min';
result=gurobi(model)
disp(result.objval);
disp(result.x);
OBJETIVO=result.objval
TIEMPO=result.runtime
resultad=result.x';
totalB=0
for j=(2+(nA*2)):2:(n*2)
totalB=totalB+resultad(j)
end
RESUL=[instancia nA nB epsilon OBJETIVO totalB TIEMPO];
RESULTADO(instancia,:)=RESUL;
end
dlmwrite('resultados.txt',RESULTADO);
71
72
BIBLIOGRAFIA
[Balasubramanian et al., 2009] Balasubramanian H., Fowler J., Keha A. and Pfund
M. (2009). Scheduling interfering job sets on parallel machines. European Journal
of Operational Research 199 (2009), 55–67.
[Pinedo, 2012] Pinedo, M. L. (2012). Scheduling: Theory, Algorithms, and
Systems.
[Lee et al., 2005] Lee W., Wu C. and Chen P. (2005). A simulated annealing
approach to makespan minimization on identical parallel machines.
[Agnetis et al., 2004] Agnetis A., Mirchandani P.B., Pacciarelli D., Pacifici A.,
(2003). Scheduling Problems with Two Competing Agents. Scheduling Problems
Operations Research 52(2), pp. 229–242.
[Tseng et al. ,2004] Tseng F.T., Stafford Jr. E.F, Gupta J. An empirical analysis of
integer programming formulations for the permutation fowshop. Omega 32 (2004)
285 – 293.
[J.M. Framinan et al. ,2005] Framinan J.M., Leisten R., Ruiz-Usano R., (2005).
Comparison of heuristics for flowtime minimisation in permutation flowshops.
Computers & Operations Research 32 (2005) 1237–1254.
[Zhao et al., 2012] Zhao K., Lu X., (2012). Approximation schemes for two-agent
scheduling on parallel machine. Theoretical Computer Science (2012), doi:
10.1016/j.tcs.2012.11.002.
[Framinan et al., 2003] Framinan J.M., Listen R., (2003). An effcient constructive
heuristic for flowtime minimisation in permutation flow shops. Omega 31 (2003)
311 – 317.
[Cheng et al., 1990] 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 (1990) 271-292.
73
[Cortés et al., 2010] Cortés P., Onieva L., (2010). Ingeniería de organización.
Modelos y aplicaciones.
[R.L. Graham, 1977] R. L. Graham, E. L. Lawler, J. K. L. A. H. G. R. K. (1977).
Optimization and approximation in deterministic sequencing and scheduling: A
survey.
[Pérez-González et al., 2014] Pérez-Gonzalez P., Framinan J.M., (2014). A
common framework and taxonomy for multicriteria scheduling problems with
interfering and competing jobs: Multi-agent scheduling problems. European Journal
of Operational Research 235 (2014) 1–16.
[Canca, 2013] Canca O. J. D., (2013) Construcción de modelos de programación
lineal. “Apuntes de Técnicas de Optimización”, GITI.
[Huson, 2014] Huson C., (2014) Modelo de Programación Lineal y Metaheurística
aplicada a la resolución de un problema de secuenciación.
74
Descargar