Documentos de Académico
Documentos de Profesional
Documentos de Cultura
tesisUPV3454 PDF
tesisUPV3454 PDF
TESIS DOCTORAL
Dirigida por:
Rubén Ruiz García
Valencia, 2010
A Celia, por soportarme.
I
II
Resumen
Para iniciar esta Tesis Doctoral se buscó un problema de producción sen-
cillo pero de amplia aplicación práctica que permitiera adaptarlo para llegar
a problemas más generales y de más amplia aplicación. Por este motivo, nos
centramos en las máquinas paralelas, y dentro de ellas, en las no relacionadas
dado que son una generalización de los casos de máquinas idénticas y de las
uniformemente relacionadas. Escogimos el objetivo de minimizar el tiempo
máximo de finalización o Cmáx , uno de los más comunes de la literatura. Este
problema tiene la facultad de que, a pesar de su carácter teórico, tiene una
amplia aplicación práctica, como el caso de secuenciar las tareas de los hornos
de cocción cerámicos. Por otra parte se quería ampliar el problema para el
caso en que no se usaran todas las máquinas o no se hicieran todos los trabajos
necesariamente.
Las metas perseguidas son el presentar unos algoritmos sencillos y potentes
para la resolución del problema R//Cmáx , capaces de constituirse en el estado
del arte. Dado que los modernos ordenadores montan casi en su totalidad varios
núcleos en su CPU y los algoritmos se van adaptando a este hecho, también se
ha buscado realizar una adaptación de los algoritmos para su uso en paralelo.
Finalmente, se pone como meta el encontrar métodos eficaces y sencillos para
la resolución de problemas de este tipo en donde no se emplearan todas las
máquinas o no se realizaran todos los trabajos.
En la presente Tesis Doctoral se realizó un amplio estudio de la literatura
existente respecto al problema de máquinas paralelas no relacionadas y se
extrajo el estado del arte, así como un estudio del posible tipo de instancias a
emplear, dado que no existía una grupo de instancias tipo para este problema.
Se presentan cuatro algoritmos iniciales sencillos que mejoran los resultados
del estado del arte en algunos casos y dan mejores resultados de media en el
conjunto total de instancias tratadas. Dichos algoritmos se basan en métodos
iterativos en los que se realiza una búsqueda local de inserción seguida de
III
Resum
Per iniciar aquesta tesi doctoral es va buscar un problema de producció
senzill però de gran aplicació pràctica que permetés adaptar per arribar a
problemes més generals i de més àmplia aplicació. Per aquest motiu, ens
centrem en les màquines paral.leles, i dins d’elles, en les no relacionades donat
que són una generalització dels casos de màquines idèntiques i de les unifor-
mement relacionades. Vam escollir l’objectiu de minimitzar el temps màxim
de finalització o Cmax , un dels més comuns de la literatura. Aquest problema
té la facultat que, tot i el seu caràcter teòric, té una àmplia aplicació pràctica,
com per al cas de seqüenciar les tasques dels forns de cocció ceràmics. D’altra
banda es volia ampliar el problema per al cas en que no fan falta totes les
màquines o no es fessin tots els treballs necessàriament.
Les metes perseguides són el presentar uns algoritmes senzills i potents per
a la resolució del problema R//Cmax , capaços de constituir-se en l’estat de
l’art. Atès que els moderns ordinadors munten quasi totalment diversos nuclis
a la seva CPU i els algorismes es van adaptant a aquest fet, també s’ha buscat
realitzar una adaptació dels algorismes per al seu ús en paral.lel. Finalment,
es posa com a meta el trobar mètodes eficaços i senzills per a la resolució
de problemes d’aquest tipus on no s’utilitzaran totes les màquines o no es
realitzaran tots els treballs.
En la present tesi doctoral es va realitzar un ampli estudi de la literatura existent
respecte al problema de màquines paral.leles no relacionades i es va extraure
l’estat de l’art, així com un estudi del possible tipus d’instàncies a utilitzar, ja
que no existia una grup d’instàncies tipus per aquest problema.
Es presenten quatre algoritmes inicials senzills que milloren els resultats de
l’estat de l’art en alguns casos i donen millors resultats de mitjana en el conjunt
total de instàncies tractades. Aquests algorismes es basen en mètodes iteratius
en què es realitza una cerca local d’inserció seguida d’una cerca local d’inter-
canvi fins òptim local de les dues, seguides de diversos mètodes de modificació
V
parcial de la solució per tornar de nou amb aquesta solució modificació a les
recerques locals.
S’introdueixen mètodes que busquen disminuir el grau d’aleatorietat dels pri-
mers algoritmes, on s’arriba a desenvolupar tres nous algoritmes que milloren
els anteriors i que destaquen amb millors resultats que l’estat de l’art en pràc-
ticament tots els casos. Un nou algorisme híbrid a on es reuneixen totes les
característiques dels mètodes desenvolupats fins aquell moment ens porta a
millorar significativament els resultats obtinguts.
No obstant els bons resultats, es proposen nous mètodes basats en una disminu-
ció del nombre de variables a tenir en compte en la resolució del problema que
acaben derivant en cinc nous algoritmes que ens porten a millorar encara més
els valors obtinguts pels anteriors mètodes proposats. És de destacar que els
algorismes proposats no només obtenen bons resultats, sinó que van millorant
aquests resultats a mesura que se’ls dóna més temps d’execució.
Es realitzen les modificacions pertinents als millors algorismes desenvolupats
en nom de parallelitzar part de les tasques que realitzen i això ens permet
comparar-los amb l’estat de l’art. Els resultats mostren com el millor algorisme
desenvolupat és capaç de superar el mètode representatiu de l’estat de l’art
també en l’ambient paral.lel.
Finalment, es presenta el problema de màquines opcionals i selecció de tre-
balls, realitzant primerament la seva formulació matemàtica per a posterior-
ment mostrar els mètodes més favorables per a la solució d’aquest tipus de
problemes, basats, en el cas de la selecció de màquines, en un elaboració de un
rànquing de màquines, seguits d’una selecció iterativa d’elles i una resolució
final per diferents mètodes.
Per últim fem una reflexió sobre tot el estudiat i una discussió sobre les possi-
bles línies d’investigació que deixa obertes aquesta tesi doctoral.
VI
Abstract
At the onset of this thesis we aimed for a simple problem but with wide
practical applications. The initial objective was to reach more general prob-
lems and wider applications after adaptations. For this reason, we focus on
parallel machines scheduling problems, and within them, in unrelated parallel
machine problems as they are a generalization of the identical and uniform par-
allel related machines cases. We chose to minimize the maximum completion
time or Cmax , one of the most commonly studied objectives in the literature.
This problem, despite its theoretical nature, has many practical applications, as
in the case of sequencing the work of ceramic kilns. Furthermore, the problem
has been expanded in thesis for some not studied extensions like the case in
which not all machines have to be used or in the case where not all jobs must
be processed.
The goals of this thesis are to present simple and powerful algorithms for
solving the R//Cmax problem, capable of constituting the new state-of-the-
art in the literature. Modern computers are built with multi-core CPUs and
modern algorithms are starting to take this into account. Therefore, we also
set a goal to make parallel computing adaptations of our presented algorithms.
Finally, we set the goal of finding effective and simple methods for solving
problems where not all machines have to be used and problems where not all
jobs must be processed.
In the present thesis we have conducted and extensive study of existing litera-
ture for the unrelated parallel machines scheduling problem and extracted the
state-of-the-art. We also study the possible types of instances to be used, since
the literature was lacking a common benchmark.
We present four simple initial algorithms that improve the performance of
existing state-of-the-art methods in some cases and better results, on average,
in the entire set of instances treated. These algorithms are based on iterative
methods. An iterative application to local optimality of an insertion local
VII
Agradecimientos
En primer lugar, quiero agradecer a todos los miembros del SOA su pa-
ciencia explicándome todo lo necesario para el desarrollo de este estudio.
Empezando por la programación en Delphi, que desconocía completamente,
la explicación de los rudimentos de Linux y C++, el uso de distinto software,
y un estar siempre todos dispuestos a echarme una mano y a atender todas mis
preguntas sobre los temas más variados. Gracias y perdonar por las molestias.
1. Introducción 1
1.1. Programación de la producción . . . . . . . . . . . . . . . . . 4
1.2. Notación y clasificación . . . . . . . . . . . . . . . . . . . . . 6
1.3. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5. Estructura de la Tesis Doctoral . . . . . . . . . . . . . . . . . 13
2. Máquinas paralelas 15
2.1. Máquinas paralelas idénticas . . . . . . . . . . . . . . . . . . 18
2.2. Máquinas paralelas uniformemente relacionadas . . . . . . . . 20
2.3. Máquinas paralelas no relacionadas . . . . . . . . . . . . . . 21
2.3.1. Revisión bibliografía . . . . . . . . . . . . . . . . . . 23
2.3.2. Estado del arte . . . . . . . . . . . . . . . . . . . . . 30
2.3.2.1. Partial de Mokotoff y Jimeno . . . . . . . . 31
2.3.2.2. RBS de Ghirardi y Potts . . . . . . . . . . . 33
2.3.2.3. CPLEX 11.0 . . . . . . . . . . . . . . . . . 35
IX
X ÍNDICE GENERAL
REFERENCIAS 241
XV
XVI ÍNDICE DE FIGURAS
5.1. Gráfico de los algoritmos serie para todas las instancias y 120
segundos de tiempo de parada . . . . . . . . . . . . . . . . . 189
5.2. Gráfico para la interacción entre el tiempo de parada y los algo-
ritmos paralelos probados, para todas las instancias e intervalos. 191
5.3. Algoritmos paralelos frente a serie: gráfico de medias para
todas las instancias e intervalos y todos los tiempos de parada. 192
6.5. ANOVA para todos los intervalos con 20 % máquinas sin usar
y 300 segundos. . . . . . . . . . . . . . . . . . . . . . . . . . 224
6.6. ANOVA para todos los intervalos con 20 % máquinas sin usar
y 60 segundos. . . . . . . . . . . . . . . . . . . . . . . . . . 225
6.7. ANOVA para todos los intervalos con 80 % máquinas sin usar
y 300 segundos. . . . . . . . . . . . . . . . . . . . . . . . . . 226
6.8. ANOVA para todos los intervalos con 80 % máquinas sin usar
y 60 segundos. . . . . . . . . . . . . . . . . . . . . . . . . . 227
6.9. ANOVA con la interacción por % máquinas sin usar y algorit-
mo para todos los intervalos y 300 segundos. . . . . . . . . . 228
6.10. ANOVA con la interacción por % máquinas sin usar y algorit-
mo para todos los intervalos y 60 segundos. . . . . . . . . . . 228
6.11. ANOVA del intervalo U(10,100) con 50 % trabajos realizados
y 300 segundos. . . . . . . . . . . . . . . . . . . . . . . . . . 231
6.12. ANOVA del intervalo Trabajos Correlacionados con 50 % tra-
bajos realizados y 300 segundos. . . . . . . . . . . . . . . . . 232
6.13. ANOVA del intervalo U(100,200) con 50 % trabajos realizados
y 300 segundos. . . . . . . . . . . . . . . . . . . . . . . . . . 232
XXVII
XXVIII ÍNDICE DE TABLAS
1
2 CAPÍTULO 1. INTRODUCCIÓN
El campo β indica las características de los trabajos, las cuales son muy
numerosas, por lo que los autores dividen este campo en varios subcampos. En
el caso de no figurar de forma expresa, se entiende que no se da la característica
indicada. Los subcampos más usuales son:
pmtn: se permite interrumpir las operaciones y continuarlas más tarde o en
otra máquina (también se conoce como prmp).
prec: relaciones de precedencia.
rj : tiempo en el cual el trabajo j esta listo para procesarse (release date).
Snsd : existen tiempos de cambio o preparación en las máquinas antes de pro-
cesar un trabajo que no dependen de la secuencia. Se denotan por Sij .
Ssd : existen tiempos de cambio o preparación en las máquinas antes de proce-
sar un trabajo que sí dependen de la secuencia. Se denotan por Sijk .
dj : fecha de compromiso de realización de cada trabajo (due date). Se permite
la finalización posterior pero con penalización.
dj : fecha de finalización obligatoria (deadline).
prmu: el orden de entrada de los trabajos es el mismo para todas las máquinas.
Solo aplicable cuando α1 = F .
brkdwn: las máquinas están sujetas a averías o a periodos donde no pueden
procesar trabajos.
nwt: sin esperas entre dos máquinas. A veces implica retrasar el inicio de las
8 CAPÍTULO 1. INTRODUCCIÓN
operaciones de un trabajo.
block: bloqueo. Existe una capacidad (o buffer) finita para almacenar el pro-
ducto en curso. Si se llena el buffer de una máquina, está quedará bloqueada
por el último trabajo que ha procesado y no ha podido dejar en el buffer.
recrc: recirculación. Indica que un trabajo (o más) pueden necesitar ser pro-
cesados más de una vez por alguna (o varias) de las máquinas. Solo cuando
α1 = O, F, J.
Mj : restricción de uso de máquinas. Implica que un trabajo (o más) solo puede
ser procesado en determinadas máquinas.
pij = p: todos los tiempos de trabajo son iguales a p. Una variante común es
hacer p = 1.
1.3. Motivación
A la hora de iniciarse la presente Tesis Doctoral buscamos un problema
de programación de la producción relativamente sencillo que tuviera amplia
aplicación en distintos ámbitos y del que pudieran derivar problemas más com-
plejos. Nos centramos en el problema máquinas paralelas, y dentro de él, en el
de máquinas paralelas no relacionadas, ya que éste último es el más general de
los tres problemas de máquinas paralelas. Este entorno, a pesar de parecer
de carácter marcadamente teórico, tiene aplicaciones directas en el mundo
empresarial, desde sencillos ejemplos como una empresa de reprografía hasta
empresas cerámicas tan abundantes en nuestra comunidad. Observemos que en
el sencillo caso de una empresa de reprografía donde se deban realizar distintos
trabajos, de distintas características y se posean distintas máquinas, asignar los
diferentes trabajos a las máquinas de forma que se finalice la totalidad de los
trabajos lo antes posible, ya conlleva una tarea de programación de la produc-
ción. Para el caso de las empresas cerámicas, nos encontramos que algunas
de ellas solo quieren secuenciar sus recursos más conflictivos: los hornos, así
que toda su problemática inicial se reduce a una adecuada secuenciación de
los trabajos en los hornos, dado que para el resto de la producción no tienen
a priori mayor problema. Los distintos hornos tienen distintas características
por lo que los trabajos que se efectúan en ellos tienen distintos tiempos de
ejecución. Existen muchos otros casos donde el problema reside en una etapa
crítica, la cual, secuenciada correctamente, proporciona una ganancia neta muy
alta en todo el proceso. Evidentemente, una vez se han optimizado los hornos,
se puede comprobar como se puede optimizar el resto de la producción, por lo
que entramos en problemas más complejos como el del taller de flujo, por citar
un ejemplo.
Una vez determinado el problema base sobre el que queríamos trabajar, pen-
samos no quedarnos solo ahí, si no dar una paso más e introducirnos en
una variante del problema que consideramos interesante, la cual consiste en
1.3. Motivación 11
1.4. Objetivos
El objetivo principal de esta Tesis Doctoral es el desrrollar unos algoritmos
sencillos, pero potentes, para la resolución del problema de máquinas parale-
las no relacionadas con el objetivo de minimizar el Cmáx . Con este mismo
objetivo, se pretende realizar una generalización del mismo para el caso en
el que no se empleen todas las máquinas o no se realicen todos los trabajos.
Para ello, se llevará a cabo un estudio profundo de la literatura concerniente
al problema tratado para poder estudiar los distintos métodos ya existentes
para la resolución de este problema, así como el poder identificar el estado del
arte concerniente a R//Cmáx . Así mismo, se proponen una serie de instancias
lo suficientemente representativas como para efectuar amplios tests compu-
tacionales y estadísticos en los que basar nuestros resultados y conclusiones.
También se tiene en cuenta el comportamiento de un moderno solver comercial
para la resolución de este tipo de problemas, dado que, como se verá, no se
comparaban los distintos resultados de la literatura con los ofrecidos por un
solver comercial. Una vez efectuado esto, nos planteamos desarrollar unos
métodos cuanto menos competitivos con el estado del arte a la par que sencillos
para una fácil implementación de los mismos. El lograr esto se antoja una labor
árdua toda vez que hacía ya varios años que no se aportaba nada nuevo capaz de
igualar siquiera el estado del arte. Una vez logrados unos algoritmos sencillos
y potentes nos planteamos tratar de afinarlos lo máximo posible para que sean
capaces de obtener aún mejores resultados. Tras esto, nos ponemos también
como objetivo adentrarnos en el mundo de la programación paralela dado
que los modernos ordenadores ya poseen varios núcleos integrados dentro
del mismo chip y los más novedosos solvers hacen amplio uso de este hecho
mediante la paralelización de tareas. Finalmente se plantea estudiar los casos
en el que el número de máquinas es opcional o que la cantidad de trabajos es
seleccionable.
1.5. Estructura de la Tesis Doctoral 13
15
16 CAPÍTULO 2. MÁQUINAS PARALELAS
J1 J2 J3 J4 J5
M1 5 10 15 45 15
M2 15 10 35 20 60
M3 45 55 5 15 30
Makespan = 45
Máquina 1 1 3
Máquina 2 2
Máquina 3 4 5
0 5 10 15 20 25 30 35 40 45
Función objetivo:
mı́n Cmáx (2.1)
s.a.:
∑
m
xij = 1 ∀j ∈ N (2.2)
i=1
∑
n
pij · xij ≤ Cmáx ∀i ∈ M (2.3)
j=1
xij ≥ 0 ∀j ∈ N, ∀i ∈ M (2.5)
Para finalizar, podemos resumir diciendo que Glass, Potts y Shade (1994),
ya compararon los resultados de un algoritmo genético estándar (GA), un
Recocido Simulado (SA) y una Búsqueda Tabú (TS). Posteriormente Piersma
y van Dijk (1996) presentaron unos algoritmos de búsquedas locales que lo me-
joraban. Finalmente Sourd (2001) presentó dos algoritmos basados en grandes
vecindarios, uno basado en una exploración del árbol de búsqueda mediante
heurísticas y otro basado en la aproximación dual de Van De Velde (1993) que
superaba a todos ellos. Por otra parte, se encuentra, dentro de los algoritmos del
tipo Ramificación y Acotación, el de Martello, Soumis y Toth (1997), que fue
superado en el artículo de Ghirardi y Potts (2005). Finalmente destacar que
Woclaw (2006) realizo un extenso trabajo de implementación de la mayoría
de los algoritmos existentes a lo largo de la literatura, destacando entre todos
ellos los buenos resultados de Mokotoff y Chretienne (2002). El propio Sourd
(2001) nos remitió al estudio realizado por Woclaw (2006) cuando nos pusimos
en contacto con él.
obstante, los artículos relativos a estas variantes son menos numerosos que los
dedicados al problema genérico, probablemente debido a la complejidad que se
añade a los modelos de estas variantes. Comentaremos a continuación algunos
de estos artículos, como el de Jansen y Porkolab (1999) donde considera el
problema con coste de funcionamiento. Herrmann, Proth y Sauer (1997) con-
sideraron el problema de máquinas paralelas no relacionadas con relaciones
de precedencia y Lancia (2000) investigó el caso en el que hubiese fechas de
disponibilidad, al igual que hiciera Adamopoulos y Pappis (1998). Armacost
y Salem (2001) desarrollaron una metodología para resolver el problema con
tiempos de preparación y las restricciones de elegibilidad de máquina. Respec-
to al problema en el que se incluyen roturas de máquinas aleatorias, se pude
mencionar el articulo de Allahverdi y Mittenthal (1994), aunque en este caso,
el objetivo trataba de minimizar el tiempo medio del taller de flujo. Más tarde,
Fishkin, Jansen y Mastrolilli (2008) examinaron el problema de minimizar
la función objetivo que era una suma ponderada del makespan y los costos
totales. Sobre el problema de máquinas paralelas no relacionadas con tiempo
de cambio dependientes de la secuencia podemos destacar el reciente artículo
de Vallada y Ruiz (2010).
Como primer paso, se realiza una relajación del MILP, que queda como
sigue:
funcion objetivo:
mı́n Cmáx (2.6)
s.a.:
∑
m
xij = 1 ∀j ∈ N (2.7)
i=1
∑
n
pij · xij ≤ Cmax ∀i ∈ M (2.8)
j=1
0 ≤ xij ≤ 1 ∀j ∈ N, ∀i ∈ M ; (2.9)
del RBS usa tanto la cota superior como la inferior. Mientras que la cota
inferior se usa exclusivamente con propósito de evaluación, la cota superior
también proporciona posibles soluciones, dado que esta cota es una solución
factible. La función de evaluación viene determinada por la siguiente expresión
V = (1 − α)LB + αU B, donde LB y U B representan la cota inferior y
superior, respectivamente y α es un parámetro de peso que se determina expe-
rimentalmente. Los valores de la LB los obtienen de la relajación Langragiana
ya empleada por Martello, Soumis y Toth (1997); una vez obtenidos, se genera
el valor de la U B, la cuál es el valor de la función objetivo de la solución
factible derivada directamente de la relajación Langragiana.
En el método de RBS, el ancho de banda w es constante y normalmente
pequeño (w < 10) para disminuir el tiempo de CPU. Una vez se tienen los
w mejores nodos y las correspondientes w mejores soluciones parciales, la
fase de recuperación (Recovering) comprueba si la solución s es dominada por
otra solución parcial s0 en el mismo nivel del árbol de búsqueda. Si es así, s
es descartada y s0 pasa a ser una nueva solución parcial, si no está ya incluida.
Si ya está incluida, queda reservada para una posible reexaminación durante
la fase de recuperación, hasta mantener exactamente w número de nodos. Esto
permite recuperar algunas de las decisiones erróneas tomadas con anterioridad.
No obstante, una solución parcial solo podrá ser sustituida por otra del mismo
nivel de profundidad dentro del árbol de búsqueda, lo que mantendrá en un
número polinómico los nodos explorados cuando también lo sea el número de
niveles del árbol de búsqueda.
Finalmente, los autores marcan para los parámetros a determinar, que un buen
α es el dado por α = 0,1, mientras que para el ancho de banda w, prueban
con w = 1 y con w = 3, quedando patente que se obtienen resultados
bastante similares en cuanto a la desviación respecto a la mejor solución
pero consumiendo mucho más tiempo en el caso de w = 3. En su artículo
muestran un conjunto de 20 instancias diferentes para cada combinación de
m = 10, 20, 30, 40, 50 y n = 100, 200, 500, 1000, llegando a instancias de
2.3. Máquinas paralelas no relacionadas 35
hasta 1000 × 50, generadas para los tiempos de proceso de los intervalos
U(10,100), U(10,1000) y tiempos de proceso correlacionados. Para las pruebas
emplearon ordenadores PC Pentium III/866 y se compararon con el algoritmo
APPROX propuesto por Martello, Soumis y Toth (1997). Sus resultados mos-
traron errores del 1,4 % en 143 segundos para las instancias más grandes, con
respecto a la cota inferior.
Para finalizar esta sección del estado del arte, hemos querido hacer una
llamada de atención sobre CPLEX 11.0. Este software comercial se usa como
solver en determinados pasos de alguno de los algoritmos que se han pro-
puesto para la resolución del problema de máquinas paralelas no relacionadas,
particularmente en los algoritmos de rounding o de dos fases, en los que la
resolución de la relajación del problema resulta básica, como en Mokotoff y
Jimeno (2002) o Shchepin y Vakhania (2005). Cuando se comprueba a la ve-
locidad que resuelve CPLEX los problemas cuando las variables del problema
no son binarias, no es de extrañar que la mayoría de los intentos actuales vayan
por dirigidos a tratar de aprovechar esta ventaja.
En nuestro estudio, probamos a utilizar el CPLEX para la resolución directa
del problema estándar; es decir con las variables de decisión binarias. La
formulación del problema de máquinas paralelas no relacionadas, como ya se
vio en la sección 2.3, es bastante simple, así que, tras analizar los primeros
resultados obtenidos por el CPLEX 11.0, consideramos que, dado el buen
comportamiento de este solver, debería ser parte de las mejores soluciones
36 CAPÍTULO 2. MÁQUINAS PARALELAS
a tener en cuenta. Es más, como se verá con detalle más adelante en el capítulo
3, la aplicación directa de este solver de carácter general, resulta mejor, en
muchos casos, que algoritmos creados ad hoc para resolver este problema y
que además se apoyan en el mismo CPLEX 11.0.
Por otra parte, hay que tener en cuenta que al ser CPLEX 11.0 un software
comercial, resulta opaco para el usuario el desarrollo en detalle de los métodos
que usa para resolver los distintos problemas. Por tanto, no nos resulta ase-
quible el saber qué es lo que realmente sucede ni justificar porque en algunos
casos va mejor y en otros peor. Con todo, lo que es innegable son los resultados
que se obtienen de él, motivo por el cuál forma parte de nuestro estudio, tal y
como se verá en el siguiente capítulo.
CAPÍTULO
3
ALGORITMOS INICIALES PROPUESTOS
37
38 CAPÍTULO 3. ALGORITMOS INICIALES PROPUESTOS
Solución inicial
Búsqueda de inserción
Búsqueda de intercambio
si
¿Se cumple el criterio
Fin
de parada?
no
si
¿algún cambio?
no
Modificar solución
IGS, IGD, NSP o Vir
2. Búsqueda local por inserción: buscar, para cada trabajo j, qué máquina
40 CAPÍTULO 3. ALGORITMOS INICIALES PROPUESTOS
hace que la suma del tiempo de proceso en ese trabajo en esa máquina,
pij , más el tiempo de todos los trabajos que ya tiene asignados esa
máquina Ci , sea mínimo, es decir la mejor opción (best). Esto puede
provocar que el trabajo que antes estaba asignado a una máquina, sea
reasignado a otra.
7. Se vuelve a 2.
procedure Base_de_algoritmos
π := Inicialización de la solución;
πb := π; % Mejor solución hallada hasta el momento
while (criterio de finalización no satisfecho) do
improved:=true;
while(improved) do % Bucle VNS
improved:=false;
π ′ := Busqueda_Local_Inserción(π); % hasta óptimo local
π ′′ := Busqueda_Local_Intercambio(π ′ ); % hasta óptimo local
if π ′′ ̸= π then
improved:=true;
π := π ′′ ;
endif
endwhile
if Cmáx (π ′′ ) <= Cmáx (πb ) then πb := π ′′ ;
π := Modificación_Solución(πb ); % modificar por IG o RLS
endwhile
end
que se deriva de la anterior, pero en la que se mira cuál de los pij del trabajo
j hace un tiempo de finalización Ci menor. Es decir, aquí se tiene en cuenta
todos los demás trabajos que la máquina ya tiene asignados, para ver donde
asignamos el trabajo de forma que el tiempo de finalización sea el menor
posible. No obstante, hay que tener en cuenta que esta solución inicial es
mucho más robusta ante distribuciones del pij muy asimétricas. Por ejemplo, si
la máquina 1 tiene todos los tiempos de proceso p1j = 1 ó igual al mínimo, con
la primera opción de solución inicial, acabarían todos los trabajos asignados a
la máquina 1, proporcionando una pobre solución inicial. En cualquier caso,
dichos casos aberrantes son eso, aberrantes y poco esperables en la práctica.
También, entre otras, se probó el no incluir una solución inicial, dado que
la primera búsqueda local, la de inserción, no precisa necesariamente de una
solución inicial previa. Este caso se probó por simplificación del algoritmo,
pero tampoco proporcionó los mejores resultados. No obstante, se detallarán
las variantes probadas en la sección 3.7.
Como cada uno de los n trabajos se intenta insertar en cada una de las
m máquinas, incluyendo la máquina en donde estaba previamente, el número
de pasos será de n · m, es decir, la búsqueda local de inserción propuesta
tiene una complejidad computacional de O(nm). Dichas combinaciones se
harán todas, ya que se busca la mejor asignación para todos los trabajos. No
obstante, debemos recordar que estamos hablando de simples sumas, con lo
que la ejecución en tiempo de CPU es muy rápida.
44 CAPÍTULO 3. ALGORITMOS INICIALES PROPUESTOS
procedure Busqueda_Local_Inserción
π := solución entrante;
improved := true;
while(improved) do % hasta óptimo local
improved := false;
for j := 1 to n do
i := máquina donde esta asignado el trabajo j;
l = argmin{Ch + phj };
h∈M/i
if (Cl + plj ) < Ci then
improved := true;
π := extraer el trabajo j de la máquina i y asignar a máquina l;
endif
endfor
endwhile
end
cuando pi1,j1 + pi2,j2 > pi2,j1 + pi1,j2 . Esto nos asegura una reducción neta
en los tiempos de proceso en las máquinas empleadas.
Llegados a este punto, queda por decidir qué estrategia seguir a la hora
de realizar el cambio. Una sería permitir el primer cambio que cumpliera las
restricciones arriba señaladas (first); la otra sería probar todos los intercambios
posibles, y elegir de entre todos los cambios que cumplieran las restricciones,
el que mejores valores proporcionara (best).
Los distintos experimentos realizados, que se detallarán en la sección 3.7,
aconsejan elegir la estrategia first, que favorece sobre todo la rapidez del
cálculo, añadiendo mayor variabilidad a los cambios. Es por tanto la estrategia
seguida aquí. El intercambio se realiza para todos los trabajos hasta llegar
al último. Una vez concluida esta parte, se comprueba si ha habido algún
trabajo intercambiado entre dos máquinas cualesquiera. De ser así, se reinicia
el proceso de búsqueda local de intercambio. El proceso finaliza cuando no se
produce ninguna variación con respecto a la solución anterior, por lo que todos
los trabajos siguen asignados a las mismas máquinas, llegando por tanto a un
óptimo local con respecto a esta definición de vecindario.
Como cada uno de los n trabajos se intenta intercambiar con los restantes
n − 1 trabajos, el número de combinaciones es de n · (n − 1), las cuales no se
harán necesariamente todas, ya que se busca la primera asignación que mejore
la suma de los intercambiados. Estamos hablando de simples sumas, con lo
que la ejecución en tiempo de CPU es muy rápida, pero es más lento que el
proceso anterior, el de inserción, ya que el número de trabajos suele ser muy
superior al de las máquinas.
46 CAPÍTULO 3. ALGORITMOS INICIALES PROPUESTOS
procedure Búsqueda_Local_Intercambio
π := solución entrante;
improved := true;
while(improved) do % hasta óptimo local
improved := false;
for j1 := 1 to n do
for j2 := 1 to n do
i1 := máquina donde el trabajo j1 está asignado;
i2 := máquina donde el trabajo j2 está asignado;
if j1 ̸= j2 and % no intercambia con si mismo
i1 ̸= i2 and % no a la misma máquina
pi1 j2 + pi2 j1 < pi1 j1 + pi2 j2 and % balance positivo
(Ci1 + pi1 j2 − pi1 j1 ) < Cmáx and % no empeorar Cmáx
(Ci2 + pi2 j1 − pi2 j2 ) < Cmáx then
π := quitar el trabajo j1 de la máquina i1 y
el trabajo j2 de la máquina i2 ;
π := asignar el trabajo j1 a la máquina i2 y
el trabajo j2 a la máquina i1 ;
improved:= true;
exitfor % estrategia primero que mejora
endif
endfor
endfor
endwhile
end
que una modificación realizada por una inserción, puede ser deshecha por un
intercambio en la siguiente fase. Esto es debido a la manera que se aceptan los
movimientos para el problema estudiado, sobre todo en la búsqueda local de
intercambio.
J1 J2 J3 J4 J5 Ci
M1 5 2 12 45 56 14
M2 3 1 39 17 63 20
M3 48 55 61 38 25 25
Podemos ver, en la tabla 3.1, que las variaciones que se van a producir por
inserción e intercambio serán en los trabajos J1 y J2 ya que el resto tienen
los valores más bajos ya asignados, así que nos centraremos en los cambios de
estos trabajos.
Tras la primera inserción quedará tal y como aparece en la tabla 3.2; en ella se
acepta la inserción del trabajo J1 en la máquina M1 ya que al principio estaba
en la máquina M2 con un C2 de 20, y deja un C2 de 17, subiendo el C1 de 14
a 19, el cual es inferior al Cmáx , que es 25. Además, de todas las máquinas, la
inserción en la máquina M1 es la que proporciona un Ci menor.
3.1. Base de los algoritmos propuestos 49
J1 J2 J3 J4 J5 Ci
M1 5 2 12 45 56 19
M2 3 1 39 17 63 17
M3 48 55 61 38 25 25
J1 J2 J3 J4 J5 Ci
M1 5 2 12 45 56 17
M2 3 1 39 17 63 18
M3 48 55 61 38 25 25
J1 J2 J3 J4 J5 Ci
M1 5 2 12 45 56 14
M2 3 1 39 17 63 20
M3 48 55 61 38 25 25
Hay que hacer notar que, tras varias pruebas, se determinó que aceptar
una solución que fuera igual que la que ya se tenía mejoraba bastante los
resultados obtenidos. Esto es debido a que el algoritmo lleva a distintas po-
sibles soluciones desde donde partir para encontrar una nueva mejor solución.
Adicionalmente, también experimentamos con la idea de aceptar, temporal-
mente, soluciones peores, tal y como se hace en Simulated Annealing (SA). No
obstante, todos estos experimentos, como ya detallaremos en la sección 3.7, no
ofrecieron mejoras sustanciales.
5 IGS
Máquina 1 3 1
Máquina 2 2 6
Máquina 3 4 5
0 5 10 15 20 25 30 35 40 45
3 IGS
5 IGS
Máquina 1 3 1
Máquina 2 2 6
Máquina 3 4
0 5 10 15 20 25 30 35 40 45
3 IGS
5 IGS
Máquina 1 1 5
Máquina 2 2 6
Máquina 3 4
0 5 10 15 20 25 30 35 40 45
3 IGS
Máquina 1 1 5 3
Máquina 2 2 6
Máquina 3 4
0 5 10 15 20 25 30 35 40 45
Máquina 1 1 5 3
Máquina 2 2 6
Máquina 3 4
0 5 10 15 20 25 30 35 40 45
Dado que se han de fijar las variables de número de trabajos a destruir tanto
del Cmáx como del resto, se calibró el algoritmo para ver su comportamiento y
ajustar las variables, como se verá desarrollado en el anexo C, quedando estas
fijadas en destruir 20 trabajos del Cmáx más 20 trabajos al azar.
5 IGD
Máquina 1 3 1
Máquina 2 2 6
Máquina 3 4 5
0 5 10 15 20 25 30 35 40 45
2 IGD
5 IGD
Máquina 1 3 1
Máquina 2 2 6
Máquina 3 4
0 5 10 15 20 25 30 35 40 45
2 IGD
5 IGD
Máquina 1 3 1 5
Máquina 2 6
Máquina 3 4
0 5 10 15 20 25 30 35 40 45
2 IGD
Máquina 1 3 1 5
Máquina 2 6 2
Máquina 3 4
0 5 10 15 20 25 30 35 40 45
Por último, la figura 3.14 nos muestras el estado final tras la aplicación del
algoritmo IGD.
62 CAPÍTULO 3. ALGORITMOS INICIALES PROPUESTOS
Máquina 1 3 1 5
Máquina 2 6 2
Máquina 3 4
0 5 10 15 20 25 30 35 40 45
1 NSP
Máquina 1 1 3
Máquina 2 2 6 1 NSP
Máquina 3 4 5 1 NSP
0 5 10 15 20 25 30 35 40 45
Máquina 1 3
Máquina 2 2 6 1
Máquina 3 4 5
0 5 10 15 20 25 30 35 40 45
1 VIR
Máquina 1 1 3 1 VIR
Máquina 2 2 6 1 VIR
Máquina 3 4 5 1 VIR
0 5 10 15 20 25 30 35 40 45
Máquina 1 3 1
Máquina 2 2 6
Máquina 3 4 5
0 5 10 15 20 25 30 35 40 45
2 VIR
Máquina 1 1 3 2 VIR
Máquina 2 2 6 2 VIR
Máquina 3 4 5 2 VIR
0 5 10 15 20 25 30 35 40 45
Máquina 1 1 3 2
Máquina 2 6
Máquina 3 4 5
0 5 10 15 20 25 30 35 40 45
3.4. Instancias
En general, cada autor genera sus propias instancias, como por ejemplo
Martello, Soumis y Toth (1997), Sourd (2001) o Mokotoff y Jimeno (2002),
pero posteriormente no son publicadas, además de no ser reutilizadas, por lo
que para el presente estudio creamos un conjunto de instancias de los más
amplios empleados en la literatura del problema de R//Cmáx .
En general, casi todos los autores que han escrito sobre este problema usan
tres tipos diferentes de intervalos:
relación entre las máquinas ni entre los trabajos, y los tiempos pij se
asignan sacando un número al azar de entre los limites de esa distribu-
ción. Por ejemplo, en una distribución U (1, 100), significaría que, los
pij para los distintos trabajos y máquinas, podrían tomar cualquier valor
entre 1 y 100.
Los basados en una relación entre los trabajos, donde cada tiempo de
proceso pij viene dado por la expresión pij = bj + dij donde bj y dij
son dos números generados al azar entre las distribuciones uniformes
U (1, 100) y U (1, 20), respectivamente. Intuitivamente, se puede ver a bj
como el valor principal de lo que cuesta procesar el trabajo j, mientras
que dij se puede ver como la desviación que se produce entre ese valor
principal y su procesado en la máquina i.
Los basados en una relación entre las máquinas, donde cada tiempo de
proceso pij viene dado por la expresión pij = ai + cij donde ai y cij
son dos números generados al azar entre las distribuciones uniformes
U (1, 100) y U (1, 20), respectivamente. El valor de ai viene a representar
el valor principal de lo que le cuesta realizar un trabajo a la máquina i,
mientras que cij se puede ver como la desviación que se produce entre
ese valor principal y su procesado cuando se realiza el trabajo j.
Hay que tener en cuenta que los algoritmos desarrollados en Delphi 2007
son del orden de un 20 % más lentos que los desarrollados en C++. No obstan-
te, no se ha hecho ningún tipo de corrección en este sentido. Con respecto
al tiempo de ejecución, cabe destacar que tanto los algoritmos propuestos
como CPLEX 11.0, se pueden parar cuando se desee. El tiempo que hemos
considerado suficiente para las pruebas iniciales ha sido de 15 segundos, dado
que en este tiempo CPLEX 11.0 era capaz de resolver todas las instancias de
100 trabajos para el intervalo U(1,100). No obstante, en capítulos posteriores
se evalúan los resultados de los mejores algoritmos para una amplia variedad
de tiempos.
Partial se desarrolla en dos partes diferenciadas, la que obtiene una primera
solución por relajación, tal y como se detalló en la sección 2.3.2.1, y la que
desarrolla el algoritmo tomando nuevas variables de la lista y depurándolas.
3.6. Análisis computacional 75
En el anexo B se han incluido dos gráficos por cada intervalo de pij , que
representan, una, la interacción de los distintos algoritmos y el número de
trabajos, y la otra, la interacción de los distintos algoritmos y el número de
máquinas. Estos gráficos nos ayudan a visualizar lo que los datos numéricos
también nos indican.
Cmáx − LB
Gap( %) = · 100 (3.2)
Cmáx
Hay que tener en cuenta que, aún después de 2 horas, CPLEX 11.0 no
consigue hallar el óptimo para un gran número de instancias. Es más, el
número de instancias que resuelve CPLEX 11.0 tras una máximo de 2 horas
varía mucho según el intervalo de tiempos de proceso que se estudie. Un
resumen del resultado del tanto por cien de las instancias resueltas queda
reflejado en la tabla 3.5.
3.6. Análisis computacional 79
Observando las medias en las tablas 3.6 y 3.7, se puede apreciar el buen
comportamiento de CPLEX 11.0 frente al resto de algoritmos, siendo el que
proporciona peores resultados Partial, que es un algoritmo específico para este
problema y que usa como solver el CPLEX 11.0. Puntualmente, se puede
constatar el mal comportamiento de RBS para 100 trabajos y 10 máquinas
3.6. Análisis computacional 81
los cuales son muy superiores a los 15 segundos fijados para el resto de
algoritmos. Por contra, para 200 trabajos, RBS da los peores resultados. Este
comportamiento anómalo para 200 trabajos de RBS, así como más detalles,
pueden consultarse en el anexo B.
En las tablas 3.10 y 3.11 para este intervalo, Partial nos muestra una mejor
media que el resto de algoritmos, aunque aquí, ya es fácil comprobar que los
algoritmos propuestos de búsqueda local restringida o de pequeños vecindarios
dan unos buenos resultados. Puntualmente, al igual que el caso anterior, RBS
86 CAPÍTULO 3. ALGORITMOS INICIALES PROPUESTOS
cuales son muy superiores a los 15 segundos fijados para el resto de algoritmos.
Por contra, para 100 trabajos, RBS da los peores resultados con diferencia.
También podemos observar como CPLEX da los mejores resultados para 100
trabajos pero los peores para 200 trabajos.
Las medias en este intervalo, que podemos ver en las tablas 3.14 y 3.15, ya
dejan claro que los algoritmos propuestos dan los mejores resultados frente al
3.6. Análisis computacional 91
CPLEX como Partial y RBS quedan lejos del resto para todos los trabajos,
e incluso RBS que para 1000 trabajos llega a tardar más de 97 segundos,
no supera a NSP tras 15 segundos También podemos observar, como RBS y
Partial dan peores resultados para 100 trabajos que para cualquier otra cantidad
de trabajos.
En este intervalo, las tablas 3.18 y 3.19 muestran como los algoritmos
propuestos dan los mejores resultados, siendo los algoritmos de búsqueda
local restringida o de pequeños vecindarios los que mejores resultados ofrecen.
Puntualmente, RBS da valores negativos para 500 × 40 y 1000 × 30, lo
que indica que obtiene mejores resultados que CPLEX tras un máximo de 2
96 CAPÍTULO 3. ALGORITMOS INICIALES PROPUESTOS
horas con cada instancia, no obstante, sigue obteniendo malos resultados para
100 × 10. Partial resulta ser el de peores resultados, con una media de dos o
más veces peor que el resto.
RBS quedan lejos del resto para 100 trabajos, e incluso RBS que para 1000
trabajos, llega a tardar más de 83 segundos, tiene resultados 2 veces peor que
NSP tras 15 segundos.
En este caso, el ANOVA de la figura 3.24 nos muestra que todos los
algoritmos propuestos son significativamente mejores que el resto, destacando
NSP, seguido de Vir que también es significativamente distinto del resto. Es
decir, en este intervalo, el algoritmo de mejores resultados es NSP, y el segundo
es Vir.
100 CAPÍTULO 3. ALGORITMOS INICIALES PROPUESTOS
En este intervalo, las tablas 3.22 y 3.23 nos muestran cómo los algoritmos
propuestos dan los mejores resultados, siendo el algoritmo NSP el que mejores
resultados ofrece. Puntualmente, todos los algoritmos, excepto CPLEX y Par-
tial, dan valores negativos para 200 × 30 y Vir los da también en 100 × 30, lo
que indica que obtienen mejores resultados que CPLEX tras un máximo de 2
3.6. Análisis computacional 101
horas con cada instancia. También destacan valores como 100 × 50 para RBS
(0,77), 77 veces peor que el resto (0,01); para Partial, los resultados en 500×40
ó 200 × 30 son peores en un número de veces incluso superior. Partial resulta
ser el de peores resultados, que junto con RBS se queda a unas 10 veces peor
que NSP.
resultados de Partial y RBS. Se aprecia como tanto Partial como RBS quedan
lejos del resto para 100 y 200 trabajos, y Partial para 500. Incluso RBS,
que para 1000 trabajos, llega a tardar más de 95 segundos, no supera a los
algoritmos propuestos tras 15 segundos.
Queda patente en la figura 3.25 del análisis del ANOVA que los resultados
para Partial y RBS son claramente peores que el resto, y que CPLEX, aún
mejorando a los anteriores, sigue siendo significativamente peor que todos los
algoritmos propuestos. En este caso, los algoritmos propuestos quedan muy
próximos unos de otros y prácticamente no hay diferencias significativas entre
ellos. Para este intervalo, resultan ser los algoritmos con mejores resultados,
NSP, Vir e IGD.
3.6. Análisis computacional 105
En este intervalo, las tablas 3.26 y 3.27 muestran como RBS da los mejores
resultados, con el algoritmo NSP dando resultados parejos. En este intervalo
es donde se puede observar por primera y única vez un comportamiento
106 CAPÍTULO 3. ALGORITMOS INICIALES PROPUESTOS
de trabajos, y los malos resultados de Partial para 100 trabajos y CPLEX para
el resto. También podemos ver como CPLEX se queda muy por encima de
los algoritmos con mejores resultados para los números de trabajos superiores.
Así mismo se puede apreciar como RBS, para 500 y 1000 trabajos, da valores
negativos, lo que implica que da mejores resultados que CPLEX tras 2 horas
como máximo con cada instancia.
1,5
1
0,5
0
RBS
NSP
IGS
Partial
Vir
IGD
Cplex
En este intervalo, las tablas 3.30 y 3.31 muestran como los algoritmos
propuestos son los que proporcionan los mejores resultados, en especial los de
búsqueda local restringida como Vir y NSP. Puntualmente se puede destacar
los elevados valores de CPLEX y Partial para las instancias de 1000 × 50. RBS
3.6. Análisis computacional 111
destaca por su peor media respecto a los mejores algoritmos, que llega a ser 4
veces superior.
número de trabajos, excepto para 100, que lo es Partial. Los peores resultados
los obtiene RBS para todos los números de trabajos excepto para 1000, donde
lo es CPLEX, aunque este último con 15 segundos exactos de tiempo de
ejecución frente a los más de 69 segundos que alcanza Partial o más de 112
segundos de RBS.
algoritmos en su conjunto.
1,35
RPD
1,15
0,95
0,75
RBS
NSP
IGS
Partial
Vir
IGD
Cplex
En esto caso, podemos ver que también Vir y NSP son los algoritmos con
mejores resultados, y están en el limite de no ser estadísticamente distintos
entre ellos, aunque sí son significativamente distintos del resto, excepto el
IGS, que es comparable al NSP. RBS es comparable con IGS, pero ya no con
NSP. El resto de algoritmos no son estadísticamente distintos del RBS, pero
dan peores resultados de media. Por tanto, después de todos estos análisis,
queda claro que los mejores algoritmos son aquellos que se derivan de las
búsquedas locales restringidas o de pequeños vecindarios, es decir Vir y NSP.
Por otra parte, Partial queda claramente superado por el resto de algoritmos.
CPLEX y RBS son en cierta medida similares; en ocasiones dan muy buenos
resultados en algunos intervalos puntuales, y en otros se quedan muy lejos
del mejor algoritmo; además ya vimos que el factor tiempo aumenta de forma
exponencial con el número de trabajos a resolver por parte de RBS. Así mismo,
120 CAPÍTULO 3. ALGORITMOS INICIALES PROPUESTOS
Los algoritmos propuestos han demostrado ser los que proporcionan los
mejores resultados, además, son algoritmos muy sencillos, con pocos paráme-
tros, fáciles de programar y los resultados son fáciles de replicar, en contra-
posición con RBS y Partial que tienen una mayor complicación. Así mismo,
por ser tan sencillos, son fáciles de extender a otros problemas, con lo que
nos servirán para su uso en nuestro objetivo de no usar todas las máquinas y/o
trabajos en el capítulo 6.
Aquí se puede apreciar que hay poca diferencia entre cada tipo de solución
inicial, siendo ligeramente mejor la aportada por tomar el menor pij de cada
trabajo.
La tabla 3.37 nos muestra como la variante de por mejora Cmáx resulta
algo peor que la definitiva versión por cambios, donde se emplea la estrategia
best, mientras que emplear para este caso la estrategia first, produce resultados
muy pobres. La opción first da unos resultados tan lejanos a la estrategia best
por que, en el primer caso, no se busca la mejor solución. En el caso de los
algoritmos presentados, se necesita una parte del mismo que busque la mejor
solución posible, no una variación de la misma para luego pasar a un refinado.
Esta parte es la búsqueda local de inserción, por lo que se hace imperativo el
que la búsqueda inserción encuentra la mejor solución posible dentro de su
espacio local, tal y como demuestran los resultados.
5+5 3 %+3 %
2,30 2,44
5+5: Destrucción de 5 trabajos del Cmax y 5 trabajos del resto; 3 %+3 %: Destrucción de 3 % trabajos
del Cmax y 3 % trabajos del resto.
importancia de esta fase. Esto es, por otro lado, una de las claves del éxito del
VNS; la complementariedad de vecindarios proporciona sinergias y resultados
muy superiores a la búsqueda continua en un único vecindario. El intercambio
en el orden de la ejecución de las búsquedas locales (orden cambiado), dio
similares si no peores resultados, dado el tamaño de los distintos vecindarios.
Asimismo, el retirar la parte de la modificación de la solución no llevó a
mejorar los resultados, como tampoco lo hizo el tratar de mezclar algunas de
las opciones que se habían propuesto.
parado con CPLEX, Partial y RBS, el estado del arte. De esta comparación,
quedó Partial, que usa el solver de CPLEX, como claramente un algoritmo ya
superado. RBS y CPLEX dan resultados similares entre sí, pero el tiempo de
resolución de RBS aumenta enormemente con el número de trabajos, dando,
además, malos resultados cuando el número de máquinas o de trabajos es pe-
queño, por lo que parece ser CPLEX la mejor opción entre los tres algoritmos
que había hasta ahora. Hablamos de la versión 11.0. No obstante, CPLEX solo
resultó ser mejor que los algoritmos propuestos de búsqueda local restringida
para el caso de U(1,100), e incluso en este caso no resultó ser estadísticamente
distinto de Vir. De los algoritmos propuestos queda peor situado IGD, a pesar
de ser comparable al estado del arte, seguido del IGS que lo mejora. Los
mejores resultados con diferencia de todos los algoritmos estudiados hasta
ahora son los de búsqueda local restringida, Vir y NSP.
133
134 CAPÍTULO 4. ALGORITMOS DE SELECCIÓN DIRIGIDA
se hace una nueva elección al azar de entre los trabajos asignados a esa
máquina. La ventaja de esta aproximación viene dada por su simplicidad y
una cierta independencia del conocimiento del tipo de problema, pero vamos
a tratar de encontrar mejores soluciones con una selección más dirigida tanto
de máquinas como de trabajos. Como ya se vio en las secciones 3.2 y 3.3,
en las calibraciones iniciales de los algoritmos previos, parte de los trabajos a
modificar debían pertenecer a la máquina que ostentara el Cmáx , detalle que
también debemos aprovechar para aumentar el rendimiento de los algoritmos.
En los siguientes apartados vamos a mostrar diversas técnicas que proponemos
para quitarle aleatoriedad a la selección de máquinas y trabajos con el ánimo
de mejorar los resultados obtenidos hasta ahora.
Triangular Directa
probabilidad
C máx C i(mín)
Triangular Inversa
probabilidad
C máx C i(mín)
Piramidal Inversa
probabilidad
C máx C i(mín)
deben estar en las máquinas con menor Ci . Así, seleccionando máquinas con
Ci elevado y máquinas con Ci bajo, tratamos de buscar una mejor asignación a
los trabajos mediante una homogeneización de tiempos entre las máquinas. No
obstante, la distribución triangular directa e inversa ya nos habían mostrado el
sesgo que había hacia la selección de máquinas con mayor Ci . Por tanto, como
refinamiento del la distribución piramidal inversa llegamos a la distribución
piramidal inversa asimétrica como se muestra en la figura 4.4 mediante la
variación del punto de inflexion de la distribución piramidal.
C máx C i(mín)
Esto nos llevó a valores aún mejores que la distribución piramidal inversa.
Ahora bien, hasta ahora se ha soslayado la cuestión de que varias máquinas
podrían tener el valor de Cmáx simultáneamente, en este caso tendría el mismo
valor la selección de cualquiera de estas máquinas, es más, al avanzar en el
cálculo del algoritmo, el caso más corriente es que se vayan homogeneizando
los valores de Ci y nos encontremos con varias máquinas que ostentan el Cmáx .
Así pues, finalmente se comprobó que los mejores resultados se obtenían de
una selección uniforme entre todas las máquinas que tenían el valor del Cmáx
y una triangular inversa entre el resto de las máquinas, como se muestra en la
4.1. Selección de máquinas 139
figura 4.5.
C máx C i(mín)
C máx C i(mín)
Sesgo del 20 % hacia máquinas con Cmáx = 12×20 % = 2,4; con redon-
deo = 3.
Número final de trabajos para máquinas con Cmáx según media más
sesgo = 8 + 3 = 11.
4.4. Métodos mejorados 143
Número final de trabajos para máquinas con Ci distinto del Cmáx según
media menos sesgo = 12 - 3 = 9.
Cabe significar que, al igual que en el caso de los algoritmos originales (IG,
NSP y Vir), en los nuevos algoritmos (IG+, NSP+ y Vir+), el número total de
trabajos a modificar es independiente del tamaño de la instancia considerada.
144 CAPÍTULO 4. ALGORITMOS DE SELECCIÓN DIRIGIDA
a) Una única iteración de NSP y Vir para todos los trabajos, sin
empeorar el valor del Cmáx .
b) Búsquedas locales de inserción e intercambio, ambas hasta óptimo
local.
Solución inicial
NSP (1 iteración)
Vir (1 tieracíon)
Búsqueda de inserción
Búsqueda de intercambio
si
¿Se cumple el criterio
Fin
de parada?
no
si
¿algún cambio?
no
n m CPLEX Partial RBS IGS NSP Vir IG+ NSP+ Vir+ NVST-IG+
100 10 0,00 0,38 2,40 0,14 0,22 0,15 0,13 0,52 0,29 0,17
100 20 0,00 0,63 2,88 0,46 1,03 1,18 0,39 1,68 1,21 0,73
100 30 0,00 2,99 1,21 0,63 0,85 0,86 0,63 1,07 0,74 0,00
100 40 0,00 7,41 2,74 1,48 2,74 2,74 1,24 1,81 2,74 0,91
100 50 0,00 7,94 0,00 1,25 1,25 1,25 1,00 1,25 1,25 0,00
200 10 0,20 0,34 1,34 0,37 0,50 0,42 0,35 0,58 0,46 0,26
200 20 1,75 1,39 2,28 1,68 1,82 1,68 0,94 1,94 1,51 0,98
200 30 2,12 1,82 3,59 2,38 2,96 2,53 1,79 2,65 2,29 2,02
200 40 3,03 1,73 4,18 3,37 4,19 3,48 2,89 3,49 3,01 2,16
200 50 1,60 7,31 4,87 4,71 5,19 5,32 4,55 5,17 5,14 3,69
500 10 0,29 0,31 0,97 0,57 0,57 0,53 0,45 0,53 0,49 0,37
500 20 1,26 0,96 1,48 2,28 2,35 1,84 1,41 1,73 1,61 1,20
500 30 3,40 2,31 2,00 4,05 4,21 2,96 2,18 2,61 2,43 1,83
500 40 4,15 3,64 1,82 4,19 4,86 3,52 1,97 2,33 2,23 1,46
500 50 5,63 6,37 1,88 6,07 7,21 4,80 4,51 4,80 4,21 2,78
1000 10 0,19 0,54 0,73 0,42 0,41 0,38 0,34 0,37 0,35 0,31
1000 20 1,35 0,91 1,09 1,44 1,46 1,29 0,87 1,01 0,98 0,83
1000 30 2,36 2,03 1,57 3,25 3,42 2,70 2,01 2,18 2,08 1,87
1000 40 4,26 4,12 2,00 4,81 5,00 3,96 2,85 2,93 2,88 2,45
1000 50 6,05 4,50 1,57 5,66 6,21 4,38 3,17 3,44 3,13 2,70
Media 1,88 2,88 2,03 2,46 2,82 2,30 1,68 2,10 1,95 1,34
2,3
1,9
1,5
1,1
CPLEX
IG+
Vir+
RBS
IGS
NSP+
NVST-IG+
NSP
Partial
Vir
sus algoritmos de procedencia (IGS, NSP y Vir), aunque no lo son del estado
del arte. Sin embargo, el algoritmo híbrido NVST-IG+ ya se muestra estadísti-
camente mejor que cualquier otro algoritmo estudiado.
n m CPLEX Partial RBS IGS NSP Vir IG+ NSP+ Vir+ NVST-IG+
100 10 0,06 0,39 1,45 0,49 0,57 0,37 0,44 0,56 0,50 0,36
100 20 0,79 0,53 2,67 0,98 1,22 0,85 0,74 1,01 0,85 0,60
100 30 2,14 1,29 4,49 1,67 1,88 1,46 0,78 1,38 0,99 0,43
100 40 0,29 1,47 4,98 2,82 3,52 2,70 2,00 2,12 2,24 0,94
100 50 0,33 0,67 6,66 0,55 1,48 0,62 0,33 0,62 0,62 0,13
200 10 0,25 0,27 0,80 0,52 0,43 0,30 0,27 0,36 0,28 0,21
200 20 1,66 0,90 1,52 1,67 1,15 0,94 0,71 1,01 0,87 0,57
200 30 2,96 2,40 2,16 2,44 1,80 1,82 1,25 1,55 1,48 0,68
200 40 5,02 2,05 2,68 2,93 2,46 2,58 1,23 1,98 1,48 0,82
200 50 4,36 1,80 1,80 2,43 1,91 2,27 1,08 1,52 1,48 0,16
500 10 0,27 0,23 0,52 0,45 0,39 0,38 0,28 0,36 0,30 0,24
500 20 0,97 0,82 1,02 1,40 1,10 1,04 0,75 0,88 0,79 0,64
500 30 1,80 1,42 0,99 2,17 1,82 1,74 1,08 1,32 1,27 1,07
500 40 2,53 2,66 1,33 3,01 2,52 2,65 1,57 1,96 1,90 1,56
500 50 3,08 3,25 1,28 3,52 2,84 3,09 1,86 2,19 2,20 1,80
1000 10 0,19 0,73 0,39 0,26 0,23 0,22 0,18 0,19 0,19 0,16
1000 20 0,83 0,66 0,47 0,84 0,75 0,71 0,53 0,62 0,58 0,51
1000 30 1,38 0,98 0,64 1,44 1,25 1,24 0,87 1,01 0,96 0,98
1000 40 1,75 1,72 0,81 2,00 1,71 1,77 1,27 1,42 1,37 1,38
1000 50 2,05 2,05 0,83 2,48 2,18 2,23 1,62 1,83 1,79 1,81
Media 1,64 1,31 1,87 1,70 1,56 1,45 0,94 1,19 1,11 0,75
1,8
1,5
RPD
1,2
0,9
0,6
CPLEX
IG+
Vir+
RBS
IGS
NSP+
NVST-IG+
NSP
Vir
Partial
n m CPLEX Partial RBS IGS NSP Vir IG+ NSP+ Vir+ NVST-IG+
100 10 0,50 0,53 0,79 0,75 0,48 0,49 0,38 0,31 0,37 0,35
100 20 1,18 2,19 1,26 1,30 0,61 1,00 0,88 0,50 0,75 0,78
100 30 2,32 4,73 0,98 1,82 0,50 1,04 0,95 0,44 1,01 0,71
100 40 2,42 7,21 1,22 4,03 1,93 2,03 2,41 1,39 2,54 2,24
100 50 3,18 7,83 2,54 5,06 4,02 3,32 2,34 1,60 2,92 2,17
200 10 0,29 0,26 0,35 0,49 0,36 0,42 0,24 0,22 0,25 0,22
200 20 1,64 1,18 0,56 0,63 0,38 0,50 0,37 0,33 0,41 0,37
200 30 2,82 2,50 0,57 1,26 0,61 0,96 0,80 0,65 0,80 0,64
200 40 3,12 3,49 -0,24 1,34 0,11 0,79 0,62 0,36 0,69 0,33
200 50 4,97 5,09 -0,65 2,28 0,54 1,42 1,27 0,91 1,27 0,94
500 10 0,25 0,16 0,13 0,28 0,28 0,28 0,14 0,15 0,16 0,14
500 20 0,69 0,77 0,13 0,37 0,33 0,36 0,27 0,26 0,26 0,22
500 30 2,21 1,16 0,07 0,44 0,27 0,38 0,29 0,25 0,31 0,17
500 40 3,95 1,75 -0,06 0,35 0,04 0,25 0,14 0,10 0,16 0,02
500 50 4,83 3,34 -0,42 0,41 -0,10 0,18 0,06 0,02 0,10 -0,10
1000 10 0,15 0,09 0,09 0,11 0,13 0,13 0,08 0,09 0,09 0,09
1000 20 0,70 0,47 0,05 0,27 0,25 0,27 0,22 0,22 0,23 0,20
1000 30 1,56 1,25 -0,02 0,21 0,16 0,18 0,16 0,14 0,16 0,13
1000 40 2,59 1,77 -0,11 0,12 0,03 0,08 0,05 0,03 0,05 0,01
1000 50 4,57 2,87 -0,28 0,14 -0,02 0,08 0,05 0,01 0,06 -0,02
Medio 2,20 2,43 0,35 1,08 0,54 0,71 0,59 0,40 0,63 0,48
1,5
1
0,5
0
CPLEX
IG+
Vir+
RBS
IGS
NSP+
NVST-IG+
NSP
Partial
Vir
n m CPLEX Partial RBS IGS NSP Vir IG+ NSP+ Vir+ NVST-IG+
100 10 0,00 0,10 1,65 0,28 0,27 0,14 0,24 0,23 0,21 0,25
100 20 0,08 0,07 3,44 0,51 0,37 0,39 0,44 0,37 0,37 0,43
100 30 0,00 0,08 3,77 0,44 0,37 0,30 0,40 0,32 0,32 0,25
100 40 0,11 0,00 4,18 0,22 0,23 0,15 0,20 0,15 0,20 0,15
100 50 0,29 0,00 5,37 0,47 0,53 0,35 0,41 0,29 0,35 0,32
200 10 0,45 0,37 1,47 0,56 0,42 0,47 0,52 0,49 0,49 0,53
200 20 0,91 0,53 1,16 0,42 0,28 0,32 0,33 0,31 0,31 0,29
200 30 1,28 1,15 2,27 0,76 0,53 0,58 0,55 0,48 0,44 0,50
200 40 1,58 0,96 4,37 0,67 0,50 0,52 0,55 0,42 0,46 0,49
200 50 1,91 0,69 4,29 0,82 0,56 0,65 0,56 0,51 0,50 0,33
500 10 0,28 0,15 0,73 0,60 0,55 0,54 0,69 0,64 0,64 0,65
500 20 0,86 0,56 1,65 0,72 0,66 0,67 0,71 0,71 0,69 0,72
500 30 1,09 1,17 0,82 0,79 0,69 0,71 0,75 0,72 0,69 0,68
500 40 1,67 1,86 2,53 0,76 0,68 0,69 0,69 0,70 0,67 0,64
500 50 2,72 2,87 2,99 1,00 0,97 0,94 0,81 0,81 0,83 0,77
1000 10 0,27 0,20 0,34 0,64 0,60 0,59 0,61 0,63 0,61 0,59
1000 20 0,48 0,39 0,51 0,87 0,84 0,85 0,88 0,88 0,85 0,88
1000 30 0,96 1,19 1,20 1,02 1,03 1,02 0,97 1,00 1,00 0,98
1000 40 2,52 2,28 1,78 0,75 0,74 0,74 0,73 0,74 0,71 0,69
1000 50 5,19 4,23 2,75 0,93 0,96 0,95 0,85 0,89 0,85 0,82
Media 1,13 0,94 2,36 0,66 0,59 0,58 0,60 0,56 0,56 0,55
La figura 4.11 nos muestra como todos los algoritmos propuestos son
significativamente distintos al estado del arte. Igualmente queda patente la
diferencia de resultados para este intervalo del RBS, que queda muy lejos de
los valores obtenidos por resto de algoritmos.
154 CAPÍTULO 4. ALGORITMOS DE SELECCIÓN DIRIGIDA
1,5
RPD
0,5
0
CPLEX
NSP+
IG+
Vir+
RBS
IGS
NSP
NVST-IG+
Vir
Partial
n m CPLEX Partial RBS IGS NSP Vir IG+ NSP+ Vir+ NVST-IG+
100 10 0,07 0,09 1,22 0,33 0,30 0,19 0,26 0,29 0,24 0,26
100 20 0,38 0,47 1,07 0,39 0,37 0,32 0,32 0,43 0,35 0,30
100 30 1,90 2,81 1,01 0,21 0,16 0,03 -0,01 0,02 -0,01 -0,10
100 40 1,38 2,43 0,99 0,47 0,42 0,34 0,22 0,16 0,18 0,07
100 50 0,28 0,14 1,66 0,14 0,22 0,35 0,10 0,09 0,36 0,11
200 10 0,69 0,43 1,06 0,40 0,23 0,29 0,33 0,38 0,35 0,31
200 20 0,50 0,83 1,42 0,74 0,47 0,64 0,50 0,56 0,59 0,49
200 30 1,15 2,73 0,01 0,11 -0,29 -0,12 -0,22 -0,22 -0,20 -0,30
200 40 1,01 1,06 0,89 0,83 0,48 0,83 0,43 0,48 0,66 0,42
200 50 0,85 0,68 1,12 0,95 0,55 0,96 0,54 0,58 0,85 0,52
500 10 0,29 0,23 0,49 0,26 0,13 0,18 0,21 0,23 0,22 0,21
500 20 1,05 0,66 1,04 0,75 0,58 0,67 0,71 0,76 0,77 0,69
500 30 0,91 1,47 0,57 0,78 0,56 0,66 0,59 0,57 0,59 0,55
500 40 0,48 2,15 0,32 0,54 0,35 0,43 0,31 0,30 0,33 0,28
500 50 0,69 0,98 0,69 0,84 0,58 0,80 0,51 0,59 0,64 0,51
1000 10 0,21 0,31 0,22 0,13 0,08 0,11 0,12 0,11 0,13 0,11
1000 20 0,80 0,67 0,64 0,50 0,38 0,46 0,46 0,50 0,49 0,40
1000 30 0,84 0,93 0,56 0,66 0,59 0,64 0,58 0,59 0,61 0,46
1000 40 0,98 1,18 0,70 0,69 0,58 0,66 0,57 0,63 0,61 0,58
1000 50 0,71 0,69 0,54 0,60 0,48 0,58 0,49 0,51 0,54 0,47
Media 0,76 1,05 0,81 0,52 0,36 0,45 0,35 0,38 0,42 0,32
1,08
0,88
RPD
0,68
0,48
0,28
CPLEX
IG+
Vir+
RBS
IGS
NSP+
NVST-IG+
NSP
Partial
Vir
n m CPLEX Partial RBS IGS NSP Vir IG+ NSP+ Vir+ NVST-IG+
100 10 0,06 0,19 0,24 0,10 0,06 0,06 0,07 0,09 0,09 0,08
100 20 0,20 0,28 0,22 0,11 0,06 0,10 0,06 0,06 0,06 0,05
100 30 0,15 0,35 0,18 0,15 0,04 0,09 0,00 0,00 0,01 0,00
100 40 0,03 0,40 0,10 0,15 0,00 0,04 0,00 0,00 0,00 0,00
100 50 0,05 0,94 0,30 0,12 0,03 0,14 0,01 0,04 0,09 0,00
200 10 0,10 0,13 0,19 0,08 0,04 0,05 0,06 0,06 0,07 0,06
200 20 0,24 0,26 0,22 0,15 0,08 0,13 0,08 0,09 0,11 0,09
200 30 0,44 0,68 0,04 0,10 0,03 0,07 0,03 0,02 0,03 0,01
200 40 0,12 0,18 0,06 0,08 0,06 0,08 0,03 0,04 0,07 0,03
200 50 0,05 0,32 0,07 0,06 0,02 0,08 0,02 0,02 0,02 0,01
500 10 0,15 0,29 0,23 0,07 0,04 0,06 0,08 0,10 0,09 0,09
500 20 0,16 0,23 0,18 0,10 0,07 0,09 0,07 0,08 0,09 0,07
500 30 0,39 0,42 0,11 0,17 0,13 0,15 0,12 0,11 0,11 0,10
500 40 0,07 0,86 -0,02 0,06 0,01 0,05 -0,02 -0,01 -0,02 -0,02
500 50 0,11 0,10 0,04 0,09 0,05 0,08 0,01 0,03 0,03 0,01
1000 10 0,16 0,28 0,13 0,05 0,03 0,04 0,07 0,07 0,07 0,07
1000 20 0,25 0,26 0,16 0,08 0,06 0,08 0,08 0,09 0,09 0,08
1000 30 0,12 0,14 -0,05 0,07 0,05 0,07 0,05 0,05 0,05 0,03
1000 40 0,16 0,14 0,10 0,07 0,06 0,06 0,05 0,06 0,05 0,05
1000 50 0,07 0,10 0,03 0,03 0,02 0,03 0,01 0,02 0,01 0,01
Media 0,15 0,33 0,13 0,09 0,05 0,08 0,04 0,05 0,06 0,04
0,3
RPD
0,2
0,1
0
CPLEX
IG+
Vir+
RBS
IGS
NSP+
NVST-IG+
NSP
Vir
Partial
n m CPLEX Partial RBS IGS NSP Vir IG+ NSP+ Vir+ NVST-IG+
100 10 0,06 0,04 0,14 0,04 0,03 0,02 0,03 0,04 0,03 0,03
100 20 0,04 0,07 0,18 0,03 0,03 0,02 0,01 0,03 0,03 0,02
100 30 0,17 0,36 0,23 0,02 0,01 -0,01 -0,01 -0,01 -0,01 -0,02
100 40 0,13 0,35 0,33 0,04 0,03 0,02 0,01 0,01 0,01 0,00
100 50 0,01 0,01 0,77 0,01 0,01 0,01 0,00 0,00 0,02 0,00
200 10 0,04 0,06 0,13 0,05 0,02 0,03 0,04 0,05 0,04 0,04
200 20 0,09 0,08 0,17 0,07 0,04 0,06 0,04 0,06 0,06 0,05
200 30 0,09 0,72 -0,03 -0,07 -0,11 -0,09 -0,10 -0,10 -0,10 -0,11
200 40 0,10 0,09 0,29 0,05 0,02 0,05 0,02 0,04 0,04 0,02
200 50 0,07 0,11 0,52 0,06 0,03 0,07 0,03 0,04 0,05 0,03
500 10 0,06 0,03 0,09 0,03 0,02 0,02 0,03 0,04 0,04 0,03
500 20 0,10 0,04 0,09 0,05 0,03 0,04 0,04 0,04 0,04 0,03
500 30 0,02 0,94 0,03 0,04 0,01 0,03 0,02 0,02 0,02 0,01
500 40 0,03 1,19 0,03 0,04 0,02 0,03 0,02 0,02 0,02 0,01
500 50 0,08 0,09 0,23 0,07 0,05 0,07 0,04 0,05 0,06 0,04
1000 10 0,08 0,08 0,07 0,02 0,02 0,02 0,03 0,04 0,03 0,03
1000 20 0,10 0,07 0,08 0,04 0,03 0,04 0,05 0,05 0,05 0,05
1000 30 0,10 0,07 0,07 0,07 0,06 0,06 0,06 0,06 0,06 0,05
1000 40 0,08 0,08 0,09 0,05 0,04 0,05 0,04 0,04 0,04 0,04
1000 50 0,06 0,06 0,13 0,05 0,04 0,05 0,04 0,04 0,05 0,04
Media 0,08 0,23 0,18 0,04 0,02 0,03 0,02 0,03 0,03 0,02
0,12
0,08
0,04
0
CPLEX
IG+
Vir+
RBS
IGS
NSP+
NVST-IG+
NSP
Partial
Vir
Intervalo CPLEX Partial RBS IGS NSP Vir IG+ NSP+ Vir+ NVST-IG+
U (1, 100) 1,88 2,88 2,03 2,46 2,82 2,3 1,68 2,10 1,95 1,34
U (10, 100) 1,64 1,31 1,87 1,7 1,56 1,45 0,94 1,19 1,11 0,75
U (100, 200) 0,76 1,05 0,81 0,52 0,36 0,45 0,35 0,38 0,42 0,32
U (100, 120) 0,15 0,33 0,13 0,09 0,05 0,08 0,04 0,05 0,06 0,04
U (1000, 1100) 0,08 0,23 0,18 0,04 0,02 0,03 0,02 0,03 0,03 0,02
jobcorre 2,20 2,43 0,35 1,08 0,54 0,71 0,59 0,40 0,63 0,48
machcorre 1,13 0,94 2,36 0,66 0,59 0,58 0,60 0,56 0,56 0,55
Media 1,12 1,31 1,10 0,94 0,85 0,80 0,60 0,67 0,68 0,50
M, usuales 1,71 1,89 1,65 1,48 1,38 1,26 0,95 1,07 1,06 0,78
M.usuales= Media de los intervalos más usuales: U (1, 100); U (10, 100); Trabajos Correlacionados;
máquinas Correlacionadas
1,26
RPD
1,06
0,86
0,66
0,46
CPLEX
IG+
Vir+
RBS
IGS
NSP+
NVST-IG+
NSP
Partial
Vir
Hasta ahora los resultados mostrados por los siete algoritmos propuestos
y CPLEX se han obtenido parando a 15 segundos de tiempo de CPU. Recor-
demos que Partial ha sido parado a los 15 segundos de su segunda fase, lo
que nos lleva a tiempos superiores a 15 segundos. Igualmente RBS supera los
15 segundos de tiempo dado el carácter constructivo de este algoritmo, por lo
que se ha de dejar que finalice, lo que para las instancias más grandes eleva
mucho este tiempo, siendo menor para las instancias pequeñas, y dándonos
una media, para la amplitud de rayo recomendado por sus autores, de 25
segundos. Quedaría pendiente la cuestión de si los resultados obtenidos por
el mejor algoritmo propuesto, NVST-IG+, mantienen estos buenos resultados
para tiempos de parada de CPU mayores, o incluso menores. Para resolver esta
cuestión, hemos llevado a cabo una serie de experimentos adicionales donde
se han ajustado los tiempos de parada de CPU a 5, 25, 300, 600, 1800, 3600 y
7200 segundos. Estos tiempos de nuevo se ajustan exactamente en el caso del
algoritmo propuesto NVST-IG+ y CPLEX. Para Partial estos nuevos tiempos
se usan para la segunda fase de este algoritmo. En el caso de Partial solo se
ha llegado hasta 300 segundos debido a que las diferencias, desfavorables para
Partial, con los restantes algoritmos, iban aumentando conforme aumentaban
los tiempos. Igualmente, ha sido seleccionado el tiempo de 25 segundos por
ser, aproximadamente, la media del tiempo que emplea RBS en resolver todas
las instancias con la amplitud de rayo recomendado por los autores. En el
caso de RBS, se evaluó hasta 300 segundos aumentando la correspondiente
amplitud de rayo.
Tiempo Algoritmo U (1, 100) U (10, 100) U (100, 200) U (100, 120) U (1000, 1100) Tracorre Maqcorre Media
164
5 Partial 3,93 2,25 1,22 0,36 0,27 2,89 1,49 1,77
CPLEX 3,45 2,53 0,98 0,20 0,09 3,92 2,70 1,98
NVST-IG+ 1,78 1,06 0,41 0,06 0,03 0,71 0,66 0,67
300 Partial 1,59 0,33 0,20 0,21 0,09 1,23 0,10 0,54
CPLEX 0,35 0,29 0,24 0,04 0,02 0,45 0,12 0,22
NVST-IG+ 0,67 0,19 0,14 0,02 0,00 0,05 0,38 0,21
RBS 0,87 0,85 0,39 0,07 0,08 -0,20 1,17 0,46
600 CPLEX 0,24 0,20 0,17 0,03 0,01 0,27 0,07 0,14
NVST-IG+ 0,58 0,09 0,10 0,01 0,00 -0,02 0,35 0,16
1800 CPLEX 0,12 0,11 0,08 0,02 0,01 0,12 0,03 0,07
NVST-IG+ 0,53 0,02 0,07 0,01 -0,01 -0,11 0,32 0,12
3600 CPLEX 0,05 0,06 0,02 0,01 0,00 0,07 0,01 0,03
NVST-IG+ 0,49 -0,03 0,05 0,00 -0,01 -0,2 0,29 0,09
7200 CPLEX 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
NVST-IG+ 0,38 -0,07 0,03 0,00 -0,01 -0,26 0,27 0,05
Tabla 4.9 – Resultados de las medias de los mejores algoritmos para diferentes tiempos
de parada de CPU. En negrita (cursiva) se destacan los mejores (peores) resultados.
CAPÍTULO 4. ALGORITMOS DE SELECCIÓN DIRIGIDA
4.6. Análisis computacional 165
algoritmo
1,4
CPLEX
1,1 NVST-IG+
RPD
0,8
0,5
0,2
- 0,1
5 15 30 60 120 240 300 600 1800 3600 7200
das, como las búsquedas locales e iterated greedy y hemos realizado algunas
variaciones novedosas como las búsquedas locales restringidas tipo NSP y Vir,
a las que hemos añadido una selección de trabajos a modificar dentro del IGS
de forma más inteligente que nos proporcionaron una algoritmo híbrido que
mejora con el tiempo. Pero se nos puede tachar de no emplear una técnica
realmente novedosa e igualmente de no emplear los modernos ordenadores con
varios núcleos con la posible paralelización de tareas. También puede quedar
la duda de si nuevas versiones de CPLEX serán capaces de superar cualquier
algoritmo que se presente para este problema, dada la inherente simplicidad
de su modelo matemático. Con estas cuestiones en mente y todo lo visto hasta
este momento, procedemos a atacar el problema desde un ángulo diferente.
CAPÍTULO
5
HEURÍSTICAS DE REDUCCIÓN DE TAMAÑO
169
170 CAPÍTULO 5. HEURÍSTICAS DE REDUCCIÓN DE TAMAÑO
n n
Cmáx ≃ 2
· (t − b) + ·b (5.1)
m m
Con todo, un análisis más detallado de los resultados nos lleva a constatar
un sorprendente detalle: la mayoría de los trabajos se asignan a las máquinas
que los procesan más rápido. Esto es predecible en tanto en cuanto nos encon-
tramos ante un problema de asignación. Sin embargo, lo sorprendente del caso
fue el constatar lo abrumadoramente consistente que resultó esta apreciación.
En la inmensa mayoría de las ocasiones, cada trabajo se asigna o bien a la
máquina más rápida para ese trabajo, o bien a la segunda más rápida, o bien a
la tercera más rápida. En otras palabras, de entre las n·m variables binarias del
modelo presentado en la sección 2.3, los trabajos generalmente se asignan a las
máquinas i1j , i2j o i3j donde i1j = argmini∈M pij , i2j = argmini∈M/i1j pij
e i3j = argmini∈M/i1j ,i2j pij , es decir, la máquina que hace mínima la
condición expuesta. Así pues, si los trabajos raramente se asignan a una má-
quina más lenta que las tres más rápidas, una pregunta acude rápidamente a
la mente ¿es necesario definir todas las restantes variables? Un modelo MILP
“reducido”, considerando solo estas “tres máquinas más rápidas” tendrá n · 3
variables binarias. Esto significa que si una instancia de 1000 × 50 necesita
50.000 variables binarias, usando solamente esas tres máquinas más rápidas
para cada trabajo, todo lo que necesitaremos serán 3.000 variables binarias, es
decir, 16,67 veces menos variables. Por supuesto, esta reducción de tamaño
tiene un alto precio. Lo primero es que la optimalidad de la solución no puede
garantizarse, dado que no se emplean todas las variables del problema. En
segundo lugar, esta reducción de tamaño directa no se espera que funcione
bien en todos los casos.
174 CAPÍTULO 5. HEURÍSTICAS DE REDUCCIÓN DE TAMAÑO
Veamos cómo de acertada es la hipótesis de las tres máquinas más rápidas. Para
cada una de las 1.400 instancias previas y para las soluciones de referencia
obtenidas por CPLEX con 2 horas de tiempo como criterio de terminación,
procedemos a contar cuántos de los trabajos que no se han asignando a ninguna
de las tres máquinas más rápidas, i1j , i2j ó i3j . Los resultados se muestran en la
tabla 5.2. Cada casilla de esta tabla representa el porcentaje de trabajos que en
una instancia no ha sido asignados a ninguna de las tres máquinas más rápidas
en la solución final de la mencionada referencia.
n m U (1, 100) U (10, 100) U (100, 200) U (100, 120) U (1000, 1100) jobcorre maqcorre
100 10 0,30 0,50 0,80 1,30 1,10 0,70 30,20
20 1,40 1,20 4,60 1,50 2,80 4,40 35,40
30 3,80 4,60 18,00 24,40 31,20 10,90 41,30
40 3,50 7,30 20,40 11,10 24,70 17,90 43,80
50 5,50 10,20 6,60 1,50 4,80 32,40 41,30
200 10 0,20 0,10 0,30 0,30 0,50 0,30 31,90
20 0,40 0,65 1,40 0,55 1,30 2,20 40,30
30 0,80 1,65 6,80 17,75 10,50 4,75 44,05
40 1,20 1,85 1,85 0,60 3,20 9,90 45,75
50 2,15 3,65 4,30 0,25 4,35 12,60 46,15
500 10 0,04 0,00 0,06 0,10 0,08 0,02 32,82
20 0,08 0,12 0,30 0,20 0,24 0,18 43,14
30 0,32 0,12 2,34 13,46 8,80 0,80 44,48
40 0,52 0,28 4,46 11,00 10,12 2,10 44,30
50 0,36 0,74 0,84 0,28 0,84 4,20 45,10
1000 10 0,02 0,01 0,00 0,02 0,02 0,00 29,66
20 0,04 0,02 0,19 0,13 0,12 0,06 37,65
30 0,05 0,09 0,74 1,78 12,57 0,25 39,84
40 0,13 0,09 0,29 0,16 0,17 0,86 46,67
50 0,20 0,11 0,45 0,10 0,22 1,33 45,14
Media( %) 1,05 1,66 3,74 4,32 5,88 5,29 40,45
Con estos datos de la tabla 5.2, vemos factible que proponer un modelo
de reducción de tamaño considerando solo las tres máquinas más rápidas para
cada trabajo, puedan funcionar bien y proporcionar bajos valores de Cmáx .
Esto resulta ser cierto para la gran mayoría de los casos, como veremos en las
siguiente secciones.
rápidas para poder ser asignado. Nótese que nos referimos a las variables
binarias seleccionadas xij o a los valores pij indistintamente. En este caso,
los k · n valores más pequeños de pij se seleccionan. Llamamos a este método
de reducción de tamaño basado en los trabajos (job-based size reduction) o
kJB.
La tabla 5.3 muestra un ejemplo de 3JB para una instancia de 10 trabajos y 5
máquinas, donde los tres menores valores de pij se seleccionan dentro de cada
trabajo.
J1 J2 J3 J4 J5 J6 J7 J8 J9 J10
M1 5 9 3 6 4 3 6 5 7 3
M2 8 9 7 6 6 4 5 1 1 4
M3 1 1 4 3 8 3 7 4 8 1
M4 2 8 3 4 2 3 1 7 1 6
M5 3 7 8 5 2 8 4 9 5 3
J1 J2 J3 J4 J5 J6 J7 J8 J9 J10
M1 5 9 3 6 4 3 6 5 7 3
M2 8 9 7 6 6 4 5 1 1 4
M3 1 1 4 3 8 3 7 4 8 1
M4 2 8 3 4 2 3 1 7 1 6
M5 3 7 8 5 2 8 4 9 5 3
embargo, ya hemos visto como habían muchos métodos que eran muy efecti-
vos y eficientes para el problema de R//Cmáx y nos parecía plausible hacer
una selección de los menores valores de pij para la reducción de tamaño del
MILP después de observar las soluciones dadas por alguna heurística efectiva.
Para ello, seleccionamos la que hemos mostrado como mejor heurística para
este problema, el algoritmo NVST-IG+. En lo sucesivo, nos referiremos a
esta heurística como DIG, para abreviar (vecindario variable Descendente con
Iterated Greedy). Básicamente, lo que hacemos es ejecutar DIG durante una
cantidad muy breve de tiempo (5 segundos) y cada vez que alcance una nueva
solución en esos 5 segundos, los valores de pij se seleccionan, sin repetición,
para el modelo de reducción de tamaño del MILP. Podemos ver un ejemplo de
este método en la tabla 5.5 donde se muestra una solución obtenida por DIG
en una iteración.
J1 J2 J3 J4 J5 J6 J7 J8 J9 J10
M1 5 9 3 6 4 3 6 5 7 3
M2 8 9 7 6 6 4 5 1 1 4
M3 1 1 4 3 8 3 7 4 8 1
M4 2 8 3 4 2 3 1 7 1 6
M5 3 7 8 5 2 8 4 9 5 3
después de realizar una serie de experimentos donde se han hecho variar estos
parámetros hasta encontrar los valores más adecuados para cada algoritmo.
Tiempo Algoritmos U (1, 100) U (10, 100) Jobcorre Maqcorre U (100, 200) U (100, 120) U (1000, 1100) Media
120 CPLEX 0,17 0,10 0,45 0,09 0,13 0,03 0,02 0,14
DIG 0,75 0,24 0,14 0,42 0,17 0,02 0,00 0,25
3JD 0,31 0,01 -0,09 0,22 0,08 0,00 0,00 0,08
2JDi 0,15 -0,06 -0,11 0,16 0,06 0,00 0,00 0,03
2JDi(90) 0,06 -0,07 -0,10 0,15 0,05 0,00 0,00 0,01
240 CPLEX 0,08 0,05 0,33 0,04 0,06 0,02 0,01 0,09
DIG 0,63 0,17 0,06 0,37 0,14 0,02 0,00 0,20
3JD 0,26 -0,02 -0,13 0,22 0,07 0,00 0,00 0,06
2JDi 0,10 -0,09 -0,16 0,15 0,06 0,00 0,00 0,01
2JDi(90) -0,02 -0,14 -0,15 0,11 0,02 -0,01 -0,01 -0,03
300 CPLEX 0,06 0,02 0,29 0,03 0,04 0,01 0,01 0,07
DIG 0,63 0,14 0,03 0,36 0,13 0,02 0,00 0,19
3JD 0,24 -0,07 -0,17 0,21 0,03 0,00 0,00 0,03
2JDi 0,08 -0,11 -0,19 0,14 0,02 0,00 0,00 -0,01
2JDi(90) -0,03 -0,14 -0,17 0,10 0,00 -0,01 -0,01 -0,04
0,23
0,18
RPD
0,13
0,08
0,03
-0,02
DIG
2JDi
2JDi(90)
CPLEX
3JD
Tiempo Algoritmos U (1, 100) U (10, 100) Jobcorre Maqcorre U (100, 200) U (100, 120) U (1000, 1100) media
120 M-CPLEX 0,23 0,11 0,60 0,04 0,08 0,03 0,01 0,16
M-DIG 0,62 0,18 0,07 0,40 0,14 0,02 0,00 0,20
M-2JDi(90) -0,02 -0,14 -0,14 0,12 0,02 -0,01 -0,01 -0,03
240 M-CPLEX 0,16 0,04 0,47 0,02 0,04 0,01 0,00 0,11
M-DIG 0,57 0,11 -0,01 0,34 0,11 0,01 0,00 0,16
M-2JDi(90) -0,03 -0,16 -0,19 0,07 0,00 -0,01 -0,01 -0,05
300 M-CPLEX 0,08 -0,02 0,35 0,01 0,02 0,01 0,00 0,06
M-DIG 0,56 0,08 -0,04 0,34 0,10 0,01 -0,00 0,15
M-2JDi(90) -0,03 -0,17 -0,20 0,05 -0,01 -0,01 -0,01 -0,05
0,3
0,1
-0,1
15 30 60 120 240 300 seg.
M-DIG
2JDi(90)
RPD
0,34 M-2JDi(90)
0,14
-0,06
15 30 60 120 240 300 seg.
Se ha hecho una comparativa con los mejores métodos que había has-
5.4. Resumen de algoritmos de reducción de tamaño 193
La justificación de este nuevo problema puede venir dada por varios mo-
tivos. Uno es la visión estratégica de la adquisición, venta o parada de una
o de varias máquinas. Sabiendo los trabajos a realizar, se puede modelizar
el problema con un número determinado de máquinas e indicar el límite de
máquinas a emplear. Así por ejemplo, si queremos adquirir 3 máquinas nuevas
y en el mercado existen 5 modelos distintos, no tenemos más que modelizar
195
196 CAPÍTULO 6. MÁQUINAS OPCIONALES/SELECCIÓN TRABAJOS
Existen estudios que tratan temas similares, como los problemas de JIT
(Just in Time) que tienen cierto parecido a los problemas de no realizar todos
los trabajos o selección de trabajos. No obstante, existen diferencias funda-
mentales con estos problemas, ya que en los problemas JIT viene limitado
el número de trabajos por cumplir una fecha límite, mientras que en nuestro
caso, la limitación de trabajos puede estar forzada a un número determinado
de trabajos fijos a realizar o a dejar de realizar. Igualmente, se podría examinar
como problema ligeramente similar al de no usar todas las máquinas o máqui-
nas opcionales aquellos de máquinas que se detienen para mantenimiento y/o
por rotura, pero en nuestro caso, podemos estar marcando un número fijo de
máquinas que se van a dejar de usar. Por último, han aparecido recientemente
artículos como los de Chen y Li (2008), Finke et al. (2009) o Kravchenko y
Werner (2009), pero en ellos se trata de máquinas idénticas o tiempos idénticos
y se buscan diferentes objetivos o se tienen distintas restricciones. Por todo
6.1. Modelos matemáticos, restricciones y limitaciones 197
ello, nos encontramos que nuestro caso apenas ha sido tratado en la literatura.
∑
m
xij = 1 ∀j ∈ N (6.2)
i=1
∑
n
pij · xij ≤ Cmáx ∀i ∈ M (6.3)
j=1
∑
n
xij ≤ n · zi ∀i ∈ M (6.4)
j=1
∑
m
xij = hj ∀j ∈ N (6.5)
i=1
∑
m
mı́n zi (6.6)
i=1
∑
n
mı́n n − hj (6.7)
j=1
∑
n
a≤ hj ≤ b (6.8)
j=1
∑
m
c≤ zi ≤ d (6.9)
i=1
Cmáx ≤ t; (6.10)
∗ ∗
t = Cmáx ± % Cmáx ; (6.11)
Por tanto, para cualquier objetivo simple, debemos limitar uno o más
factores; para los objetivos dobles, debemos limitar el otro factor salvo en
el caso de ser los dos objetivos maximizar número de trabajos hechos y
6.2. No todas las máquinas (NAM) 203
minimizar Cmáx , ya que entonces no haría falta indicar nada sobre el número
de máquinas a emplear. Finalmente, en el objetivo triple no hace falta añadir
ninguna restricción para su correcta resolución.
Los dos últimos pasos se repiten de forma iterativa hasta que se alcanza
un criterio de parada, ya que, la selección de máquinas a no emplear, sin la
resolución del problema con la totalidad de las máquinas, será de carácter
aproximado. Una vez resuelto el problema, hemos de tener en cuenta que las
máquinas seleccionadas pueden resultar no ser las óptimas para este problema.
Por tanto, habrá que seguir un cierto criterio para no sólo hacer una primera
selección de máquinas, si no para hacer sucesivas selecciones de máquinas
con la correspondiente resolución del problema. Por ejemplo, si tenemos un
problema con 100 trabajos y 10 máquinas en las que sólo se deben emplear 8
de ellas, puede que nuestra mejor opción sea no emplear las máquinas 1 y 2.
Después resolvemos el problema de máquinas paralelas no relacionadas para
los 100 trabajos y las restantes 8 máquinas, pero dentro del tiempo límite dado
al algoritmo, si éste no ha expirado, podemos seleccionar la segunda mejor
opción de máquinas a no emplear, que puede ser el no emplear las máquinas 1 y
3, por ejemplo. Con esta nueva selección de máquinas resolveríamos de nuevo
el problema. Es por ello que hemos descompuesto el problema en las fases
antes mencionadas. La primera consistente en aplicar un criterio para ordenar
las máquinas de forma que durante la segunda fase se puedan seleccionar
aquellas que a priori parezcan las más apropiadas. Al acabar se hace una
nueva selección para re-lanzar el problema, y así sucesivamente hasta agotar
el tiempo disponible para resolver cada instancia.
6.2. No todas las máquinas (NAM) 205
las máquinas:
J1 J2 J3 J4 J5 J6 J7 J8 J9 J10 Ci
M1 4 5 5 5 5 4 5 5 4 5 47
M2 1 3 4 5 1 1 5 2 3 1 26
M3 3 3 1 1 2 2 4 4 5 4 29
M4 1 3 1 4 3 3 2 3 1 2 23
M5 1 4 1 3 2 2 4 2 1 2 24
J1 J2 J3 J4 J5 J6 J7 J8 J9 J10
M1 5 5 4
M2 1 3 4 1 1 2 3 1
M3 3 3 1 1 2 2 4 4 4
M4 1 3 1 4 3 3 2 3 1 2
M5 1 4 1 3 2 2 4 2 1 2
J1 J2 J3 J4 J5 J6 J7 J8 J9 J10 Ci′ Co
M1 0 47
M2 -2 -1 -2 -2 -2 -1 -3 -13 -13
M3 -1 -3 -4 -1 -1 -1 -11 -11
M4 -2 -1 -3 -1 -3 -1 -3 -2 -16 -16
M5 -2 -3 -2 -1 -1 -1 -2 -3 -2 -17 -17
En la tabla 6.3 el valor Ci′ representa la suma de los valores así obtenidos
para cada máquina. Co es igual a Ci′ en el caso de que Ci′ sea distinto de cero;
en caso de ser Ci′ igual a cero, Co para esa máquina es igual a la suma de todos
los valores pij de la tabla 6.1 correspondientes a esa máquina. Esto último se
hace para poder ordenar las máquinas cuyo valor en la tabla de diferencias
sea cero. Así, finalmente, alcanzamos un ranking de ordenación de máquinas
según la prioridad para ser desechadas, en nuestro ejemplo dicho ranking sería:
{M 1, M 3, M 2, M 4, M 5}. Si se produce algún empate se ordena según el Ci
de los implicados y en caso de persistir la igualdad, se haría aleatoriamente
entre los mismos.
procedure Ranking_máquinas_NAM
Mori := Matriz original de tiempos de proceso pij ;
d := num. de valores min. de pij de cada trabajo a seleccionar
endfor i
procedure Método_selección_Máquinas_NAM
Pori := Problema original;
H := Lista ordenada del proceso Lista_Ordenada_máquinas_NAM;
r := Porcentaje de máquinas de no usadas;
Z := m · r; % número de máquinas no usadas;
for i := m − Z + 1 to m do
Pred := Marcar Hi como máquina no seleccionable;
endfor i
′
Pred := Pred ;
π = Resolución Pred ; % por diferentes métodos;
πb = π; % πb = mejor solución;
ciación se usa algún algoritmo que nos de una buena respuesta. En principio
podría ser DIG, estado del arte, como heurística sencilla y de fácil implemen-
tación. Ahora bien, este problema requiere de algún algoritmo que resuelva
rápido, ya que hay que probar distintas combinaciones de máquinas, y esto,
no lo dan fácilmente las heurísticas. Para solucionar esta cuestión, se recurrió,
durante una parte del tiempo total dado para resolución de cada instancia, a
una heurística muy simple y rápida para seleccionar qué combinaciones son las
mejores. Esta heurística no es otra que la inserción con estrategia “best” hasta
óptimo local seguida del intercambio con la estrategia “first” igualmente hasta
óptimo local; es decir la heurística ST, ya vista en la sección 3.1 para la base
de los primeros algoritmos propuestos. Esta heurística ST resuelve de forma
rápida las distintas combinaciones de máquinas que le proporciona el ranking y
la selección, obteniéndose por tanto la mejor solución que este algoritmo puede
hallar, lo que nos proporciona una lista de las mejores máquinas a emplear.
Finalmente, una vez agotado el tiempo de la parte dada a la heurística ST, se
deja el resto del tiempo a DIG para que refine la solución de la mejor opción
de máquinas a emplear. Es decir, el ranking y la selección ordena las máquinas
en función de su posibilidad de ser retiradas, después el problema reducido usa
ST como solver y durante la última parte del tiempo total se aplica DIG para
refinar la mejor solución hallada en la fase anterior por ST. Este algoritmo se
denomina NAM+ST+DIG. Nótese que no requiere de ningún solver comercial
para su aplicación.
NAM+ST+DIG Tiempo ST 10 60
Tiempo DIG 50 240
2,9
RPD
1,9
0,9
-0,1
CPLEX
NAM+CPLEX
NAM+ST+CPLEX
NAM+ST+DIG
7
RPD
-1
CPLEX
NAM+CPLEX
NAM+ST+CPLEX
NAM+ST+DIG
Para el caso de 20 % de máquinas sin usar y 300 segundos (figura 6.5) , te-
nemos que el último algoritmo probado, NAM+ST+CPLEX da pobres valores
respecto al resto. Esto es debido a que el funcionamiento de CPLEX ya es lo
bastante eficaz para este problema, ya que al ser retiradas un pequeña porción
de máquinas, el problema se asemeja bastante al de máquinas paralelas no
relacionadas, donde CPLEX ya daba buenos resultados. El resto de algoritmos
apenas si muestran diferencias significativas entre si.
224 CAPÍTULO 6. MÁQUINAS OPCIONALES/SELECCIÓN TRABAJOS
1,5
1,2
RPD
0,9
0,6
0,3
0
CPLEX
NAM+CPLEX
NAM+ST+CPLEX
NAM+ST+DIG
1,6
1,2
RPD
0,8
0,4
0 NAM+CPLEX
CPLEX
NAM+ST+CPLEX
NAM+ST+DIG
7
RPD
-1
NAM+CPLEX
CPLEX
NAM+ST+CPLEX
NAM+ST+DIG
15
11
RPD
-1
CPLEX
NAM+CPLEX
NAM+ST+CPLEX
NAM+ST+DIG
Interaction Plot
10
porcentaje
8 20
50
6 80
RPD
0
NAM+CPLEX
CPLEX
NAM+ST+CPLEX
NAM+ST+DIG
Interaction Plot
18
porcentaje
15
20
12 50
80
RPD
0
NAM+CPLEX
CPLEX
NAM+ST+CPLEX
NAM+ST+DIG
Como resumen del estudio de no todas las máquinas, podemos decir que a
mayor porcentaje de máquinas sin usar, CPLEX encuentra más dificultades en
conseguir buenos resultados. Pasa de valores parejos al resto de algoritmos,
en el caso de pocas máquinas sin usar, a resultados muy alejados de los
mismos cuando se dejan de usar un número elevado de máquinas. También
se nota la influencia del tiempo en la consecución de resultados por parte
de CPLEX. Esto no es de extrañar, dado que al usar un algoritmo exacto,
con un tiempo indefinidamente elevado, debería alcanzar la respuesta óptima.
En cuanto a los algoritmos propuestos, vemos como NAM+ST+CPLEX no
da mejores resultados que NAM+CPLEX, siendo este último algoritmo más
sencillo. Así mismo, los resultados obtenidos NAM+ST+DIG son similares
a los obtenidos por NAM+CPLEX, siendo ambos algoritmos los de mejores
resultados globales para los intervalos estudiados, por lo que tenemos dos
buenos algoritmos para la resolución de este problema, uno empleando un
solver comercial y otro que no emplea más que heurísticas simples.
que trabajos eliminar dada la inherente relación entre los trabajos. No obstante,
cuando vemos la media de error que se produce al estudiar las instancias de
este intervalo, esta se queda por debajo del 2 %. En el resto de intervalos
estos valores caen muy debajo de los obtenidos para trabajos correlacionados.
Así podemos observar como la media de error obtenida por CPLEX para las
1.400 instancias, respecto a la cota inferior, es de solo un 0,46 % e incluso
haciendo la media entre solo las instancias que no han alcanzado el óptimo,
este error medio no llega a alcanzar el 1 %. Todo ello respecto a la cota
inferior, lo cual indica que, como máximo, ese es el error que encontraremos,
aunque evidentemente, podría ser menor si se hubiera obtenido el óptimo para
todas las instancias. Así que no parece muy rentable el adentrarse en buscar
algoritmos no exactos que sean capaces de igualar o superar los valores tan
buenos proporcionados, mediante algoritmo exacto, por parte de este solver.
pij , de forma que los trabajos figurasen como máquinas y las máquinas como
trabajos y aplicarles el algoritmo NAM adaptado a esta nueva situación, que
así paso a denominarse NAJ, para después aplicarle, como en el caso anterior,
la heurística ST y finalizar afinando con la heurística DIG, quedando por tanto
el algoritmo como NAJ+ST+DIG. Los resultados no fueron competitivos con
los obtenidos por la utilización de CPLEX, expresados en la tabla 6.12. Se
muestra como ejemplo los tres ANOVA de los intervalos con peores resul-
tados dados por CPLEX, U(10,100), trabajos correlacionados y U(100,200),
donde se aprecia claramente que CPLEX es estadísticamente mejor que el
algoritmo propuesto adaptado a este problema, salvo para el caso de trabajos
correlacionados, donde a pesar de no ser estadísticamente diferente, CPLEX
presenta mejor media aun en este caso. Estos resultados son los esperados, tal
como anticipábamos, dado el escaso gap existente en las soluciones dadas por
CPLEX.
2,8
RPD
1,8
0,8
-0,2
CPLEX NAJ+ST+DIG
2,5
RPD
2,3
2,1
1,9
1,7
CPLEX NAJ+ST+DIG
0,4
RPD
0,3
0,2
0,1
0
CPLEX NAJ+ST+DIG
235
CAPÍTULO 7. CONCLUSIONES Y LÍNEAS FUTURAS DE
236 INVESTIGACIÓN
Blazewicz, J., Ecker, K., Pesch, E., Schmidt, G., y Weglarz, J. (1996). Schedu-
ling Computer and Manufacturing Processes. Springer-Verlag, Berlin.
241
242 REFERENCIAS
Croce, F., Ghirardi, M., y Tadei, R. (2004). Recovering beam search: Enhan-
cing the beam search approach for combinatorial optimization problems.
Journal of Heuristics, 10(1):89–104.
Dell’Amico, M., Iori, M., Martello, S., y Monaci, M. (2008). Heuristic and
exact algorithms for the identical parallel machine scheduling problem.
INFORMS Journal on Computing, 20(3):333–344.
Finke, G., Lemaire, P., Proth, J. M., y Queyranne, M. (2009). Minimizing the
number of machines for minimum length schedules. European Journal of
Operational Research, 199(3):702–705.
Gantt, H. (1910). Work, Wages and Profit. Their influence on the cost of living.
The Engineering Magazine Co, New York.
Gantt, H. (1919). Organizing for Work. Harcourt, Brace and Howe, New York.
Gonzalez, T., Ibarra, O. H., y Sahni, S. (1977). Bounds for lpt schedules on
uniform processors. SIAM Journal on Computing, 6(1):155–166.
Herrmann, J., Proth, J. M., y Sauer, N. (1997). Heuristics for unrelated machine
scheduling with precedence constraints. European Journal of Operational
Research, 102(3):528–537.
Lancia, G. (2000). Scheduling jobs with release dates and tails on two
unrelated parallel machines to minimize the makespan. European Journal
of Operational Research, 120(2):277–288.
Martello, S., Soumis, F., y Toth, P. (1997). Exact and approximation algo-
rithms for makespan minimization on unrelated parallel machines. Discrete
Applied Mathematics, 75(2):169–188.
Piersma, N. y van Dijk, W. (1996). A local search heuristic for unrelated para-
llel machine scheduling with efficient neighborhood search. Mathematical
and Computer Modelling, 24(9):11–19.
Tsang, E. y Voudouris, C. (1997). Fast local search and guided local search
and their application to british telecom’s workforce scheduling problem.
Operations Research Letters, 20(3):119–127.
250 REFERENCIAS
Vallada, E. y Ruiz, R. (2010). Genetic algorithms for the unrelated parallel ma-
chine scheduling problem with sequence dependent setup times. European
Journal of Operational Research. In review.
Yu, L., Shih, H. M., Pfund, M., Carlyle, W. M., y Fowler, J. W. (2002). Schedu-
ling of unrelated parallel machines: an application to PWB manufacturing.
IIE Transactions, 34(11):921–931.
ANEXO
A
TABLAS DE LOS ALGORITMOS INICIALES
Cmáx − LB
Gap( %) = · 100 (A.1)
Cmáx
251
252 ANEXO A. TABLAS ALGORITMOS INICIALES
301
302 ANEXO B. GRÁFICOS Y TABLAS DE INTERACCIÓN
Interaction Plot
3,9 Trabajos
100
200
2,9
500
1000
RPD
1,9
0,9
-0,1
IGD
Vir
CPLEX
RBS
IGS
Partial
NSP
Interaction Plot
8 Máquinas
10
20
6
30
40
RPD
4 50
0
IGD
Vir
CPLEX
IGS
Partial
RBS
NSP
Algoritmo Trab. Núm. Media Error Stnd. Lim. Inf. Lim. Sup.
Núm.= número de instancias evaluadas (×5 replicas para nuestros algoritmos), Lim.
Inf. y Sup. del intervalo del 95 %.
Algoritmo Máq. Núm. Media Error Stnd. Lim. Inf. Lim. Sup.
Interaction Plot
5 Trabajos
100
4 200
500
3 1000
RPD
0
CPLEX
IGD
Vir
IGS
Partial
RBS
NSP
Interaction Plot
4 Máquinas
10
20
3
30
40
RPD
2 50
0
CPLEX
IGD
Vir
Partial
RBS
IGS
NSP
Algoritmo Trab. Núm. Media Error Stnd. Lim. Inf. Lim. Sup.
Núm.= número de instancias evaluadas (×5 replicas para nuestros algoritmos), Lim.
Inf. y Sup. del intervalo del 95 %.
Algoritmo Máq. Núm. Media Error Stnd. Lim. Inf. Lim. Sup.
Interaction Plot
1,2 Trabajos
100
1 200
0,8 500
1000
RPD
0,6
0,4
0,2
0
CPLEX
IGD
Vir
IGS
Partial
RBS
NSP
Interaction Plot
2 Máquinas
10
1,6 20
30
1,2 40
RPD
50
0,8
0,4
0
IGD
Vir
CPLEX
RBS
IGS
Partial
NSP
Algoritmo Trab. Núm. Media Error Stnd. Lim. Inf. Lim. Sup.
Núm.= número de instancias evaluadas (×5 replicas para nuestros algoritmos), Lim.
Inf. y Sup. del intervalo del 95 %.
Algoritmo Máq. Núm. Media Error Stnd. Lim. Inf. Lim. Sup.
Interaction Plot
0,5 Trabajos
100
0,4 200
500
0,3 1000
RPD
0,2
0,1
Vir
IGD
CPLEX
RBS
IGS
NSP
Partial
Interaction Plot
0,5 Máquinas
10
0,4 20
30
0,3 40
RPD
50
0,2
0,1
0
CPLEX
Vir
IGD
RBS
IGS
Partial
NSP
Algoritmo Trab. Núm. Media Error Stnd. Lim. Inf. Lim. Sup.
Núm.= número de instancias evaluadas (×5 replicas para nuestros algoritmos), Lim.
Inf. y Sup. del intervalo del 95 %.
Algoritmo Máq. Núm. Media Error Stnd. Lim. Inf. Lim. Sup.
Interaction Plot
0,5 Trabajos
100
0,4 200
500
0,3 1000
RPD
0,2
0,1
0
CPLEX
Vir
IGD
RBS
IGS
NSP
Partial
Interaction Plot
0,59 Máquinas
10
0,49 20
0,39 30
40
RPD
0,29 50
0,19
0,09
-0,01
Vir
IGD
RBS
IGS
NSP
Partial
CPLEX
Algoritmo Trab. Núm. Media Error Stnd. Lim. Inf. Lim. Sup.
Núm.= número de instancias evaluadas (×5 replicas para nuestros algoritmos), Lim.
Inf. y Sup. del intervalo del 95 %.
Algoritmo Máq. Núm. Media Error Stnd. Lim. Inf. Lim. Sup.
Interaction Plot
4,9 Trabajos
100
3,9 200
500
2,9 1000
RPD
1,9
0,9
-0,1
Vir
IGD
CPLEX
RBS
IGS
NSP
Partial
Interaction Plot
10 Máquinas
10
8 20
30
6 40
RPD
50
4
0
Vir
IGD
Partial
RBS
IGS
NSP
CPLEX
Algoritmo Trab. Núm. Media Error Stnd. Lim. Inf. Lim. Sup.
Núm.= número de instancias evaluadas (×5 replicas para nuestros algoritmos), Lim.
Inf. y Sup. del intervalo del 95 %.
Algoritmo Máq. Núm. Media Error Stnd. Lim. Inf. Lim. Sup.
Interaction Plot
4 Trabajos
100
200
3
500
1000
RPD
0
Vir
IGD
RBS
IGS
CPLEX
NSP
Partial
Interaction Plot
4 Máquinas
10
20
3
30
40
RPD
2 50
0
Vir
IGD
RBS
IGS
CPLEX
NSP
Partial
Algoritmo Trab. Núm. Media Error Stnd. Lim. Inf. Lim. Sup.
Núm.= número de instancias evaluadas (×5 replicas para nuestros algoritmos), Lim.
Inf. y Sup. del intervalo del 95 %.
Algoritmo Máq. Núm. Media Error Stnd. Lim. Inf. Lim. Sup.
323
324 ANEXO C. CALIBRACIÓN DE LOS ALGORITMOS
Con los resultados de esta tabla, se determinó que una buena elección seria
la destrucción de un total de 20 trabajos.
trabajos 1+1 2+2 3+3 5+5 10+10 20+20 2+5 5+2 0+2 2+0
100 1,44 1,17 1,18 0,82 1,32 1,54 1,24 0,92 1,89 9,15
200 2,84 2,68 3,21 3,91 4,29 5,18 4,05 3,48 3,57 9,46
500 3,84 4,25 4,40 4,83 5,13 5,42 4,53 4,34 4,32 4,03
1000 3,24 3,44 3,39 3,71 3,70 3,95 3,54 3,47 3,41 3,14
media 2,84 2,89 3,05 3,32 3,61 4,02 3,34 3,05 3,30 6,45
trabajos 1+1 0+2 2+2 3+3 5+5 7+7 0+10 5+10 10+5 10+10
100 3,14 2,61 2,35 1,68 1,38 1,27 1,47 1,22 1,59 1,35
200 3,31 4,96 3,18 2,86 2,54 2,70 3,23 2,78 2,87 2,77
500 2,93 3,67 2,73 2,71 2,71 2,74 3,12 2,86 2,70 2,82
1000 2,80 3,01 2,60 2,63 2,53 2,51 2,72 2,62 2,54 2,59
media 3,05 3,56 2,72 2,47 2,29 2,30 2,64 2,37 2,42 2,38
trabajos 5+20 20+5 0+25 10+20 30+30 5+50 50+5 0+55 all+5 all+20
100 1,21 1,74 1,19 1,15 1,26 1,47 1,15 1,68 1,48 1,34
200 3,08 2,98 3,47 3,07 3,51 4,31 3,07 4,32 2,99 3,16
500 3,06 2,72 3,37 3,00 3,38 4,00 3,00 3,99 2,89 3,20
1000 2,78 2,54 2,81 2,79 2,89 3,05 2,79 3,15 2,56 2,78
media 2,53 2,50 2,71 2,50 2,76 3,21 2,50 3,28 2,48 2,62
329
330 ANEXO D. TABLAS Y ANOVAS REDUCCIÓN DE TAMAÑO
1,2
0,9
RPD
0,6
0,3
0
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
1,1
0,8
RPD
0,5
0,2
-0,1
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
0,7
RPD
0,4
0,1
-0,2
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
0,9
0,6
RPD
0,3
-0,3
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
0,3
0,1
-0,1
-0,3
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
0,3
0,1
-0,1
-0,3
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
0,75
0,55
RPD
0,35
0,15
-0,05
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
0,46
RPD
0,26
0,06
-0,14
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
0,42
RPD
0,22
0,02
-0,18
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
0,35
RPD
0,15
-0,05
-0,25
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
0,32
RPD
0,12
-0,08
-0,28
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
0,02
-0,08
-0,18
-0,28
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
0,8
0,5
0,2
-0,1
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
1
RPD
0,6
0,2
-0,2
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
0,9
RPD
0,5
0,1
-0,3
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
0,8
RPD
0,4
-0,4
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
0,8
0,5
RPD
0,2
-0,1
-0,4
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
0,7
RPD
0,3
-0,1
-0,5
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
0,3
0,2
0,1
0
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3JD
M-DIG
DIG
0,3
0,2
0,1
0
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3JD
M-DIG
DIG
0,3
0,2
0,1
0
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3JD
M-DIG
DIG
0,3
0,2
0,1
0 2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3JD
M-DIG
DIG
0,37
0,27
RPD
0,17
0,07
-0,03
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3JD
M-DIG
DIG
0,36
0,26
RPD
0,16
0,06
-0,04
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3JD
M-DIG
DIG
0,6
RPD
0,4
0,2
0
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
0,4
0,3
RPD
0,2
0,1
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
0,3
RPD
0,2
0,1
0
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
0,26
RPD
0,16
0,06
-0,04
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
0,24
RPD
0,14
0,04
-0,06
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
0,09
0,04
-0,01
-0,06
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
0,05
0,03
0,01
-0,01
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
68
48
RPD
28
-12
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
46
RPD
26
-14
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
41
RPD
21
-19
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
38
RPD
18
-2
-22
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
9
-1
-11
-21
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
55
RPD
35
15
-5
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
23
13
3
-7
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
32
22
RPD
12
-8
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
17
RPD
-3
-13
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
16
RPD
-4
-14
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
16
RPD
-4
-14
2JDi(90)
M-2JDi(90)
2JDi
CPLEX
M-CPLEX
3J2M
3JD
3J
M-DIG
DIG
395
396 ANEXO E. TABLAS Y ANOVAS DE NAM
2,9
1,9
0,9
-0,1
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
11
RPD
-1
CPLEX
NAM+CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
2,9
RPD
1,9
0,9
-0,1
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
11
8
RPD
-1
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
2,2
1,2
0,2
-0,8 NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
Figura E.5 – ANOVA para el intervalo Trabajos Correla-
cionados con 50 % máquinas quitadas y 300 segundos.
10
RPD
-2
CPLEX
NAM+CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
0,7
0,4
0,1
-0,2
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
3,5
2,5
RPD
1,5
0,5
-0,5
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
3,5
2,5
RPD
1,5
0,5
-0,5
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
Figura E.9 – ANOVA para el intervalo U(100,200) con
50 % máquinas quitadas y 300 segundos.
11
RPD
-1
CPLEX
NAM+CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
5,1
RPD
3,1
1,1
-0,9
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
7
4
1
-2
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
0,17
0,12
RPD
0,07
0,02
-0,03
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
Figura E.13 – ANOVA para el intervalo U(1000,1100) con
50 % máquinas quitadas y 300 segundos.
1,1
0,6
0,1
-0,4
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
3
2
1
0
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
Figura E.15 – ANOVA para el intervalo U(1,100) con
20 % máquinas quitadas y 300 segundos.
3
2
1
0
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
1,5
1
0,5
0
CPLEX
NAM+CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
3
RPD
0
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
1,1
0,8
RPD
0,5
0,2
-0,1
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
Figura E.19 – ANOVA para el intervalo Trabajos Correla-
cionados con 20 % máquinas quitadas y 300 segundos.
1,2
0,7
0,2
-0,3
CPLEX
NAM+CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
1,5
1,1
RPD
0,7
0,3
-0,1
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
1,6
1,2
RPD
0,8
0,4
0
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
0,6
RPD
0,4
0,2
0
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
Figura E.23 – ANOVA para el intervalo U(100,200) con
20 % máquinas quitadas y 300 segundos.
0,5
0,3
0,1
-0,1
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
0,09
0,06
0,03
0
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
0,9
0,4
-0,1
-0,6
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
0,08
0,06
RPD
0,04
0,02
0
CPLEX
NAM+CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
Figura E.27 – ANOVA para el intervalo U(1000,1100) con
20 % máquinas quitadas y 300 segundos.
0,11
0,08
RPD
0,05
0,02
-0,01
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
11
8
RPD
-1
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
Figura E.29 – ANOVA para el intervalo U(1,100) con
80 % máquinas quitadas y 300 segundos.
20
15
RPD
10
0
CPLEX
NAM+CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
7,8
5,8
RPD
3,8
1,8
-0,2
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
11
RPD
-1
CPLEX
NAM+CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
2,7
RPD
1,7
0,7
-0,3
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
Figura E.33 – ANOVA para el intervalo Trabajos Correla-
cionados con 80 % máquinas quitadas y 300 segundos.
5,7
RPD
3,7
1,7
-0,3
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
35
25
RPD
15
-5
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
53
RPD
33
13
-7
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
3,6
2,6
RPD
1,6
0,6
-0,4
CPLEX
NAM+CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
Figura E.37 – ANOVA para el intervalo U(100,200) con
80 % máquinas quitadas y 300 segundos.
7,3
5,3
RPD
3,3
1,3
-0,7
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
2,5
1,5
0,5
-0,5
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
7,4
5,4
RPD
3,4
1,4
-0,6
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
2,7
RPD
1,7
0,7
-0,3
CPLEX
NAM+CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
Figura E.41 – ANOVA para el intervalo U(1000,1100) con
80 % máquinas quitadas y 300 segundos.
5
RPD
-1
NAM+CPLEX
CPLEX
NAM+ST+DIG
NAM+ST+CPLEX
463
464 ANEXO F. ARTÍCULOS ACEPTADOS Y ENVIADOS
En primer lugar esta “Iterated greedy local search methods for unrelated
parallel machine scheduling”, ya publicado en la revista EJOR (European
Journal of Operational Research) (Fanjul-Peyro y Ruiz (2010a)).