Un algoritmo branch and cut para el problema de asignación de

Anuncio
Universidad de Buenos Aires
Facultad de Ciencias Exactas y Naturales
Departamento de Computación
Un algoritmo branch and cut para el problema de
asignación de frecuencias en sistemas de radio punto
a multipunto
Tesis de
Licenciatura en Ciencias de la Computación
Alumno:
Director:
Soledad Ramusio Mora
LU: 207/03
[email protected]
Dr. Javier Marenco
Buenos Aires, 2010
Resumen
Los sistemas de radio punto a multipunto son conjuntos de antenas de radio que proveen acceso
inalámbrico a redes de comunicación de voz y datos. Este tipo de sistemas debe ser operado utilizando
un cierto espectro de frecuencias de radio, lo cual normalmente produce problemas de capacidad. Por lo
tanto es necesario reutilizar frecuencias, pero este reuso no debe generar interferencia entre las señales.
El problema de determinar las frecuencias para los enlaces se conoce como el problema de asignación de
frecuencias en sistemas de radio punto a multipunto. Este problema es NP-hard, y no existen algoritmos
aproximados polinomiales con una garantı́a de calidad fija para el mismo. Como los métodos de planos
de corte han demostrado ser efectivos para muchos otros problemas de optimización combinatoria, el
objetivo de esta tesis es aplicar este tipo de algoritmos al problema de asignación de frecuencias en
sistemas punto a multipunto.
En esta tesis se describe la implementación de un algoritmo Branch & Cut para este problema,
realizada con el entorno Abacus. Esta implementación toma como base un modelo de programación
lineal entera existente para el problema, y se utilizan en el algoritmo todas las familias de desigualdades
conocidas para esta formulación. Sobre la base de esta implementación, se realizan experimentos computacionales para evaluar empı́ricamente la calidad de las desigualdades válidas con el fin de definir las
familias más efectivas, y se presentan estos resultados y los obtenidos variando los diferentes parámetros
de la implementación. Estos experimentos se realizaron sobre instancias que intentan representar escenarios reales. Los resultados obtenidos con el algoritmo son muy prometedores y permiten resolver en
forma óptima instancias que no podı́an ser resueltas con las herramientas computacionales existentes.
Como parte de la implementación, se proponen dos heurı́sticas primales de redondeo, una de las cuales
está basada en la resolución de un modelo sencillo de programación lineal.
i
Abstract
Point-to-Multipoint systems are a type of radio systems supplying wireless access to voice and data
communication networks. Such systems are intended to be run using a certain frequency spectrum,
which typically causes capacity problems. Hence, the reutilization of frequencies is needed and, simultaneously, interference between signals must be avoided. This leads to a combinatorial optimization
problem called the bandwidth allocation problem in point-to-multipoint systems. Such a problem is NPhard and, moreover, there is no polynomial time algorithm with a fixed approximation ratio for this
problem. As cutting plane algorithms have shown to be successful for many other combinatorial optimization problems, the main objective of this work is to apply this kind of algorithms to the bandwidth
allocation problem in point-to-multipoint systems.
This thesis describes the implementation of a Branch & Cut algorithm for the problem, achieved
through the Abacus environment. The implementation is based on an integer linear programming model, in which all known valid inequalities are included. Computational experiments are carried out to
empirically evaluate the valid inequalities quality in order to determine the most effective ones. We
also present computational results in order to assess the impact of the implementation parameters. The
experiments have been performed over instances that attempt to represent real-life scenarios. The collected results provided by the algorithm are promising as it solves many instances to optimality, which
wouldn’t otherwise be solvable by the existing computational tools. The primal heuristic which uses a
simplified linear programming model shows an interesting behavior when applied to certain kinds of
instances.
iii
Índice general
1. Introducción
1
1.1. Optimización combinatoria y programación lineal entera . . . . . . . . . . . . . . . . . .
1
1.2. Los algoritmos Branch & Cut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.3. Asignación de frecuencias en redes punto a multipunto . . . . . . . . . . . . . . . . . . .
4
1.4. Resumen de la tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2. El problema
7
2.1. Modelo de programación lineal entera . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.2. Desigualdades válidas conocidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3. Experimentos a priori con las desigualdades válidas
3.1. Instancias de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
17
3.1.1. Grupo A
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
3.1.2. Grupo B
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
3.1.3. Grupo C
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
3.1.4. Grupo D
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
3.1.5. Grupo E
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
3.1.6. Grupo F
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
3.2. Algoritmos de generación de todas las desigualdades de cada familia . . . . . . . . . . .
29
3.3. Impacto sobre la relajación lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
3.4. Impacto sobre el Branch & Bound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
4. El algoritmo Branch & Cut
39
4.1. Procedimientos de separación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
4.1.1. Objetivo común: búsqueda de clique con peso máxima . . . . . . . . . . . . . . .
39
4.1.2. Procedimiento de separación de Clique . . . . . . . . . . . . . . . . . . . . . . . .
40
4.1.3. Procedimiento de separación de Clique Doble . . . . . . . . . . . . . . . . . . . .
40
4.1.4. Procedimiento de separación de Clique Reforzada . . . . . . . . . . . . . . . . . .
42
4.1.5. Procedimiento de separación de Doble Clique Reforzada . . . . . . . . . . . . . .
42
4.1.6. Procedimiento de separación de Clique Replicada . . . . . . . . . . . . . . . . . .
42
4.1.7. Procedimiento de separación de Clique Doble Extendida . . . . . . . . . . . . . .
42
v
4.1.8. Procedimiento de separación de Clique Doble 2-Extendida . . . . . . . . . . . . .
43
4.1.9. Procedimiento de separación de Clique Doble Cerrada . . . . . . . . . . . . . . .
44
4.1.10. Procedimiento de separación de 4 Ciclo + Clique . . . . . . . . . . . . . . . . . .
44
4.1.11. Procedimiento de separación de Orden de Ciclo . . . . . . . . . . . . . . . . . . .
44
4.1.12. Procedimiento de separación de Ciclo Impar . . . . . . . . . . . . . . . . . . . . .
45
4.2. Heurı́sticas primales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
4.2.1. Heurı́stica primal de redondeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
4.2.2. Heurı́stica primal aplicando un modelo de programación lineal . . . . . . . . . .
47
5. Resultados computacionales
49
5.1. Experimentos y ajustes de parámetros relacionados al problema de clique de peso máxima 49
5.2. Contribución de cada familia de desigualdades básicas . . . . . . . . . . . . . . . . . . .
51
5.2.1. Tiempos de ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
5.2.2. Cotas duales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
56
5.2.3. Cantidad de nodos en el árbol de enumeración . . . . . . . . . . . . . . . . . . .
58
5.2.4. Cantidad de separaciones efectivas . . . . . . . . . . . . . . . . . . . . . . . . . .
60
5.2.5. Determinación de familias convenientes para incluir en el algoritmo . . . . . . . .
60
5.3. Experimentos con las heurı́sticas primales y CPLEX . . . . . . . . . . . . . . . . . . . .
60
5.4. Experimentos con los parámetros del Branch & Cut . . . . . . . . . . . . . . . . . . . .
64
6. Conclusiones y trabajo a futuro
67
6.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
6.2. Trabajo a futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
A. Descripción de la implementación
69
A.1. El entorno Abacus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
A.1.1. Diseño general de Abacus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
A.2. Descripción general de la implementación . . . . . . . . . . . . . . . . . . . . . . . . . .
70
A.2.1. Modelado del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
70
A.2.2. Extensiones efectuadas al entorno Abacus . . . . . . . . . . . . . . . . . . . . . .
71
B. Detalles acerca de las relajaciones lineales utilizando cada familia de desigualdades 79
Bibliografı́a
87
Índice de algoritmos
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Generador de instancias del grupo A . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Generador de instancias del grupo B . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Generador de instancias del grupo C . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Generador de instancias del grupo D . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Generador de instancias del grupo E . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Generador de instancias del grupo F . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Generación de desigualdades de Clique . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Generación de desigualdades de Clique Doble . . . . . . . . . . . . . . . . . . . . . . . .
Generación de desigualdades de Clique Reforzada . . . . . . . . . . . . . . . . . . . . . .
Generación de desigualdades de Doble Clique Reforzada . . . . . . . . . . . . . . . . . .
Generación de desigualdades de Clique Replicada . . . . . . . . . . . . . . . . . . . . . .
Generación de desigualdades de Clique Doble Extendida . . . . . . . . . . . . . . . . . .
Generación de desigualdades de Clique Doble 2-Extendida . . . . . . . . . . . . . . . . .
Generación de desigualdades de Clique Doble Cerrada . . . . . . . . . . . . . . . . . . .
Generación de desigualdades de 4 Ciclo + Clique . . . . . . . . . . . . . . . . . . . . . .
Heurı́stica Best In . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Heurı́stica de búsqueda local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Procedimiento de separación de la familia Clique . . . . . . . . . . . . . . . . . . . . . .
Procedimiento de separación de la familia Clique Doble . . . . . . . . . . . . . . . . . .
Procedimiento de separación de la familia Clique Reforzada . . . . . . . . . . . . . . . .
Procedimiento de separación de la familia Doble Clique Reforzada . . . . . . . . . . . .
Procedimiento de separación de la familia Clique Replicada . . . . . . . . . . . . . . . .
Procedimiento de separación de la familia Clique Doble Extendida . . . . . . . . . . . .
Procedimiento de separación de la familia Clique Doble 2-Extendida . . . . . . . . . . .
Procedimiento de separación de la familia Clique Doble Cerrada . . . . . . . . . . . . .
Procedimiento de separación de la familia 4 Ciclo + Clique . . . . . . . . . . . . . . . .
Procedimiento de separación de la familia Orden de Ciclo . . . . . . . . . . . . . . . . .
Procedimiento para hallar un ciclo impar con longitud menor a 3 . . . . . . . . . . . . .
Procedimiento que fija las variables de orden en 0 ó 1 . . . . . . . . . . . . . . . . . . .
Búsqueda de una cota inferior a partir de una solución óptima fraccionaria, aplicando
redondeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Búsqueda de una cota inferior a partir de una solución óptima fraccionaria, aplicando un
modelo de programación lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
21
23
25
27
29
30
30
31
31
31
32
32
32
33
40
41
41
41
42
42
43
43
43
44
45
46
46
47
47
48
Capı́tulo 1
Introducción
La investigación operativa es una rama interdisciplinaria de la matemática aplicada que usa métodos
analı́ticos avanzados para conseguir soluciones óptimas o cercanas al óptimo en procesos de toma de
decisiones. La misma tiene su origen en los comienzos de la Segunda Guerra Mundial, con fines militares.
Sus técnicas se desarrollaron de manera tal de ser capaces de abordar y tratar una amplia variedad de
problemas. Sus contribuciones no sólo incluyen la mejora de la productividad de innumerables empresas
comerciales, sino también importantes progresos en la actividad policial, sanitaria y militar [19].
1.1.
Optimización combinatoria y programación lineal entera
La optimización combinatoria es una de las disciplinas más activas de la investigación operativa
[16, 34]. El dominio abarca a los problemas de optimización en donde el conjunto de soluciones factibles
es discreto o puede ser reducido a tal, siendo la meta encontrar la mejor solución posible.
Definición 1.1.1 (Problema de optimización combinatoria) Dado un conjunto discreto (en general finito) S de soluciones factibles y una función objetivo f : S −→ R, se desea encontrar un elemento
s∗ ∈ S que satisfaga:
f (s∗ ) = max{f (s) : s ∈ S}.
El conjunto S en general está definido por estructuras combinatorias (por ejemplo, caminos en un
grafo, diagramas de Gantt, fixtures para un campeonato deportivo, etc). Pretender escoger la mejor
posibilidad existente en S en un tiempo razonable puede resultar no tan trivial, aún contando con una
forma algorı́tmica para evaluar la función objetivo y una caracterización del conjunto. Es deseable encontrar alternativas más prometedoras que simplemente evaluar la función objetivo sobre los elementos
de S de manera exhaustiva.
Cuando las soluciones óptimas son difı́ciles de hallar desde el punto de vista computacional, se
pueden diseñar algoritmos heurı́sticos para producir soluciones cuya función objetivo sea cercana al
valor óptimo. Se cuenta con una amplia variedad de este tipo de algoritmos: genéticos, tabú search, etc.
en donde cada uno de ellos se enfrenta al problema desde una perspectiva distinta. Cuando la heurı́stica
tiene una garantı́a de optimalidad, que garantiza que la solución generada se encuentra a menos de
cierta distancia del valor óptimo, este tipo de procedimientos se denominan algoritmos aproximados.
El enfoque heurı́stico no siempre es útil ya que en ocasiones es necesario contar con la solución
óptima. A pesar de la intratabilidad de estos problemas, ha habido cierto progreso en el área durante
los últimos años. Los algoritmos Branch & Cut son un ejemplo de ello y la principal herramienta en la
que se basa el estudio de este trabajo.
La programación lineal es una técnica que consiste en la optimización de una función objetivo lineal
sujeta a restricciones impuestas por desigualdades lineales. Un problema de programación lineal puede
2
Optimización combinatoria y programación lineal entera
ser expresado de la siguiente forma:
Definición 1.1.2 (Problema de programación lineal) Dada una matriz A ∈ Rm×n y vectores b ∈
Rm , c ∈ Rn , se desea encontrar un vector x∗ ∈ Rn con Ax∗ ≤ b que satisfaga:
cT x = max{cT x : Ax ≤ b}.
Las desigualdades Ax ≤ b son las restricciones que especifican un poliedro convexo sobre el cual la
función objetivo debe ser optimizada.
El popular algoritmo Simplex [7] desarrollado por George
Dantzig, resuelve problemas de programación lineal construyendo
una solución admisible en un vértice del poliedro {x : Ax ≤ b} y
luego moviéndose sucesivamente sobre las aristas del mismo hacia
los vértices que contengan valores más altos de la función objetivo, hasta finalmente encontrar el óptimo. Aunque este algoritmo
tiene un comportamiento pobre en el peor caso, habitualmente
es muy eficiente y es ampliamente utilizado en la práctica. Posteriormente se hallaron otros métodos con peor caso polinomial,
probando que el problema general de programación lineal pertenece a la clase P [11, 13].
Figura 1.1: Un sistema de desigualdades
lineales define un poliedro como la región
En caso de existir la restricción adicional de que algunas o factible. El algoritmo Simplex comienza
todas las variables tomen valores enteros, nos encontramos frente por un vértice inicial y se mueve sobre las
aristas del poliedro hasta alcanzar el vértial problema general de programación lineal entera mixta:
ce cuya solución es óptima.
Definición 1.1.3 (Problema de programación lineal entera mixta) Dada una matriz A ∈
Rm×n , vectores b ∈ Rm , c ∈ Rn y un subconjunto I ⊆ {1, · · · , n} se desea encontrar un vector x∗ ∈ Rn
con Ax∗ ≤ b y xi entera para i ∈ I que satisfaga:
cT x = max{cT x : Ax ≤ b, xi entera para todo i ∈ I}.
Cuando todas las variables deben ser enteras (i.e., si I = {1, · · · , n}), este problema se denomina
problema de programación lineal entera. Si las variables de I deben tomar valores entre 0 y 1, el
problema se puede llamar problema (mixto) de optimización 0-1.
En contraste con la programación lineal que puede ser resuelta eficientemente, está demostrado
que los problemas de programación lineal entera mencionados son NP-hard. Esto resulta ser una gran
desventaja dado que la naturaleza de muchos problemas impone restricciones enteras. Mediante el
uso de variables enteras, es posible modelar requerimientos lógicos, costos fijos, cantidades y muchos
otros aspectos. Por ejemplo, si las variables modelaran la cantidad de restaurantes a abrir a modo de
maximizar cierta ganancia neta mensual, no tendrı́a sentido abrir 4.5 restaurantes.
Consideremos un problema de optimización combinatoria representado por medio de un problema
lineal entero, y llamemos S al conjunto de puntos factibles. Podemos asociar a este problema el poliedro
PS = conv(S) determinado por la cápsula convexa de los puntos de S. Los vértices de este poliedro
serán soluciones factibles del problema. No se conoce ningún algoritmo eficiente para calcular dicha
cápsula convexa PS de un conjunto de puntos S. Podemos sin embargo, concluir que un primer paso
para la resolución de un modelo de programación lineal entera es resolver, mediante el método Simplex,
el problema lineal asociado. Se trata de un problema lineal con la misma función objetivo y restricciones
que el modelo original, al que se le ha relajado la condición de que todas o algunas de las variables de
decisión puedan ser enteras. Este problema se denomina relajación lineal. Si la solución ası́ obtenida
es entera, se habrá encontrado entonces la solución del modelo de programación lineal entera. En caso
contrario y, lo más frecuente, la solución ası́ obtenida es un punto de partida que, en el mejor de los
casos, se aproxima a la solución del modelo, pero puede estar arbitrariamente lejos en el peor caso.
Por ejemplo, la Figura 1.2, a pesar de ser un poliedro en R2 , da una intuición del aporte que puede
llegar a dar una relajación lineal a la determinación de la cápsula convexa. Los puntos de interés son
Introducción
3
Figura 1.2: (a) Relajación lineal (b) Cápsula convexa
los que se encuentran dentro de esta región. Las caras del poliedro asociadas con el conjunto mı́nimo
de restricciones necesario para caracterizar la cápsula convexa se denominan facetas del poliedro.
Lamentablemente este punto de partida no admite un simple redondeo de los valores a una solución
real, ya que los nuevos puntos no presentan garantı́a alguna de factibilidad, tampoco de optimalidad
aún si ası́ lo fueran.
Una estrategia posible es hallar una desigualdad que sea cumplida por todos los puntos enteros, y
violada por la actual relajación lineal. Tal desigualdad se denomina corte y de allı́ derivan los métodos
de planos de corte [22], que pueden resultar muy útiles si se cuenta con un problema de optimización
lineal cuyo conjunto de desigualdades es demasiado grande como para ser representado explı́citamente
en una computadora, o manejado por un programa que resuelve problemas lineales. Agregando entonces,
esta desigualdad al conjunto de restricciones, tendremos un conjunto de soluciones más restringido que
continúa incluyendo a las soluciones enteras, pero que ha logrado dejar afuera a la solución dada por
la relajación lineal. Se puede resolver este nuevo problema lineal encontrando un óptimo distinto y
repitiendo el proceso indefinidas veces, idealmente hasta que la solución hallada sea entera. El siguiente
pseudocódigo esclarece este mecanismo básico para la resolución de problemas enteros.
1. Resolver el problema lineal max{cT x : Ax ≤ b}, para obtener el resultado de la relajación lineal x∗ .
2. Si x∗i es entera para todo i ∈ I, entonces x∗ es un óptimo del problema lineal entero original. Fin del algoritmo.
3. Si alguna coordenada x∗i con i ∈ I no es entera, hallar una desigualdad válida αT x ≤ β para todo x ∈ <n con
Ax ≤ β y xi ∈ Z para todo i ∈ I, de modo tal que αT x∗ > β.
4. Agregar la desigualdad al conjunto de restricciones y volver al paso 1.
Este esquema deja en evidencia el cuello de botella que radica en la generación de una desigualdad
válida cumplida por todos los puntos enteros, y violada en el óptimo actual (corte). Este problema se
conoce como problema de separación.
Tan pronto como P 6= N P , no habrá esperanzas de diseñar algoritmos para problemas NP-hard
que sean asintóticamente mucho mejores que la simple enumeración. Sin embargo, vale la pena estudiar
instancias de problemas que presenten tamaños razonables y que estén presentes en la práctica y hacer
surgir ideas útiles propias del problema en particular.
1.2.
Los algoritmos Branch & Cut
El enfoque Branch & Bound intenta reducir la cantidad de pasos en un esquema de enumeración
exhaustiva. Constituye un esquema de divide and conquer que intenta resolver el problema original
dividiéndolo en subproblemas más pequeños, para los cuales se computan cotas inferiores y superiores
4
Asignación de frecuencias en redes punto a multipunto
del valor óptimo [1, 21, 22]. En un problema de minimización, si la cota inferior sobre un nodo A
del árbol de enumeración es mayor que la cota superior de algún otro nodo B, entonces A puede ser
descartada. Este paso se conoce con el nombre de poda. Idealmente, el procedimiento termina cuando
todos los nodos del árbol de enumeración son podados o resueltos.
Aunque este enfoque no proporciona buenos resultados en la práctica, forma parte de uno de los
conceptos básicos que hacen al método Branch & Cut. El mismo surge como un hı́brido de los métodos
Branch & Bound y los métodos de planos de corte. Si luego de resolver la relajación lineal de un
subproblema no se puede cerrar el nodo correspondiente, entonces se busca una desigualdad violada por
el óptimo de la relajación. Si se encuentran desigualdades violadas (cortes), se agregan a la formulación
y se resuelve el problema lineal nuevamente. Si no se encuentra ningún corte, se continúa con el proceso
de branching. El siguiente pseudocódigo muestra las ideas básicas del método para un problema de
maximización:
1. Inicializar el árbol de enumeración.
2. Elegir un nodo abierto del árbol.
3. Resolver la relajación lineal del subproblema asociado al nodo. Sea x∗ el óptimo de la relajación (cT x∗ es cota
superior del óptimo del subproblema). Si corresponde, actualizar la cota superior.
a) Si x∗ es solución factible del problema, actualizar la cota inferior (si corresponde). Cerrar el nodo y volver al
paso 2.
b) Si cT x∗ es menor que la cota inferior, ninguna solución factible del subproblema puede ser óptimo del
problema original (bounding). Cerrar el nodo y volver al paso 2.
4. Buscar desigualdades violadas por x∗ . Si se encuentran, agregarlas a la formulación y volver al paso 3. Si no se
encuentran, o si se cumple algún otro criterio, generar dos o más subproblemas (branching) y agregarlos a la lista
de problemas abiertos.
5. Si las cotas inferior y superior coinciden, entonces la mejor solución factible hasta el momento es el óptimo del
subproblema. En caso contrario, volver al paso 2.
Se han desarrollado algoritmos basados en este método para un gran número de problemas de
optimización combinatoria [3, 12, 15, 22, 27]. Hasta la fecha, este enfoque ha resultado el más efectivo
para la resolución exacta de esta clase de problemas.
1.3.
Asignación de frecuencias en redes punto a multipunto
Uno de los problemas más importantes que debe enfrentar el operador de una red de comunicaciones
inalámbrica es la planificación del uso de las frecuencias del espectro electromagnético en las que se
establecen los enlaces. El espectro electromagnético es en general un recurso escaso, con lo cual se debe
realizar una cuidadosa planificación que contemple el reuso de frecuencias sin generar interferencias en
las comunicaciones [5].
Este trabajo se enmarca principalmente en desarrollar y analizar un algoritmo de tipo Branch &
Cut para la resolución exacta del problema de asignación de frecuencias en sistemas de radio punto a
multipunto. Este problema surge en el contexto de este tipo de sistemas de radio y tiene particularidades
que lo diferencian de la mayorı́a de los modelos clásicos de asignación de frecuencias. En este modelo,
el área de cobertura se encuentra dividida en un conjunto de sectores, y cada cliente se encuentra
ubicado en un sector. Cada sector es atendido por un número suficiente de antenas ubicadas en la
radiobase correspondiente. A diferencia de los modelos tı́picos de telefonı́a celular, en un sistema punto
a multipunto los clientes tienen antenas fijas asociadas con un sector predeterminado, y demandas
individuales de canales consecutivos [28, 30].
La Figura 1.3 muestra un ejemplo con cuatro radiobases, cada una sirviendo a un, dos, tres y cuatro
sectores respectivamente, conformando en total 10 sectores. Las circunferencias pequeñas representan
a los clientes de cada sector.
Introducción
5
Figura 1.3: Sectorización de las radiobases en sistemas de punto a multipunto.
En este modelo se consideran dos fuentes de interferencia entre los enlaces. Por una parte, las
frecuencias asignadas a clientes de un mismo sector no se deben superponer debido a que establecen
comunicación con la misma antena de la radiobase correspondiente. Por otra, se tienen identificados
ciertos pares de clientes conflictivos en sectores distintos que, a pesar de comunicarse con antenas
distintas, eventualmente pueden interferir entre sı́.
Esta configuración puede ser representada por un grafo de interferencias con pesos asignados (G, d) =
(V, E, d) en el que el conjunto de nodos V define a los clientes, E a los pares de clientes conflictivos,
y los pesos de los nodos d ∈ Z+ a las demandas particulares. A lo largo de la tesis se denotará como
n = |V | a la cantidad de nodos y m = |E| a la cantidad de aristas.
En las radiobases, los osciladores proveen las diferentes frecuencias con una posible diferencia ∆
respecto de la requerida. En consecuencia, entre los intervalos de frecuencia de pares de clientes conflictivos cualesquiera, una distancia de al menos g = 2∆ ha de ser respetada. Durante este trabajo se
asume que ∆ = 0.
Se cuenta, además, con un espectro disponible [0, s], con s ∈ Z+ en el que todos los intervalos de
frecuencias deben ser comprendidos. Ası́, se desea obtener una asignación de un intervalo I(i) = [li , ri ] ∈
[0, s], con li , ri ∈ Z+ a cada cliente i ∈ V tal que ri − li ≥ di y que max {li , lj } − min {ri , rj } ≥ 0
para cada par de clientes conflictivos i y j. En definitiva, los datos de entrada del problema quedan
conformados por la cuádrupla (G, d, s, g)
El problema básico de asignación de frecuencias en sistemas de radio punto a multipunto consiste en
hallar una solución factible (i.e., una asignación adecuada de intervalos a cada cliente), y por lo tanto el
planteo anterior no incluye una función objetivo. Sin embargo, en la práctica suele suceder que se tiene
un conjunto M ⊆ V de clientes importantes, y es deseable asignar a estos clientes el mayor ancho de
banda posible [5, 31, 32]. En este contexto, se introduce la siguiente función objetivo para el problema:
máx
X
(ri − li ).
(1.1)
i∈M
El problema de asignación de frecuencias en sistemas punto a multipunto generaliza problemas
conocidos de coloreo [9, 10, 14, 26] que a su vez generalizan el problema clásico de coloreo de grafos.
Estos problemas son N P-hard [26]. Por este motivo, el problema de asignación de frecuencias en sistemas
punto a multipunto es N P-completo, aunque ciertas instancias de tamaño acotado se pudieron resolver
mediante heurı́sticas golosas [5]. Sin embargo, se busca resolver instancias que reflejan la realidad dado
que actualmente un gran número de redes de comunicaciones está basado en esta tecnologı́a, con lo
cual es menester diseñar algoritmos que se basen en una comprensión profunda de la estructura del
problema. La presente tesis aborda esta cuestión.
Por último, el estudio de este problema también tiene interés teórico, dado que incorpora elementos
de modelos de planificación de tareas.
6
1.4.
Resumen de la tesis
Resumen de la tesis
El Capı́tulo 2 ahondará en la definición del problema de asignación de frecuencias en redes punto
a multipunto, especificando el modelado del problema mediante programación lineal entera, la función
objetivo y las familias de desigualdades válidas conocidas.
En el Capı́tulo 3 se expondrán los generadores de las instancias de prueba que pretenden simular a
las reales, y se evaluará en ellas la calidad empı́rica de las desigualdades antes mencionadas sobre los
poliedros asociados con la formulación presentada en el capı́tulo anterior, mediante la inserción de las
mismas a la relajación lineal del problema y también a un algoritmo Branch & Bound.
El Capı́tulo 4 pone foco en el algoritmo Branch & Cut a través de diseños de procedimientos
de separación heurı́sticos para las familias de desigualdades válidas con problemas de separación N P completos. También se profundizará en la búsqueda de heurı́sticas primales para el problema, intentando
aprovechar la estructura de las soluciones de las relajaciones lineales durante el método Branch & Cut
con el objetivo de generar buenas soluciones para el problema en forma eficiente.
El Capı́tulo 5 dará a conocer los resultados computacionales de la totalidad del programa, dejando
asentada la mejor configuración para correr el algoritmo, esto es, determinando las familias convenientes
a incluir, el ajuste ideal de los parámetros, y también los procedimientos de separación aconsejables.
En el Capı́tulo 6 se expondrán las conclusiones generales y las lı́neas de trabajo futuro. En el Apéndice
A se contarán brevemente las caracterı́sticas de la implementación. Por último, en el Apéndice B figuran
los resultados detallados producto de los experimentos con relajaciones lineales que se efectúan en el
Capı́tulo 3.
Capı́tulo 2
El problema
Este capı́tulo apunta a definir matemáticamente el problema de asignación de frecuencias en redes
punto a multipunto, mediante un modelo de programación lineal entera y su función objetivo asociada.
También se explican en detalle y con ejemplos ilustrados las once familias de desigualdades válidas que,
en capı́tulos posteriores, tienen la intención de ser puestas a prueba, solas o combinadas, ya sea como
entrada en la ejecución del programa que intenta resolver el problema de asignación de frecuencias
en redes punto a multipunto, o para ejecutar los cortes. Es importante notar que tienen un impacto
directo en la complejidad temporal y espacial del programa, llevando a que la calidad final del programa
dependa casi por completo de ellas.
2.1.
Modelo de programación lineal entera
Se representa a la solución como un vector
T
T
(l, r, x) = (l1 , · · · , ln , r1 , · · · , rn , x1 , · · · , xm )
Para cada vértice i ∈ V del grafo de interferencias, además de introducir las variables enteras li y ri ,
de modo tal que [li , ri ] represente el intervalo de frecuencias asignado al cliente i, se define la variable
de orden xij para cada arista ij ∈ E del grafo de interferencias, con i < j, de modo tal que xij = 1
si ri ≤ lj y xij = 0 en caso contrario. Con estas definiciones, una asignación de valores a las variables
(l, r, x) ∈ R2|V |+|E| representa una solución factible si y sólo si se cumplen las siguientes restricciones:
di
≤
ri − li
∀i ∈ V
0
≤
li ≤ ri ≤ s
ri
≤
lj + s(1 − xij )
rj
≤
li + sxij
xij
∈
{0, 1}
li , ri
∈
Z
(2.1)
∀i ∈ V
∀ij ∈ E, i < j
∀ij ∈ E, i < j
∀ij ∈ E, i < j
∀i ∈ V
(2.2)
(2.3)
(2.4)
(2.5)
(2.6)
Las restricciones de demanda (2.1) y de lı́mites (2.2) afirman que el intervalo I (i) = [li , ri ] debe
satisfacer la demanda di dentro del intervalo de espectro disponible [0, s]. Las desigualdades (2.3) y
(2.4) determinan las restricciones de antiparalelismo, que previenen la superposición de intervalos de
pares de clientes con conflictos. Finalmente, las restricciones (2.5) y (2.6) fuerzan que las variables de
orden sean binarias y los intervalos enteros, respectivamente.
Definición 2.1.1 (Poliedro de planificación cromática) Sea (G, d, s, g) una instancia del problema de asignación de frecuencias en redes punto a multipunto. Se define al poliedro de planificación
cromática P (G, d, s, g) ⊆ <2n+m como la cápsula convexa de todas las soluciones factibles (l, r, x) que
satisfacen las desigualdades (2.1) - (2.6).
8
Desigualdades válidas conocidas
Las restricciones mencionadas, si bien definen el conjunto de soluciones factibles, no definen faceta
alguna del poliedro, en general. Con lo cual, es necesario valerse de otras que refuercen a éstas. Por este
motivo, en la Sección 2.3 se presentan desigualdades válidas adicionales, con el propósito de estudiar la
efectividad de las mismas.
P
La función objetivo consiste en maximizar i∈M (ri − li ), en donde M ⊆ V representa un conjunto
de clientes principales.
2.2.
Desigualdades válidas conocidas
Sean ij ∈ E y i < j, se utiliza como convención xji = 1 − xij . Si i ∈ V , se define N (i) =
{j ∈ V : ij ∈ E}, es decir, el conjunto de vecinos de i en el grafo de interferencias. Sea A ⊆ V un
subconjunto de
P nodos, y sea K ∈ A una clique, decimos que K cubre a A si cada nodo de k ∈ A\K
cumple dk ≤ i∈K\N (k) di . Cada subconjunto de nodos A ⊆ V admite una clique que los cubre, y tal
clique puede ser hallada en tiempo polinomial [30, 28, 32].
A continuación se dan a conocer las desigualdades válidas [30, 31, 32] con las que se trabaja en esta
tesis.
Definición 2.2.1 (Desigualdades Clique) Sea i ∈ V un nodo de G, y sea K ⊆ N (i) una clique,
entonces
X
dk xki ≤ li
(2.7)
k∈K
es la desigualdad Clique asociada a i y a K.
Esta desigualdad afirma que si tenemos cierto subconjunto de clientes conflictivos (que forman
una clique en G) con i cuyos intervalos de espectro se ubican previos al de i, entonces la suma de
sus demandas debe ser menor o igual a li . Esto sucede porque los intervalos de los clientes ∈ K (en
particular, los que están ubicados previos al de i) no se pueden superponer. La Figura 2.1 expone un
ejemplo del intervalo asignado a i, resaltado en amarillo, respecto de las otras asignaciones de intervalos
a clientes. En ella, es importante notar a los intervalos señalados en púrpura y celeste, que representan
a aquellos asignados a k ∈ K tales que xki = 0 (previos a i) y xki = 1 (posteriores a i) respectivamente.
Figura 2.1: Ejemplo de desigualdad Clique.
Definimos a smı́n (G, d, g) como el mı́nimo valor de s tal que P (G, d, s, g) no es vacı́o (i.e., P (G, d, s, g)
6= ∅ si y sólo si s ≥ smı́n (G, d, g)). Por su parte, dmáx = máxi∈V di es la mayor demanda entre los clientes.
Las desigualdades (2.7) son válidas para P (G, d, s, g) y definen facetas solamente si K es una clique
que cubre a N (i) y s ≥ smı́n (G, d, g) + 3 (dmáx + g) [28, 30].
Definición 2.2.2 (Desigualdades Clique Doble) Sea ij ∈ E una arista de G, y sea K ⊆ N (i) ∩
N (j) una clique, entonces
X
ri +
dk (xik − xjk ) ≤ lj + (s − d(K))xji
(2.8)
k∈K
es la desigualdad Clique Doble asociada a ij y a K, donde d(K) =
P
k∈K
dk .
El problema
9
Cuando el intervalo de espectro asignado a i se ubica previo al de j, esta desigualdad representa el
hecho de que cierto subconjunto de clientes conflictivos con i y con j cuyos intervalos de espectro se
ubiquen entre i y j deben cumplir que ri más la suma de sus demandas es menor o igual a lj ya que,
de no ocurrir, indefectiblemente se solaparı́an con j, porque no se contarı́a con suficiente espacio como
para ubicar a todos estos intervalos entre i y j, y esto vioları́a las desigualdades (2.3) y (2.4). En caso
de que el intervalo de espectro asignado a i se ubique después del de j entonces estarı́a indicando que
ri menos la suma de los intervalos asignados a los clientes conflictivos ubicados entre i y j es menor o
igual a lj más un número suficientemente grande ( (s − d(K))xji ) para que la desigualdad valga en
este caso también. La Figura 2.2 muestra un ejemplo de estos dos escenarios.
Figura 2.2: Ejemplo de desigualdad Clique Doble.
Las desigualdades (2.8) son válidas para P (G, d, s, g) y definen facetas si s ≥ smı́n (G, d, g) +
4 (dmáx + g) [30].
Antes de proseguir con la siguiente familia de desigualdades, es
Pmenester introducir la siguiente
definición: si K ⊆ V y j ∈ V \K, se define a cK (j) como máx(0, dj − k∈K\N (j) dk ). Dicho en palabras,
representa el máximo entre 0 y la diferencia que hay entre la demanda del cliente j y la suma de
las demandas de los clientes ∈ K que no son vecinos de j. cK (j) es un término que ajusta a ciertas
desigualdades, ya que en los casos en que no es 0, puede una desigualdad quedar innecesariamente
holgada. En la Figura 2.3 se pueden ver ejemplos en los que cK (j) = 0 y cK (j) > 0.
Definición 2.2.3 (Desigualdades Clique Reforzada) Sea i ∈ V un nodo de G, y sea K 0 ⊆ N (i)
una clique. Sea K una clique N (i)\K 0 , entonces
X
k∈K
dk xki +
X
cK (k)xki ≤ li
k∈K 0
es la desigualdad Clique Reforzada asociada a K y a K 0 .
(2.9)
10
Desigualdades válidas conocidas
Figura 2.3: Ejemplos para cK (j) = 0 y cK (j) > 0 respectivamente.
Las desigualdades Clique pueden obtenerse como un caso particular de estas, considerando K 0 = ∅.
La Figura 2.4 es capaz de aportar claridad mostrando la participación de cada parte de la ecuación.
cK (j) está dado por el último tramo del intervalo de k ∈ K 0 , y los nodos que están en K (los eventuales
que son conflictivos con k no se solapan) con púrpura. Se puede apreciar que, la suma de los intervalos
púrpura y la parte señalada como cK (j) no llega a ir más allá de li , dadas las relaciones establecidas
entre los intervalos al momento de definir la familia de desigualdades Clique Reforzada.
Figura 2.4: Ejemplo de desigualdad Clique Reforzada.
Las desigualdades Clique Reforzada son válidas para el poliedro P (G, d, s, g) y definen facetas si
s ≥ smı́n (G, d, 0) + 3 (dmáx ) [32].
Definición 2.2.4 (Desigualdades Doble Clique Reforzada) Sea ij ∈ E una arista de G, y sea
K 0 ⊆ N (i) ∩ N (j) una clique. Sea K una clique en [N (i) ∩ N (j)]\K 0 , entonces
!
X
X
X
X
ri +
dk (xik − xjk ) +
cK (k)(xik − xjk ) ≤ lj + s −
dk −
cK (k) xji
(2.10)
k∈K
k∈K 0
k∈K
k∈K 0
es la desigualdad Doble Clique Reforzada asociada a K y a K 0 .
P
P
La Figura 2.5 expone un ejemplo. En él, s − k∈K dk − k∈K 0 cK (k) xij ≥ 0, y la desigualdad
P
original reducirı́a en este caso a ri + dk2 + dk4 + dk5 + dk6 + cK (k10 ) + cK (k20 ) ≤ lj + (s− k∈K dk −
P
k∈K 0 cK (k)), lo cual claramente es cierto.
Las desigualdades Doble Clique Reforzada son válidas para el poliedro P (G, d, s, g) y definen facetas
de P (G, d, s, 0) si s ≥ smı́n (G, d, 0) + 4 (dmáx ) [32].
Definición 2.2.5 (Desigualdades Clique Replicada) Sea i ∈ V un nodo de G, y sea K una clique
que cubre N (i). Más aún, dado el subconjunto K 0 = {ki , . . . , kt } ⊆ K y una clique Q = {pk1 , . . . , pkt } ⊆
V \N (i) tal que pk k ∈ E para cada k ∈ K 0 (ver Figura 2.6), entonces
X
X
dk xki +
cK (pk )(xpk k − xik ) ≤ li
(2.11)
k∈K
k∈K 0
es la desigualdad Clique Replicada asociada al nodo i y a las cliques K y Q.
El problema
11
Figura 2.5: Ejemplo de desigualdad Doble Clique Reforzada.
Figura 2.6: Estructura para las desigualdades Clique Replicada.
Al igual que las desigualdades Clique Reforzada, las desigualdades Clique pueden obtenerse como
un caso particular de estas, considerando Q = ∅. La Figura 2.7 es capaz de aportar claridad mostrando
un posible escenario de los términos de la ecuación que se involucran. En este ejemplo, el conjunto K
está dado por los intervalos de color púrpura y verde. En especial, los verdes tienen la correspondencia
establecida en la desigualdad pk1 k1 ∈ E y pk2 k2 ∈ E, con el conjunto Q, dado por los intervalos
de color celeste, y debido a ello, estos pares no pueden superponerse. Se asume que (k6 , pk1 ) ∈ E,
para que cK (pk1 ) corresponda a la longitud señalada en la figura. Según las variables de orden, en
donde xki = 1 para k = {1, 3, 4, 5} y xpk k − xik = 1 solamente para pk1 , la ecuación se reduce a:
dk1 + dk3 + dk4 + dk5 + cK (pk1 ) ≤ li , resultado que puede ser visiblemente comprobado.
Figura 2.7: Ejemplo de desigualdad Clique Replicada.
Si γ (G, d, g) se define como el mı́nimo valor de s tal que P (G, d, s, g) admite una solución factible
en la que I (k) está ubicado después de I (pk ) para cada k ∈ K 0 , se puede notar que γ (G, d, g) ≥
smı́n (G, d, g). Las desigualdades Clique Replicada son válidas para el poliedro P (G, d, s, g) y definen
facetas del poliedro P (G, d, s, 0) si s ≥ γ (G, d, 0) + 3 (dmáx ) [32].
Definición 2.2.6 (Desigualdades Clique Doble Extendida) Sean i, j ∈ V dos nodos adyacentes
de G, y sea K una clique que cubre N (i) ∩ N (j). Más aún, sea t ∈ N (j)\N (i) un nodo fijado (ver
Figura 2.8), entonces
X
ri +
dk (xik − xjk ) ≤ lj + (s − d(K) − cK (t)) xji + cK (t)xjt
(2.12)
k∈K
12
Desigualdades válidas conocidas
es la desigualdad Clique Doble Extendida asociada a K y a t.
La Figura 2.8 expone la estructura que soporta la familia de desigualdades Clique Doble Extendida.
Además, la Figura 2.9 ilustra un escenario posible. En el mismo, es posible asumir que k2 , k5 y k7 ∈
/ N (t)
y el resto de los nodos de k son vecinos de t. Luego, cK (t) está señalado correctamente. Se tiene que
xji = 0, xjt = 1 y xik − xjk = 1 solamente para k ∈ {1, 4, 6}, en caso contrario, esta variable toma valor
nulo. De allı́ surge ri + dk1 + dk4 + dk6 ≤ lj + cK (t).
Figura 2.8: Estructura para las desigualdades Clique Doble Extendida.
Figura 2.9: Ejemplo de desigualdad Clique Doble Extendida.
Las desigualdades Clique Doble Extendida son válidas para el poliedro P (G, d, s, g) e inducen facetas
de P (G, d, s, 0) si s ≥ smı́n (G, d, 0) + 4 (dmáx ) [32].
Definición 2.2.7 (Desigualdades Clique Doble 2-Extendida) Sean i, j ∈ V dos nodos adyacentes de G, y sea K una clique que cubre N (i) ∩ N (j). Sean p ∈ N (i)\N (j) y t ∈ N (j)\N (i) dos nodos
fijados, (ver Figura 2.10) entonces
X
ri +
dk (xik − xjk ) ≤ lj + ϕxji + cK (t)xpi + cK (p)xjt
(2.13)
k∈K
es la desigualdad Clique Doble 2-Extendida asociada a K y a los nodos t y p, en donde ϕ =
s − d(K) − (cK (t) + cK (p)).
La Figura 2.11, similar a la 2.9, ilustra un escenario posible de este tipo de desigualdades. En el
mismo, se asume que k2 , k5 y k7 ∈
/ N (t) y el resto de los nodos ∈ K si, para que cK (t) sea acorde
lo señalado. Análogamente, se puede definir que k3 es el único nodo ∈ K tal que k3 ∈
/ N (p). xji =
0, xpi = 1, xjt = 1 y xik − xjk = 1 solamente para k ∈ {1, 4, 6}, en caso contrario, es 0. De allı́ surge
ri + dk1 + dk4 + dk6 ≤ lj + cK (t) + cK (p). Por su parte, debido a la numerosa cantidad de participantes de
esta ecuación, la Figura 2.10 diagrama la estructura que soporta la familia Clique Doble 2-Extendida.
Las desigualdades Clique Doble 2-Extendida, al igual que las Clique Doble Extendida, son válidas
para el poliedro P (G, d, s, g) e inducen facetas de P (G, d, s, 0) si s ≥ smı́n (G, d, 0) + 4 (dmáx ) [32].
Definición 2.2.8 (Desigualdades Clique Doble Cerrada) Sean i, j ∈ V dos nodos adyacentes de
G, y sea K una clique que cubre N (i) ∩ N (j). Sean p ∈ N (i)\N (j) y t ∈ N (j)\N (i) dos nodos tales
que pt ∈ E y pk, tk ∈ E para todo k ∈ K, entonces
X
ri +
dk (xik − xjk ) ≤ lj + ϕxji + ϕp xpi + ϕt xjt − ϕpt xpt
(2.14)
k∈K
El problema
13
Figura 2.10: Estructura para las desigualdades Clique Doble 2-Extendida.
Figura 2.11: Ejemplo de desigualdad Clique Doble 2-Extendida.
es la desigualdad Clique Doble Cerrada asociada a K y a los nodos t y p, donde
ϕ = s − d(K) − (dp + dt )
ϕt = dt + mı́n {dp , dt }
ϕp = dp
ϕpt = mı́n {dp , dt }
La Figura 2.12 ejemplifica una posible instancia de esta desigualdad.
Figura 2.12: Ejemplo de desigualdad Clique Doble Cerrada. xji = 0, xpi = 1, xjt = 1, xpt = 1 y
xik − xjk = 1 solamente para k ∈ {1, 4, 6}, en caso contrario, es 0. De allı́ surge ri + dk1 + dk4 + dk6 ≤
lj + 3 ∗ d p + d t .
Nuevamente, las desigualdades Clique Doble Cerrada, al igual que las familias Clique Doble Extendida
y Clique Doble 2-Extendida, son válidas para el poliedro P (G, d, s, g) e inducen facetas de P (G, d, s, 0)
si s ≥ smı́n (G, d, 0) + 4 (dmáx ) [32].
Definición 2.2.9 (Desigualdades 4 Ciclo + Clique) Sean i, j, k ∈ V tres nodos de G cualesquiera
tales que ij, jk ∈ E y ik ∈
/ E. Sea K ⊆ N (i) ∩ N (k) una clique no vacı́a. Sea t0 ∈ K un nodo fijado
(ver Figura 2.13), entonces
X
li + lj ≥
αt (xkt − xit ) + β
(2.15)
t∈K
es la desigualdad 4 Ciclo + Clique asociada a esta estructura, donde
αt0 = dto + dk
14
Desigualdades válidas conocidas
αt = dt para t 6= t0
β = mı́n {di , dj , dk }
Figura 2.13: Estructura para las desigualdades 4 Ciclo + Clique.
El significado de esta desigualdad puede observarse mediante la Figura 2.14, que ejemplifica uno de
los posibles escenarios. En él, K = {t0 , t1 , t2 , t3 , t4 , t5 }. Como mı́n {di , dj , dk } = dj y lj = 0, ocurre que
li ≥ dt2 + dt3 + dt6 + dt0 + dk + dj .
Figura 2.14: Ejemplo de desigualdad 4 Ciclo + Clique.
La familia 4 Ciclo + Clique es válida para el poliedro P (G, d, s, g). Asumiendo que s ≥ smı́n (G, 1, 0)
+5, la desigualdad 4 Ciclo + Clique asociada define una faceta de P (G, 1, s, 0) si y sólo si K es una
clique maximal en N (i) ∩ N (k) y N (i) ∩ N (j) ∩ N (k) = ∅ [31].
Definición 2.2.10 (Desigualdades Orden de Ciclo) Sea C = (1, . . . , k) ⊆ G un ciclo de longitud
K, entonces
x12 + x23 + . . . + xk−1,k + xk1 ≤ k − 1
(2.16)
es la desigualdad Orden de Ciclo asociada a C.
Esta desigualdad expresa el hecho de que la naturaleza no circular del espectro de frecuencias obliga
a que exista un primer y un último intervalo asociados a los dos nodos del ciclo. La Figura 2.15 clarifica
este concepto mediante la representación de un ciclo en el espectro, en el que xij = 1 si i < j a excepción
de x17 , concibiendo a 1 como el primer intervalo, y a 7 como el último.
La familia Orden de Ciclo es válida para el poliedro P (G, d, s, g) e induce facetas de P (G, d, s, 0)
si y sólo si el ciclo relacionado no posee cuerdas [31]. Un ciclo sin cuerdas C en un grafo es un ciclo tal
que cada uno de sus nodos es adyacente a exactamente dos nodos de C.
Definición 2.2.11 (Desigualdades Ciclo Impar ) Sea C = (1, . . . , 2k + 1) ⊆ G un ciclo de longitud
impar, entonces
2k+1
X
li ≥ k + 2
(2.17)
i=1
es la desigualdad Ciclo Impar asociada a C.
El problema
15
Figura 2.15: Ejemplo de ilustración de desigualdad Orden de Ciclo en el que hay un ciclo C =
{1, 2, 3, 4, 5, 6, 7} ⊆ G.
La intuición de esta desigualdad es que, al ser la longitud del ciclo impar, si se considera un primer
cliente y uno último sin pérdida de generalidad, estos no podrán solaparse. La Figura 2.16 expone un
escenario
donde hay un ciclo de longitud 7. Luego, k = 3. Ası́, l2 , l4 , l6 ≥ 0. l1 , l3 , l5 ≥ 1 y l7 ≥ 2, con
Pen
7
lo cual i=1 li ≥ (0 ∗ 3) + (1 ∗ 3) + 2 ≥ 5.
Figura 2.16: Ejemplo de un escenario de la desigualdad Ciclo Impar en el que hay un ciclo C =
{1, 2, 3, 4, 5, 6, 7} ⊆ G.
La familia Ciclo Impar es válida para el poliedro P (G, d, s, g). Sea C2k+1 = (1, . . . , 2k + 1) con
k ≥ 2, asumiendo que s ≥ 3. La desigualdad Ciclo Impar asociada a C2k+1 induce una faceta de
P (G, d, s, 0) si y sólo si 2k + 1 6= 0(mod 3) [31].
16
Desigualdades válidas conocidas
Capı́tulo 3
Experimentos a priori con las
desigualdades válidas
En primer lugar, este capı́tulo caracteriza a los seis algoritmos usados para generar distintos conjuntos de instancias. En lı́neas generales, se experimenta variando la distribución de los clientes en cada
sector, asignando demandas aleatorias de diversas maneras, variando las proporciones entre cantidad de
clientes y sectores, ası́ como también buscando formas de distribuir razonablemente a los clientes dentro
de una misma red. El detalle y variación de estos criterios adoptados son detallados a continuación.
Mediante el uso de los generadores, estarı́an surgiendo las instancias con las que se efectúan las pruebas
con el algoritmo Branch & Cut en los capı́tulos subsiguientes. La importancia de los generadores radica
en constituir un conjunto de instancias suficientemente realistas, de modo que los distintos resultados
arrojados a lo largo de este trabajo, también lo sean.
Se torna importante a esta altura, contar con métodos que, dada una instancia, sean capaces de
generar todas las desigualdades de cada familia presentada en el capı́tulo anterior, y de esta manera, el
programa las pueda considerar en su pool inicial de desigualdades. Básicamente se trata de métodos que
iteran a los clientes y a partir de ellos se deducen los términos restantes, como ser, las cliques maximales
y demás clientes implicados. Este capı́tulo cuenta con una descripción de los mismos.
Valiéndose de los algoritmos que generan los distintos conjuntos de instancias y los métodos que
generan todas las desigualdades de cada familia, el capı́tulo concluye con dos pruebas preliminares que
apuntan a determinar el grado de contribución del agregado de cada familia al modelo de programación
lineal entera presentado en el Capı́tulo 2. En el primer grupo de experimentos (Sección 3.3), se analiza
el impacto de cada familia sobre el valor óptimo de la relajación lineal. En el segundo grupo de experimentos (Sección 3.4), se obtienen los resultados producto de ejecutar a las instancias en un entorno
Branch & Bound agregando cada familia de desigualdades válidas. Se espera que al final del capı́tulo
se pueda contar con una primera intuición acerca de la calidad de las mismas.
3.1.
Instancias de prueba
Dado que no es fácil contar con instancias reales debido a que los datos de las redes suelen ser de
carácter confidencial, se intentó utilizar un criterio de generación automática de instancias de prueba
con el objeto de simular aspectos que podrı́an estar presentes en instancias reales.
Se experimentó sobre instancias generadas aleatoriamente a partir de seis tipos de generadores
denominados por las letras A a F . A continuación se definen todos los parámetros que se utilizan para
la generación de los grupos, para luego poder especializarse en cada generación en base a ellos. Los
generadores D y F harán uso solamente de algunos de estos parámetros, y los mismos se especificarán
en las secciones relacionadas.
pref ijoArchivo, el prefijo del nombre de archivo en el que se imprime la instancia
18
Instancias de prueba
n, el número de clientes
k, el número de sectores
s desde y s hasta, definen la cantidad s hasta−s desde+1 de instancias a generar y, en la i-ésima
instancia el intervalo de espectro disponible [0, s], siendo s = s desde + i
semilla, la semilla del generador de números pseudoaleatorios
area, el área disponible para ubicar a los distintos clientes
Por lo menos un cliente es asignado a cada sector. Si llegara a haber más clientes que sectores, se
les asigna un sector aleatoriamente. El criterio de elección de clientes importantes se basa en tomar el
de mayor demanda perteneciente a cada sector.
Sean c1 . . . cn , los clientes, m la cantidad de pares de clientes conflictivos. La salida de cualquiera de
estos generadores es un archivo de texto con el siguiente formato:
n
k
s
sector de c1 . . . sector de cn
demanda de c1 . . . demanda de cn
m
ci1 cj1 (ci1 y cj1 presentan conflicto, i 6= j)
..
.
cicc cjcc
Para los cálculos que dependan de la longitud del espectro (por ejemplo, uno querrı́a basarse en él
para una asignación de demandas a los clientes coherente, asignándole a cada uno un porcentaje del
mismo, construyendo ası́ una instancia posiblemente factible), con excepción del grupo E se toma el
parámetro s desde y no la longitud particular s ∈ [s desde, s hasta] de la instancia. El propósito de
esto es contar con instancias que van de lo no factible a lo factible ya que son de interés los casos que
se encuentran en el lı́mite de la factibilidad. Los mismos son particularmente difı́ciles de resolver, y es
el propósito entonces determinar en qué grado ciertas desigualdades válidas pueden contribuir a una
eficiente búsqueda de soluciones o determinar que la instancia es no factible.
3.1.1.
Grupo A
El primer grupo consiste de una generación aleatoria natural de instancias aproximadamente regulares. Presenta aleatoriedad en las asignaciones de demandas a clientes, áreas a sectores y aristas
∈ Ex .
Se asignan a los clientes demandas al azar en el intervalo [1, 1.7 × s desde × k/n]. La expresión
1.7×s desde×k/n apunta a una asignación de demandas razonable, de modo que la instancia resultante
llegue a ser factible pero tampoco generosa, es decir, con porciones de espectro disponibles, sin asignar.
Además, la misma depende del parámetro s desde intencionalmente como se explicó en el apartado
anterior, con el objeto de variar el nivel de factibilidad dentro de un rango de instancias.
Con el objeto de generar el conjunto Ex , cada cliente se ubica aleatoriamente y de manera uniforme
en un punto ∈ [0, area] × [0, area], es decir, en un área geográfica plana, con distancia a lo sumo 3 de
su estación base. Con esto se apunta a simular el uso de antenas omnidireccionales, es, decir, cubriendo
360◦ de longitud. Es por ello que es posible ubicar a cada cliente teniendo en cuenta no más que la
distancia a la antena.
Si la distancia entre dos clientes cualesquiera de distintos sectores es menor a 2, entonces se los
considera conflictivos, es decir, se agrega una arista entre ellos en el grafo que modela al problema.
Luego a menor área, es mayor la probabilidad de conflictos entre clientes.
El Algoritmo 1 presenta el pseudocódigo de este generador de instancias.
Experimentos a priori con las desigualdades válidas
19
Algoritmo 1 Generador de instancias del grupo A
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
Procedimiento generarInstanciasA(pref ijoArchivo, n, k, s desde, s hasta, area, semilla)
Para cada sector sec hacer
desplazamientoX(sec) ← un número ∈ [0, area] con distribución uniforme
desplazamientoY (sec) ← un número ∈ [0, area] con distribución uniforme
Fin para
Para cada cliente c hacer
sector(c) ← sector elegido al azar con distribución uniforme
demanda(c) ← un número ∈ [1, 1.7 × s desde × k/n] con distribución uniforme
ubicacion(c) ← calcularU bicacionDentroDe(area, sector(c))
Fin para
Para cada par de clientes ci , cj (i 6= j) hacer
Si kubicacion(ci ) − ubicacion(cj )k < 2 entonces
Considerar conflicto entre ci y cj
Fin si
Fin para
Para cada s ∈ [s desde, s hasta] hacer
Imprimir n, k, s, sectores, demandas y pares de clientes conflictivos al archivo
pref ijoArchivo.n.k.s.area.semilla.dat
Fin para
Fin procedimiento
Función calcularUbicacionDentroDe(area, sector)
radio ← un número ∈ [0, 3] con distribución uniforme
α ← un ángulo ∈ [0, 2π] con distribución uniforme
coordenadaX ← desplazamientoX(sector) + cos(α) × radio
coordenadaY ← desplazamientoY (sector) + sin(α) × radio
devolver (coordenadaX, coordenadaY )
Fin función
Ejemplo
Si se invocara al generador ası́,
C:\>generadorA.exe A 20 6 100 100 10 777
Se obtendrı́a la instancia:
20
6
100
0 1 2 3 4 5 4 4 1 2 2 0 2 0 2 0 3 0 1 3
2 19 12 20 49 29 46 51 26 23 40 10 36 40 31 35 10 28 4 33
14
1 16
1 19
4 10
4 12
6 10
6 12
7 9
7 10
7 12
7 14
8 16
8 19
16 18
18 19
20
Instancias de prueba
La Figura 3.1 muestra una representación gráfica de una instancia tı́pica de este grupo. Los 20 clientes se
encuentran marcados mediante rombos y un número que describe la demanda. Los cı́rculos representan
a las 6 radiobases (que atienden cada sector) y, a modo ilustrativo se presentan cı́rculos concéntricos
con centro en cada radiobase, que pretenden dar la intuición acerca del alcance de cada antena (es
decir, el sector correspondiente). Los conflictos se diagraman mediante lı́neas que unen a los clientes
involucrados.
Figura 3.1: Ejemplo de instancia de tipo A con 20 clientes, 6 sectores y espectro disponible 100. Los
clientes se ubican en posiciones aleatorias dentro del área geográfica definida, con distancia de a lo sumo
3 de su estación base. Se puede apreciar una intuición del alcance de las antenas omnidireccionales hacia
sus clientes.
3.1.2.
Grupo B
El grupo B coloca en cada sector a un cliente importante con demanda distinguiblemente mayor al
resto. El mismo resulta a partir de la motivación de simular estructuras de demandas similares a las que
suelen suceder en la práctica [5], en las que un cliente importante de un sector representa tı́picamente
a un grupo de clientes individuales con condiciones de interferencia similares, y entonces el hecho de
maximizar el intervalo de frecuencias reservado para este grupo, habilita al proveedor a mantener el
mismo plan de frecuencias aún si nuevos clientes se unieran a la compañı́a (siempre que puedan ser
integrados al grupo del cliente importante). Por lo tanto, maximizar la frecuencia reservada para estos
grupos de clientes importantes da, como resultado, un plan de frecuencias, que es en cierto sentido,
robusto ante las posibles extensiones del conjunto de clientes. Esta caracterı́stica es importante para
el proveedor dado que cambiar el plan de frecuencias tı́picamente causa serios problemas. Si no puede
encontrarse un cambio incremental del viejo al nuevo plan, entonces el sistema debe ser reiniciado con
un nuevo plan desde cero, quedándose mientras tanto, sin servicio alguno.
Se implementó este grupo de instancias asignando a los clientes importantes una demanda al azar
contenida en el intervalo [0.8 × s desde, 0.9 × s desde]. Las demandas de los clientes restantes se encuentran en [1, 4] con distribución uniforme.
La manera de generar el conjunto Ex fue idéntica a la implementada en el grupo A. El Algoritmo 2
presenta el pseudocódigo de este generador de instancias.
Experimentos a priori con las desigualdades válidas
21
Algoritmo 2 Generador de instancias del grupo B
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
Procedimiento generarInstanciasB(pref ijoArchivo, n, k, s desde, s hasta, area, semilla)
Para cada sector sec hacer
desplazamientoX(sec) ← un número ∈ [0, area] con distribución uniforme
desplazamientoY (sec) ← un número ∈ [0, area] con distribución uniforme
Fin para
Para cada cliente c hacer
sector(c) ← sector elegido al azar con distribución uniforme
Si c es un cliente importante, es decir, es el primero asignado a l sector entonces
demanda(c) ← un número ∈ [0.8 × s desde, 0.9 × s desde] con distribución uniforme
Si no
demanda(c) ← un número ∈ [1, 4] con distribución uniforme
Fin si
ubicacion(c) ← calcularU bicacionDentroDe(area, sector(c))
Fin para
Para cada par de clientes ci , cj (i 6= j) hacer
Si kubicacion(ci ) − ubicacion(cj )k < 2 entonces
Declarar conflicto entre ci y cj
Fin si
Fin para
Para cada s ∈ [s desde, s hasta] hacer
Imprimir n, k, s, sectores, demandas y pares de clientes conflictivos al archivo
pref ijoArchivo.n.k.s.area.semilla.dat
Fin para
Fin procedimiento
Función calcularUbicacionDentroDe(area, sector)
radio ← un número ∈ [0, 3] con distribución uniforme
α ← un ángulo ∈ [0, 2π] con distribución uniforme
coordenadaX ← desplazamientoX(sector) + cos(α) × radio
coordenadaY ← desplazamientoY (sector) + sin(α) × radio
devolver (coordenadaX, coordenadaY )
Fin función
Ejemplo
La Figura 3.2 muestra una representación gráfica de una instancia tı́pica de este grupo. Los 9
clientes se encuentran marcados mediante rombos y un número que describe la demanda. Los cı́rculos
representan a las 4 radiobases y, a modo ilustrativo se presentan cı́rculos concéntricos con centro en cada
sector, que pretenden dar la intuición acerca del alcance de cada antena. Los conflictos se diagraman
mediante lı́neas que unen a los clientes involucrados.
22
Instancias de prueba
Figura 3.2: Ejemplo de instancia de tipo B con 9 clientes, 4 radiobases y espectro disponible 100.
Los clientes se ubican en posiciones aleatorias dentro del área geográfica definida. Notar los clientes
principales pertenecientes a los sectores 0, 1, 2 y 3 con demandas 81, 89, 87 y 80 respectivamente.
3.1.3.
Grupo C
Si llamamos sec1 . . . seck , a los sectores en las instancias del
P grupo C, se tiene un sector seci , 1 ≤ i ≤ k
que requiere usar prácticamente todo el espectro, es decir, c∈seci d(c) ≈ s. Esta configuración podrı́a
resultar interesante debido a que, por un lado, no se derrocha el espectro disponible, y esta es una
caracterı́stica especialmente buscada debido a su dificultad en la resolución, como se explicó al principio
de la sección. Por otro lado, el contar además con otros sectores cuyas demandas resultantes son holgadas, hace de este grupo uno bien diferenciado, que además representa cierta heterogeneidad en cuanto
a la distribución de demandas en las radiobases, propensa a manifestarse en la práctica. Es esperable
entonces, que la solución factible de este tipo de instancias asigne prácticamente el total del espectro
disponible a los clientes del sector fijado. La manera de implementarlo fue asignándole a cada cliente
c ∈ seci una demanda en el intervalo [s desde/p, 1.4 × s desde/p] con distribución uniforme, siendo p
la cantidad de clientes de seci . Las demandas de los clientes c ∈
/ seci se encuentran en [1, 4], también
con distribución uniforme. De esta manera, seci posee una demanda total notablemente predominante
sobre el resto.
La manera de generar el conjunto Ex fue idéntica a la implementada en el grupo A y B. El Algoritmo
3 presenta el pseudocódigo de este generador de instancias.
Experimentos a priori con las desigualdades válidas
23
Algoritmo 3 Generador de instancias del grupo C
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
Procedimiento generarInstanciasC(pref ijoArchivo, n, k, s desde, s hasta, area, semilla)
Para cada sector sec hacer
desplazamientoX(sec) ← un número ∈ [0, area] con distribución uniforme
desplazamientoY (sec) ← un número ∈ [0, area] con distribución uniforme
Fin para
seci ← un sector arbitrario
p←0
Para cada cliente c hacer
sector(c) ← sector elegido al azar con distribución uniforme
Si sector(c) = seci entonces
p←p+1
Fin si
Fin para
Para cada cliente c hacer
Si sector(c) = seci entonces
demanda(c) ← un número ∈ [s desde/p, 1.4 × s desde/p] con distribución uniforme
Si no
demanda(c) ← un número ∈ [1, 4] con distribución uniforme
Fin si
ubicacion(c) ← calcularU bicacionDentroDe(area, sector(c))
Fin para
Para cada par de clientes ci , cj (i 6= j) hacer
Si kubicacion(ci ) − ubicacion(cj )k < 2 entonces
Declarar conflicto entre ci y cj
Fin si
Fin para
Para cada s ∈ [s desde, s hasta] hacer
Imprimir n, k, s, sectores, demandas y pares de clientes conflictivos al archivo
29:
pref ijoArchivo.n.k.s.area.semilla.dat
30:
Fin para
31: Fin procedimiento
22:
23:
24:
25:
26:
27:
28:
32:
33:
34:
35:
36:
37:
38:
Función calcularUbicacionDentroDe(area, sector)
radio ← un número ∈ [0, 3] con distribución uniforme
α ← un ángulo ∈ [0, 2π] con distribución uniforme
coordenadaX ← desplazamientoX(sector) + cos(α) × radio
coordenadaY ← desplazamientoY (sector) + sin(α) × radio
devolver (coordenadaX, coordenadaY )
Fin función
Ejemplo
La Figura 3.3 muestra una representación gráfica de una instancia tı́pica de este grupo. Los 8
clientes se encuentran marcados mediante rombos y un número que describe la demanda. Los cı́rculos
representan a las 4 radiobases y, a modo ilustrativo se presentan cı́rculos concéntricos con centro en cada
sector, que pretenden dar la intuición acerca del alcance de cada antena. Los conflictos se diagraman
mediante lı́neas que unen a los clientes involucrados.
24
Instancias de prueba
Figura 3.3: Ejemplo de instancia de tipo C con 8 clientes, 4 sectores y espectro disponible 100. Los
clientes se ubican en posiciones aleatorias dentro del área geográfica definida. El sector 0 presenta 2
clientes cuyas demandas son 66 y 63.
3.1.4.
Grupo D
El grupo D recibe, de entre los parámetros definidos, los siguientes: n, k, s desde, s hasta y semilla.
Si llamamos sec1 . . . seck a los sectores, se fijan dos sectores seci y secj , i 6= j, 1 ≤ i, j ≤ k en los
que el 75 % de los pares de clientes pertenecientes a uno y a otro son conflictivos, induciendo una
quasi-clique en el grafo de interferencias. Solo un 2 % del resto de pares de clientes de distintos sectores
son conflictivos. En la medida en que la quasi-clique sea lo suficientemente grande, entonces podrı́a
ocurrir que la instancia no sea factible debido a que esta estructura representarı́a algo muy similar a
un gran sector, es decir, el que resulta de los dos sectores fijados, abarcando aproximadamente el doble
de los clientes esperados. La motivación detrás de este grupo es suponer el escenario de un área que
abarca una excesiva concentración de clientes, en las que una sola radiobase podrı́a no tener capacidad
como para manejar todo el tráfico de estos clientes, por lo que se colocan dos radiobases cuyas áreas
de cobertura preferentemente coinciden. Se asignan a los clientes demandas al azar en el intervalo
[1, 15 × s desde × k/n]. El Algoritmo 4 presenta el pseudocódigo de este generador de instancias.
Experimentos a priori con las desigualdades válidas
25
Algoritmo 4 Generador de instancias del grupo D
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
Procedimiento generarInstanciasD(pref ijoArchivo, n, k, s desde, s hasta, semilla)
Para cada cliente c hacer
sector(c) ← sector elegido al azar con distribución uniforme
demanda(c) ← un número ∈ [1, 15 × s desde × k/n] con distribución uniforme
Fin para
seci ← un sector arbitrario
secj ← un sector arbitrario 6= seci
Para cada par de clientes ci , cj (i 6= j) hacer
probabilidadDeColocarArista ← un número ∈ [0, 1] con distribución uniforme
Si (sector(ci ) = seci y sector(cj ) = secj ) ó (sector(ci ) = secj y sector(cj ) = seci ) entonces
Si probabilidadDeColocarArista < 0.75 entonces
Declarar conflicto entre ci y cj
Fin si
Si no
Si probabilidadDeColocarArista < 0.02 entonces
Declarar conflicto entre ci y cj
Fin si
Fin si
Fin para
Para cada s ∈ [s desde, s hasta] hacer
Imprimir n, k, s, sectores, demandas y pares de clientes conflictivos al archivo
pref ijoArchivo.n.k.s.semilla.dat
Fin para
Fin procedimiento
Ejemplo
La Figura 3.4 muestra una representación gráfica de una instancia tı́pica de este grupo. Los 20
clientes se encuentran marcados mediante rombos y un número que describe la demanda. Los cı́rculos
representan a las 6 radiobases y, a modo ilustrativo se presentan cı́rculos concéntricos con centro en cada
sector, que pretenden dar la intuición acerca del alcance de cada antena. Los conflictos se diagraman
mediante lı́neas que unen a los clientes involucrados.
26
Instancias de prueba
Figura 3.4: Ejemplo de instancia de tipo D con 20 clientes, 6 sectores y espectro disponible 100. Las
posiciones de los clientes en este caso son ficticias dado que no se hace uso de esta lógica para este tipo
de instancia. Además de algunos conflictos esporádicos, se puede ver que todos los clientes del sector 0
presentan conflicto con los clientes del sector 1.
3.1.5.
Grupo E
El grupo E surgió de la idea de hacer instancias lo más uniformes posible.
Cada cliente posee demanda s/p, siendo p la cantidad de clientes del sector al que pertenece, con
lo cual éste es el único grupo de instancias que efectúa este cálculo independientemente de s desde. En
particular, este grupo presenta una relación con el problema clásico de coloreo [18], porque si p 6= 0 y
s = p, entonces cada cliente poseerı́a demanda 1 y esto corresponde a un problema de coloreo, ya que
el requisito entre clientes adyacentes serı́a que se les asigne una unidad distinta en el intervalo espectral
(i.e., un color distinto). En conclusión, el grupo en sı́ es reducible a una instancia de coloreo solamente
en el caso mencionado.
La manera de generar el conjunto Ex fue idéntica a la implementada en los grupos A, B y C. El
Algoritmo 5 presenta el pseudocódigo de este generador de instancias.
Experimentos a priori con las desigualdades válidas
27
Algoritmo 5 Generador de instancias del grupo E
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
Procedimiento generarInstanciasE(pref ijoArchivo, n, k, s desde, s hasta, area, semilla)
Para cada sector sec hacer
desplazamientoX(sec) ← un número ∈ [0, area] con distribución uniforme
desplazamientoY (sec) ← un número ∈ [0, area] con distribución uniforme
Fin para
Para cada cliente c hacer
sector ← sector elegido al azar con distribución uniforme
sector(c) ← sector
cantidadDeClientesDeSector(sector) ← cantidadDeClientesDeSector(sector) + 1
ubicacion(c) ← calcularU bicacionDentroDe(area, sector(c))
Fin para
12:
13:
14:
15:
16:
Para cada par de clientes ci , cj (i 6= j) hacer
Si kubicacion(ci ) − ubicacion(cj )k < 2 entonces
Declarar conflicto entre ci y cj
Fin si
Fin para
17:
18:
19:
20:
Para cada s ∈ [s desde, s hasta] hacer
Para cada cliente c hacer
demanda(c) ← s/cantidadDeV erticesDelSector(sector(c))
Fin para
21:
22:
23:
24:
Imprimir n, k, s, sectores, demandas y pares de clientes conflictivos al archivo
pref ijoArchivo.n.k.s.area.semilla.dat
Fin para
Fin procedimiento
Función calcularUbicacionDentroDe(area, sector)
radio ← un número ∈ [0, 3] con distribución uniforme
α ← un ángulo ∈ [0, 2π] con distribución uniforme
coordenadaX ← desplazamientoX(sector) + cos(α) × radio
coordenadaY ← desplazamientoY (sector) + sin(α) × radio
devolver (coordenadaX, coordenadaY )
31: Fin función
25:
26:
27:
28:
29:
30:
Ejemplo
La Figura 3.5 muestra una representación gráfica de una instancia tı́pica de este grupo. Los 8
clientes se encuentran marcados mediante rombos y un número que describe la demanda. Los cı́rculos
representan a las 4 radiobases y, a modo ilustrativo se presentan cı́rculos concéntricos con centro en cada
sector, que pretenden dar la intuición acerca del alcance de cada antena. Los conflictos se diagraman
mediante lı́neas que unen a los clientes involucrados.
28
Instancias de prueba
Figura 3.5: Ejemplo de instancia de tipo E con 8 clientes, 4 sectores y espectro disponible 100. Los
clientes se ubican en posiciones aleatorias dentro del área geográfica definida. La suma de las demandas
de cada sector se asemeja, si no es igual, al valor del intervalo de espectro disponible.
3.1.6.
Grupo F
El grupo F recibe, de entre los parámetros definidos, los siguientes: n, k, s desde, s hasta y semilla.
Se asignan conflictos entre dos determinados clientes ci y cj con una probabilidad de 0.75 si y sólo si
ci pertenece a un sector impar y cj al sector consecutivo. De esta manera, sólo hay conflictos entre
cada sector impar y el siguiente. Esta noción de agrupar a los sectores de a pares, garantizando una
descomposición del grafo original en k/2 componentes conexas, análogamente permitirı́a descomponer
el problema original en k/2 problemas. El fin con que se considera a este grupo es, por consiguiente,
investigar cómo el algoritmo Branch & Cut podrı́a tomar provecho de esta situación.
Se asignan a los clientes demandas al azar en el intervalo [1, 15 × s desde × k/n] con distribución
uniforme. La expresión 1.5×s desde×k/n apunta, como fue explicado en la sección relacionada al grupo
A, a una asignación de demandas razonable, de modo que la instancia resultante llegue a ser factible
pero tampoco generosa, es decir, con porciones de espectro disponibles, sin asignar. Nuevamente es
importante notar que la misma depende del parámetro s desde intencionalmente, en vez de depender
de s.
El Algoritmo 6 presenta el pseudocódigo de este generador de instancias.
Ejemplo
La Figura 3.6 muestra una representación gráfica de una instancia tı́pica de este grupo. Los 8
clientes se encuentran marcados mediante rombos y un número que describe la demanda. Los cı́rculos
representan a las 4 radiobases y, a modo ilustrativo se presentan cı́rculos concéntricos con centro en cada
sector, que pretenden dar la intuición acerca del alcance de cada antena. Los conflictos se diagraman
mediante lı́neas que unen a los clientes involucrados.
Experimentos a priori con las desigualdades válidas
29
Algoritmo 6 Generador de instancias del grupo F
1:
2:
3:
4:
5:
Procedimiento generarInstanciasF(pref ijoArchivo, n, k, s desde, s hasta, semilla)
Para cada cliente c hacer
sector(c) ← sector elegido al azar con distribución uniforme
demanda(c) ← un número ∈ [1, 15 × s desde × k/n] con distribución uniforme
Fin para
6:
7:
8:
Para cada par de clientes ci , cj (i 6= j) hacer
probabilidadDeColocarArista ← un número ∈ [0, 1]
Si (sector(ci ) es consecutivo a sector(cj ) y sector(ci ) es par) ó (sector(cj ) es consecutivo a
sector(ci ) y sector(cj ) es par) entonces
Si probabilidadDeColocarArista < 0.75 entonces
Declarar conflicto entre ci y cj
Fin si
Fin si
Fin para
Para cada s ∈ [s desde, s hasta] hacer
Imprimir n, k, s, sectores, demandas y pares de clientes conflictivos al archivo
pref ijoArchivo.n.k.s.semilla.dat
Fin para
Fin procedimiento
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
Figura 3.6: Ejemplo de instancia de tipo F con 8 clientes, 4 sectores y espectro disponible 100. Las
posiciones de los clientes son ficticias dado que esta instancia se basa en otros mecanismos para generar
Ex . Notar los conflictos excesivos entre clientes de los sectores 0 y 1 y, por otra parte, los sectores 2 y
3 que determinan, respectivamente, la descomposición de esta instancia en dos subinstancias.
3.2.
Algoritmos de generación de todas las desigualdades de
cada familia
Con el objetivo de determinar en qué grado contribuye el agregado de cada familia al valor óptimo
de la relajación lineal, se generaron 222 instancias aleatorias por medio de los generadores mencionados
en la sección anterior. Las mismas rondaron entre los 20 y 97 clientes, entre 2 y 40 sectores y entre
30
Algoritmos de generación de todas las desigualdades de cada familia
10 y 800 canales disponibles. Se corrió el algoritmo Branch & Bound sobre ellas, agregando todas las
desigualdades de cada familia por vez. El motivo detrás de estos experimentos es poder contar con una
noción a priori de la calidad de las mismas. Vale mencionar que para llevar a cabo el agregado de una
familia en su totalidad, es necesario contar con algoritmos de orden exponencial ya que, por lo general,
se recurrirá a iterar sobre grandes conjuntos como pueden ser las partes de los clientes conflictivos con
algún/os cliente/s determinado/s. A continuación se explican brevemente los algoritmos implementados
para su generación.
Generación de desigualdades de Clique. Para cada cliente se buscó el conjunto de partes de
los vecinos del mismo. Se agregó como desigualdad válida toda clique maximal perteneciente a
este conjunto, junto con el cliente asociado. El Algoritmo 7 detalla este procedimiento.
Algoritmo 7 Generación de desigualdades de Clique
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Procedimiento agregarCliques(conjunto de restricciones)
Para cada cliente i hacer
partesDeV ecinos ← conjunto de partes de vecinos(i)
Para cada conjunto K de clientes ∈ partesDeV ecinos hacer
Si K induce una clique maximal en vecinos(i) entonces
agregar al conjunto de restricciones la desigualdad asociada a K y a i
Fin si
Fin para
Fin para
Fin procedimiento
Generación de desigualdades de Clique Doble. Para cada par de clientes distintos se buscó el
conjunto de partes de los vecinos comunes de ambos clientes. Se agregó como desigualdad válida
toda clique maximal perteneciente a este conjunto, junto con los clientes asociados. El Algoritmo
8 clarifica esta explicación.
Algoritmo 8 Generación de desigualdades de Clique Doble
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Procedimiento agregarCliquesDobles(conjunto de restricciones)
Para cada cliente i, j con i 6= j hacer
partesDeV ecinos ← conjunto de partes de vecinos(i, j)
Para cada conjunto K de clientes ∈ partesDeV ecinos hacer
Si K induce una clique maximal en vecinos(i, j) entonces
agregar al conjunto de restricciones la desigualdad asociada a K, i y j
Fin si
Fin para
Fin para
Fin procedimiento
Generación de desigualdades de Clique Reforzada. El Algoritmo 9 da una intuición del
mismo. El mismo itera, para cada cliente, determinando posibles K 0 y K que definirı́an este tipo
de desigualdades. K 0 se calculó como los diferentes elementos del conjunto de partes de los vecinos
del cliente, y K como la diferencia entre estos vecinos y K 0 .
Generación de desigualdades de Doble Clique Reforzada. Es casi equivalente al anterior,
con la única diferencia de que se basa en vecinos de dos pares de clientes distintos cualesquiera.
Acudir al Algoritmo 10 para obtener una visión de la generación de esta familia.
Generación de desigualdades de Clique Replicada. Se optó por trabajar con una simplificación de esta familia. Recordando la Definición 2.2.5, debido a que Q necesita ser una clique y debe
haber un matching perfecto entre Q y K’ (determinarlo generarı́a un excesivo costo computacional), entonces esta generación considera desigualdades en las que |Q| = |{pk }| = 1. El Algoritmo
11 provee el detalle necesario para una mayor comprensión acerca de la generación de esta familia.
Experimentos a priori con las desigualdades válidas
31
Algoritmo 9 Generación de desigualdades de Clique Reforzada
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
Procedimiento agregarCliquesReforzadas(conjunto de restricciones)
Para cada cliente i hacer
partesDeV ecinos ← conjunto de partes de vecinos(i)
Para cada conjunto K 0 de clientes ∈ partesDeV ecinos hacer
restantes ← vecinos(i)\K 0
partesDeV ecinosRestantes ← conjunto de partes de (restantes)
Para cada conjunto K de clientes ∈ partesDeV ecinosRestantes hacer
Si K induce una clique maximal en restantes entonces
agregar al conjunto de restricciones la desigualdad asociada a K, K 0 y a i
Fin si
Fin para
Fin para
Fin para
Fin procedimiento
Algoritmo 10 Generación de desigualdades de Doble Clique Reforzada
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
Procedimiento agregarDoblesCliquesReforzadas(conjunto de restricciones)
Para cada cliente i, j con i 6= j hacer
partesDeV ecinos ← conjunto de partes de vecinos(i, j)
Para cada conjunto K 0 de clientes ∈ partesDeV ecinos hacer
restantes ← vecinos(i, j)\K 0
partesDeV ecinosRestantes ← conjunto de partes de (restantes)
Para cada conjunto K de clientes ∈ partesDeV ecinosRestantes hacer
Si K induce una clique maximal en restantes entonces
agregar al conjunto de restricciones la desigualdad asociada a K, K 0 , i y j
Fin si
Fin para
Fin para
Fin para
Fin procedimiento
Algoritmo 11 Generación de desigualdades de Clique Replicada
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Procedimiento agregarCliquesReplicadas(conjunto de restricciones)
Para cada cliente i hacer
partesDeV ecinos ← conjunto de partes de vecinos(i)
Para cada conjunto K de clientes ∈ partesDeV ecinos hacer
Si K induce una clique maximal en vecinos(i) entonces
Para cada cliente k ∈ K y cliente pk 6= i adyacente a k, pk ∈
/ K y cK (pk ) > 0 hacer
agregar al conjunto de restricciones la desigualdad asociada a K, i, k y pk
Fin para
Fin si
Fin para
Fin para
Fin procedimiento
32
Algoritmos de generación de todas las desigualdades de cada familia
Generación de desigualdades de Clique Doble Extendida. Es similar a la generación de
Clique Doble, además teniendo en cuenta un cliente t adyacente a solo uno de cada par de clientes
i y j, siendo i 6= j 6= t. Ver el Algoritmo 12.
Algoritmo 12 Generación de desigualdades de Clique Doble Extendida
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Procedimiento agregarCliquesDobleExtendidas(conjunto de restricciones)
Para cada cliente i, j, t con i 6= j, t adyacente a j y no a i hacer
partesDeV ecinos ← conjunto de partes de vecinos(i, j)
Para cada conjunto K de clientes ∈ partesDeV ecinos hacer
Si K induce una clique maximal en vecinos(i, j) entonces
agregar al conjunto de restricciones la desigualdad asociada a K, i, j y t
Fin si
Fin para
Fin para
Fin procedimiento
Generación de desigualdades de Clique Doble 2-Extendida. Es similar a la generación de
Clique Doble Extendida, además teniendo en cuenta un cliente p adyacente al cliente el cual no
es adyacente t, de cada par de clientes i y j, siendo i 6= j 6= t 6= p. Ver el Algoritmo 13.
Algoritmo 13 Generación de desigualdades de Clique Doble 2-Extendida
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Procedimiento agregarCliquesDoble2-Extendidas(conjunto de restricciones)
Para cada cliente i, j, t con i 6= j, t adyacente a j y no a i, p adyacente a i y no a j hacer
partesDeV ecinos ← conjunto de partes de vecinos(i, j)
Para cada conjunto K de clientes ∈ partesDeV ecinos hacer
Si K induce una clique maximal en vecinos(i, j) entonces
agregar al conjunto de restricciones la desigualdad asociada a K, i, j, t y p
Fin si
Fin para
Fin para
Fin procedimiento
Generación de desigualdades de Clique Doble Cerrada. Nuevamente, es similar a la generación de Clique Doble Extendida y Clique Doble 2-Extendida. Ver el Algoritmo 14.
Algoritmo 14 Generación de desigualdades de Clique Doble Cerrada
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Procedimiento agregarCliquesDobleCerradas(conjunto de restricciones)
Para cada cliente i, j, t con i 6= j, p adyacente a i y no a j, t adyacente a p, j y no a i hacer
partesDeV ecinos ← conjunto de partes de vecinos(i, j)
Para cada conjunto K de clientes ∈ partesDeV ecinos hacer
Si K induce una clique maximal en vecinos(i, j) y todo cliente k ∈ K es adyacente a p
y a t entonces
agregar al conjunto de restricciones la desigualdad asociada a K, i, j, t y p
Fin si
Fin para
Fin para
Fin procedimiento
Generación de desigualdades de Orden de Ciclo. Consiste en agregar todas las desigualdades
asociadas a todos los ciclos del grafo que modela cada instancia. Se utiliza el algoritmo presentado
en [20] para la extracción de todos los ciclos del grafo de interferencias. Partiendo del hecho de
que un ciclo de longitud k está compuesto por un camino de longitud k − 1 más una arista que
une sus extremos, la idea general del algoritmo consiste en generar todos los ciclos y caminos de
longitud k a partir de los caminos de longitud k −1, con k incrementando progresivamente en cada
iteración. Se utiliza una cola para almacenar los caminos abiertos. Al inicio del algoritmo, k = 0,
Experimentos a priori con las desigualdades válidas
33
luego la cola es inicializada con todos los caminos de longitud 0, es decir, todos los vértices. Los
caminos se generan extrayendo los elementos de la cola uno a uno, encolando a la vez los caminos
que se encuentran con la longitud que se maneja en cada iteración.
Generación de desigualdades de Ciclo Impar. Similar a la generación de desigualdades de
Orden de Ciclo, consiste en agregar todas las desigualdades asociadas a todos los ciclos impares
del grafo que modela cada instancia. El algoritmo usado para extraer todos los ciclos impares
de un grafo determinado se basa en [20], al igual que la generación anterior, descartando los de
longitud par.
Generación de desigualdades de 4 Ciclo + Clique. El Algoritmo 15 itera sobre las posibles
combinaciones de tres nodos i, j y k tales que j es adyacente a i y a k pero i no es adyacente a k,
buscando un nodo t0 que pertenezca a una clique maximal K que tenga como vecinos a i y a k.
Algoritmo 15 Generación de desigualdades de 4 Ciclo + Clique
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Procedimiento agregar4Ciclo+Cliques(conjunto de restricciones)
Para cada cliente i, k, j con i 6= k 6= j, j adyacente a k y a i, i no adyacente a k hacer
partesDeV ecinos ← conjunto de partes de vecinos(i, k)
Para cada conjunto K de clientes ∈ partesDeV ecinos hacer
Si K induce una clique maximal en vecinos(i, k) entonces
Para cada t0 ∈ K hacer
agregar al conjunto de restricciones la desigualdad asociada a i, j, k, K y t0
Fin para
Fin si
Fin para
Fin para
Fin procedimiento
3.3.
Impacto sobre la relajación lineal
Si bien existe dificultad en descubrir el efecto real del agregado de una familia a una instancia dada
debido a la variedad de las mismas, se resolvió el problema de optimización asociado con la relajación
lineal de las 222 instancias seleccionadas agregando todas las desigualdades de cada familia por separado.
Los resultados exactos se presentan en el apartado B, al final de este trabajo por su engorrosa lectura.
Sin embargo aquı́ se expone un resumen de los mismos en el Cuadro 3.1, caracterizando el promedio
de los porcentajes de ajuste respecto de la relajación lineal sin familia alguna (que es el porcentaje de
mejora del óptimo de la relajación lineal cuando se agregan las desigualdades de la familia), la cantidad
de instancias con el mayor porcentaje de ajuste y la cantidad de instancias no factibles detectadas.
Caracterı́stica \ Familias
Promedio de porcentajes de ajuste
Cantidad de instancias con el mayor porcentaje de ajuste
Cantidad de instancias no factibles detectadas
Clique
Doble
Clique
Doble
Reforzada
Clique
Doble
Extendida
Clique
Doble
2-Extendida
Clique
Doble
Cerrada
Resto
de las
Familias
34.78
209
11
2.42
6
2
9.77
23
9
6.08
17
6
2.85
17
2
0
0
0
Cuadro 3.1: Promedio de porcentajes de ajuste, cantidad de instancias con el mayor porcentaje de
ajuste y cantidad de instancias no factibles detectadas al resolver las relajaciones lineales utilizando las
distintas familias de desigualdades válidas.
En lı́neas generales se observan mejores resultados en instancias no factibles y en menor medida
en los casos de borde, es decir aquellos que son casi no factibles. Los mejores resultados se ven en
las instancias con escasa cantidad de clientes y sectores. También, suele ocurrir que para una misma
instancia, solo el agregado de ciertas desigualdades lleva a detectar la infactibilidad. Merece especial
34
Impacto sobre el Branch & Bound
interés la observación del comportamiento en las instancias no factibles, ya que es muy importante en
la práctica el poder detectar las mismas en etapas tempranas, en el contexto de la ejecución de un
algoritmo Branch & Cut.
En particular, además de observar un comportamiento notable agregando las desigualdades de Clique
Doble, las mismas son capaces de detectar más casos no factibles que cualquier otra desigualdad. Esto
último es considerado de especial relevancia dado que impacta directamente en la rapidez del algoritmo
en general. Las familias Clique, Clique Reforzada, Clique Replicada, Orden de Ciclo, Ciclo Impar y
Orden de Ciclo no logran mejoras en absoluto, con lo cual se muestran agrupadas en una columna
rotulada como resto de las familias. El grupo E resulta ser particularmente diferenciado de los demás.
En el caso del grupo A, agregando las desigualdades de Clique Doble ciertos resultados ajustan
la relajación lineal hasta un 66.91 %. Es notable también el desempeño de Clique Doble Extendida
y Clique Doble 2-Extendida. En ninguna oportunidad estos agregados mejoran el agregado de las
desigualdades de Clique Doble. Se pueden observar en menor grado aportes por parte de Doble Clique
Reforzada y Clique Doble Cerrada. Las desigualdades Clique Doble Extendida son capaces de detectar
casos no factibles, casi tantos como Clique Doble. También es capaz, excepcionalmente, Clique Doble
2-Extendida.
Refiriéndose al grupo B, Doble Clique Reforzada muestra cierta constancia respecto de sus ajustes.
En cuanto a detección de instancias no factibles, Clique Doble Extendida y Clique Doble 2-Extendida
parecen superar a Clique Doble. Doble Clique Reforzada, a pesar de su escaso aporte en general, también
tiene un comportamiento notable en esta detección.
Clique Doble alcanza su máximo ajuste con un 69.7 % en el grupo C. Clique Doble Cerrada percibe
una leve mejora respecto de los grupos anteriores.
Hay ejemplos aislados en los que tanto Clique Doble 2-Extendida como Clique Doble Cerrada exponen porcentajes de mejora mayores a los de Clique Dobleen el grupo D.
Las instancias del grupo E demuestran ser notablemente diferentes. Recordemos que en estas instancias, cada cliente posee una demanda fijada como s/p, siendo p la cantidad de clientes del sector al
que pertenece y s el espectro En primer lugar, sólo obtienen mejoras cuatro familias de desigualdades.
Estas son Clique Doble, Doble Clique Reforzada, Clique Doble Extendiday Clique Doble 2-Extendida
. En particular, Clique Doble consigue resultados aún más diferenciados que el resto y uniformes, ya
que los ajustes son siempre mayores a 70 %. El Cuadro B.5 (página 85) exhibe estos resultados, entre
el 72.15 % y el 87.88 %. Moviéndose en otro rango de porcentajes, Doble Clique Reforzada tiene cierto
aporte significativo. Clique Doble Extendida y Clique Doble 2-Extendida no demuestran ser suficientemente uniformes, ajustando solamente (pero alcanzando porcentajes de alrededor del 79 %) en escasos
ejemplos.
La ejecución del algoritmo sobre las instancias del grupo F expone una conducta similar a la que se
observa en los grupos anteriores. Sin embargo, Clique Doble muestra ciertas vulnerabilidades en algunas
instancias. Estas mismas de todas maneras son ajustadas por Clique Doble Cerrada, con lo cual estas
dos familias resultan ser un novedoso complemento.
3.4.
Impacto sobre el Branch & Bound
En esta sección se evalúa la contribución del agregado de cada familia al modelo inicial y también el
aporte de todas las familias a la vez ante la ejecución del algoritmo Branch & Bound, que, a diferencia de
la sección anterior, se ejecuta sobre todo el árbol de enumeración de soluciones. Para ello, se seleccionaron
15 instancias de cada tipo de instancia construida por los distintos generadores, siendo en total 90, que
cuentan con cantidades de sectores variadas y desde 20 hasta 97 nodos.
Se reveló el imprevisto de que el programa, en una computadora con procesador de doble núcleo y
con 1GB de memoria RAM, suele terminar por falta de memoria, en la mayorı́a de las corridas, debido
a que el árbol de enumeración tiene una tendencia a expandirse, lo cual dificulta la finalización del
programa. De modo que se fijó un tiempo tope de ejecución, a los 45 minutos. Esto es aproximado,
pudiendo llegar a extenderse hasta los 60 minutos, dado que si para ese momento, el programa está en el
medio del procesamiento de uno o más subproblemas del árbol de enumeración, continuará la ejecución
Experimentos a priori con las desigualdades válidas
35
hasta que terminen de ejecutarse. Si para ese entonces no se logra un resultado garantizado, el programa
arroja el contexto actual, informando entre otras cosas, la mejor cota dual hallada al momento. Por
ende, el correr 90 instancias agregando las 11 familias de desigualdades de a una por vez, cuyos tiempos
de ejecución en el peor caso son 60 minutos, llevó a que este conjunto de pruebas tarde aproximadamente
dos meses en correr.
Recordemos que cada procedimiento de agregación (explicados en la Sección 3.2) es de por sı́ complejo, con lo cual la cantidad arbitraria de desigualdades agregadas para cada familia fue de a lo sumo
(n + 3 ∗ m), siendo n y m la cantidad de nodos y aristas de cada instancia, respectivamente. Por ende,
cuando se incluyeron todas las familias a la vez, fueron (n + 3 ∗ m) ∗ 11 en total.
Otra particularidad fue encontrarse con instancias en las cuales, después de tiempos razonables de
ejecución (20-30 minutos, en donde suelen haber muchos nodos abiertos y por ende, una utilización
llamativa de recursos de memoria), la librerı́a CPLEX arrojaba una excepción al inicializar uno de los
tantos subproblemas, provocando que el programa termine inesperadamente.
Lamentablemente no se puede contar con datos a partir del resultado de la ejecución de un algoritmo Branch & Bound puro, es decir, sin agregar ninguna familia extra de desigualdades, debido a la
dificultad que radica en la magnitud a la que llegan este tipo de corridas, imposibilitando la obtención
de resultados.
Hubiera sido interesante también, conocer en esta sección los tiempos de ejecución, mas con el tope
de tiempo impuesto y las terminaciones del programa debido a errores de la librerı́a CPLEX, este dato
no es capaz de proveer información alguna. Esto también impacta en la imposibilidad de mostrar la
cantidad de nodos en el árbol de enumeración, ya que son relativos a la cantidad de tiempo que el
programa estuviese corriendo.
Como dificultad adicional, debido a la dificultad que existe para hallar soluciones factibles aún si se
agregan todas las desigualdades a la vez, la generación de heurı́sticas primales empieza a adquirir peso,
para ası́ poder generar cotas primales y analizar los gaps de optimalidad. Lamentablemente contando
sólo con el valor dual pero sin la cota primal, una caracterı́stica tan interesante para estudiar como el
gap de optimalidad, pierde el sentido y la definición.
La alternativa que se brinda es exponer resultados estadı́sticos generales (cantidad de instancias
resueltas, cantidad de instancias que terminaron con un resultado garantizado, etc.) en el Cuadro 3.2 y
los valores duales en los Cuadros 3.3 y 3.4 como una medida de cuán bien acotan las desigualdades de
cada familia (siempre que el programa no haya terminado inesperadamente o no se haya quedado sin
memoria). Se optó por partir estos resultados en dos Cuadros de manera tal que en el primero de ellos
se encuentren los resultados relacionados a las familias simples, es decir aquellas que no están asociadas
a dos nodos. Estas son, Clique, Clique Replicada, Clique Reforzada, Orden de Ciclo, Ciclo Impar y
4 Ciclo + Clique. En el segundo de ellos se encuentran detallados los resultados obtenidos a partir
de las desigualdades dobles, que son Clique Doble, Doble Clique Reforzada, Clique Doble Extendida,
Clique Doble 2-Extendida y Clique Doble Cerrada. También la última columna expone los resultados
de aquella ejecución que tiene en cuenta a todas las familias de desigualdades.
Respecto del Cuadro 3.2, se pueden destacar Clique Doble y el agregado de todas las familias a
la vez, ambas filas resaltadas con verde. Estos dos contextos resolvieron con resultado garantizado
prácticamente el doble de instancias que el resto de las familias individualmente. En el otro extremo,
las peores ejecuciones son mediante el uso de las familias Orden de Ciclo y Ciclo Impar, señaladas con
color rojizo.
36
Impacto sobre el Branch & Bound
Familia
Clique
Clique Doble
Clique Reforzada
Doble Clique Reforzada
Clique Replicada
Clique Doble Extendida
Clique Doble 2-Extendida
Clique Doble Cerrada
Orden de Ciclo
Ciclo Impar
4 Ciclo + Clique
Todas a la vez
Cantidad de
instancias resueltas
1
41
1
1
1
1
1
1
1
1
1
42
Cantidad de instancias no resueltas
Por falta de tiempo Por falta de memoria o excepciones
24
64
28
21
42
47
62
27
26
63
50
39
49
40
28
61
21
68
21
68
26
63
48
0
En total
89
49
89
89
89
89
89
89
89
89
89
48
Cuadro 3.2: Resultados generales luego de agregar cada familia al programa.
Respecto de los Cuadros 3.3 y 3.4, se puede apreciar que esta división no es arbitraria, en cuanto
a que las familias dobles parecen conocer la manera de resolver las instancias. Las celdas pintadas con
tono rojo son precisamente instancias que terminaron su ejecución repentinamente debido a la falta
de memoria. Las que se encuentran en tono rosado, son las instancias que terminaron su ejecución
debido al tope de tiempo impuesto. La diferencia más rigurosa es causada por la familia Clique Doble,
la cual no sólo sabe reducir significativamente la cantidad de ejecuciones que terminan por falta de
memoria a diferencia de lo que se ve en el Cuadro 3.3, como cualquier otra familia doble, sino también
encontrar numerosos valores duales garantizados, es decir, los que no están pintados de color. Si bien
Doble Clique Reforzada supera a Clique Reforzada, sus orı́genes similares llevan a comprender sus
resultados, análogamente similares. Esta analogı́a, sin embargo no se ve reflejada entre Clique y Clique
Doble. La inclusión de Clique Doble Cerrada muestra ser la más débil entre las demás de su Cuadro.
Una singularidad es, que ciertas ejecuciones si bien alcanzan la solución óptima, terminan por falta de
tiempo de todas maneras.
En esta circunstancia, se podrı́a concluir que el motivo por el cual la combinación de todas las familias
a la vez, tiene efecto positivo gracias a la utilización de Clique Doble. Más aún, el concepto doble en
general parece contar con un rol que hace la diferencia, y es particularmente eficaz. Además, si bien
es complicado hallar soluciones factibles para las familias que no son Clique Doble, una caracterı́stica
deseable que surge es entonces, al menos el grado de aporte que ellas puedan generar para encontrarlas.
Esto enfatiza la necesidad de la generación de heurı́sticas primales para ası́ contar con cotas inferiores
y, más aún, mediante el gap de optimalidad contar con una medida más clara acerca del ajuste de cada
familia de desigualdades válidas cuando no son capaces de hallar soluciones óptimas.
Experimentos a priori con las desigualdades válidas
Grupo
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
F
F
F
F
F
F
F
F
F
F
F
F
F
F
F
n
20
20
20
25
30
30
30
35
35
40
40
40
50
78
80
20
20
20
20
20
30
40
40
41
41
50
50
80
95
97
20
20
20
20
20
20
20
25
42
42
50
50
50
60
73
20
20
20
20
20
20
25
30
30
30
42
42
53
72
78
20
20
20
20
20
25
30
42
42
53
64
73
80
90
90
20
20
20
24
24
24
30
31
42
42
42
73
73
77
83
k
2
3
4
4
10
3
3
4
4
4
4
4
5
40
13
10
4
4
4
4
10
10
10
6
6
10
30
12
11
10
2
2
2
2
2
2
4
4
7
7
10
10
10
8
12
3
3
3
3
3
3
3
3
4
4
5
5
7
10
11
2
2
2
2
3
3
3
4
5
7
9
11
7
7
7
2
2
2
3
3
3
4
3
6
6
6
11
11
14
10
s
156
199
135
128
499
131
140
113
145
134
135
150
148
127
53
519
56
66
80
88
135
270
288
103
120
50
109
44
71
80
121
123
126
131
138
199
175
27
23
49
22
26
33
47
45
156
162
166
171
172
177
22
186
130
198
18
19
65
60
44
110
120
200
697
126
80
182
65
30
415
540
73
70
74
79
240
322
652
18
26
35
238
152
16
19
24
48
73
98
77
Clique
Clique Reforzada
37
Clique Replicada
Orden de Ciclo
Ciclo Impar
4 Ciclo + Clique
481
673
2813
437
4136
673
2817
437
4136
347
373
533
673
2817
437
4136
481
476
534
673
2813
437
4136
673
2816
437
4136
481
476
534
673
2813
437
4136
492
682
770
494
683
771
494
683
771
494
683
771
494
682
771
494
683
771
270
431
270
431
270
431
105
237
166
202
481
476
236
270
431
270
431
270
431
519
519
518
64
69
314
522
369
66
70
314
522
369
314
522
369
314
522
369
314
522
369
66
70
314
522
369
412
457
465
436
224
127
2458
4107
657
444
476
509
444
476
509
444
476
509
657
444
476
509
444
476
509
519
69
289
58
360
562
870
596
680
289
60
87
92
360
562
870
596
680
289
60
87
92
360
562
870
596
60
360
562
870
596
92
360
562
870
596
60
87
92
360
562
870
596
Cuadro 3.3: Cotas duales obtenidas por un algoritmo Branch & Bound con el agregado de las familias Clique,
Clique Reforzada, Clique Replicada, Orden de Ciclo, Ciclo Impar y 4 Ciclo + Clique. Las celdas en tono rojo
terminaron su ejecución debido a la falta de memoria. Las de tono rosado, debido al tope de tiempo.
38
Impacto sobre el Branch & Bound
Grupo
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
F
F
F
F
F
F
F
F
F
F
F
F
F
F
F
n
20
20
20
25
30
30
30
35
35
40
40
40
50
78
80
20
20
20
20
20
30
40
40
41
41
50
50
80
95
97
20
20
20
20
20
20
20
25
42
42
50
50
50
60
73
20
20
20
20
20
20
25
30
30
30
42
42
53
72
78
20
20
20
20
20
25
30
42
42
53
64
73
80
90
90
20
20
20
24
24
24
30
31
42
42
42
73
73
77
83
k
2
3
4
4
10
3
3
4
4
4
4
4
5
40
13
10
4
4
4
4
10
10
10
6
6
10
30
12
11
10
2
2
2
2
2
2
4
4
7
7
10
10
10
8
12
3
3
3
3
3
3
3
3
4
4
5
5
7
10
11
2
2
2
2
3
3
3
4
5
7
9
11
7
7
7
2
2
2
3
3
3
4
3
6
6
6
11
11
14
10
s
156
199
135
128
499
131
140
113
145
134
135
150
148
127
53
519
56
66
80
88
135
270
288
103
120
50
109
44
71
80
121
123
126
131
138
199
175
27
23
49
22
26
33
47
45
156
162
166
171
172
177
22
186
130
198
18
19
65
60
44
110
120
200
697
126
80
182
65
30
415
540
73
70
74
79
240
322
652
18
26
35
238
152
16
19
24
48
73
98
77
Clique D.
134
412
309
226
2922
151
195
156
373
256
202
256
382
2530
362
4136
D. Clique Reforzada
Clique D. Ext.
Clique D. 2-Ext.
Clique D. Cerrada
309
502
359
353
396
436
2715
417
4136
395
396
3,257
337
354
332
518
481
417
401
673
2819
428
4136
2812
427
4136
2281
592
694
456
563
664
575
678
480
668
757
223
220
232
232
247
371
454
635
705
179
131
188
136
155
278
475
677
721
94
105
235
161
207
298
269
427
79
82
212
479
3,150
347
373
390
527
481
476
534
673
2819
437
4136
138
154
1009
537
639
414
394
585
623
132
64
52
198
117
157
245
205
352
28
38
313
446
305
24
44
57
32
60
36
35
479
762
171
73
79
90
234
322
149
232
176
379
305
89
215
246
402
364
283
270
430
265
422
41
517
464
511
412
440
556
66
70
314
522
369
53
59
313
469
359
57
60
314
512
364
65
69
314
522
369
372
226
109
1999
3848
650
439
472
505
240
322
652
633
444
476
509
240
322
652
444
476
509
240
322
652
444
476
509
240
322
344
675
289
60
87
92
360
562
865
596
609
289
46
56
70
341
528
854
565
607
289
43
57
81
351
539
856
576
541
289
55
70
80
316
506
844
548
200
154
188
456
241
490
683
768
106
628
13
541
252
33
40
55
337
513
820
520
Todas
134
412
309
226
2922
151
195
156
373
256
202
256
382
2530
359
4136
90
110
138
154
1009
2097
2241
537
639
414
1,735
394
585
623
120
70
175
132
92
275
214
63
52
198
117
157
245
205
352
285
200
154
188
279
235
21
421
241
369
28
38
313
446
305
24
25
44
146
57
32
60
36
35
479
762
171
73
79
90
233
322
344
13
52
47
523
251
27
40
55
304
487
815
518
Cuadro 3.4: Cotas duales obtenidas por un algoritmo Branch & Bound con el agregado de las familias Clique
Doble, Doble Clique Reforzada, Clique Doble Extendida, Clique Doble 2-Extendida, Clique Doble Cerrada y
del agregado de todas a la vez. Las celdas con tono rojo terminaron su ejecución debido a la falta de memoria.
Las de tono rosado, debido al tope de tiempo.
Capı́tulo 4
El algoritmo Branch & Cut
Los algoritmos Branch & Cut se basan en el cálculo simultáneo de cotas inferiores y superiores de la
solución óptima. Las cotas superiores se obtienen por medio de la resolución de las relajaciones lineales
asociadas a cada nodo del árbol de enumeración, eventualmente ajustados por medio de planos de
corte, mientras que las cotas inferiores son halladas por medio de procedimientos heurı́sticos y cuando
la relajación lineal asociada con algún subproblema tiene óptimo entero. Las desigualdades válidas
halladas para el problema, junto con procedimientos de separación adecuados, constituyen el corazón
del algoritmo.
Este capı́tulo se centra en una descripción detallada del algoritmo Branch & Cut implementado.
Esto habla de describir dos aspectos principales: el primero es abordado en la Sección 4.1, en donde se
describen los procedimientos de separación implementados para las familias de desigualdades descritas
en capı́tulos anteriores, que contribuyen a mejorar las cotas superiores. El otro aspecto, analizado en
la Sección 4.2, se basa en presentar heurı́sticas primales que, análogamente contribuyen a encontrar
soluciones factibles y, por lo tanto, proporcionar cotas inferiores del valor óptimo.
4.1.
Procedimientos de separación
A continuación se desarrollarán los procedimientos de separación implementados. Las cliques son un
elemento recurrente en los mismos. Es esperable que el propósito de encontrar una clique de peso máxima
en un grafo con pesos en los nodos, cobre importancia dado que muchas de las familias de desigualdades
definidas en este trabajo son formadas por tales estructuras. En estas familias, maximizar estos términos
lleva a forzar a la violación de la desigualdad. Por este motivo, se abordará primero esta problemática,
estudiando luego cada procedimiento por separado.
4.1.1.
Objetivo común: búsqueda de clique con peso máxima
Dado que el problema de clique con peso máximo es NP-Completo ([6]), parte de este trabajo
consiste en idear heurı́sticas eficientes en las que no esté garantizado el resultado exacto pero que sin
embargo puedan ser de interés para aplicarlos como subrutinas de los procedimientos de separación.
Se estudiaron dos alternativas para resolver el problema. La primera se llama Best In y consiste en
un enfoque goloso en el cual la clique maximal se construye agregando repetidamente nodos que posean
el máximo peso de entre los nodos candidatos, de a uno por vez. El Algoritmo 16 da a conocer los
lineamientos de esta alternativa.
Dados los comentarios incluidos en el Algoritmo 16, la complejidad temporal resulta ser de O(n4 ),
siendo n la cantidad de nodos del grafo de entrada.
La segunda alternativa explorada apunta a un algoritmo de búsqueda local, basado en el algoritmo
presentado en [25]. La búsqueda local es una técnica común aplicada a problemas de optimización
que sirve para encontrar soluciones cercanas a la óptima en un tiempo razonable. La idea es partir de
40
Procedimientos de separación
Algoritmo 16 Heurı́stica Best In
1:
2:
3:
Función BestIn(V : un conjunto de nodos)
cliqueADevolver ← un conjunto vacı́o de nodos
Mientras cliqueADevolver no sea maximal respecto de V hacer
. La verificación es O(|V |2 ) y se
ejecuta en peor caso, n veces
4:
mejorV ertice ← el nodo ∈ V y ∈
/ cliqueADevolver con mayor peso que formarı́a una clique
en cliqueADevolver una vez agregado. . Búsqueda lineal en V para hallar el de más peso que, al agregarlo
a cliqueADevolver, conforma una clique. Esta última corroboración toma O(|cliqueADevolver|2 ) ∈ O(n2 ), y por lo
tanto el total es de O(n3 ).
Si fue encontrado, agregar mejorV ertice a cliqueADevolver
Fin mientras
Devolver cliqueADevolver
7: Fin función
5:
6:
una solución factible x y reemplazar repetidamente a x por un x0 mejorado el cual es seleccionado del
vecindario de x, definido como el conjunto de soluciones vecinas que pueden ser alcanzadas efectuando
pequeñas modificaciones a x. A raı́z de que a vecindarios más grandes la complejidad computacional
aumenta, es deseable mantenerla en niveles razonables. Para esto nace el concepto de búsqueda local
variable, una generalización de los métodos de búsqueda local.
El método que se estudia se inspira en este último, definiendo al vecindario como el conjunto de soluciones que pueden ser obtenidas mediante una secuencia de movimientos de agregar y quitar nodos. La
cantidad de movimientos varı́a dinámicamente de iteración a iteración. Cuenta con dos fases principales.
La primera, de agregación, agrega a la solución actual cuanto nodo sea posible, buscado en el conjunto
P A, definido como los nodos que están conectados con todos los vértices de la clique actual. Una vez
terminado ese proceso, se procede a la segunda fase que, análogamente quita de la solución actual cuanto
nodo sea posible, seleccionando iterativamente vértices que, al ser quitados, conducen a maximizar la
suma de los pesos de los nodos que pertenecen a P A. Este proceso que cuenta con dos fases se repite
hasta que no sea posible encontrar una solución mejor. El método recibe como parámetro una solución
factible extraı́da del grafo al que se le desea encontrar la clique máxima. El Algoritmo 17 detalla la
implementación del mismo, que cuenta con una complejidad temporal O(n3 ), sin contar la complejidad
que toma resolver el parámetro. En la Sección 5.1 se investiga qué parámetros son convenientes utilizar.
Es menester definir la notación utilizada para entender el Algoritmo 17. Llamaremos:
CC: la clique actual.
PA: el conjunto de nodos que permiten ser agregados, i.e., aquellos nodos conectados a todos los
nodos de CC.
OM: el conjunto de nodos con un eje faltante, i.e., aquellos nodos conectados a |CC| − 1 nodos de
CC, considerando que CC ⊆ OM .
4.1.2.
Procedimiento de separación de Clique
P
Al mirar la desigualdad Clique, se plantea la necesidad de maximizar k∈K dk xki para cada nodo
i a modo de forzar la violación de esta clase de desigualdades. Por consiguiente, el Algoritmo 18 toma
lo propio de la Sección anterior y es el utilizado para separar esta familia.
4.1.3.
Procedimiento de separación de Clique Doble
De manera
P muy análoga al procedimiento de separación de Clique, en esta oportunidad es menester
maximizar k∈K dk (xik − xjk ) para cada par de nodos i y j. Nuevamente se toma lo propio de la
implementación de los algoritmos heurı́sticos de clique maximal y de allı́ surge el Algoritmo 19.
El algoritmo Branch & Cut
41
Algoritmo 17 Heurı́stica de búsqueda local
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
Función BusquedaLocal(V : un conjunto de nodos)
CC, CCbest ← una cliqueP
factible inicial
pesoActual, pesoM ax ← v∈CC d(v)
Computar P A y OM
Mientras pesoM ax ≥ 0 hacer
CCprev ← CC
Si hay en PA nodos aún no marcados entonces
v ← un nodo en PA no marcado con demanda máxima
Agregar v a CC
pesoActual ← pesoActual + d(v)
Marcar v
Si pesoActual > pesoM ax entonces
CCbest ← CC
pesoM ax ← pesoActual
Fin si
Si no
Si hay en CC nodos aún no marcados entonces
P
v ← un nodo a quitar en CC tal que este efecto maximice u∈P A d(u)
Quitar v de CC
pesoActual ← pesoActual − d(v)
Desmarcar v
Fin si
Fin si
Actualizar P A y OM
Fin mientras
Devolver cliqueADevolver
Fin función
Algoritmo 18 Procedimiento de separación de la familia Clique
1:
2:
3:
4:
5:
6:
7:
8:
9:
Procedimiento Separar Clique
Para cada nodo i hacer
. Se ejecuta n veces
K ← clique maximal en N (i)
considerando como pesos de cada nodo k ∈ K a dk ∗ xki
. Depende de la complejidad temporal del algoritmo heurı́stico de clique maximal
P
Si k∈K dk xki > li entonces
. O(|K|)
Agregar la desigualdad asociada a K y a i al pool de separaciones
. O(1)
Fin si
Fin para
Fin procedimiento
Algoritmo 19 Procedimiento de separación de la familia Clique Doble
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
Procedimiento Separar Clique Doble
Para cada nodo i hacer
. Se ejecuta n veces
Para cada nodo j conectado a i hacer
. Se ejecuta n veces
K ← clique maximal en N (i) ∩ N (j)
considerando como pesos de cada nodo k ∈ K a dk ∗ (xik − xjk )
. Depende de la complejidad
P
P temporal del algoritmo heurı́stico de clique maximal
Si ri + k∈K dk (xik − xjk ) > (lj + (s − k∈K dk ) ∗ xji ) entonces
. O(|K|)
Agregar la desigualdad asociada a K, i y a j al pool de separaciones
. O(1)
Fin si
Fin para
Fin para
Fin procedimiento
42
Procedimientos de separación
4.1.4.
Procedimiento de separación de Clique Reforzada
Avanzando P
por las mismas lı́neas que los procedimientos anteriores, esta familia fuerza la necesidad
0
de maximizar
k∈K dk xki para cada nodo i, fijando a K como la diferencia entre N (i) y K. El
Algoritmo 20 detalla este procedimiento.
Algoritmo 20 Procedimiento de separación de la familia Clique Reforzada
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Procedimiento Separar Clique Reforzada
Para cada nodo i hacer
. Se ejecuta n veces
K ← clique maximal en N (i)
considerando como pesos de cada nodo k ∈ K a dk ∗ xki
. Depende de la complejidad temporal del algoritmo heurı́stico de clique maximal
K0 P
← N (i) − K P
. O(K)
Si k∈K dk xki + k∈K 0 cK (k)xki > li entonces
. O(|K| + |K 0 |)
Agregar la desigualdad asociada a K, K 0 y a i al pool de separaciones
. O(1)
Fin si
Fin para
Fin procedimiento
4.1.5.
Procedimiento de separación de Doble Clique Reforzada
P
El Algoritmo 21 fuerza la violación de la desigualdad por medio de la maximización de k∈K dk (xik −
xjk ) para cada par de nodos i y j, fijando a K 0 como la diferencia entre (N (i) ∩ N (j)) y K.
Algoritmo 21 Procedimiento de separación de la familia Doble Clique Reforzada
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Procedimiento Separar Doble Clique Reforzada
Para cada nodo i hacer
. Se ejecuta n veces
Para cada nodo j conectado a i hacer
. Se ejecuta n veces
K ← clique maximal en N (i) ∩ N (j)
considerando como pesos de cada nodo k ∈ K a dk ∗ (xik − xjk )
. Depende de la complejidad temporal del algoritmo heurı́stico de clique maximal
K 0 ← (N
(i)
∩
N
(j))
−K
. O(K)
P
P
Si ri + k∈K dk (xik − xjk ) + k∈K0 cK (k)(xik − xjk ) >
P
P
li + s − k∈K dk − k∈K 0 cK (k) xij entonces
. O(|K| ∗ 2 + |K 0 | ∗ 2)
Agregar la desigualdad asociada a K, K 0 , i y a j al pool de separaciones
. O(1)
Fin si
Fin para
Fin para
Fin procedimiento
4.1.6.
Procedimiento de separación de Clique Replicada
Tal como ocurre con la generación de las desigualdades de esta familia explicada en la Sección 3.2, el
Algoritmo 22 muestra un procedimiento
P de separación simplificado en el cual se considera |Q| = |pk | = 1,
y fuerza la necesidad de maximizar k∈K dk xki para cada nodo i, fijando a K 0 como la diferencia entre
N (i) y K.
4.1.7.
Procedimiento de separación de Clique Doble Extendida
P
El Algoritmo 23 basa su criterio de búsqueda de desigualdades a violar maximizando k∈K dk (xik −
xjk ) para cada par de nodos adyacentes i y j, y eligiendo un nodo t que minimice cK (pk )(xjt − xji ).
El algoritmo Branch & Cut
43
Algoritmo 22 Procedimiento de separación de la familia Clique Replicada
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Procedimiento Separar Clique Replicada
Para cada nodo i hacer
. Se ejecuta n veces
K ← clique maximal en N (i)
considerando como pesos de cada nodo k ∈ K a dk ∗ xki
. Depende de la complejidad temporal del algoritmo heurı́stico de clique maximal
pk ← el nodo ∈
/ N (i) y conectado con algún k ∈ K que maximiza cK (pk )(xpk k − xik )
. O(|V | ∗ |K|)
P
Si k∈K dk xki + cK (pk )(xpk k − xik ) > li entonces
. O(|K|)
Agregar la desigualdad asociada a K, k, pk y a i al pool de separaciones
. O(1)
Fin si
Fin para
Fin procedimiento
Algoritmo 23 Procedimiento de separación de la familia Clique Doble Extendida
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Procedimiento Separar Clique Doble Extendida
Para cada nodo i hacer
. Se ejecuta n veces
Para cada nodo j conectado a i hacer
. Se ejecuta n veces
K ← clique maximal en N (i) ∩ N (j)
considerando como pesos de cada nodo k ∈ K a dk ∗ (xik − xjk )
. Depende de la complejidad temporal del algoritmo heurı́stico de clique maximal
t ← un P
nodo ∈ N (j)\N (i) que minimiza cK (t)(xjt − xji )
. O(|N (j)\N (i)|)
Si ri + k∈K dk (xik − xjk ) > lj + (s − d(K) − cK (t)) xji + cK (t)xjt entonces
. O(|K| ∗ 2))
Agregar la desigualdad asociada a K, t, i y a j al pool de separaciones
. O(1)
Fin si
Fin para
Fin para
Fin procedimiento
4.1.8.
Procedimiento de separación de Clique Doble 2-Extendida
Análogo al procedimiento
anterior, el Algoritmo 24 basa su criterio de búsqueda de desigualdades a
P
violar maximizando k∈K dk (xik − xjk ) para cada par de nodos adyacentes i y j, y eligiendo nodos t
y p que minimicen cK (t)(xpi − xji ) + cK (t)(xjt − xji ).
Algoritmo 24 Procedimiento de separación de la familia Clique Doble 2-Extendida
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Procedimiento Separar Clique Doble 2-Extendida
Para cada nodo i hacer
. Se ejecuta n veces
Para cada nodo j conectado a i hacer
. Se ejecuta n veces
K ← clique maximal en N (i) ∩ N (j)
considerando como pesos de cada nodo k ∈ K a dk ∗ (xik − xjk )
. Depende de la complejidad temporal del algoritmo heurı́stico de clique maximal
t, p ← nodos ∈ N (j)\N (i) y ∈ N (i)\N (j) respectivamente, que minimizan
cK (t)(xpi − xji ) + cK (t)(xjt − xji )
. O(|N (j)\N (i)| ∗ |N (i)\N (j)|)
P
Si ri + k∈K dk (xik − xjk ) > lj +
(s − d(K) − (cK (t) + cK (p))) ∗ xji + cK (t)xpi + cK (p)xjt entonces
. O(|K| ∗ 2)
Agregar la desigualdad asociada a K, t, p, i y a j al pool de separaciones
. O(1)
Fin si
Fin para
Fin para
Fin procedimiento
44
Procedimientos de separación
4.1.9.
Procedimiento de separación de Clique Doble Cerrada
P Este procedimiento es casi idéntico al anterior, en cuanto a que intenta nuevamente maximizar
k∈K dk (xik − xjk ) para cada par de nodos adyacentes i y j, pero elige nodos t y p que hagan mı́nimo
el siguiente extracto de la ecuación original: dp ∗ (xpi − xji ) + dt ∗ (xjt − xji ) + min(dp , dt ) ∗ (xjt − xpt ).
La descripción está dada en el Algoritmo 25.
Algoritmo 25 Procedimiento de separación de la familia Clique Doble Cerrada
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Procedimiento Separar Clique Doble Cerrada
Para cada nodo i hacer
. Se ejecuta n veces
Para cada nodo j conectado a i hacer
. Se ejecuta n veces
K ← clique maximal en N (i) ∩ N (j)
considerando como pesos de cada nodo k ∈ K a dk ∗ (xik − xjk )
. Depende de la complejidad temporal del algoritmo heurı́stico de clique maximal
t, p ← nodos ∈ N (j)\N (i) y ∈ N (i)\N (j) respectivamente, que minimizan
dp ∗ (xpi − xji ) + dt ∗ (xjt − xji ) + min(dp , dt ) ∗ (xjt − xpt )
. O(|N (j)\N (i)| ∗ |N (i)\N (j)|)
P
Si ri + k∈K dk (xik − xjk ) > lj + (s − d(K) − (cK (t) + cK (p))) ∗ xji +
dp ∗ xpi + (dt + mı́n {dp , dt }) ∗ xjt − mı́n {dp , dt } ∗ xpt entonces
. O(|K| ∗ 2)
Agregar la desigualdad asociada a K, t, p, i y a j al pool de separaciones
. O(1)
Fin si
Fin para
Fin para
Fin procedimiento
4.1.10.
Procedimiento de separación de 4 Ciclo + Clique
La desigualdad relacionada dicta que, dados i, j, k ∈ V tres nodos de G tales que ij, jk ∈ E y ik ∈
/ E,
K ⊆ N (i) ∩ N (k) una clique no vacı́a y t0 ∈ K un nodo fijado, entonces:
X
li + lj ≥
αt (xkt − xit ) + mı́n {di , dj , dk }
t∈K
Siendo αt0 = dto + dk y αt = dt para t 6= t0 . Esto se puede reescribir como:
X
li + lj ≥
dt (xkt − xit ) + dk ∗ (xkt0 − xit0 ) + mı́n {di , dj , dk }
t∈K
P
Teniendo en cuenta esto, se pueden distinguir dos términos a maximizar; uno es t∈K dt (xkt − xit )
mediante la reutilización del algoritmo de búsqueda de clique con peso máxima y el otro es mediante
el hallazgo de un t0 ∈ K que maximice el término dk ∗ (xkt0 − xit0 ). El Algoritmo 26 muestra el
procedimiento asociado.
4.1.11.
Procedimiento de separación de Orden de Ciclo
La desigualdad asociada a este procedimiento no comprende estructura de clique alguna, por lo que
se utiliza un mecanismo diferente.
Estas desigualdades se pueden separar en O(nm2 )[31] siendo n la cantidad de nodos y m la de
aristas, haciendo uso de un algoritmo que resuelve el problema de ciclo de media mı́nima [2, 8]. Este
último recibe como parámetro de entrada un grafo dirigido D P
con pesos p : ED → R asignados a las
1
aristas, y consiste en encontrar un ciclo dirigido C tal que |C|
ij∈E(C) cij es mı́nimo entre todos los
ciclos dirigidos en D. Tal ciclo es llamado un ciclo de media mı́nima en D y puede ser hallado en O(nm).
El procedimiento de separación consiste en construir un digrafo D = (V, ED ) para cada par i, j ∈ V
de nodos adyacentes en el grafo G que modela al problema. Se reemplaza cada arista no dirigida en G
El algoritmo Branch & Cut
45
Algoritmo 26 Procedimiento de separación de la familia 4 Ciclo + Clique
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
Procedimiento Separar 4 Ciclo + Clique
Para cada nodo i hacer
. Se ejecuta n veces
Para cada nodo j conectado a i hacer
. Se ejecuta n veces
Para cada nodo k conectado a j y no a i hacer
. Se ejecuta n veces
K ← clique maximal en N (i) ∩ N (k)
considerando como pesos de cada nodo t ∈ K a dt ∗ (xkt − xit )
. Depende de la complejidad temporal del algoritmo heurı́stico de clique maximal
t0 ← un nodo
∈
. O(|K|)
P K que maximiza dk ∗ (xkt0 − xit0 )
Si li + lj > t∈K dt (xkt − xit ) + dk ∗ (xkt0 − xit0 ) + mı́n {di , dj , dk } entonces
. O(|K|)
Agregar la desigualdad asociada a K, i, j, k y a t0 al pool de separaciones
. O(1)
Fin si
Fin para
Fin para
Fin para
Fin procedimiento
por dos aristas dirigidas con direcciones opuestas y apuntando a los mismos nodos que la arista original.
La única excepción es ij, la cual es transformada en una arista dirigida en D. La Figura 4.1 muestra
un ejemplo de esta construcción. Los pesos p : ED → R son definidos como los valores negados de las
variables de orden de la solución, acordes a la orientación de la arista dirigida correspondiente:
−(1 + xe ) si ij = e
pe =
(4.1)
−xe
de otro modo
Figura 4.1: Construcción del digrafo a partir del grafo original.
Está demostrado en [31] que una solución dada viola una desigualdad de Orden de Ciclo tal que,
el ciclo asociado contiene a la arista ij, si y sólo si el grafo dirigido D contiene un ciclo C tal que su
media es menor a -1. El Algoritmo 27 muestra un pseudocódigo con la estructura del procedimiento de
separación asociado.
4.1.12.
Procedimiento de separación de Ciclo Impar
Considerando el grafo G = (V, E) con la función que define longitudes a las aristas l : E → R+
definida como cij = li + lj − 1 (siempre es ≥ 1 ya que, li y lj ≥ 0 y, al ser i y j dos aristas conflictivas,
P2k+1
además li 6= lj ), la desigualdad de Ciclo Impar es equivalente a i=1 ci,i+1 ≥ 3. Por tanto, se considera
violada una desigualdad Ciclo Impar si y sólo si existe un ciclo impar en G con longitud estrictamente
menor a 3. El problema relacionado a encontrar un ciclo impar mı́nimo en un grafo no dirigido con pesos
en las aristas no negativas puede ser resuelto en tiempo polinomial, efectuando iteraciones sucesivas del
algoritmo de camino más corto [17] como lo indica el Algoritmo 28.
La implementación utilizada para el algoritmo de camino más corto es el algoritmo de Dijkstra [2]
y tiene una complejidad de O(n2 ) para un grafo de n nodos. Con lo cual, dado que el procedimiento de
separación lo aplica n veces, toma O(n3 ).
46
Heurı́sticas primales
Algoritmo 27 Procedimiento de separación de la familia Orden de Ciclo
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
Procedimiento Separar Orden de Ciclo
Para cada nodo i hacer
. Se ejecuta n veces
Para cada nodo j conectado a i hacer
. Se ejecuta n veces
Construir digrafo D asociado a i y a j con la asignación de pesos definida en 4.1. . O(|V |)
Aplicar algoritmo de ciclo de media mı́nima a D
. O(|V | ∗ |E|)
Si el ciclo de media mı́nima tiene media < −1 entonces
. Verificación constante
Agregar la desigualdad asociada al ciclo que corresponde al grafo original al pool de
separaciones
. Recuperarlo cuesta O(|V | ∗ |C|2 , siendo |C| la cantidad de nodos del ciclo
Fin si
Fin para
Fin para
Fin procedimiento
Algoritmo 28 Procedimiento para hallar un ciclo impar con longitud menor a 3
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Procedimiento Ciclo impar con longitud menor a 3
Partir cada nodo v en dos nodos v1 y v2
Para cada arista (v, w) hacer
Formar dos nuevas aristas (v1 , w2 ) y (v2 , w1 )
Fin para
Para cada vértice v hacer
Hallar el camino más corto entre v1 y v2 . Este camino podrá reconstruirse como un ciclo de
menor longitud en el grafo original.
Si dicho ciclo existe y su longitud es menor a 3, entonces ha violado la desigualdad Ciclo
Impar
Fin para
Fin procedimiento
4.2.
Heurı́sticas primales
A continuación son descriptas las dos heurı́sticas primales implementadas. La primera trata de una
heurı́stica que hace foco en el redondeo de las variables para construir las soluciones factibles. La segunda
describe un modelo de programación lineal simplificado, que al ser resuelto en el momento de aplicar la
heurı́stica, genera también soluciones factibles.
4.2.1.
Heurı́stica primal de redondeo
Se buscaba generar un mecanismo sencillo para construir soluciones factibles por redondeo, de esta
manera generando cotas inferiores a partir del óptimo (fraccionario) de las relajaciones lineales de cada
nodo del árbol de enumeración de soluciones.
Se implementó un procedimiento para ser aplicado a las soluciones temporales obtenidas a partir de
las relajaciones lineales de los subproblemas. El mismo consta de dos fases. La primera, de redondeo, fija
las variables de orden en 0 ó 1 mediante sucesivas aplicaciones de clausura transitiva a las variables que
aún no son redondeadas. Esto es, para todo par de aristas ij y jk, si existe la arista ik, xij = 1 y xjk = 1,
entonces se fija xik = 1, para que xik sea coherente. Se han de considerar todas las combinaciones, que
son seis (todas las posibilidades que hay de ordenar 3 intervalos conflictivos), por ejemplo, si xij = 0 y
xik = 1, entonces se fija xjk = 1, etc. Si esta clausura no llega a ser posible de aplicar, (por ejemplo,
no hay regla que aplicar dado que ninguna variable está fijada en 0 o 1) se opta por redondear alguna
variable. La candidata a elegir es aquella que se encuentre más cercana a 0 ó a 1. La intuición detrás
de esto es que si una variable está cerca de 0 ó 1, entonces es posible que 0 ó 1 sea un buen valor para
esta variable, respectivamente. Si este redondeo origina posibles aplicaciones de clausura transitiva, se
efectúan. Si no, se selecciona otra variable a redondear con el mismo criterio. Se continúa con este
El algoritmo Branch & Cut
47
proceso hasta su finalización, el cual además garantiza una asignación coherente.
El Algoritmo 29
expone el procedimiento que, según las anotaciones, tiene complejidad O m3 . Se optó por redondear
primero las variables x de orden dado que ellas determinan el orden entre los distintos intervalos, y la
estructura de una solución está básicamente dada por este orden. Una vez efectuado, a partir del mismo
la construcción de una solución factible se ve facilitada.
Algoritmo 29 Procedimiento que fija las variables de orden en 0 ó 1
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Procedimiento redondearX(Solucion s)
Mientras haya cambios en las variables de orden de s hacer
. Primera fase, el ciclo se ejecuta en el peor caso, m veces
Para cada Par de aristas ij y jk hacer
. O(m2 )
Considerar todas las posibles combinaciones para asignar orden
entre i, j y j, aplicando reglas de transitividad
. O(1)
Fin para
xij ← una variable de orden aún no redondeada, la más cercana a 0 ó a 1
. O(m)
Si se encontró alguna (i.e., quedan aún variables por redondear) entonces
Redondear el valor de xij a 0 ó a 1 según corresponda
. O(1)
Fin si
Fin mientras
. Las variables de orden son ahora válidas
Fin procedimiento
Habiendo concluido la primera fase, y contando con un orden parcial definido por las variables de
orden, se procede a recorrer los nodos del grafo del problema mediante un orden topológico [2] de manera
tal que si i se ubica delante de j, entonces i sea recorrido antes que j. A cada nodo entonces se le asigna
el intervalo más a la izquierda posible, que no se superponga a los intervalos ya asignados. Si el nodo no
representa un cliente principal, la longitud de su intervalo se corresponderá con la demanda del mismo.
Si, por el contrario, es un cliente importante,
llamado por ejemplo v, se procurará asignarle el mayor
P
rv posible, esto es, máx lv + dv , s − k∈K dk , en donde K contiene a los vecinos de v que aún no han
sido asignados y también a los vecinos de aquel conjunto.
El Algoritmo 30 muestra un pseudocódigo de este procedimiento. El análisis
de la complejidad
computacional plasmado en el mismo, lleva a concluir que se encuentra en O m3 .
Algoritmo 30 Búsqueda de una cota inferior a partir de una solución óptima fraccionaria, aplicando
redondeo
1: Función aplicarHeuristicaPrimalDeRedondeo(Solucion solucion)
2:
redondearX(solucion)
. O(m3 )
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Para cada nodo v, siguiendo un orden topológico dado por las variables de orden hacer
. O (m)
lv ← el menor número posible considerando a los vértices ya visitados vecinos de v
. O(n)
Si v es principal entonces
. O(n)
rv ← lv + dv
. O(1)
Si no
. O(m)
K ← (los vecinos de v aún no visitados) ∪ (los vecinos de (los vecinos de v aún no
visitados))
P
rv ← máx lv + dv , s − k∈K dk )
Fin si
Fin para
Devolver si la solución es factible, la cota inferior que equivale a la suma de las longitudes de
los intervalos de los clientes principales según la solución heurı́stica hallada.
. O(k)
Fin función
4.2.2.
Heurı́stica primal aplicando un modelo de programación lineal
Se pensó una segunda heurı́stica embebiendo un modelo de programación lineal, similar al problema
que se intenta resolver, con la sola diferencia de que las variables x estarı́an fijadas de antemano en
48
Heurı́sticas primales
valores 0 ó 1 luego de aplicar el Algoritmo 29, reemplazando a las desigualdades de simetrı́a del problema
original. Al contar con esto, el problema queda reducido a decidir los valores de las variables l y r,
respetando el orden prefijado de los intervalos y maximizando la función objetivo.
Este modesto modelo cuenta con la ventaja de ser resuelto directamente en el primer nodo del árbol
de enumeración, garantizando una resolución muy eficiente. Esto sucede porque la relajación lineal
de este modelo es un poliedro con extremos enteros, con lo cual la solución óptima de la relajación
lineal obtenida por el método Simplex (que siempre retorna un óptimo en un extremo de la región
factible) es entera y no es necesario redondear las variables l y r. Esto efectivamente es ası́, ya que
si hubiera una solución z con un intervalo cuyos extremos fueran fraccionarios, se pueden generar dos
nuevas soluciones z 1 y z 2 cuyos intervalos fraccionarios y sus contiguos son corridos a la izquierda
y a la derecha respectivamente. Tales soluciones existen y son también factibles, pero entonces z se
podrı́a expresar como 12 z 1 + z 2 , es decir, el promedio de éstas, implicando que z, la solución original
fraccionaria, no es un extremo de la relajación lineal de este modelo [29].
El Algoritmo 31 expone la idea de esta heurı́stica, con su complejidad temporal resultando ser
O m3 + n2 + LR , en donde LR representa la complejidad temporal de la librerı́a para resolver el
primer nodo del árbol de enumeración de este problema.
Algoritmo 31 Búsqueda de una cota inferior a partir de una solución óptima fraccionaria, aplicando
un modelo de programación lineal
1:
2:
3:
4:
5:
6:
7:
8:
Función aplicarHeuristicaPrimalDeProgramacionLineal(Solucion s)
redondearX(solucion)
. O(m3 )
problemaLP ← Un problema de programación lineal nuevo basado en el problema original
. O(1)
Agregar a problemaLP las mismas variables que el problema original (los vectores l, r, x)
. O(n2 )
Agregar a problemaLP las mismas desigualdades de antiparalelismo y demanda
. O(n)
Agregar a problemaLP restricciones que fijan a las variables x en 0 ó 1
según el redondeo efectuado
. O(m), reemplaza a las restricciones de simetrı́a
Optimizar problemaLP , obteniendo solamente la relajación lineal
. Depende de la librerı́a CPLEX
Devolver la cota dual obtenida luego de optimizar problemaLP
. O(1)
Fin función
Capı́tulo 5
Resultados computacionales
En este capı́tulo se reportan los resultados de los experimentos computacionales realizados para
obtener la mejor configuración del algoritmo Branch & Cut descripto en el capı́tulo anterior, y para
evaluar la performance del algoritmo con esta configuración. Los primeros experimentos analizan las
distintas alternativas de inicialización al problema de clique de peso máxima mediante el método basado
en [25]. También se lo compara con el algoritmo Best-In.
Seguidamente se dan a conocer los experimentos que resultan de combinar los distintos procedimientos de separación implementados. Las caracterı́sticas valoradas de los mismos son el tiempo de
ejecución, los valores duales obtenidos, la cantidad de nodos en el árbol de enumeración y la cantidad
de separaciones efectivas obtenidos a partir de la ejecución de cada instancia.
Como consecuencia de los experimentos eligiendo distintas combinaciones de métodos de separación,
se determina aquella combinación de familias que es más eficiente para luego pasar a otra etapa de experimentación, que consiste en aplicar las heurı́sticas primales presentadas en el Capı́tulo 4. Además, se
evalúa el rendimiento de la implementación óptima del Branch & cut con el de los paquetes comerciales.
Se usa a la librerı́a de CPLEX como ejemplo de esta medida comercial.
El último ajuste consiste en determinar los parámetros óptimos que acepta el entorno Abacus. Como
resultado de esta serie de experimentos, se obtiene la manera óptima de resolver las instancias que se
estudian de acuerdo a las herramientas analizadas.
5.1.
Experimentos y ajustes de parámetros relacionados al problema de clique de peso máxima
La heurı́stica de búsqueda local mencionada en la Sección 4.1.1 que resuelve el problema de clique
de peso máximo, basada en [25], recibe como parámetro una solución factible extraı́da del grafo al que
se le desea encontrar la clique máxima. Se barajaron las siguientes posibilidades:
Una clique de tamaño 2 elegida arbitrariamente
Una clique de tamaño 3 elegida arbitrariamente
Una clique de tamaño 4 elegida arbitrariamente
La clique obtenida a partir de la ejecución del algoritmo Best-In revisado en la Sección 4.1.1
Por otro lado, se consideró al algoritmo Best-In a modo de tener una noción de su comportamiento
en relación a las posibilidades mencionadas.
El criterio de elección del parámetro más adecuado se basó en experimentos que hicieron foco en
dos aspectos que veları́an por el compromiso entre el rendimiento y la precisión: tiempo de ejecución y
50
Experimentos y ajustes de parámetros relacionados al problema de clique de peso máxima
pesos de clique obtenidos. Se probó con grafos de entre 10 y 200 nodos con pesos aleatorios, completos
o con densidades que rondaron el 50 %.
Para conocer el tiempo de ejecución en los peores casos, se optó por aplicar el algoritmo a grafos
completos. La Figura 5.1 ilustra estos resultados en escala logarı́tmica y, como es de esperar, la ejecución
del algoritmo de búsqueda local alimentada con la clique obtenida a partir de la ejecución del algoritmo
Best-In es la más costosa, al punto de inutilizarlo. Los mejores tiempos se registran, para todos los
algoritmos que no hacen uso de la heurı́stica Best-In, directa o indirectamente.
Figura 5.1: Tiempos de ejecución (ms) para cliques de 10 a 200 nodos medidos en escala logarı́tmica.
Por otra parte se experimentó con grafos rondando densidades del 50 %, con el objeto de evaluar
instancias similares a las que pueden aparecer en la práctica. Los tiempos de ejecución (ms) expuestos
en la Figura 5.2 son diferentes en relación a la Figura 5.1. Aquı́ se puede apreciar una importante mejora
de Best-In puro respecto del resto de los algoritmos. También, y probablemente a raı́z de ello, el tiempo
de ejecución del algoritmo de búsqueda local alimentado con la clique obtenida a partir de la ejecución
del algoritmo Best-In se encuentra ahora dentro de rangos razonables, pudiendo reconsiderarse como
un candidato.
Hasta ahora se puede concluir, en términos generales, que el algoritmo Best-In , a menor densidad
del grafo de entrada, su tiempo de ejecución disminuye sorpresivamente, que la inicialización con cliques
de tamaño 2, 3 y 4 poseen diferencias de tiempos de ejecución despreciables y que, si bien haciendo uso
del parámetro obtenido a partir de Best-In los tiempos de ejecución son mayores, con instancias no tan
densas, éste también sigue siendo un algoritmo competitivo.
Llegada la hora de experimentar con los resultados, se ilustran cuatro figuras que muestran porcentajes de mejora/empeoramiento vs. tiempos de ejecución del algoritmo de búsqueda local respecto del
algoritmo Best-In, una para cada distinta forma de inicialización. La Figura 5.3 muestra estos resultados.
Los algoritmos que hacen uso de cliques de tamaño 2, 3 y 4 nuevamente muestran un comportamiento homogéneo, aunque hay mayorı́a de instancias que no superan los valores retornados por el
algoritmo Best-In. Por su parte, justificando el tiempo de ejecución prolongado previamente observado,
el parámetro Best-In da a lugar varias mejoras por sobre el algoritmo Best-In . Lo interesante de aquella
figura es contar con la garantı́a de que el algoritmo se comportará igual o mejor que el Best-In crudo. En
definitiva, uno podrı́a pensar que por su naturaleza golosa, Best-In no promete resultados de calidad,
sin embargo se observa con cierta sorpresa que se encuentra a la altura de los algoritmos de búsqueda
local presentados.
Resultados computacionales
51
Figura 5.2: Tiempos de ejecución (ms) para grafos con 10 a 200 nodos y aproximadamente 50 % de
densidad
Considerando la habitual dificultad en lograr un compromiso entre la eficiencia y la precisión, los
procedimientos de separación serán corridos mediante el algoritmo Best-In , apostando a que la rapidez
de la ejecución será la caracterı́stica más valorada ya en un contexto de Branch & Cut.
Figura 5.3: Porcentajes de mejora/empeoramiento vs. tiempos de ejecución de las cliques encontradas
para grafos con 10 a 200 nodos y aproximadamente 50 % de densidad respecto del algoritmo Best-In.
5.2.
Contribución de cada familia de desigualdades básicas
En base a los resultados obtenidos en la Sección 3.4 y a los que surgirı́an de la sección actual, se
seleccionaron distintas combinaciones de familias de desigualdades para efectuar los cortes sobre las
mismas instancias de la Sección 3.4, es decir, un total de 90, con cantidades de sectores variadas y desde
52
Contribución de cada familia de desigualdades básicas
20 hasta 97 nodos. La manera de elegir las combinaciones tuvo su desarrollo a partir de una partición
inicial de las mismas:
Clique Doble
Clique, Clique Reforzada, Clique Replicada, Orden de Ciclo, Ciclo Impar y 4 Ciclo + Clique
Doble Clique Reforzada, Clique Doble Extendida, Clique Doble 2-Extendida y Clique Doble Cerrada
A partir de ella, se llegó a una primera observación: era llamativamente notorio el impacto positivo
que tiene la familia de desigualdades de Clique Doble.
Una cualidad interesante (y a priori no obvia) es que si bien la única familia que parecı́a realizar
aportes significativos es Clique Doble, las familias en general dobles (como fueron definidas en la Sección
3.4) si bien no solı́an terminar exitosamente (a excepción de Clique Doble), contribuı́an positivamente
en todos los aspectos que se tienen en cuenta, como ser una reducción en el tiempo de ejecución o en
la cantidad de nodos en el árbol de enumeración, etc. siempre que eran combinadas con Clique Doble.
Con lo cual, el resto de las combinaciones son el resultado de determinar cuál o cuáles familias dobles
acompañan mejor a Clique Doble. En particular, se consideraron como ayudantes de Clique Doble a
aquellas familias que en la Sección 3.4 tuvieron la menor cantidad de instancias terminadas por falta de
memoria, es decir, Doble Clique Reforzada, Clique Doble Extendida y Clique Doble 2-Extendida. La
Figura 5.4 diagrama el razonamiento que fue llevando a armar cada combinación.
Figura 5.4: Diagrama que ilustra las decisiones que llevaron a experimentar cada combinación de
desigualdades elegida.
Como es de esperar, se cuenta con muchos casos en los cuales el programa termina por falta de
memoria o por no poder resolverse dentro de los 45 minutos, convención tomada también en la sección
anterior. En este último caso se registran los valores tal como están por más de que la instancia no
haya concluido. Esto y la terminación por falta de memoria, naturalmente tienen un impacto negativo
en la combinación de familias que lo causan, por consiguiente se han de valorar aquellas instancias que
terminan exitosamente su ejecución.
En esta etapa del trabajo aún no se analiza el comportamiento de las heurı́sticas primales, el cual
está presente en la próxima sección, lo que provoca que la medida de la calidad de las combinaciones
de familias sigan siendo las cotas duales generadas por el algoritmo utilizando dichas familias.
Resultados computacionales
53
Debido a la diversidad de resultados, se optó por exponer una tabla primaria con los resultados
generales, y cuatro tablas adicionales que detallan, para cada combinación e instancia, el tiempo de
ejecución, el valor dual, la cantidad de nodos en el árbol de enumeración y la cantidad de cortes
exitosos respectivamente. Las celdas de color rojo indican que la instancia no se puede resolver por falta
de memoria, y por otra parte, las que están en color rosado indican que la instancia no se pudo resolver
en el tope impuesto de 45 minutos.
El Cuadro 5.1 detalla los resultados generales obtenidos a partir de ejecuciones que incluyen a los
métodos de separación de distintas combinaciones de familias de desigualdades. La primera fila describe
la estadı́stica particular extraı́da, y debe ser leı́da utilizando la referencia colocada justo debajo del
Cuadro.
(1)
Clique
Clique Ref.
Clique Repl.
Orden de Ciclo
Ciclo Impar
(2)
Doble C. Ref.
C.Doble Ext.
C.Doble 2-Ext.
C.Doble Cerr.
(3)
Doble
Clique
(4)
(5)
(6)
Clique
Doble Clique
C. Ref.
C. Repl.
Doble Clique
Doble C. Ref.
C.Doble Ext.
C.Doble 2-Ext.
Doble Clique
Doble C. Ref.
C.Doble Ext.
C.Doble 2-Ext.
Doble Clique
Doble C. Ref.
Doble Clique
C.Doble Ext.
C.Doble 2-Ext.
0
33.33
66.67
20.00
11.11
0.46
0
34.44
65.56
13.33
10.00
0.49
0
35.56
64.44
15.56
11.11
0.53
4 Ciclo + C.
(8)
(7)
C.Doble Cerr.
(a)
32.22
11.11
1.11
0
0
(b)
67.78
74.44
33.33
35.56
36.67
(c)
1.11
12.22
65.56
64.44
63.33
(d)
0
3.33
10.00
21.11
15.56
(e)
0
1.11
15.56
20.00
3.33
(f)
0.10
0.18
0.68
2.07
0.36
(a): Porcentaje de instancias no resueltas por falta de memoria
(b): Porcentaje de instancias no resueltas por falta de tiempo
(c): Porcentaje de instancias resueltas en forma óptima
(d): Porcentaje de instancias resueltas con la menor cantidad de nodos
(e): Porcentaje de instancias resueltas con el menor tiempo de ejecución
(f): Promedio de porcentaje de éxito de los métodos de separación
Cuadro 5.1: Resultados generales luego de separar diversas combinaciones de familias al programa.
La diferencia más pronunciada está dada por las dos primeras combinaciones respecto del resto, en
las cuales escasas instancias son resueltas exitosamente, dando lugar también a numerosas ejecuciones
que se descartan por la falta de memoria. Si bien Clique Doble viene siendo la más prometedora, es
de poco fiar si se incluyen solamente sus cortes (combinación (3)), ya que se encontró una instancia
irresoluble por falta de memoria. El resto de las combinaciones ya no cuenta con este problema no menor,
y en cambio merece una observación agudizada. Si se trata del porcentaje de instancias resueltas con
el menor tiempo de ejecución o con la menor cantidad de nodos, (las filas (d) y (e)) las combinaciones
(3), (4), (6), (7) y (8) se encuentran en rangos razonables en todos los casos. Si bien hay porcentajes
diferenciados en los tiempos de ejecución, estos en general difieren por unos pocos segundos. Llamativo
es, sin embargo, el porcentaje de éxito de los métodos de separación para la combinación (4), que supera
holgadamente al resto de las combinaciones. Cierto es, que esta combinación cuenta con caracterı́sticas
ligeramente diferentes a las combinaciones (5), (6), (7) y (8) debido a que de no ser por la inclusión de
Clique Doble, se busca un corte por nodo y no por arista. Esto provoca que el número total de cortes
a buscar sea menor en cada método de separación, provocando una mejor ponderación ante cada corte
exitoso.
Las secciones subsiguientes exploran en detalle los tiempos de ejecución, los valores duales, la cantidad de nodos en el árbol de enumeración y la cantidad de separaciones efectivas, respectivamente.
5.2.1.
Tiempos de ejecución
Los tiempos de ejecución de las distintas combinaciones se especifican en el Cuadro 5.2, siempre
y cuando la instancia haya resuelto exitosamente, ya que aún cuando la instancia hubiera terminado
debido al tope de tiempo, significa que tardó alrededor de 45 minutos con lo cual estos datos no aportan
información alguna y están omitidos.
54
Contribución de cada familia de desigualdades básicas
Hay más instancias de tipo E que encuentran la solución óptima más rápido que el resto de los
grupos (si terminan), pudiendo resolverse, por ejemplo, en tan solo 0.28 segundos mediante el uso de
la combinación (4), y sin llegar a superar los 736 segundos, también a través de la misma combinación.
Las instancias de a partir de 40 nodos son en general difı́ciles de resolver en el lı́mite del tiempo, para
todos los grupos. La combinación (1) además tiene dificultades especiales para probar optimalidad, y
es la que más presenta casos que terminan por falta de memoria. Siguiendo con un comportamiento
poco eficaz está la combinación (2), con lo cual es inminente la repercusión que tiene la inclusión de los
cortes de Clique Doble. Aún ası́, la instancia de grupo B que tiene 50 nodos, 30 sectores y un espectro
de 109 sorpresivamente cuenta con problemas de memoria. Si bien es el único caso, es importante notar
que las demás combinaciones no cuentan con este imprevisto en aquella instancia. Se destaca el tiempo
de ejecución obtenido en la combinación (6) para la instancia del grupo D, con 72 nodos, 10 sectores y
un espectro de 60, ya que ninguna otra combinación está siquiera cerca de resolverla. Como se observa
en el Cuadro 5.1, si bien la combinación (4) es la que cuenta con tiempos de ejecución mı́nimos en más
ocasiones, el Cuadro 5.2 homogeneı́za este hecho, comprobando que ocasionalmente, las diferencias entre
las combinaciones son despreciables e igual de útiles. Tal es el caso, por ejemplo, de muchas instancias
pertenecientes al grupo E, que de por sı́ se caracterizan especialmente por su eficiencia en numerosas
combinaciones e instancias.
Resultados computacionales
55
Clique
Grupo
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
F
F
F
F
F
F
F
F
F
F
F
F
F
F
F
n
k
s
20
20
20
25
30
30
30
35
35
40
40
40
50
78
80
20
20
20
20
20
30
40
40
41
41
50
50
80
95
97
20
20
20
20
20
20
20
25
42
42
50
50
50
60
73
20
20
20
20
20
20
25
30
30
30
42
42
53
72
78
20
20
20
20
20
25
30
42
42
53
64
73
80
90
90
20
20
20
24
24
24
30
31
42
42
42
73
73
77
83
2
3
4
4
10
3
3
4
4
4
4
4
5
40
13
10
4
4
4
4
10
10
10
6
6
10
30
12
11
10
2
2
2
2
2
2
4
4
7
7
10
10
10
8
12
3
3
3
3
3
3
3
3
4
4
5
5
7
10
11
2
2
2
2
3
3
3
4
5
7
9
11
7
7
7
2
2
2
3
3
3
4
3
6
6
6
11
11
14
10
156
199
135
128
499
131
140
113
145
134
135
150
148
127
53
519
56
66
80
88
135
270
288
103
120
50
109
44
71
80
121
123
126
131
138
199
175
27
23
49
22
26
33
47
45
156
162
166
171
172
177
22
186
130
198
18
19
65
60
44
110
120
200
697
126
80
182
65
30
415
540
73
70
74
79
240
322
652
18
26
35
238
152
16
19
24
48
73
98
77
Clique Ref.
Clique Repl.
Orden de Ciclo
Ciclo Impar
4 Ciclo + C.
78.39
Doble C. Ref.
C.Doble Ext.
C.Doble 2-Ext.
C.Doble Cerr.
2.18
79.66
44.73
49.76
31.69
Clique
Doble Clique
C. Ref.
C. Repl.
Doble Clique
Doble C. Ref.
C.Doble Ext.
C.Doble 2-Ext.
C.Doble Cerr.
Doble Clique
Doble C. Ref.
C.Doble Ext.
C.Doble 2-Ext.
1.99
1.28
2.2
100.78
19.39
45.85
7.31
172.65
798.01
1293.76
1719.64
342.87
1.73
0.88
4.48
32.6
228.03
49.93
7.85
65.93
2155.56
331.66
3.42
9.67
3.21
175.07
516.05
46.22
161.62
2341.42
41.53
101.23
2.92
9.14
3.03
168.7
187.95
42.4
38.4
2195.9
46.59
92.65
2.34
3.88
1.01
72.55
211.48
40.91
9.08
130.78
101.11
872.39
177.46
356.24
0.67
382.25
1122.68
581.84
8.18
16.76
204.67
22.64
93.18
122.25
6.45
0.53
358.69
1.33
130.92
123.59
51.16
176.92
443.49
1.45
96.75
90.14
9.32
269.33
148.78
0.90
200.58
908.99
8.25
199.85
892.29
7.87
Doble
Clique
207.82
47.88
2387.46
27.79
705.39
88.71
33.60
245.22
1.15
902.73
643.97
184.90
78.97
13.53
1886.82
168.98
76.02
108.9
6.78
Doble Clique
C.Doble Ext.
C.Doble 2-Ext.
2.48
46.09
6.56
41.88
132.18
35.01
112.09
628.71
1225.17
264.31
645.15
3.20
163.11
40.10
61.79
6.78
168.56
597.92
2018.22
7.57
259.06
21.06
245.74
19.28
130.11
710.10
2164.55
1073.53
627.09
41.90
2205.38
38.18
115.86
33.51
24.85
100.05
44.67
279.80
8.32
8.75
16.87
20.18
135.51
9.45
30.84
1728.89
574.9
18.96
127.79
8.78
219.18
19.68
42.24
5.06
323.17
18.89
65.34
79.00
15.95
29.67
234
247.4
25.56
84.84
25.05
126.81
39.52
103.9
14.49
42.81
34.42
28.07
68.59
251.44
30.98
105.7
938.74
14.04
18.96
228.65
1748.34
3.49
0.28
6.12
5.37
4.2
5.08
10.20
10.33
10.56
8.19
19.59
11.93
8.11
4.85
4.84
23.17
8.56
18.98
28.24
35.31
136.09
261.62
275.03
11.70
0.81
2.71
13.36
8.97
22.16
59.03
59.42
492.10
735.94
687.46
1.85
5.89
9.73
49.42
14.3
30.56
42.29
48.57
274.40
534.35
568.12
1.86
5.48
8.74
43.02
13.03
27.7
39.24
45.68
241.78
470.75
499.57
18.17
4.64
5.95
30.03
10.02
21.89
32.20
38.56
170.68
329.62
348.50
1.59
4.80
8.29
36.73
11.39
24.97
35.68
42.67
208.00
402.36
427.13
2300.67
71.03
60.09
59.71
25.49
26.39
666.20
13.42
13.85
49.23
44.69
23.14
156.67
46.08
96.99
72.17
8.47
13.79
768.91
1354.04
515.95
154.24
416.04
679.2
77.24
386.56
640.5
765.17
60.01
1157.92
1284.44
209.78
1989.22
116.46
998.20
Doble Clique
Doble C. Ref.
140.55
1549.1
1040.17
152.09
2317.14
109.31
476.19
532.43
147.93
1752.6
1937.25
86.12
47.34
15.36
28.82
109.82
43.95
10.92
121.25
8.92
13.84
73.53
30.99
57.49
11.36
56.05
54.66
343.61
11.45
87.25
9.85
10.71
32.73
144.37
33.06
36.95
105.14
10.20
30.16
30.96
10.56
33.27
347.47
515.63
259.35
9.25
93.9
24.23
128.92
247.29
891.18
962.76
14.84
25.95
753.55
65.17
205.40
347.45
Cuadro 5.2: Tiempos de ejecución de las distintas combinaciones para las instancias que se pudieron resolver
en forma óptima. Las celdas en tono rojo terminaron su ejecución debido a la falta de memoria. Las de tono
rosado, debido al tope de tiempo.
56
Contribución de cada familia de desigualdades básicas
5.2.2.
Cotas duales
Se muestran en el Cuadro 5.3 las cotas duales generadas por el algoritmo Branch & Cut utilizando
las distintas combinaciones de familias de desigualdades válidas.
En esta ocasión figuran además las cotas obtenidas aún para las instancias no resueltas dentro del
tope de tiempo. Curiosamente hay repetidas instancias con cotas duales que, si bien están indicadas en
tono rojizo (lo que significa que no terminaron su ejecución) coinciden con el valor óptimo. El algoritmo
no considera a estas instancias terminadas por no contar todavı́a con un resultado garantizado, dado
que las cotas primales son estrictamente menores que la cota dual. Se muestran en color blanco las
instancias que se resolvieron en forma óptima. Esto permite ver que a mayor tamaño de instancia, más
lejos está la cota dual del resultado esperado, siempre y cuando no se tengan en cuenta las cotas duales
desorbitantes que brindan las combinaciones (1) y (2).
De acuerdo con estos experimentos, es posible clasificar a las instancias en las siguientes categorı́as:
Instancias que no se pudieron resolver dentro del lı́mite de tiempo de 45 minutos. Por ejemplo, la
instancia de grupo D con 53 nodos, 7 sectores y un espectro de valor 65.
Aquellas que son difı́ciles de resolver y sólo alguna/s combinación/es las resuelve en forma óptima.
Por ejemplo, la instancia resuelta solamente por la combinación (6), de grupo D con 72 nodos, 10
sectores y un espectro de valor 60.
Aquellas que son resueltas por las combinaciones comprendidas entre (3) y (8) inclusive. Por
ejemplo, la instancia del grupo A con 20 nodos, 3 sectores y un espectro de valor 199.
Es evidente que las instancias de mayor tamaño son las más acordes al primer ı́tem, y por otra
parte, las instancias que son representadas por el segundo ı́tem son de particular importancia dado
que ayudan a realmente entender cuál combinación tiene más éxito, es decir cuál es la que finalmente
resuelve más instancias de este tipo. Lamentablemente, no hay mayores diferencias, y son pocas las
instancias con estas caracterı́sticas, sin embargo la combinación (6) es la que más instancias resuelve
de manera exitosa. Se podrı́a concluir que (3), (6), (7) y (8) son las combinaciones de cortes que mejor
resuelven este tipo de instancias.
Resultados computacionales
Grupo
n
k
s
20
20
20
25
30
30
30
35
35
40
40
40
50
78
80
20
20
20
20
20
30
40
40
41
41
50
50
80
95
97
20
20
20
20
20
20
20
25
42
42
50
50
50
60
73
20
20
20
20
20
20
25
30
30
30
42
42
53
72
78
20
20
20
20
20
25
30
42
42
53
64
73
80
90
90
20
20
20
24
24
24
30
31
42
42
42
73
73
77
83
2
3
4
4
10
3
3
4
4
4
4
4
5
40
13
10
4
4
4
4
10
10
10
6
6
10
30
12
11
10
2
2
2
2
2
2
4
4
7
7
10
10
10
8
12
3
3
3
3
3
3
3
3
4
4
5
5
7
10
11
2
2
2
2
3
3
3
4
5
7
9
11
7
7
7
2
2
2
3
3
3
4
3
6
6
6
11
11
14
10
156
199
135
128
499
131
140
113
145
134
135
150
148
127
53
519
56
66
80
88
135
270
288
103
120
50
109
44
71
80
121
123
126
131
138
199
175
27
23
49
22
26
33
47
45
156
162
166
171
172
177
22
186
130
198
18
19
65
60
44
110
120
200
697
126
80
182
65
30
415
540
73
70
74
79
240
322
652
18
26
35
238
152
16
19
24
48
73
98
77
Clique
Clique Ref.
Clique Repl.
Orden de Ciclo
Ciclo Impar
57
Doble C. Ref.
C.Doble Ext.
C.Doble 2-Ext.
C.Doble Cerr.
Doble
Clique
Clique
Doble Clique
C. Ref.
C. Repl.
4 Ciclo + C.
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
F
F
F
F
F
F
F
F
F
F
F
F
F
F
F
1059
2139
2284
597
669
472
1984
493
683
771
218
227
337
94
105
237
167
207
297
270
431
305
40
512
436
556
64
69
314
522
3014
230
268
288
479
309
323
366
436
2481
347
4136
90
110
138
154
1043
2109
2242
563
664
1807
446
621
705
120
70
120
132
92
275
212
66
66
200
217
375
291
212
200
213
286
250
30
404
310
429
52
51
279
469
310
25
146
223
126
2390
3955
639
443
475
503
239
322
652
68
679
283
59
86
92
360
562
870
596
Doble Clique
Doble C. Ref.
C.Doble Ext.
C.Doble 2-Ext.
Doble Clique
Doble C. Ref.
Doble Clique
C.Doble Ext.
C.Doble 2-Ext.
134
412
309
226
2922
151
195
156
373
256
202
256
382
2456
347
4136
90
110
138
154
1039
2097
2241
537
639
414
1754
394
585
623
120
70
120
132
92
275
212
54
52
193
117
157
245
205
346
285
200
154
188
266
201
21
367
241
361
27
36
278
446
269
24
25
44
146
57
32
60
36
35
479
762
171
73
79
90
158
198
308
13
50
47
481
159
27
40
45
256
434
755
472
134
412
309
226
2922
151
195
156
373
256
202
256
382
2458
347
4136
90
110
138
154
1039
2097
2241
537
639
414
1747
394
585
623
120
70
120
132
92
275
210
54
52
193
117
157
245
205
346
285
200
154
188
266
201
21
367
241
361
27
36
278
446
269
24
25
44
146
57
32
60
36
35
479
762
171
73
79
90
158
198
308
13
50
47
481
159
27
40
45
256
434
755
472
134
412
309
226
2922
151
195
156
373
256
202
256
382
2459
347
4136
90
110
138
154
1039
2097
2241
537
639
414
1765
394
585
623
120
70
120
132
92
275
214
54
52
193
117
157
245
205
346
285
200
154
188
266
201
21
367
241
361
27
36
278
446
269
24
25
44
146
57
32
60
36
35
479
762
171
73
79
90
158
198
308
13
50
47
481
159
27
40
45
256
434
755
472
C.Doble Cerr.
246
474
369
390
527
481
476
531
673
2819
437
4136
Doble Clique
Doble C. Ref.
C.Doble Ext.
C.Doble 2-Ext.
456
226
127
2427
4017
633
444
476
509
158
198
308
23
61
58
481
235
27
40
53
265
441
772
472
134
412
309
226
2922
151
195
156
373
256
202
256
382
2459
347
4136
90
110
138
154
1039
2097
2241
537
639
414
394
585
623
120
70
120
132
92
275
214
54
52
193
117
157
245
205
346
285
200
154
188
266
201
21
367
241
361
27
36
278
446
269
24
25
44
146
57
32
60
36
35
479
762
171
73
79
90
158
198
308
13
50
47
481
159
27
40
45
256
434
755
472
134
412
309
226
2922
151
195
156
373
256
202
256
382
2459
347
4136
90
110
138
154
1039
2097
2241
537
639
414
1753
394
585
623
120
70
120
132
92
275
214
54
52
193.00
117.00
157
245
205
346
285
200
154
188
266
201
21
367
241
361
27
36
278
446
269
24
25
44
146
57
32
60
36
35
479
762
171
73
79
90
158
198
308
13
50
47
481
159
27
40
45
256
434
755
472
134
412
309
226
2922
151
195
156
373
256
202
256
382
2457
347
4136
90
110
138
154
1039
2097
2241
537
639
414
1756
394
585
623
120
70
120
132
92
275
210
54
52
193
117
157
245
205
346
285
200
154
188
266
201
21
367
241
361
27
36
278
446
269
24
25
44
146
57
32
60
36
35
479
762
171
73
79
90
158
198
308
13
50
47
481
159
27
40
45
256
434
755
472
Cuadro 5.3: Cotas duales obtenidas por el algoritmo Branch & Cut utilizando distintas combinaciones
de desigualdades válidas. Las celdas en tono rojo terminaron su ejecución debido a la falta de memoria.
Las de tono rosado, debido al tope de tiempo.
58
5.2.3.
Contribución de cada familia de desigualdades básicas
Cantidad de nodos en el árbol de enumeración
La cantidad de nodos en el árbol de enumeración de las distintas combinaciones y grupos de instancias
se ve reflejado en el Cuadro 5.4. La lectura de los valores de las celdas pintadas en rosado deben ser
leı́das con precaución dado que en aquellos casos, se especifica la cantidad de nodos en el árbol de
enumeración cumplidos los 45 minutos, y esto no necesariamente informa la cantidad real de nodos que
puede llegar a albergar. Ejemplos pronunciados de este estilo pueden ser vistos para la combinación
(1) en las instancias B, con 95 y 97 nodos. Allı́, la cantidad de nodos en el árbol de enumeración
es bajı́sima; 37 y 43 respectivamente, pero en esta ocasión no hace más que determinar que dichas
ejecuciones procesan cada nodo de manera costosa respecto del tiempo que se les brinda.
Son de destacar las instancias del grupo E de 20 y 25 nodos, procesadas usando la combinación
(4), en las que la instancia es resuelta en un único nodo. Sin embargo, las combinaciones (3), (5), (6),
(7) y (8) resuelven las instancias en este grupo mediante una enumeración aceptablemente moderada.
Más aún, la cantidad de nodos en ellas es la misma. Esto habla de que sorpresivamente, las lı́neas de
resolución de estas instancias son prácticamente las mismas. No serı́a de extrañar que la cantidad de
separaciones efectivas sea también equivalente.
Los árboles más grandes, como es de esperar, son los dados por las combinaciones (1) y (2), pudiendo
estos llegar al orden de los 27000 nodos. No en vano son vulnerables a la falta de memoria. En cuanto
a las combinaciones que se encuentran entre (3) y (8) inclusive, puede observarse que los árboles más
grandes son aquellos con pocas combinaciones. Para empezar, se observa a la combinación (3) que
solo contempla a los cortes de Clique Doble, siguiéndole (7) que agrega a Doble Clique Reforzada. Las
combinaciones (5), (6) y (8) se presentan distinguidamente pequeñas, aunque la combinación (4) cuenta
con árboles aún más limitados. Esto es atribuible a la efectividad en los cortes, sin olvidar que además
ésta incluye a familias bien diferenciadas, que después no se vuelven a tener en cuenta en las demás
combinaciones.
Resultados computacionales
Grupo
n
k
s
20
20
20
25
30
30
30
35
35
40
40
40
50
78
80
20
20
20
20
20
30
40
40
41
41
50
50
80
95
97
20
20
20
20
20
20
20
25
42
42
50
50
50
60
73
20
20
20
20
20
20
25
30
30
30
42
42
53
72
78
20
20
20
20
20
25
30
42
42
53
64
73
80
90
90
20
20
20
24
24
24
30
31
42
42
42
73
73
77
83
2
3
4
4
10
3
3
4
4
4
4
4
5
40
13
10
4
4
4
4
10
10
10
6
6
10
30
12
11
10
2
2
2
2
2
2
4
4
7
7
10
10
10
8
12
3
3
3
3
3
3
3
3
4
4
5
5
7
10
11
2
2
2
2
3
3
3
4
5
7
9
11
7
7
7
2
2
2
3
3
3
4
3
6
6
6
11
11
14
10
156
199
135
128
499
131
140
113
145
134
135
150
148
127
53
519
56
66
80
88
135
270
288
103
120
50
109
44
71
80
121
123
126
131
138
199
175
27
23
49
22
26
33
47
45
156
162
166
171
172
177
22
186
130
198
18
19
65
60
44
110
120
200
697
126
80
182
65
30
415
540
73
70
74
79
240
322
652
18
26
35
238
152
16
19
24
48
73
98
77
Clique
Clique Ref.
Clique Repl.
Orden de Ciclo
Ciclo Impar
59
Doble C. Ref.
C.Doble Ext.
C.Doble 2-Ext.
C.Doble Cerr.
Doble
Clique
Clique
Doble Clique
C. Ref.
C. Repl.
4 Ciclo + C.
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
F
F
F
F
F
F
F
F
F
F
F
F
F
F
F
12633
4155
4239
3423
3335
2629
2213
197
37
43
7827
7361
7431
6557
1945
1875
2217
2281
2219
375
199
9627
6685
2573
6717
5773
1629
1417
613
265
14389
10763
10849
8323
8167
4781
5113
4893
1973
345
269
107
139
187
105
57
24867
2078
6037
6857
6779
6593
1677
153
715
2847
331
2761
2103
241
1119
4747
3271
3295
17445
661
621
8281
7313
6655
6967
9031
8333
2317
267
6145
6307
721
913
687
2627
795
5631
4109
1873
2721
1187
665
401
147
67
75
3691
3361
4445
7071
2789
2253
1509
1577
1349
135
161
119
49
Doble Clique
Doble C. Ref.
C.Doble Ext.
C.Doble 2-Ext.
Doble Clique
Doble C. Ref.
Doble Clique
C.Doble Ext.
C.Doble 2-Ext.
21
181
67
2349
1117
163
147
6383
109
155
4281
4305
1713
309
259
49
161
197
21
339
1275
5863
5819
593
2329
63
5885
1383
181
575
327
41
2881
2107
75
2265
2423
63
2187
697
119
845
59
677
535
33
189
97
155
29
155
91
223
105
939
269
153
499
723
655
53
5135
39
3875
49
59
29
65
45
69
93
99
115
133
139
477
439
409
127
81
411
677
447
65
207
447
369
299
405
209
21
115
29
1329
2969
237
49
587
421
2169
457
945
3369
2351
1193
73
10695
3023
937
465
287
11097
955
495
685
63
14761
3075
833
1261
377
1623
1769
521
5455
7899
7265
113
6645
5995
181
845
363
1823
1433
1077
59
343
49
53
157
299
963
51
465
1823
871
1391
3737
1669
53
10133
39
7653
49
59
29
65
45
69
93
99
115
133
139
1027
1353
1369
209
453
369
1469
883
835
2129
397
621
793
861
419
21
803
165
679
901
155
513
9055
2111
2285
527
1201
1993
207
275
165
249
77
113
15
1609
6963
6425
1867
5503
63
6571
1507
195
655
33
65
3251
2393
205
2583
2959
45
3589
3461
71
851
63
677
609
89
125
377
35
99
105
29
229
77
419
193
499
603
2751
893
53
5871
39
4221
49
59
29
65
45
69
93
99
115
133
139
413
495
401
31
53
1703
659
553
65
783
905
351
299
557
171
C.Doble Cerr.
27335
29787
5537
3519
3873
1833
1945
1969
639
213
121
2527
Doble Clique
Doble C. Ref.
C.Doble Ext.
C.Doble 2-Ext.
14749
6087
12217
9309
8473
7827
1655
1129
1155
369
595
389
6157
7509
4859
699
383
67
141
1691
259
285
1025
255
21
43
87
2133
401
311
49
913
3983
3853
4871
1073
4413
2869
1307
67
2471
6713
3731
79
437
1881
227
685
901
63
3819
1155
1599
4377
12821
749
7209
12603
4965
11893
625
7347
8097
153
843
405
2417
1959
1165
145
293
43
1699
143
231
1215
211
433
3101
2799
1865
4271
2229
53
14111
39
11051
49
59
29
65
45
69
93
99
115
133
139
1455
1741
1555
419
385
423
2229
1265
2073
3275
3621
843
1027
1179
577
17
15
129
601
2943
307
49
317
8943
897
7177
603
3719
2319
1205
33
1865
12315
249
9995
333
4551
687
241
1613
7
13549
3487
1011
1365
8447
11229
537
2537
8559
3851
8261
349
7531
825
63
63
131
2393
1863
379
105
185
1181
1155
163
319
1177
1271
183
163
1011
1693
3909
1439
1
12561
1
9691
1
1
7
31
43
79
145
149
347
353
335
1303
1473
1307
165
139
3027
2129
1113
803
3155
3429
961
921
1201
517
21
181
67
2349
2919
163
583
6383
109
155
4007
4031
1653
225
183
49
205
261
103
263
3743
5865
5853
593
2343
63
5711
1399
127
567
327
41
2871
629
81
2303
2427
63
3135
2887
119
845
59
619
521
51
277
111
247
35
105
59
271
41
59
137
671
447
2347
643
53
4865
39
3683
49
59
29
65
45
69
93
99
115
133
139
563
483
441
49
41
145
585
373
117
231
423
327
295
381
201
Cuadro 5.4: Cantidad de nodos en el árbol de enumeración utilizando distintas combinaciones de
desigualdades válidas. Las celdas en tono rojo terminaron su ejecución debido a la falta de memoria.
Las de tono rosado, debido al tope de tiempo.
60
Experimentos con las heurı́sticas primales y CPLEX
5.2.4.
Cantidad de separaciones efectivas
La cantidad de cortes hallados de las distintas combinaciones y grupos de instancias se encuentra
señalada en el Cuadro 5.5.
Una primera observación es la que se desprende de que las familias dobles (sin incluir a Clique Doble)
no son capaces de generar corte alguno para las instancias del grupo E. Más aún, como se anticipaba
en la sección anterior, esto se ve reflejado en todas las combinaciones que incluyen a Clique Doble y a
cualquiera de ellas, ya que la cantidad de cortes es la misma, es decir, son todos atribuibles a Clique
Doble. Curioso es que las familias que acompañan a Clique Doble en la combinación (4) sı́ aportan
cortes, y en consecuencia se presenta una mayor cantidad de cortes para este grupo y combinación, sin
embargo se puede también reflexionar acerca de que estos cortes, por sı́ solos, poco pueden aportar, ya
que la combinación (1) los efectúa y aún ası́ no se logra obtener un resultado óptimo en aquellos casos.
Otra observación que empalma con la ya mencionada es que no necesariamente es la cantidad sino
la calidad del corte lo que hace la diferencia. Tal es el caso, por ejemplo, de la instancia del grupo C con
43 nodos, 7 sectores y un espectro de valor 49, en el que las combinaciones (4) y (6) permiten encontrar
el óptimo con 609 y 1504 cortes respectivamente, que son valores que poco tienen que ver el uno con el
otro. Adicionalmente, la combinación (7) aplicando 903 cortes no puede cerrar el árbol de enumeración
dentro de los 45 minutos.
5.2.5.
Determinación de familias convenientes para incluir en el algoritmo
Los mejores resultados se observan con las combinaciones que contienen a Clique Doble, quedando
descartadas por completo las combinaciones (1) y (2).
Adoptando como caracterı́stica más valorada a la cantidad de instancias que se pueden resolver
en forma óptima, se opta por seleccionar a (6) como la mejor combinación y, en consiguiente, la que
formará parte de los experimentos subsiguientes en este capı́tulo. De haber tomado otra caracterı́stica
como la más buscada, como ser, un moderado consumo de memoria por ejemplo, se hubiera elegido otra
combinación dado que las combinaciones (3), (4), (5), (6), (7) y (8) desarrollan desempeños parecidos
sin embargo novedosamente enfocados a diversas caracterı́sticas.
5.3.
Experimentos con las heurı́sticas primales y CPLEX
Partiendo de la combinación de los métodos de corte de Clique Doble, Clique Doble Extendida,
Clique Doble 2-Extendida y Doble Clique Reforzada que resulta de la sección anterior, se realizaron
experimentos con las instancias preseleccionadas, en los siguientes escenarios:
Algoritmo Branch & Cut incluyendo la combinación de cortes, agregando la heurı́stica primal de
redondeo, explicada en la Sección 4.2.1
Algoritmo Branch & Cut incluyendo la combinación de cortes, agregando la heurı́stica primal que
utiliza un modelo de programación lineal, explicada en la Sección 4.2.2
Algoritmo Branch & Bound a través de la librerı́a comercial CPLEX
El Cuadro 5.6 resume los hallazgos encontrados. En él se especifican los tiempos de ejecución, los
gaps de optimalidad y la cantidad de nodos en los árboles de enumeración sobre las instancias en
cada escenario. De manera de poder comparar resultados, también se incluyen las columnas que hacen
referencia a los resultados obtenidos a partir de la combinación de cortes sin heurı́sticas. Como es
sabido, estas últimas al no poseer cotas duales presentan gaps de optimalidad con valor indefinido. Las
celdas pintadas en rojizo señalan las ejecuciones que no terminaron exitosamente dentro del tope de 45
minutos. Las celdas pintadas en gris indican que se encontró una solución óptima con una tolerancia en
el gap de optimalidad menor a 0.10 %. Los próximos dos párrafos estudian los resultados obtenidos en
esta Sección.
Resultados computacionales
Grupo
n
k
s
20
20
20
25
30
30
30
35
35
40
40
40
50
78
80
20
20
20
20
20
30
40
40
41
41
50
50
80
95
97
20
20
20
20
20
20
20
25
42
42
50
50
50
60
73
20
20
20
20
20
20
25
30
30
30
42
42
53
72
78
20
20
20
20
20
25
30
42
42
53
64
73
80
90
90
20
20
20
24
24
24
30
31
42
42
42
73
73
77
83
2
3
4
4
10
3
3
4
4
4
4
4
5
40
13
10
4
4
4
4
10
10
10
6
6
10
30
12
11
10
2
2
2
2
2
2
4
4
7
7
10
10
10
8
12
3
3
3
3
3
3
3
3
4
4
5
5
7
10
11
2
2
2
2
3
3
3
4
5
7
9
11
7
7
7
2
2
2
3
3
3
4
3
6
6
6
11
11
14
10
156
199
135
128
499
131
140
113
145
134
135
150
148
127
53
519
56
66
80
88
135
270
288
103
120
50
109
44
71
80
121
123
126
131
138
199
175
27
23
49
22
26
33
47
45
156
162
166
171
172
177
22
186
130
198
18
19
65
60
44
110
120
200
697
126
80
182
65
30
415
540
73
70
74
79
240
322
652
18
26
35
238
152
16
19
24
48
73
98
77
Clique
Clique Ref.
Clique Repl.
Orden de Ciclo
Ciclo Impar
61
Doble C. Ref.
C.Doble Ext.
C.Doble 2-Ext.
C.Doble Cerr.
Doble
Clique
Clique
Doble Clique
C. Ref.
C. Repl.
4 Ciclo + C.
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
F
F
F
F
F
F
F
F
F
F
F
F
F
F
F
846
678
512
296
411
151
293
444
632
684
1723
1645
2115
1262
908
1181
203
146
236
826
718
1502
1186
1855
719
1022
1047
1291
786
513
718
408
366
372
401
572
456
501
1370
4142
4806
115
1219
1361
1140
1033
494
1134
1147
768
794
998
1417
4188
1498
2054
1096
2072
1957
869
1784
2434
1232
1515
1573
3256
3483
1014
1107
1068
1101
1016
1090
2789
4757
1383
1445
4129
4044
4418
816
2982
1112
1463
295
278
181
104
214
383
577
404
2849
3245
2753
1472
2014
1806
776
699
1183
1073
761
1093
1238
Doble Clique
Doble C. Ref.
C.Doble Ext.
C.Doble 2-Ext.
Doble Clique
Doble C. Ref.
Doble Clique
C.Doble Ext.
C.Doble 2-Ext.
113
172
166
245
701
343
308
612
320
488
862
902
1849
4500
4837
147
1511
1432
808
1964
505
1252
1369
693
939
142
1265
1973
4997
2374
1525
560
2246
2358
708
2435
2592
744
1510
1504
227
235
161
3745
4138
658
943
678
908
604
871
1270
4684
816
1339
3121
2548
4789
987
3847
142
1365
140
1757
74
137
187
273
188
246
247
251
298
511
536
4916
4659
4536
911
694
1148
4540
4548
1357
2258
2074
4937
4580
4501
4985
113
113
108
185
284
275
212
355
397
542
454
470
967
1408
1708
61
924
791
716
631
171
443
366
285
303
142
449
981
1895
1203
667
765
769
683
850
904
901
557
749
903
199
208
169
1694
1953
888
456
747
439
432
604
1195
3246
376
585
2529
1934
2703
715
1727
142
625
140
887
74
137
187
273
188
246
247
251
298
511
536
4383
3879
3373
665
700
628
2834
3967
1585
2062
1432
3850
3382
3462
4240
113
267
176
202
628
300
333
534
528
715
519
693
1662
3706
4672
132
1690
1246
1363
741
463
1115
1188
790
967
142
1200
1910
4819
2121
556
517
2066
2060
853
2228
2503
519
1462
1744
214
220
153
3670
3804
724
712
826
503
701
688
578
4850
731
986
2275
3185
4862
1036
3249
142
1230
140
1602
74
137
187
273
188
246
247
251
298
511
536
4762
4921
4648
507
588
1578
4792
4854
1103
2295
2261
4760
4644
3883
4728
C.Doble Cerr.
0
369
726
718
565
965
751
650
1193
438
573
126
Doble Clique
Doble C. Ref.
C.Doble Ext.
C.Doble 2-Ext.
0
0
0
0
0
0
0
0
0
4950
4990
4730
1596
1543
1780
4047
4776
940
1515
2138
4649
4947
2860
4477
113
79
96
159
183
263
197
330
379
472
495
418
736
1110
1644
40
588
653
631
341
132
277
229
250
266
142
729
1464
910
562
592
463
580
595
587
643
633
554
649
196
193
158
1306
1451
618
433
482
272
631
395
794
2918
331
439
1844
1868
2266
635
1391
142
452
140
609
74
137
187
273
188
246
247
251
298
511
536
3556
3282
2784
547
514
452
2133
3447
1215
1428
1425
3043
2838
2656
3203
122
103
146
189
366
286
215
329
456
468
542
362
907
1511
1752
101
716
970
548
1021
233
489
372
229
321
130
555
830
1494
982
998
714
583
832
733
827
1068
663
732
609
195
228
198
1329
1508
624
437
453
691
723
456
806
3215
627
419
1052
1645
2454
671
1721
110
514
110
729
100
116
225
271
180
210
289
327
664
695
697
3763
3812
3622
426
517
772
2186
3952
1096
1441
1447
2553
2809
2375
3341
113
174
166
245
751
343
380
613
320
488
854
880
1795
4684
4730
147
1547
1557
1251
1765
540
1252
1371
693
939
142
1321
1936
4873
2260
1532
560
2215
1956
644
2380
2785
745
1622
1933
227
235
161
3977
4154
708
1062
683
1047
611
830
1135
4611
629
645
2455
4309
4967
1164
3670
142
1403
140
1736
74
137
187
273
188
246
247
251
298
511
536
4972
4601
4691
488
654
895
4967
4805
1554
2186
2260
4867
4892
4591
4978
Cuadro 5.5: Cantidad de cortes agregados dinámicamente con cada combinación de familias de desigualdades válidas. Las celdas en tono rojo terminaron su ejecución debido a la falta de memoria. Las
de tono rosado, debido al tope de tiempo.
62
Experimentos con las heurı́sticas primales y CPLEX
Ejecución del Algoritmo Branch & Bound por medio de CPLEX
La observación más directa resulta de comprobar que son muy pocas las instancias que terminan
exitosamente o con cierta tolerancia, cuando son corridas mediante CPLEX. En total son 5 y pertenecen
todas al grupo B. Además, la cantidad de nodos en esta circunstancia llega a ser desmesurada, pudiendo
alcanzar con facilidad los 7 millones en el grupo A. Más aún, los gaps de optimalidad que resultan de
esta ejecución son hartamente holgados. El gap más grande encontrado es de 601.64 % para la instancia
del grupo E, con 30 nodos, 3 sectores y valor de espectro de 182, y en general el grupo E presenta
los mayores gaps. Por el contrario, el grupo B cuenta con gaps pequeños. En general, el valor primal
devuelto en estos experimentos resultaba ser el valor óptimo, pero lamentablemente llegados los 45
minutos de ejecución aún no se contaba con tal garantı́a.
En definitiva, queda constatado que el algoritmo Branch & Cut con la combinación de cortes supera
ampliamente a esta ejecución, lo que revela el impacto positivo y la importancia de las desigualdades
válidas utilizadas para tal fin.
Ejecución del Algoritmo Branch & Cut aplicando las heurı́sticas
El hecho de aplicar heurı́sticas revela un nuevo valor, el primal, el cual facilita el hallazgo de soluciones factibles. En lo que respecta a la utilización de la heurı́stica primal de redondeo, ésta es capaz
de resolver exitosamente una instancia que no habı́a sido resuelta hasta el momento, que es la perteneciente al grupo E, con 20 nodos, 2 sectores y un valor de espectro de 120. Más allá de este ejemplo y
algunas leves disminuciones en la cantidad de nodos del grupo E, no se observan mejoras significativas.
Asimismo, los gaps de optimalidad no resultan buenos en esta ocasión. Por otra parte, los tiempos de
ejecución no difieren mucho de los que no aplican heurı́sticas, indicando que este agregado de lógica
extra prácticamente no modifica el desempeño total del algoritmo.
Los resultados relacionados con la inclusión de la heurı́stica primal que utiliza un modelo de programación lineal son un tanto ambiguos: se observan dos instancias que si bien suelen terminar exitosamente
antes de los 45 minutos, aplicando esta heurı́stica ya no pueden llegar a una solución óptima. Estas
instancias son, del grupo A, con 35 nodos, 4 sectores y 113 de espectro, y del grupo C, con 42 nodos
y 7 sectores y 23 de espectro. Esto se debe a que, a diferencia de la heurı́stica anterior, ésta se vale
de cotas primales de mejor calidad, logrando gaps que son alrededor de 10 veces menores que los de la
heurı́stica primal de redondeo, pero a cambio consume una porción de tiempo que es relevante en la
ejecución, pudiendo llegar a duplicar el tiempo original. Si la reducción en el árbol de enumeración no
es significativa, entonces esta configuración no es de utilidad. Por el contrario, el grupo E es manejado
brillantemente, ya que encuentra solución en el primer nodo para todos los casos que terminan exitosamente. Al ser tan eficiente, se nota una mejora en los tiempos de ejecución, pero como se observa,
necesariamente la reducción del árbol tiene que ser significativa para que esto impacte en el tiempo de
ejecución. Como resultado, se podrı́a concluir que esta heurı́stica primal es un arma de doble filo, una
herramienta inestable que puede enlentecer al programa, o bien resolverlo de manera sorprendentemente
veloz.
Resultados computacionales
Grupo
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
B
B
B
B
B
B
B
B
B
B
B
B
B
B
B
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D
E
E
E
E
E
E
E
E
E
E
E
E
E
E
E
F
F
F
F
F
F
F
F
F
F
F
F
F
F
F
n
k
s
20
20
20
25
30
30
30
35
35
40
40
40
50
78
80
20
20
20
20
20
30
40
40
41
41
50
50
80
95
97
20
20
20
20
20
20
20
25
42
42
50
50
50
60
73
20
20
20
20
20
20
25
30
30
30
42
42
53
72
78
20
20
20
20
20
25
30
42
42
53
64
73
80
90
90
20
20
20
24
24
24
30
31
42
42
42
73
73
77
83
2
3
4
4
10
3
3
4
4
4
4
4
5
40
13
10
4
4
4
4
10
10
10
6
6
10
30
12
11
10
2
2
2
2
2
2
4
4
7
7
10
10
10
8
12
3
3
3
3
3
3
3
3
4
4
5
5
7
10
11
2
2
2
2
3
3
3
4
5
7
9
11
7
7
7
2
2
2
3
3
3
4
3
6
6
6
11
11
14
10
156
199
135
128
499
131
140
113
145
134
135
150
148
127
53
519
56
66
80
88
135
270
288
103
120
50
109
44
71
80
121
123
126
131
138
199
175
27
23
49
22
26
33
47
45
156
162
166
171
172
177
22
186
130
198
18
19
65
60
44
110
120
200
697
126
80
182
65
30
415
540
73
70
74
79
240
322
652
18
26
35
238
152
16
19
24
48
73
98
77
63
Tiempos de ejecución
Sin H.
H. 1
H. 2
2.92
9.14
3.03
168.70
187.95
42.40
38.40
2195.90
46.59
92.65
2.91
9.57
3.21
179.82
202.13
43.56
39.68
2356.92
42.78
97.61
0.75
21.58
6.54
337.81
349.88
80.22
77.45
1.45
96.75
90.14
9.32
269.33
148.78
1.47
98.82
91.95
9.74
274.68
163.09
2.7
149.93
149.65
16.01
303.47
237.93
199.85
892.29
7.87
230.83
960.18
10.27
380.06
1758.17
1.20
245.74
19.28
249.01
19.91
381.19
22.16
2205.38
38.18
2220.31
39.23
2702.92
58.23
30.84
1728.89
574.9
18.96
127.79
8.78
31.31
1804.55
602.45
22.92
152.59
10.77
1029.26
9.28
1.39
0.86
13.84
73.53
30.99
57.49
11.36
56.05
54.66
14.42
77.2
31.47
58.84
11.80
58.10
55.74
22.24
124.70
52.38
100.78
18.20
35.64
102.72
33.27
347.47
515.63
259.35
34.96
359.86
533.42
269.84
59.78
684.10
827.28
446.43
753.55
837.59
1610.54
5.37
0.45
8.19
5.67
0.73
4.72
1.86
5.48
8.74
43.02
13.03
27.7
39.24
45.68
241.78
470.75
499.57
0.41
5.84
1.88
27.09
13.60
31.00
45.43
55.87
8.31
351.19
63.60
0.2
0.78
1.01
2.56
2.04
3.03
3.42
4.06
13.70
20.17
20.20
44.69
23.14
156.67
45.53
23.89
158.03
87.31
41.02
146.14
77.24
386.56
640.5
80.56
402.45
664.34
152.45
727.40
1224.54
Gaps de optimalidad
Cplex
66.84
176.17
52.44
0.67
0.26
1270.31
343.37
109.93
867.64
Cantidad de nodos
Sin H.
H. 1
H. 2
Cplex
Sin H.
H. 1
H. 2
Cplex
0
0
0
0
0
0
0
0
0
0
∞
∞
∞
∞
∞
0
0
0
0
0
0
∞
∞
0
0
0
∞
∞
∞
∞
0
0
∞
0
0
∞
∞
0
0
0
0
0
0
∞
∞
0
0
0
0
0
0
0
∞
0
0
0
0
∞
0
∞
0
∞
0
∞
0
0
0
0
0
0
0
0
0
0
0
∞
∞
∞
0
0
0
∞
∞
0
0
0
∞
∞
∞
∞
0
0
0
0
0
0
0
0
0
0
206.06
282.09
169.01
222.73
395.71
0
0
0
0
0
0
61.38
45.32
0
0
0
111.45
77.48
114.29
52.70
0
0
757.14
0
0
67.68
107.84
0
0
0
0
0
0
754.17
198.28
0
0
0
0
0
0
0
143.05
0
0
0
0
631.58
0
333.87
0
0
0
0.69
0
0
0
0
0
0
0
0
0
0
0
90.36
115.22
81.18
0
0
0
196.91
78.65
0
0
0
150.98
150.87
80.19
198.73
0
0
0
0
0
0
0
6.12
0
0
20.24
14.80
8.22
49.45
33.46
0
0
0
0
0
0
2.79
0.09
0
0
0
11.13
6.20
6.36
6.50
0
0
25.00
18.92
0
4.96
8.81
0
26.83
0
0
0
0
39.46
17.69
0
0
0
0
0
0
0
20.33
0
0
0
0
9.02
0
21.17
0
∞
0
∞
0
0
0
0
0
0
0
0
0
0
0
3.27
11.24
48.79
0
0
0
6.65
9.66
0
0
0
24.27
14.51
6.19
34.09
62.69
16.50
6.47
46.68
3.54
103.54
81.95
128.15
37.01
73.44
116.27
90.46
68.07
39.57
35.89
0
0.02
0.03
0.08
0.01
0.96
1.90
1.64
9.05
7.80
13.16
20.97
19.64
16.20
20.60
48.21
177.04
61.15
51.86
123.22
22.55
33.67
62.28
88.42
20.11
30.68
24.91
15.02
33.68
24.73
23.54
27.79
71.41
30.32
52.73
27.25
71.43
30.58
70.80
41.48
125.34
90.61
12.23
14.60
31.45
539.97
212.50
536.03
285.62
263.16
418.48
601.64
460.87
231.31
319.66
342.26
200.47
452.05
449.37
416.67
25.29
60.88
39.10
118.90
33.84
37.84
34.90
67.09
98.45
102.46
86.97
50.64
31.40
13.27
31.58
21
181
67
2349
1117
163
147
6383
109
155
4281
4305
1713
309
259
49
161
197
21
339
1275
5863
5819
593
2329
63
5885
1383
181
575
327
41
2881
2107
75
2265
2423
63
2187
697
119
845
59
677
535
33
189
97
155
29
155
91
223
105
939
269
153
499
723
655
53
5135
39
3875
49
59
29
65
45
69
93
99
115
133
139
477
439
409
127
81
411
677
447
65
207
447
369
299
405
209
21
181
67
2349
1117
163
147
6383
109
155
4137
4113
1653
281
251
49
161
197
21
339
1275
5463
5493
593
2329
63
5293
1213
173
509
327
41
2859
2107
75
2249
2393
63
2187
697
119
845
59
653
513
33
189
97
155
29
155
91
219
105
939
269
153
483
723
609
53
1
39
3797
1
59
3
31
45
69
93
99
1
83
13
475
431
405
127
81
411
673
431
65
207
447
345
277
379
195
1
181
65
2069
1117
163
147
4101
109
155
2335
2385
957
205
121
39
161
197
21
239
1015
3517
3699
549
2319
1
3435
669
93
255
327
25
2131
1883
77
1681
1943
63
1939
693
17
1
1
429
309
33
189
97
155
29
55
91
163
99
1093
269
153
339
723
341
1
3419
1
2707
1
1
1
1
1
1
1
1
1
1
1
353
373
349
127
81
217
547
331
65
207
447
219
179
283
99
4630100
6406500
7092600
4300000
3578700
1770000
2162900
1762900
1850300
1036600
1413900
1181000
769300
126900
368000
900
1396500
483600
137000
1057300
6868300
4506600
4196300
3024400
2739300
5302500
3261300
907100
630600
658900
2254700
1935700
2581800
2847800
2301200
2541900
1857900
1473500
2006200
1333500
2495300
2797400
2602300
484000
633900
3366000
3433300
3001500
4249300
2864300
3337900
2403400
1366000
3292100
2982900
1192000
2232600
1086000
1243000
533100
3064600
2520400
3590900
1997900
5820500
3294100
1494800
1419700
1408800
869800
1176800
954200
858200
545900
552100
1350700
1487100
1792400
2251500
2349100
2210800
1883700
956400
1022100
1298600
1087400
1671900
1550400
1005700
559200
Cuadro 5.6: Tiempos de ejecución, gaps de optimalidad y cantidad de nodos en el árbol de enumeración ejecutando el
algoritmo Branch & Cut con la mejor combinación de desigualdades, sin heurı́sticas (columna Sin H.), con la heurı́stica
primal de redondeo (1), con la heurı́stica primal que utiliza un modelo de programación lineal (2), y en otras lineas, la
ejecución del algoritmo Branch & Bound por medio de CPLEX, respectivamente.
64
Experimentos con los parámetros del Branch & Cut
5.4.
Experimentos con los parámetros del Branch & Cut
El entorno Abacus ofrece la posibilidad de ajustar una serie de parámetros, de los cuales cuatro
fueron extraı́dos para analizar. Ellos son:
EnumerationStrategy: permite especificar la forma en la que se recorre el árbol de enumeración.
Las posibilidades son:
• BestFirst, que selecciona el subproblema con el mejor valor dual (en este caso, el que tenga
una cota dual máxima)
• DepthFirst, que selecciona el subproblema con nivel máximo en el árbol de enumeración
• BreadthFirst, ı́dem con nivel mı́nimo
• DiveAndBest que, mientras se desconozca una solución factible primal, selecciona el próximo
subproblema usando la estrategia DepthFirst, y en otro caso, BestFirst.
BranchingStrategy: determina qué variable se selecciona para ramificar. Hay dos opciones:
• CloseHalf, que selecciona la variable cuya fracción esté más próxima a 0.5
• CloseHalfExpensive, que selecciona la variable cercana a 0.5 que tenga el coeficiente de la
función objetivo con el valor absoluto más alto.
SkipFactor: define la frecuencia con que se aplican los cortes en los subproblemas. Acepta cualquier número entero positivo. Por ejemplo, si es 1, significa que los cortes son generados en cada
subproblema.
MaxIterations: Limita la cantidad de iteraciones de la fase de generación de cortes de un problema determinado. El valor válido es cualquier número entero positivo. Si en cambio es -1, indica
que esta cantidad es ilimitada.
A continuación se detallan los resultados obtenidos a partir de la variación de cada uno de estos
parámetros, y el Cuadro 5.5 los ilustra. De manera de no probar con todas las combinaciones, se
fijan los parámetros que no se evalúan. Los valores predeterminados son BestFirst, CloseHalf, 1 y -1
respectivamente. Más aún, estos fueron los valores utilizados para efectuar los experimentos expuestos
en las secciones anteriores. Se seleccionaron 4 instancias de cada grupo, haciendo un total de 24 de las
90 instancias con que se venı́a trabajando.
El Cuadro 5.5a resume los resultados obtenidos variando el parámetro EnumerationStrategy.
DepthFirst y BreadthFirst no demuestran ser buenas estrategias de enumeración de subproblemas,
e indiscutiblemente la mejor es BestFirst, cuya corrida total demoró menos de la mitad de tiempo que
BreadthFirst. Los valores duales fueron equivalentes en todas las corridas, a excepción de DiveAndBest
que ajustó mejor una instancia que terminaba debido al tope de tiempo.
El Cuadro 5.5b muestra los resultados que resultan de variar el parámetro de BranchingStrategy.
Destacan a CloseHalfExpensive por sobre CloseHalf.
El Cuadro 5.5c detalla los resultados obtenidos probando con SkipFactor puesto en 1, 5, 10, 20 y
50. La calidad de los mismos disminuye a medida que este valor aumenta. Con valor 1 se obtienen los
mejores resultados en cuanto a todas las caracterı́sticas que se analizan.
Finalmente, el Cuadro 5.5d refleja los resultados obtenidos del resultado de variar MaxIterations.
Se utilizaron los valores 5, 10, 20, 50 y -1, que representa una cantidad de ilimitada de iteraciones. A
partir de 20, la cantidad de instancias que terminan exitosamente se normaliza y conforman resultados
similares. La ejecución que es producto de usar el valor 5 en este parámetro presenta caracterı́sticas
especiales, aquellas instancias que encuentran la solución óptima son más eficientes que el resto en
tiempo de ejecución y cantidad de nodos, pero son solo 12, menos que las 18 que se resuelven con otros
valores utilizados. Se puede concluir que cualquier valor mayor a 20 significa una ejecución equilibrada
en las caracterı́sticas que se analizan.
Resultados computacionales
65
Caracterı́stica \ Estrategia de enumeración del árbol
Cantidad de instancias resueltas en forma óptima
Tiempo total de ejecución
Cantidad de instancias resueltas con el menor tiempo de ejecución
Cantidad de instancias resueltas con la menor cantidad de nodos
(a)
BestFirst
18
7h 56m
11
9
BreadthFirst
2
16h 57m
1
1
DepthFirst
6
14h 11m
1
1
DiveAndBest
15
10h 21m
5
4
Análisis del parámetro EnumerationStrategy
Caracterı́stica \ Estrategia de branching
Cantidad de instancias resueltas en forma óptima
Tiempo total de ejecución
Cantidad de instancias resueltas con el menor tiempo de ejecución
Cantidad de instancias resueltas con la menor cantidad de nodos
(b)
CloseHalfExpensive
18
7h 56m
15
15
CloseHalf
12
12h 12m
3
2
Análisis del parámetro BranchingStrategy
Caracterı́stica \ Frecuencia de los cortes
Cantidad de instancias resueltas en forma óptima
Tiempo total de ejecución
Cantidad de instancias resueltas con el menor tiempo de ejecución
Cantidad de instancias resueltas con la menor cantidad de nodos
(c)
5
15
9h 25m
3
3
10
14
10h 50m
3
3
20
12
11h 23m
2
1
50
10
13h 10m
1
0
50
18
7h 56m
0
9
-1
18
7h 56m
1
8
Análisis del parámetro SkipFactor
Caracterı́stica \ Cantidad de iteraciones en la fase de cortes
Cantidad de instancias resueltas en forma óptima
Tiempo total de ejecución
Cantidad de instancias resueltas con el menor tiempo de ejecución
Cantidad de instancias resueltas con la menor cantidad de nodos
(d)
1
18
7h 56m
7
12
5
12
9h 48m
9
9
10
16
8h 43m
1
7
20
18
7h 54m
6
9
Análisis del parámetro MaxIterations
Figura 5.5: Resultados obtenidos variando los parámetros EnumerationStrategy, BranchingStrategy,
SkipFactor y MaxIterations que ofrece Abacus.
Habiendo analizado los distintos parámetros que presenta Abacus por separado, se puede inferir que
la configuración más exitosa resulta usando BestFirst como EnumerationStrategy, CloseHalfExpensive
como BranchingStrategy, 1 para SkipFactor y cualquier valor a partir de 20 para MaxIterations.
Es interesante destacar que éstos fueron los valores que se utilizaron en los experimentos de la Sección
5.3.
66
Experimentos con los parámetros del Branch & Cut
Capı́tulo 6
Conclusiones y trabajo a futuro
6.1.
Conclusiones
El objetivo principal de esta tesis fue la implementación y evaluación de un algoritmo Branch & Cut
para el problema de asignación de frecuencias en sistemas punto a multipunto.
El trabajo comenzó a partir de una formulación de este problema como un modelo de programación
lineal entera. Sobre la base de este modelo se implementó un algoritmo Branch & Bound, utilizando
el entorno Abacus [23, 24]. Contando con estas herramientas, nos dedicamos a generar instancias que
intentasen representar casos reales. Propusimos seis generadores de instancias, que construyen grafos
de interferencia y valores de demanda similares a los encontrados en redes de comunicaciones reales.
Trabajamos con todas las desigualdades válidas conocidas hasta el momento para el modelo de
programación lineal entera mencionado en el párrafo anterior [10, 31, 32]. En primer lugar, evaluamos
sobre las instancias el impacto en la relajación lineal y el algoritmo Branch & Bound que tiene el
agregado de todas las desigualdades de cada familia. La familia Clique Doble mostró una fuerte tendencia
a destacarse por sobre las demás. En otras lı́neas, especialmente las familias Clique Reforzada, Doble
Clique Reforzada, Clique Doble Extendida, Clique Doble 2-Extendida y Clique Doble Cerrada, si bien no
permitieron encontrar soluciones óptimas, contribuyeron a la ejecución del algoritmo Branch & Bound,
generando árboles de enumeración más pequeños.
A partir de los resultados obtenidos mediante este primer enfoque, nos dedicamos a formular un
algoritmo Branch & Cut para el problema en cuestión. Para ello, fue necesario definir algoritmos de
separación para cada familia de desigualdades válidas. Para completar el algoritmo, se crearon dos
heurı́sticas primales para generar cotas primales a partir de soluciones factibles.
Habiendo implementado el algoritmo Branch & Cut, comenzó la etapa de experimentación. Se seleccionaron combinaciones de familias de desigualdades válidas a incluir como cortes. Potencialmente,
la inclusión de Clique Doble era prometedora. Esto provocó la primera partición de las familias. Se
llevaron a cabo tres experimentos iniciales incluyendo, por un lado, a las familias Clique, Clique Reforzada, Clique Replicada, Orden de Ciclo, Ciclo Impar y 4 Ciclo + Clique, por el otro, a las familias
Doble Clique Reforzada, Clique Doble Extendida, Clique Doble 2-Extendida y Clique Doble Cerrada
y finalmente, a la familia Clique Doble por separado. La ejecución menos performante fue la primera,
descartando ası́ a unas cuantas familias que, aún con sus cortes incluidos en conjunto, producı́an una
cantidad limitante de errores, producto de la falta de memoria en las ejecuciones. Los resultados comprobaron que las familias del segundo grupo podı́an ser candidatas a acompañantes de Clique Doble,
ya que aunque fueran pocas las instancias resueltas en estos casos, contribuyeron a reducir los tiempos
de ejecución. Más aún, Clique Doble necesitaba algún tipo de refuerzo ya que se halló una instancia que
quedaba sin memoria aplicando sólo esta familia de desigualdades. Evitar estas situaciones es crucial,
dado que inutiliza la efectividad del algoritmo implementado.
En general, las ejecuciones que incluyeron a Clique Doble y a una o más de las familias Doble Clique
Reforzada, Clique Doble Extendida, Clique Doble 2-Extendida y Clique Doble Cerrada, tuvieron una
performance positiva. Sorpresivamente, Clique Doble sumada a Clique, Clique Reforzada y Clique Re-
68
Trabajo a futuro
plicada también presentó caracterı́sticas valoradas, en particular, una notable velocidad en la ejecución
y la mejor reducción de nodos en el árbol de enumeración.
Enfocados a la importancia que radica en obtener la mayor cantidad posible de soluciones óptimas,
elegimos a la combinación Clique Doble, Doble Clique Reforzada, Clique Doble Extendida y Clique
Doble 2-Extendida, que lograba este cometido. Partiendo de esta combinación, se procedió a profundizar
otros experimentos, tales como la inclusión de las heurı́sticas primales, la comparación con el paquete
comercial CPLEX sin cortes, y el ajuste de los parámetros que ofrece el entorno Abacus.
Con relación a las dos heurı́sticas primales propuestas, la heurı́stica de redondeo no tuvo trascendencia alguna. Por otra parte, la heurı́stica primal basada en la resolución de un modelo de programación
lineal embebido muestra dos posibilidades; puede o bien agregar sobrecarga aumentando los tiempos
de ejecución, o encontrar cotas primales que reducen significantemente el árbol de enumeración, dando
lugar a tiempos de ejecución sorprendentes. Esto último se vio en especial para un grupo particular
de instancias. De acuerdo con estos experimentos, esta heurı́stica primal es una herramienta que debe
aplicarse con discreción, pudiendo ser muy efectiva o empeorar los resultados globales.
El paquete comercial CPLEX no pudo resolver más que 5 de 90 instancias en forma óptima, contra las
60 que se resuelven por medio del algoritmo Branch & Cut, lo cual nos permite destacar la importancia de
las desigualdades válidas que se estudiaron, y pensar positivamente en las lı́neas de trabajo que pongan
su énfasis en evolucionar el armado de algoritmos de tipo Branch & Cut para resolver el problema de
asignación de frecuencias en sistemas punto a multipunto.
6.2.
Trabajo a futuro
El primer punto a desarrollar en un futuro cercano podrı́a ser la construcción de un entorno de
testing alrededor del programa que resulta de este trabajo, ya que muchos de los algoritmos de los que
pende esta implementación son propensos a errores. Con esta tarea realizada se podrı́a aumentar la
robustez, más aún, los tests suelen ser una herramienta muy útil para definir requerimientos y plantear
diferentes escenarios que podrı́an eventualmente, no estar contemplados.
Otra lı́nea de trabajo interesante podrı́a ser la inclusión de nuevas familias de desigualdades válidas
que puedan llegar a descubrirse en el futuro.
Una lı́nea prometedora puede surgir a partir de la formulación de heurı́sticas primales más sofisticadas para el problema, dado que las heurı́sticas primales presentadas en este trabajo tuvieron un impacto
interesante pero no determinante para la performance del algoritmo, y es posible que heurı́sticas más
sofisticadas permitan generar mejores cotas primales.
La incorporación de un análisis de la reducción del volumen poliedral total generada por cada familia
que se estudia, como una medida de calidad, podrı́a ser otro punto a desarrollar. Esta medida de la
calidad de una familia puede ser un aporte general de interés, más allá de su aplicación a este modelo
en particular.
El enfoque presentado en este trabajo no explota el parámetro g = 2∆, fijado aquı́ en 0, y que
establece la distancia de seguridad entre los intervalos de frecuencia de pares de clientes conflictivos.
Serı́a interesante incluirlo en los experimentos y llegar a conclusiones acerca del mismo, para obtener
un reflejo más fiel de los problemas que ocurren en la realidad.
Por último, puede ser de interés la consideración de modelos de programación entera alternativos
para este mismo problema.
Apéndice A
Descripción de la implementación
A.1.
El entorno Abacus
Abacus, A Branch-And-CUt System [23, 24], es un sistema desarrollado en C++ que provee un
entorno para la implementación de algoritmos Branch and Bound basado en programación lineal. Los
planos de corte pueden ser generados dinámicamente, para ası́ habilitar también la implementación
de algoritmos Branch and Cut. Cuenta con un esquema de herencia y métodos virtuales, definiendo
ası́ puntos de entrada de los cuales las clases especı́ficas de una aplicación pueden ser derivadas, dado un
problema de optimización combinatoria propio. De esta manera, el desarrollador se concentra meramente
en las partes especı́ficas de su problema, sin necesidad de “reinventar la rueda” manejando el árbol de
enumeración, los subproblemas o el proceso de branching en sı́. Las partes especı́ficas pueden ser, por
ejemplo, los procedimientos de separación para los planos de corte, o la implementación de heurı́sticas
primales, ambos nutridos de conceptos propios del problema que se intenta resolver.
Abacus provee una gran variedad de conceptos algorı́tmicos generales, como ser listas de las diferentes
estrategias de branching y enumeración, posibles recorridos del árbol de enumeración, etc., a partir de
las cuales es posible elegir la alternativa que más encaja (o redefinirla) en una determinada aplicación
en particular. A su vez, el proceso tiene asociado un gran número de parámetros, definidos en el archivo
.abacus, que se lee al comienzo de la ejecución.
A.1.1.
Diseño general de Abacus
La estructura de Abacus puede ser caracterizada por tres grupos principales, delineados en el Cuadro
A.1. Las clases base de la aplicación son las más pertinentes ya que a partir de ellas se derivan las de una
aplicación particular. Las clases pertenecientes al núcleo intentan ser una abstracción para el usuario.
A este grupo pertenecen todas las clases que soportan la implementación del algoritmo Branch and
Bound en sı́, la solución de relajaciones lineales, y el manejo de restricciones y variables. Es importante
mencionar que Abacus no implementa directamente la resolución de los problemas lineales que surgen
durante la optimización, sino que delega esta lógica a programas especializados. Provee interfaces con
Cplex, Soplex y XPress.
Núcleo
Programa lineal
Pool
Branch & Bound
ABACUS
Aplicación base Herramientas auxiliares
Master
Estructuras de datos básicas
Subproblema
Herramientas varias
Restricciones
Variables
Cuadro A.1: La estructura de Abacus.
70
Descripción general de la implementación
Se hará énfasis en la descripción de las clases base de la aplicación ya que tienen que ver directamente
con la implementación de una aplicación nueva y la interacción con el entorno.
ABA MASTER: se instancia en un objeto singleton, y es una de las clases centrales. Controla el
proceso de optimización y almacena estructuras globales que sirven para la optimización. Por
ejemplo, inicializa el árbol de enumeración y genera el primer subproblema. Para cada aplicación
nueva, esta clase debe ser extendida. En particular, el método ABA MASTER::optimize() inicia el
proceso de optimización, comenzando por inicializar las variables y restricciones de la formulación
inicial.
ABA SUB: representa un subproblema de la enumeración implı́cita, es decir, un nodo del árbol de
enumeración. La optimización del subproblema se lleva a cabo mediante la solución de relajaciones
lineales. Por lo general, es aquı́ donde se invierte la mayor cantidad de tiempo de ejecución.
También, esta clase necesita ser extendida, redefiniendo las funciones virtuales que presenta.
ABA CONSTRAINT y ABA VARIABLE: dado que un problema lineal entero se representa por medio de
restricciones junto con la función objetivo, Abacus provee algunos conceptos predeterminados para
la representación de restricciones y variables, que permiten abstraerse del manejo de las mismas
en el contexto de la manipulación del problema. De todas maneras, podrı́a llegar a ser necesario
especializar las clases ABA CONSTRAINT o ABA VARIABLE. A su vez, estos objetos son almacenados
en pools, objetos que forman parte del grupo auxiliar (i.e., la tercera columna de la Tabla A.1), y
proveen un manejo seguro de las mismas.
A.2.
Descripción general de la implementación
Esta sección describe la implementación realizada durante este trabajo. En particular, se explica el
modelo del problema y las extensiones y formas de uso del entorno Abacus.
A.2.1.
Modelado del problema
En todo momento es necesario contar con una clase de la que se puedan extraer datos del problema.
Resulta imprescindible contar con mecanismos para obtener información por ejemplo, de las aristas,
nodos o sectores ası́ como también datos menos triviales que pueden ser la obtención de los vecinos
de un nodo en particular o el poder determinar si un nodo corresponde a un cliente principal. La
clase Problema encapsula esta información. Las estructuras usadas para almacenarla son arreglos. Se
cuenta con tres arreglos de tamaño n que en la posición i-ésima informan la demanda, el sector al que
pertenece, o las aristas del nodo i, respectivamente. Luego, en general las consultas directas acerca de
estos conceptos presentan un tiempo constante. Un objeto Problema, que pretende ser de sólo lectura
ya que, lo que representa son invariantes mantenidos a lo largo de una ejecución, se construye mediante
un archivo que contiene los datos del problema. Un ejemplo del mismo puede ser revisto en el siguiente
esquema, presentado en el Capı́tulo 3, en donde, n representa a la cantidad de nodos, m a la cantidad
de aristas, k a la cantidad de sectores y cc a la cantidad de clientes conflictivos de distintos sectores.
n
k
s
sector de c1 . . . sector de cn
demanda de c1 . . . demanda de cn
cc
ci1 cj1 (ci1 y cj1 presentan conflicto, i 6= j)
..
.
cicc cjcc
La interfaz de la clase Problema se exhibe en la Figura A.1.
Descripción de la implementación
71
Figura A.1: Interfaz de la clase Problema. La parte superior muestra la estructura interna, mientras
que la superior expone los principales métodos provistos.
A.2.2.
Extensiones efectuadas al entorno Abacus
Variables
Como es sabido, el vector de soluciones comprende a variables l y r empleadas para representar
los intervalos de frecuencias asignados a los clientes, y también a variables x que establecen el orden
entre dos nodos conflictivos cualesquiera. Las mismas son modeladas mediante la extensión de la clase
ABA VARIABLE. De esta manera, se cuenta con las clases VarL, VarR y VarX. La interfaz de las mismas
se exhibe en la Figura A.2. Es posible especificar el tipo de las variables (binario, continuo, etc) y de
esta manera, imponer las restricciones que los involucran.
Restricciones y desigualdades
Las restricciones del modelo lineal, las desigualdades válidas y las restricciones que surgen durante el
proceso de branching se representan mediante especializaciones de la clase ABA CONSTRAINT. La Figura
A.3 detalla la jerarquı́a existente a partir de ABA CONSTRAINT. Notar la distinción entre las restricciones
del modelo lineal, que son Demanda, Antiparalelismo y Simetrı́a, con el resto de las restricciones.
Cada restricción es creada a partir de los datos variables que la identifican. Por ejemplo, la Definición
2.2.1 que alude a una desigualdad Clique, puede representarse como un nodo i y una clique K. La reimplementación del método ABA CONSTRAINT::coeff(ABA VARIABLE *v) permite distinguir el coeficiente
adecuado que acompaña a determinada variable. El Diagrama de Secuencia A.4 exhibe la forma de resolver el coeficiente de una variable que pertenece a la desigualdad Clique. Notar que la representación
interna de la restricción se vale
Pdel signo menor o igual y las variables están ubicadas a la izquierda de
la ecuación, conformando ası́ k∈K dk xki − li ≤ 0.
72
Descripción general de la implementación
Figura A.2: Interfaces de los distintos tipos de variables.
Descripción de la implementación
Figura A.3: Jerarquı́a de las restricciones actuales.
73
74
Descripción general de la implementación
Figura A.4: Ejecución del método Clique::coeff(ABA V ARIABLE *).
Descripción de la implementación
75
Extensión a la clase ABA MASTER
Se implementó la clase Master que se instancia mediante un archivo y, opcionalmente, un vector
que indica qué familias de desigualdades han de agregarse. Es este objeto el que está a cargo de la
creación de un objeto Problema, y también del objeto Objetivo. La implementación actual, como fue
mencionado, soporta como objetivo maximizar la longitud de los intervalos de los clientes principales.
Mediante este último, la clase Master puede inicializar las variables de la función objetivo de acuerdo al
mismo. La Figura A.5 muestra una descripción general de los métodos provistos por Master, ası́ como
también la jerarquı́a a la que pertenece.
Figura A.5: Interfaz relevante y jerarquı́a de la clase Master. En particular, ABA MASTER almacena datos
pertinentes que hacen al total del programa, como ser los tiempos de ejecución, la cantidad de nodos
en el árbol de enumeración, etc.
El método Master::initializeOptimization() es de especial importancia, pues se vale de los
datos del problema para comenzar con el proceso de optimización. El diagrama de secuencia exhibido
en la Figura A.6 muestra este proceso de manera aproximada.
76
Descripción general de la implementación
Figura A.6: Ejecución aproximada del método Master::initializeOptimization(). La condición
marcada como Si se requieren está dada por los distintos parámetros de entrada definidos para cada
familia de desigualdades. Por su parte, los métodos relacionados a agregar desigualdades válidas fueron
explicados en detalle en la Sección 3.2.
Descripción de la implementación
77
Extensión a la clase ABA SUB
La Figura A.7 detalla la interfaz y jerarquı́a de la extensión llamada Sub.
Figura A.7: Interfaz relevante y jerarquı́a de la clase Sub.
Se efectuaron principalmente dos redefiniciones de métodos de ABA SUB. Uno corresponde al método
Sub::improve(double & valorPrimal) que implementa la heurı́stica primal de redondeo definida en
la Sección 4.2. El otro, Sub::separate(), se encarga de construir un objeto Solucion temporario con el
valor actual de las variables de ese subproblema en particular. Probablemente no se trata de una solución
válida, por lo que, de acuerdo a los parámetros definidos, se implementan los distintos procedimientos
de separación, para averiguar las desigualdades que son violadas por la misma. El diagrama de secuencia
que está en la Figura A.8 detalla este método.
78
Descripción general de la implementación
Figura A.8: Ejecución aproximada del método Sub::separate(). La condición marcada como Si se
requieren está dada por los distintos parámetros de entrada definidos para cada familia de desigualdades.
Por su parte, los procedimientos de separación propios de cada familia de desigualdades definida fueron
ampliados en detalle mediante pseudocódigos en la Sección 4.1.
Apéndice B
Detalles acerca de las relajaciones
lineales utilizando cada familia de
desigualdades
Este apartado muestra en detalle los porcentajes de ajustes a las relajaciones lineales de todos los
grupos de instancias. Está provisto de 6 cuadros, que son B.1, B.2, B.3, B.4, B.5 y B.6 que ilustran los
grupos de instancias A, B, C, D, E y F respectivamente.
Las columnas informan, para cada instancia, la cantidad de clientes (n), la cantidad de sectores (k),
la longitud del espectro disponible (s), el resultado de la relajación lineal y el resultado de la relajación
lineal reforzada con todas las desigualdades de cada familia de desigualdades, representando en cada
fila el porcentaje de ajuste del agregado de las mismas para una instancia dada. El mismo se calcula
como (LR − DU AL) ∗ 100/LR, siendo LR el resultado de la relajación lineal y DU AL el resultado
de la relajación lineal considerando el agregado de la familia relacionada a dicha columna. El hecho de
mostrar porcentajes en vez de resultados permite obtener una idea general del comportamiento respecto
de la relajación lineal. Por ejemplo, es sencillo mostrar un promedio de los comportamientos de cada
familia. Los mismos pueden observarse en la última fila de cada cuadro en esta sección. En caso de
encontrarse vacı́o un casillero, significa que agregando aquella familia de desigualdades se detectó que la
instancia no era factible (es decir, la relajación lineal resultante resultó vacı́a). Es importante diferenciar
un casillero vacı́o de uno que contiene el valor 0, ya que en este último caso la intención es expresar que
el agregado de la familia relacionada no mejora el valor óptimo de la relajación lineal.
80
Instancia
A.20.2.129.10.240.dat
A.20.2.155.10.240.dat
A.20.2.156.10.240.dat
A.20.3.117.10.240.dat
A.20.3.126.10.240.dat
A.20.3.199.10.240.dat
A.20.4.135.10.240.dat
A.25.4.108.10.240.dat
A.25.4.128.10.240.dat
A.25.4.155.10.240.dat
A.25.4.180.10.240.dat
A.30.3.103.10.240.dat
A.30.3.131.10.240.dat
A.30.3.140.10.240.dat
A.30.10.295.10.240.dat
A.30.10.499.10.240.dat
A.35.4.113.10.240.dat
A.35.4.145.10.240.dat
A.35.10.198.10.240.dat
A.40.4.123.10.240.dat
A.40.4.134.10.240.dat
A.40.4.135.10.240.dat
A.40.4.150.10.240.dat
A.50.5.137.10.240.dat
A.50.5.145.10.240.dat
A.50.5.148.10.240.dat
A.70.13.49.10.240.dat
A.75.13.52.10.240.dat
A.78.10.46.10.240.dat
A.78.20.56.10.240.dat
A.78.40.122.10.240.dat
A.78.40.127.10.240.dat
A.80.13.51.10.240.dat
A.80.13.53.10.240.dat
A.85.10.55.10.240.dat
A.85.10.69.10.240.dat
Promedio
n
20
20
20
20
20
20
20
25
25
25
25
30
30
30
30
30
35
35
35
40
40
40
40
50
50
50
70
75
78
78
78
78
80
80
85
85
k
2
2
2
3
3
3
4
4
4
4
4
3
3
3
10
10
4
4
10
4
4
4
4
5
5
5
13
13
10
20
40
40
13
13
10
10
s
129
155
156
117
126
199
135
108
128
155
180
103
131
140
295
499
113
145
198
123
134
135
150
137
145
148
49
52
46
56
122
127
51
53
55
69
LR
221.00
269.00
274.00
286.00
318.00
539.00
458.00
350.00
427.00
533.00
508.00
271.00
347.00
373.00
1971.00
3367.00
390.00
527.00
1466.00
426.00
481.00
476.00
534.00
604.00
539.00
673.00
423.00
489.00
310.00
723.00
2554.00
2819.00
439.00
437.50
417.00
531.00
Clique D.
66.91
51.09
53.50
53.14
23.56
32.53
54.00
47.07
38.27
25.39
55.35
56.48
47.72
13.22
60.00
29.22
15.76
46.78
57.56
52.06
54.14
43.24
21.99
18.40
13.87
15.21
13.39
10.25
20.50
17.16
14.87
15.07
35.55
D. Reforzada
0
1.49
0
9.79
2.83
1.67
1.53
3.14
0.70
7.88
0
0
0
0
3.50
1.63
0
0
0
0
0
0
0
0
0
0
0.47
2.25
0
0
0
0
0
0
0
0.19
1.03
D. Ext
0
0
0
32.17
9.43
8.16
14.41
2.00
5.15
4.69
11.22
26.94
33.72
28.15
D. 2-Ext
0
0
0
20.98
0
0
13.76
0
7.03
0
11.42
5.9
2.02
5.09
6.44
20.51
4.74
4.57
3.27
14.87
1.71
2.52
32.63
0
12.39
24.91
1.66
1.67
0
1.18
2.45
0
0.28
0
0
1.14
2.06
0
0.19
4.83
25.36
25.84
25.84
29.08
35.22
8.20
5.52
0
1.11
6.30
3.69
7.74
4.58
1.68
4.33
12.05
D. Cerrada
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2.25
0
0
0
0
0
0
0
1.89
2.66
0
3.04
0.23
0.25
5.24
2.29
4.80
2.64
0.70
Restantes
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Cuadro B.1: Porcentajes de ajustes a la relajación lineal sobre instancias del grupo A, para cada familia
de desigualdades.
Detalles acerca de las relajaciones lineales utilizando cada familia de desigualdades
Instancia
B.20.10.349.10.240.dat
B.20.10.441.10.240.dat
B.20.10.519.10.240.dat
B.20.4.52.2.240.dat
B.20.4.56.2.240.dat
B.20.4.66.2.240.dat
B.20.4.80.2.240.dat
B.20.4.88.2.240.dat
B.30.10.135.10.240.dat
B.30.10.136.10.240.dat
B.30.10.157.10.240.dat
B.30.10.86.10.240.dat
B.30.10.88.10.240.dat
B.40.10.179.10.240.dat
B.40.10.270.10.240.dat
B.40.10.288.10.240.dat
B.41.6.103.10.240.dat
B.41.6.120.10.240.dat
B.41.6.154.10.240.dat
B.50.10.35.50.240.dat
B.50.10.42.50.240.dat
B.50.10.50.50.240.dat
B.50.30.109.10.240.dat
B.50.30.120.10.240.dat
B.50.30.71.10.240.dat
B.80.12.38.20.240.dat
B.80.12.44.20.240.dat
B.80.14.36.20.240.dat
B.80.14.57.20.240.dat
B.80.14.65.20.240.dat
B.80.14.72.20.240.dat
B.80.18.47.20.240.dat
B.80.18.55.20.240.dat
B.95.11.71.20.240.dat
B.97.10.64.20.240.dat
B.97.10.71.20.240.dat
B.97.10.80.20.240.dat
Promedio
n
20
20
20
20
20
20
20
20
30
30
30
30
30
40
40
40
41
41
41
50
50
50
50
50
50
80
80
80
80
80
80
80
80
95
97
97
97
k
349
441
519
4
4
4
4
4
10
10
10
10
10
10
10
10
6
6
6
10
10
10
30
30
30
12
12
14
14
14
14
18
18
11
10
10
10
s
28
28
28
52
56
66
80
88
135
136
157
86
88
179
270
288
103
120
154
35
42
50
109
120
71
38
44
36
57
65
72
47
55
71
64
71
80
LR
2785.00
3521.00
4145.00
104.00
112.00
132.00
160.00
176.00
1069.00
1077.00
1245.00
677.00
693.00
1415.00
2143.00
2287.00
600.00
702.00
906.00
323.00
393.00
473.00
2093.50
2308.00
1352.50
422.00
494.00
434.00
707.00
811.00
902.00
671.00
791.00
683.00
611.00
681.00
771.00
Clique D.
0.26
0.22
21.15
19.64
16.67
13.75
12.5
2.81
2.79
2.41
3.25
2.15
2.01
10.5
8.97
6.95
18.27
15.01
12.47
14.19
12.91
21.97
23.70
20.24
15.56
13.56
12.20
12.82
10.87
14.35
24.22
21.73
19.2
12.40
D. Reforzada
0.29
0.23
0.19
1.92
1.79
1.52
0.62
0.57
0.56
0.56
0.48
1.03
1.01
0.42
0.28
0.26
0.83
0.71
0.55
4.64
3.82
3.17
7.17
6.54
3.08
2.63
3.11
2.71
2.44
4.02
3.41
2.20
2.13
1.91
1.69
1.96
D. Ext
D. 2-Ext
0.23
0.19
21.15
19.64
16.67
13.75
12.5
1.59
1.58
1.37
0.26
0.22
15.38
14.29
12.12
10
9.09
1.31
1.3
1.12
1.98
1.31
1.22
6.17
5.27
4.08
0
0
0
8.93
8.19
14.05
9.24
7.89
7.83
4.67
4.07
3.77
6.26
5.31
7.03
10.8
9.69
8.56
6.62
0.78
0.51
0.48
3.83
3.28
2.54
0
0
0
5.73
5.2
8.95
4.27
3.64
2.83
2.47
2.22
4.02
3.41
0.73
8.02
7.20
6.36
4.29
D. Cerrada
0
0
0
2.88
2.68
2.27
1.88
1.7
0
0
0
0
0
0
0
0
0
0
0
0
0
0
2.68
2.43
4.14
0.95
0.81
0
0
0
0
0
0
0
0.33
0.29
0.26
0.63
81
Restantes
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Cuadro B.2: Porcentajes de ajustes a la relajación lineal sobre instancias del grupo B, para cada familia
de desigualdades.
82
Instancia
C.20.2.101.0.240.dat
C.20.2.121.0.240.dat
C.20.2.123.0.240.dat
C.20.2.126.0.240.dat
C.20.2.131.0.240.dat
C.20.2.136.0.240.dat
C.20.2.138.0.240.dat
C.20.2.156.0.240.dat
C.20.2.176.0.240.dat
C.20.2.199.0.240.dat
C.20.2.200.0.240.dat
C.20.4.128.0.240.dat
C.20.4.129.0.240.dat
C.20.4.143.0.240.dat
C.20.4.144.0.240.dat
C.20.4.175.0.240.dat
C.20.4.199.0.240.dat
C.25.4.13.5.515.dat
C.25.4.27.5.515.dat
C.42.7.23.8.515.dat
C.42.7.35.8.515.dat
C.42.7.49.8.515.dat
C.50.10.22.35.240.dat
C.50.10.26.35.240.dat
C.50.10.33.35.240.dat
C.60.8.47.10.240.dat
C.60.8.50.10.240.dat
C.73.12.32.15.515.dat
C.73.12.41.15.515.dat
C.73.12.42.15.515.dat
C.73.12.45.15.515.dat
C.73.12.46.15.515.dat
C.73.12.51.15.515.dat
C.90.12.52.15.515.dat
C.90.12.65.15.515.dat
C.90.12.79.15.515.dat
Promedio
n
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
25
25
42
42
42
50
50
50
60
60
73
73
73
73
73
73
90
90
90
k
2
2
2
2
2
2
2
2
2
2
2
4
4
4
4
4
4
4
4
7
7
7
10
10
10
8
8
12
12
12
12
12
12
12
12
12
s
101
121
123
126
131
136
138
156
176
199
200
128
129
143
144
175
199
13
27
23
35
49
22
26
33
47
50
32
41
42
45
46
51
52
65
79
LR
182.00
223.00
226.00
232.00
240.00
251.00
256.00
292.00
176.00
379.00
200.00
256.00
258.00
286.00
288.00
350.00
561.00
33.00
96.00
105.00
225.00
237.00
169.00
208.00
299.00
270.00
332.00
314.00
427.00
401.00
431.00
482.00
586.00
544.00
632.00
842.00
Clique D.
46.19
69.03
24.57
45
42.23
64.06
45.89
0.57
27.44
9.00
40.62
38.76
33.92
37.5
38.86
22.46
69.7
33.33
50.48
25.33
16.46
30.77
24.52
18.06
24.07
21.99
21.02
17.56
13.22
18.33
14.52
14.51
17.46
10.92
10.93
29.69
D. Reforzada
2.75
0
2.21
0
0
0
1.56
0
0
0
0
5.47
0
0
0
0
3.03
3.03
0
0
0
0.84
2.96
0
0
0.37
1.81
1.27
1.64
0.75
0.70
1.45
0.68
1.29
0.47
1.19
0.93
D. Ext
17.49
40.27
17.67
42.92
40.24
37.50
31.16
0
26.39
5.50
33.2
36.05
0
25.69
24.29
8.56
36.36
15.62
21.90
16
10.55
4.14
1.92
1.34
8.89
8.73
5.10
5.62
5.24
6.73
3.73
7.00
3.12
3.48
5.70
15.94
D. 2-Ext
43.41
2.69
34.07
0
27.50
1.59
31.25
1.37
0
0
0
27.34
32.95
0
25.69
9.43
11.59
21.21
11.46
15.24
8.89
9.28
2.96
2.4
0
0
1.2
1.91
0.23
1
0.23
0.21
1.88
0.92
0.16
1.66
9.16
D. Cerrada
0
0
15.49
0
0
3.98
15.62
2.40
0
0
0
0
0
0
10.76
0
8.91
15.15
14.58
0
0
0
0
0
0
1.85
0
3.5
4.22
0
2.09
3.53
1.02
1.10
0
0.48
2.91
Restantes
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Cuadro B.3: Porcentajes de ajustes a la relajación lineal sobre instancias del grupo C, para cada familia
de desigualdades.
Detalles acerca de las relajaciones lineales utilizando cada familia de desigualdades
Instancia
D.20.3.156.240.dat
D.20.3.162.240.dat
D.20.3.166.240.dat
D.20.3.171.240.dat
D.20.3.172.240.dat
D.20.3.177.240.dat
D.20.3.200.240.dat
D.25.3.10.144.dat
D.25.3.22.144.dat
D.25.3.28.144.dat
D.30.3.186.1004.dat
D.30.3.191.1004.dat
D.30.3.197.1004.dat
D.30.3.200.1004.dat
D.30.4.130.102.dat
D.30.4.144.102.dat
D.30.4.150.102.dat
D.30.4.198.102.dat
D.42.5.18.1024.dat
D.42.5.19.1024.dat
D.53.7.55.144.dat
D.53.7.59.144.dat
D.53.7.65.144.dat
D.53.7.67.144.dat
D.53.7.69.144.dat
D.70.10.19.144.dat
D.70.10.25.144.dat
D.72.10.60.144.dat
D.72.10.80.144.dat
D.73.10.90.144.dat
D.73.10.100.144.dat
D.78.11.39.144.dat
D.78.11.44.144.dat
D.85.7.45.44.dat
D.85.7.61.44.dat
D.85.7.79.44.dat
D.85.8.52.44.dat
D.85.8.77.44.dat
Promedio
n
20
20
20
20
20
20
20
25
25
25
30
30
30
30
30
30
30
30
42
42
53
53
53
53
53
70
70
72
72
73
73
78
78
85
85
85
85
85
k
3
3
3
3
3
3
3
3
3
3
3
3
3
3
4
4
4
4
5
5
7
7
7
7
7
10
10
10
10
10
10
11
11
7
7
7
8
8
s
156
162
166
171
172
177
200
10
22
28
186
191
197
200
130
144
150
198
18
19
55
59
65
67
69
19
25
60
80
90
100
39
44
45
61
79
52
77
LR
428.00
306.00
312.00
324.00
463.00
333.00
549.00
24.00
42.00
78.00
519.00
370.00
553.00
559.00
452.00
505.00
416.00
556.00
66.00
70.00
361.00
337.00
314.00
386.00
459.00
154.00
207.00
522.00
703.00
794.00
886.00
387.00
369.00
258.00
352.00
460.00
346.00
521.00
Clique D.
17.76
34.64
50.64
41.98
39.74
29.43
30.24
50.00
29.49
11.56
0
13.2
20.39
46.68
38.02
24.28
29.86
57.58
45.71
12.74
13.65
0.32
11.40
3.05
42.86
32.85
14.56
9.39
9.07
7.90
26.36
17.34
20.54
19.89
18.48
29.19
17.85
24.83
D. Reforzada
0
0
0
0
0
0
0
0
2.38
0
0.39
0
0
0
0
1.58
0
0
0
0
0
0
0
0
0
0
0
0
0.14
0.13
0
0
0
0
0
0
0
0
0.12
83
D. Ext
12.38
3.59
35.90
33.02
36.50
24.62
28.78
D. 2-Ext
32.01
0
35.90
34.26
38.23
24.92
28.96
D. Cerrada
9.35
0
0
0
15.98
24.02
20.04
26.19
29.49
10.40
0
7.05
7.87
25.88
12.08
0
17.09
19.70
15.71
1.66
3.26
0.32
1.30
1.53
24.03
19.81
10.15
7.40
5.92
5.87
5.94
2.71
0.39
3.41
1.30
12.43
6.33
12.40
23.81
29.49
0.19
0
1.81
2.86
7.96
6.34
0
0
13.64
14.29
0.55
0
0
0
0
16.88
9.18
1.92
5.55
5.04
5.30
0.78
1.36
0
0
0
0
0
9.22
14.29
15.38
15.22
0
3.44
14.67
8.63
7.33
3.85
3.60
0
0
5.26
1.78
0
0
1.96
0
1.45
0
0
0.50
0
4.91
0
0
0
0
2.89
1.54
4.76
Restantes
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Cuadro B.4: Porcentajes de ajustes a la relajación lineal sobre instancias del grupo D, para cada familia
de desigualdades.
84
Instancia
E.20.2.110.30.50.dat
E.20.2.113.30.50.dat
E.20.2.115.30.50.dat
E.20.2.117.30.50.dat
E.20.2.120.0.240.dat
E.20.2.200.30.50.dat
E.20.2.697.0.240.dat
E.20.3.126.14.144.dat
E.20.3.145.14.144.dat
E.20.3.168.14.144.dat
E.20.3.179.14.144.dat
E.25.3.35.14.144.dat
E.25.3.80.14.144.dat
E.25.3.87.14.144.dat
E.30.3.116.60.1004.dat
E.30.3.156.60.1004.dat
E.30.3.182.60.1004.dat
E.30.3.195.60.1004.dat
E.42.4.65.144.144.dat
E.42.4.82.144.144.dat
E.42.4.91.144.144.dat
E.42.5.30.144.144.dat
E.42.5.45.144.144.dat
E.42.5.56.144.144.dat
E.42.5.99.144.144.dat
E.53.7.400.40.50.dat
E.53.7.415.40.50.dat
E.53.7.466.40.50.dat
E.53.7.512.40.50.dat
E.64.9.511.60.102.dat
E.64.9.540.60.102.dat
E.73.11.33.90.102.dat
E.73.11.73.90.102.dat
E.73.11.80.90.102.dat
E.80.7.57.90.102.dat
E.80.7.70.90.102.dat
E.80.7.75.90.102.dat
E.90.7.62.90.102.dat
E.90.7.74.90.102.dat
E.90.7.79.90.102.dat
Promedio
n
20
20
20
20
20
20
20
20
20
20
20
25
25
25
30
30
30
30
42
42
42
42
42
42
42
53
53
53
53
64
64
73
73
73
80
80
80
90
90
90
k
2
2
2
2
2
2
2
3
3
3
3
3
3
3
3
3
3
3
4
4
4
5
5
5
5
7
7
7
7
9
9
11
11
11
7
7
7
7
7
7
s
110
113
115
117
120
200
697
126
145
168
179
35
80
87
116
156
182
195
65
82
91
30
45
56
99
400
415
466
512
511
540
33
73
80
57
70
75
62
74
79
LR
198.00
204.00
208.00
211.00
120.00
360.00
697.00
321.00
371.00
428.00
458.00
93.00
211.00
231.00
313.00
419.00
488.00
524.00
231.00
292.00
323.00
133.00
199.00
245.00
434.00
2367.00
2458.00
2759.00
3030.00
3887.00
4107.00
298.00
657.00
718.00
362.00
444.00
478.00
400.00
476.00
509.00
Clique D.
87.88
85.29
83.65
85.78
79.17
87.78
79.05
82.24
79.78
82.24
79.91
78.49
84.83
79.65
81.79
86.40
87.70
86.26
84.42
82.88
86.38
73.68
75.88
83.27
81.80
81.07
80.51
80.86
81.19
81.43
81.45
72.15
73.97
76.04
83.98
83.56
79.71
81.50
83.40
82.32
81.73
D. Reforzada
4.55
3.92
3.86
3.79
10.00
4.17
9.90
18.07
17.25
18.22
17.47
9.68
10.90
9.96
16.93
17.42
17.83
17.18
2.16
1.71
1.86
15.79
16.08
17.55
17.05
16.69
16.52
16.64
16.70
5.56
5.53
1.34
1.07
1.25
1.10
1.13
0.84
0.75
0.84
0.79
9.25
D. Ext
0
0
0
0
79.17
0
79.05
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
3.95
D. 2-Ext
0
0
0
0
79.17
0
79.05
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
3.95
D. Cerrada
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Restantes
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Cuadro B.5: Porcentajes de ajustes a la relajación lineal sobre instancias del grupo E, para cada familia
de desigualdades.
Detalles acerca de las relajaciones lineales utilizando cada familia de desigualdades
Instancia
F.20.2.240.240.dat
F.20.2.322.240.dat
F.20.2.334.240.dat
F.20.2.620.240.dat
F.20.2.625.240.dat
F.20.2.648.240.dat
F.20.2.652.240.dat
F.24.3.18.144.dat
F.24.3.26.144.dat
F.24.3.35.144.dat
F.30.4.238.144.dat
F.30.4.239.144.dat
F.30.4.242.144.dat
F.30.4.246.144.dat
F.30.4.250.144.dat
F.31.3.137.144.dat
F.31.3.146.144.dat
F.31.3.152.144.dat
F.31.3.237.144.dat
F.31.3.250.144.dat
F.42.6.16.144.dat
F.42.6.19.144.dat
F.42.6.24.144.dat
F.73.11.48.102.dat
F.73.11.69.102.dat
F.73.11.73.102.dat
F.73.11.89.102.dat
F.73.11.97.102.dat
F.77.14.61.144.dat
F.77.14.91.144.dat
F.77.14.98.144.dat
F.77.14.99.144.dat
F.83.10.63.102.dat
F.83.10.69.102.dat
F.83.10.77.102.dat
Promedio
n
20
20
20
20
20
20
20
24
24
24
30
30
30
30
30
31
31
31
31
31
42
42
42
73
73
73
73
73
77
77
77
77
83
83
83
k
2
2
2
2
2
2
2
3
3
3
4
4
4
4
4
3
3
3
3
3
6
6
6
11
11
11
11
11
14
14
14
14
10
10
10
s
240
322
334
620
625
648
652
18
26
35
238
239
242
246
250
137
146
152
237
250
16
19
24
48
69
73
89
97
61
91
98
99
63
69
77
LR
240.00
322.00
334.00
1069.00
1086.00
648.00
652.00
34.00
73.00
68.00
680.00
478.00
691.00
492.00
500.00
261.00
400.00
289.00
460.00
488.00
60.00
87.00
92.00
360.00
471.00
562.00
613.00
666.00
480.00
637.00
870.00
693.00
429.00
469.00
596.00
Clique D.
2.5
0
38.62
7.48
70.22
0
61.76
26.03
30.88
19.71
2.72
12.16
13.01
3
0
19.00
12.80
7.83
0
45.00
54.02
40.22
6.39
3.82
8.54
5.71
6.76
19.17
5.81
5.63
2.74
8.16
12.15
12.75
16.60
D. Reforzada
0
0
2.10
0
0
6.64
0
5.88
1.37
0
0.40
0
0
0.81
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0.57
0
0
0
0
0.51
D. Ext
0
0
37.72
7.39
70.22
0
8.82
9.59
1.47
10.29
0
0
0.61
0.60
0
0.5
0
0
0
23.33
35.63
23.91
5.28
3.61
5.87
3.59
6.46
11.46
0.31
1.72
0
5.13
4.05
5.03
8.31
D. 2-Ext
0
0
38.62
4.40
0
5.86
0
0
9.59
0
10.40
0
0.14
0
0
0
0
0
0
0
28.33
34.48
11.96
2.50
0
3.74
0.33
0.15
9.58
0
1.61
0
3.96
3.62
3.19
4.9
85
D. Cerrada
0
0
0
47.15
3.70
47.24
0
9.59
0
20.44
0
4.20
9.96
18.00
0
10
0
0
0
8.33
18.39
11.96
12.22
4.46
9.96
2.94
6.31
9.79
6.12
2.99
5.05
7.69
13.65
8.05
8.77
Restantes
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Cuadro B.6: Porcentajes de ajustes a la relajación lineal sobre instancias del grupo F, para cada familia
de desigualdades.
86
Bibliografı́a
[1] Aardal K. y van Hoesel S., Polyhedral Techniques in Combinatorial Optimization. Tilburg and
Limburg University, The Netherlands, 1995.
[2] Ahuja R.; Magnanti T. y Orlin J., Network flows: Theory, algorithms and applications. Prentice
Hall, 1993.
[3] Ascheuer N.; Jünger M. y Reinelt G., A Branch & Cut Algorithm for the Asymmetric Hamiltonian Path Problem with Precedence Constraints. Konrad Zuse Zentrum für Informationstechnik,
Berlin. Preprint SC (1997) 97-70.
[4] Bixby R.; Fenelon M.; Gu Z.; Rothberg E. y Wunderling R. , Mixed-Integer Programming:
A Progress Report. En M. Grötschel (Ed.), The Sharpest Cut: The Impact of Manfred
Padberg and His Work. Philadelphia: SIAM/MPS Series on Optimization 4, 2004.
[5] Bley A.; Eisenblätter A.; Grötschel M.; Wagler A. y Wessäly R., Frequenzplanung für
Punlt- zu Mehrpunkt-Funksysteme. Abschlußberich eines Projekts der BOSCH Telecom GmbH und
des Konrad-Zuse-Zentrums für Informationstechnik Berlin, 1999.
[6] Bomze I.; Budinich M.; Pardalos P. y Pelillo M., The Maximum Clique Problem. Handbook
of Combinatorial Optimization, 1999
[7] Dantzig G. y Thapa M., Linear Programming. Springer Verlag, New York, 1997.
[8] Dasdan A., An experimental study of minimum mean cycle algorithms. UCI-ICS Technical Report
(1998) 98-32.
[9] de Werra D. y Hertz A. , Consecutive Colorings of Graphs. ZOR, 32, (1998) 1-8.
[10] de Werra D. y Gay Y., Chromatic Scheduling and Frequency Assignment. Discrete Appl. Math.,
49, (1994) 165-174.
[11] Faure R.; Boss J. y Le Garff A., La investigación operativa. Eudeba, Buenos Aires, 1972.
[12] Ferreira C.; Martin A. y Weismantel R., A Cutting Plane Based Algorithm for the Multiple
Knapsack Problem. Konrad Zuse Zentrum für Informationstechnik, Berlin. Preprint SC (1993) 93-7.
[13] Garey M. y Johnson D., Computers and intractability: A guide to the theory of NP-completeness.
W.H. Freeman and Company, 1979.
[14] Golumbic M., Algorithmic Graph Theory and Perfect Graphs. Academic Press, 1980.
[15] Grötschel M.; Monma C.L. y Stoer M., Design of Survivable Networks. Konrad-ZuseZentrum für Informationstechnik, Berlin, Preprint SC (1993) 93-3.
[16] Grötschel M. y Lovász L., Combinatorial Optimization. Konrad-Zuse-Zentrum für Informationstechnik, Berlin, Preprint SC (1993) 93-13.
[17] Grötschel M.; Lovász L. y Schrijver A., Geometric algorithms and combinatorial optimization. Springer Verlag, 1988.
[18] Harari F., Graph Theory. Addison-Wesley, 1968.
88
BIBLIOGRAFÍA
[19] Hillier F. y Lieberman G., Introduction to Operations Research. Sexta edición, McGraw Hill
International Editions, 1995.
[20] Hongbo L. y Jiaxin W., A new way to enumerate cycles in graph. Department of Computer
Science and Technology, Tsinghua University, Beijing, China, 2006.
[21] Johnson E.; Nemhauser G. y Savelsbergh M., Progress in Linear Programming Based Branch
and Bound Algorithms: An Exposition. Technical Report, Georgia Institute of Technology, 1998.
[22] Jünger M.; Reinelt G. y Thienel S., Practical Problem Solving with Cutting Plane Algorithms
in Combinatorial Optimization. Zentrum für Wissenschaftliches Rechnen, Universität Heidelberg.
Preprint 94/24 (1994).
[23] Jünger M. y Thienel S., Introduction to ABACUS - A Branch and Cut System. Universität zu
Köln. Technical Report 97.263 (1997).
[24] Jünger M. y Thienel S., The Design of the Branch and Cut System ABACUS. Universität zu
Köln. Technical Report 97.260 (1997).
[25] Kengo K.; Akihiro H. y Hiroyuki N., An Effective Local Search for the Maximum Clique
Problem. Department of Information and Computer Engineering, Okayama University of Science,
1-1 Ridai-cho, Okayama, 700-0005, Japan.
[26] Kubale M., Inverval Vertex-Coloring of a Graph With Forbidden Colors. Discrete Math, 74,
(1989) 125-136.
[27] Magalhaes E. y de Souza C., The Edge Weighted Clique Problem: valid inequalities, facets and
polyhedral computations. UNICAMP, Reporte técnico IC (1997) 97-14.
[28] Marenco J., Chromatic scheduling polytopes coming from the bandwidth allocation problem in
point-to-multipoint radio access systems. Tesis de Doctorado, Universidad de Buenos Aires, 2005.
[29] Marenco J. y Wagler A., On the combinatorial structure of chromatic scheduling polytopes.
Discrete Applied Mathematics 154 (2006) 1865-1876
[30] Marenco J. y Wagler A., Chromatic scheduling polytopes coming from the bandwidth allocation
problem in point-to-multipoint radio access systems. Annals of Operations Research 150-1 (2007)
159-175.
[31] Marenco J. y Wagler A., Cycle-based facets of chromatic scheduling polytopes. Discrete Optimization 6 (2009) 51-63.
[32] Marenco J. y Wagler A., Facet-inducing inequalities for chromatic scheduling polytopes based
on covering cliques. Discrete Optimization 6 (2009) 64-78.
[33] Nemhauser G. y L. Wolsey, Integer Programming and Combinatorial Optimization. John Wiley
& Sons, 1988.
[34] Pedregal P., Introduction to optimization. Springer, New York, 2004.
[35] Wolsey L., Integer Programming. John Wiley & Sons, 1998.
Descargar