You are on page 1of 96

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: Soledad Ramusio Mora


LU: 207/03
smora@dc.uba.ar

Director: 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 compu-
tacionales 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 esce-
narios 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, simul-
taneously, 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 NP-
hard 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 opti-
mization 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 mo-
del, 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 co-
llected 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 17


3.1. Instancias de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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. Generador de instancias del grupo A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19


2. Generador de instancias del grupo B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3. Generador de instancias del grupo C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4. Generador de instancias del grupo D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5. Generador de instancias del grupo E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
6. Generador de instancias del grupo F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
7. Generación de desigualdades de Clique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
8. Generación de desigualdades de Clique Doble . . . . . . . . . . . . . . . . . . . . . . . . 30
9. Generación de desigualdades de Clique Reforzada . . . . . . . . . . . . . . . . . . . . . . 31
10. Generación de desigualdades de Doble Clique Reforzada . . . . . . . . . . . . . . . . . . 31
11. Generación de desigualdades de Clique Replicada . . . . . . . . . . . . . . . . . . . . . . 31
12. Generación de desigualdades de Clique Doble Extendida . . . . . . . . . . . . . . . . . . 32
13. Generación de desigualdades de Clique Doble 2-Extendida . . . . . . . . . . . . . . . . . 32
14. Generación de desigualdades de Clique Doble Cerrada . . . . . . . . . . . . . . . . . . . 32
15. Generación de desigualdades de 4 Ciclo + Clique . . . . . . . . . . . . . . . . . . . . . . 33
16. Heurı́stica Best In . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
17. Heurı́stica de búsqueda local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
18. Procedimiento de separación de la familia Clique . . . . . . . . . . . . . . . . . . . . . . 41
19. Procedimiento de separación de la familia Clique Doble . . . . . . . . . . . . . . . . . . 41
20. Procedimiento de separación de la familia Clique Reforzada . . . . . . . . . . . . . . . . 42
21. Procedimiento de separación de la familia Doble Clique Reforzada . . . . . . . . . . . . 42
22. Procedimiento de separación de la familia Clique Replicada . . . . . . . . . . . . . . . . 43
23. Procedimiento de separación de la familia Clique Doble Extendida . . . . . . . . . . . . 43
24. Procedimiento de separación de la familia Clique Doble 2-Extendida . . . . . . . . . . . 43
25. Procedimiento de separación de la familia Clique Doble Cerrada . . . . . . . . . . . . . 44
26. Procedimiento de separación de la familia 4 Ciclo + Clique . . . . . . . . . . . . . . . . 45
27. Procedimiento de separación de la familia Orden de Ciclo . . . . . . . . . . . . . . . . . 46
28. Procedimiento para hallar un ciclo impar con longitud menor a 3 . . . . . . . . . . . . . 46
29. Procedimiento que fija las variables de orden en 0 ó 1 . . . . . . . . . . . . . . . . . . . 47
30. Búsqueda de una cota inferior a partir de una solución óptima fraccionaria, aplicando
redondeo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
31. Búsqueda de una cota inferior a partir de una solución óptima fraccionaria, aplicando un
modelo de programación lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 ge-
neral 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 en-
contrar 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 objeti-
vo, 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. Pos-
teriormente se hallaron otros métodos con peor caso polinomial,
probando que el problema general de programación lineal perte-
nece 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
al problema general de programación lineal entera mixta: aristas del poliedro hasta alcanzar el vérti-
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 con-
flictivos 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:

X
má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 Resumen de la tesis

1.4. 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 (2.1)
0 ≤ li ≤ ri ≤ s ∀i ∈ V (2.2)
ri ≤ lj + s(1 − xij ) ∀ij ∈ E, i < j (2.3)
rj ≤ li + sxij ∀ij ∈ E, i < j (2.4)
xij ∈ {0, 1} ∀ij ∈ E, i < j (2.5)
li , ri ∈ Z ∀i ∈ V (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 proble-
ma 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 deP 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
P
es la desigualdad Clique Doble asociada a ij y a K, donde d(K) = 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 X
dk xki + cK (k)xki ≤ li (2.9)
k∈K k∈K 0

es la desigualdad Clique Reforzada asociada a K y a K 0 .


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
original reducirı́a en este caso a ri + dk2 + dk4 + dk5 + dk6 + cK (k10 ) + cK (k20 ) ≤ lj + (s− k∈K dk −
P
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 adyacen-
tes 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
Pen donde hay un ciclo de longitud 7. Luego, k = 3. Ası́, l2 , l4 , l6 ≥ 0. l1 , l3 , l5 ≥ 1 y l7 ≥ 2, con
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 con-
juntos 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 expe-
rimentos (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 re-
gulares. 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: Procedimiento generarInstanciasA(pref ijoArchivo, n, k, s desde, s hasta, area, semilla)
2: Para cada sector sec hacer
3: desplazamientoX(sec) ← un número ∈ [0, area] con distribución uniforme
4: desplazamientoY (sec) ← un número ∈ [0, area] con distribución uniforme
5: Fin para
6: Para cada cliente c hacer
7: sector(c) ← sector elegido al azar con distribución uniforme
8: demanda(c) ← un número ∈ [1, 1.7 × s desde × k/n] con distribución uniforme
9: ubicacion(c) ← calcularU bicacionDentroDe(area, sector(c))
10: Fin para

11: Para cada par de clientes ci , cj (i 6= j) hacer


12: Si kubicacion(ci ) − ubicacion(cj )k < 2 entonces
13: Considerar conflicto entre ci y cj
14: Fin si
15: Fin para
16: Para cada s ∈ [s desde, s hasta] hacer
17: Imprimir n, k, s, sectores, demandas y pares de clientes conflictivos al archivo
18: pref ijoArchivo.n.k.s.area.semilla.dat
19: Fin para
20: Fin procedimiento

21: Función calcularUbicacionDentroDe(area, sector)


22: radio ← un número ∈ [0, 3] con distribución uniforme
23: α ← un ángulo ∈ [0, 2π] con distribución uniforme
24: coordenadaX ← desplazamientoX(sector) + cos(α) × radio
25: coordenadaY ← desplazamientoY (sector) + sin(α) × radio
26: devolver (coordenadaX, coordenadaY )
27: 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 en-
cuentran 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: Procedimiento generarInstanciasB(pref ijoArchivo, n, k, s desde, s hasta, area, semilla)
2: Para cada sector sec hacer
3: desplazamientoX(sec) ← un número ∈ [0, area] con distribución uniforme
4: desplazamientoY (sec) ← un número ∈ [0, area] con distribución uniforme
5: Fin para
6: Para cada cliente c hacer
7: sector(c) ← sector elegido al azar con distribución uniforme
8: Si c es un cliente importante, es decir, es el primero asignado a l sector entonces
9: demanda(c) ← un número ∈ [0.8 × s desde, 0.9 × s desde] con distribución uniforme
10: Si no
11: demanda(c) ← un número ∈ [1, 4] con distribución uniforme
12: Fin si
13: ubicacion(c) ← calcularU bicacionDentroDe(area, sector(c))
14: Fin para

15: Para cada par de clientes ci , cj (i 6= j) hacer


16: Si kubicacion(ci ) − ubicacion(cj )k < 2 entonces
17: Declarar conflicto entre ci y cj
18: Fin si
19: Fin para
20: Para cada s ∈ [s desde, s hasta] hacer
21: Imprimir n, k, s, sectores, demandas y pares de clientes conflictivos al archivo
22: pref ijoArchivo.n.k.s.area.semilla.dat
23: Fin para
24: Fin procedimiento

25: Función calcularUbicacionDentroDe(area, sector)


26: radio ← un número ∈ [0, 3] con distribución uniforme
27: α ← un ángulo ∈ [0, 2π] con distribución uniforme
28: coordenadaX ← desplazamientoX(sector) + cos(α) × radio
29: coordenadaY ← desplazamientoY (sector) + sin(α) × radio
30: devolver (coordenadaX, coordenadaY )
31: 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

P grupo C, se tiene un sector seci , 1 ≤ i ≤ k


Si llamamos sec1 . . . seck , a los sectores en las instancias del
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 holga-
das, 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: Procedimiento generarInstanciasC(pref ijoArchivo, n, k, s desde, s hasta, area, semilla)
2: Para cada sector sec hacer
3: desplazamientoX(sec) ← un número ∈ [0, area] con distribución uniforme
4: desplazamientoY (sec) ← un número ∈ [0, area] con distribución uniforme
5: Fin para
6: seci ← un sector arbitrario
7: p←0
8: Para cada cliente c hacer
9: sector(c) ← sector elegido al azar con distribución uniforme
10: Si sector(c) = seci entonces
11: p←p+1
12: Fin si
13: Fin para
14: Para cada cliente c hacer
15: Si sector(c) = seci entonces
16: demanda(c) ← un número ∈ [s desde/p, 1.4 × s desde/p] con distribución uniforme
17: Si no
18: demanda(c) ← un número ∈ [1, 4] con distribución uniforme
19: Fin si
20: ubicacion(c) ← calcularU bicacionDentroDe(area, sector(c))
21: Fin para

22: Para cada par de clientes ci , cj (i 6= j) hacer


23: Si kubicacion(ci ) − ubicacion(cj )k < 2 entonces
24: Declarar conflicto entre ci y cj
25: Fin si
26: Fin para
27: Para cada s ∈ [s desde, s hasta] hacer
28: 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

32: Función calcularUbicacionDentroDe(area, sector)


33: radio ← un número ∈ [0, 3] con distribución uniforme
34: α ← un ángulo ∈ [0, 2π] con distribución uniforme
35: coordenadaX ← desplazamientoX(sector) + cos(α) × radio
36: coordenadaY ← desplazamientoY (sector) + sin(α) × radio
37: devolver (coordenadaX, coordenadaY )
38: 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: Procedimiento generarInstanciasD(pref ijoArchivo, n, k, s desde, s hasta, semilla)
2: Para cada cliente c hacer
3: sector(c) ← sector elegido al azar con distribución uniforme
4: demanda(c) ← un número ∈ [1, 15 × s desde × k/n] con distribución uniforme
5: Fin para

6: seci ← un sector arbitrario


7: secj ← un sector arbitrario 6= seci
8: Para cada par de clientes ci , cj (i 6= j) hacer
9: probabilidadDeColocarArista ← un número ∈ [0, 1] con distribución uniforme
10: Si (sector(ci ) = seci y sector(cj ) = secj ) ó (sector(ci ) = secj y sector(cj ) = seci ) entonces
11: Si probabilidadDeColocarArista < 0.75 entonces
12: Declarar conflicto entre ci y cj
13: Fin si
14: Si no
15: Si probabilidadDeColocarArista < 0.02 entonces
16: Declarar conflicto entre ci y cj
17: Fin si
18: Fin si
19: Fin para
20: Para cada s ∈ [s desde, s hasta] hacer
21: Imprimir n, k, s, sectores, demandas y pares de clientes conflictivos al archivo
22: pref ijoArchivo.n.k.s.semilla.dat
23: Fin para
24: 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: Procedimiento generarInstanciasE(pref ijoArchivo, n, k, s desde, s hasta, area, semilla)
2: Para cada sector sec hacer
3: desplazamientoX(sec) ← un número ∈ [0, area] con distribución uniforme
4: desplazamientoY (sec) ← un número ∈ [0, area] con distribución uniforme
5: Fin para
6: Para cada cliente c hacer
7: sector ← sector elegido al azar con distribución uniforme
8: sector(c) ← sector
9: cantidadDeClientesDeSector(sector) ← cantidadDeClientesDeSector(sector) + 1
10: ubicacion(c) ← calcularU bicacionDentroDe(area, sector(c))
11: Fin para

12: Para cada par de clientes ci , cj (i 6= j) hacer


13: Si kubicacion(ci ) − ubicacion(cj )k < 2 entonces
14: Declarar conflicto entre ci y cj
15: Fin si
16: Fin para

17: Para cada s ∈ [s desde, s hasta] hacer


18: Para cada cliente c hacer
19: demanda(c) ← s/cantidadDeV erticesDelSector(sector(c))
20: Fin para

21: Imprimir n, k, s, sectores, demandas y pares de clientes conflictivos al archivo


22: pref ijoArchivo.n.k.s.area.semilla.dat
23: Fin para
24: Fin procedimiento

25: Función calcularUbicacionDentroDe(area, sector)


26: radio ← un número ∈ [0, 3] con distribución uniforme
27: α ← un ángulo ∈ [0, 2π] con distribución uniforme
28: coordenadaX ← desplazamientoX(sector) + cos(α) × radio
29: coordenadaY ← desplazamientoY (sector) + sin(α) × radio
30: devolver (coordenadaX, coordenadaY )
31: Fin función

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: Procedimiento generarInstanciasF(pref ijoArchivo, n, k, s desde, s hasta, semilla)
2: Para cada cliente c hacer
3: sector(c) ← sector elegido al azar con distribución uniforme
4: demanda(c) ← un número ∈ [1, 15 × s desde × k/n] con distribución uniforme
5: Fin para

6: Para cada par de clientes ci , cj (i 6= j) hacer


7: probabilidadDeColocarArista ← un número ∈ [0, 1]
8: 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
9: Si probabilidadDeColocarArista < 0.75 entonces
10: Declarar conflicto entre ci y cj
11: Fin si
12: Fin si
13: Fin para
14: Para cada s ∈ [s desde, s hasta] hacer
15: Imprimir n, k, s, sectores, demandas y pares de clientes conflictivos al archivo
16: pref ijoArchivo.n.k.s.semilla.dat
17: Fin para
18: Fin procedimiento

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: Procedimiento agregarCliques(conjunto de restricciones)
2: Para cada cliente i hacer
3: partesDeV ecinos ← conjunto de partes de vecinos(i)
4: Para cada conjunto K de clientes ∈ partesDeV ecinos hacer
5: Si K induce una clique maximal en vecinos(i) entonces
6: agregar al conjunto de restricciones la desigualdad asociada a K y a i
7: Fin si
8: Fin para
9: Fin para
10: 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: Procedimiento agregarCliquesDobles(conjunto de restricciones)
2: Para cada cliente i, j con i 6= j hacer
3: partesDeV ecinos ← conjunto de partes de vecinos(i, j)
4: Para cada conjunto K de clientes ∈ partesDeV ecinos hacer
5: Si K induce una clique maximal en vecinos(i, j) entonces
6: agregar al conjunto de restricciones la desigualdad asociada a K, i y j
7: Fin si
8: Fin para
9: Fin para
10: 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 simplifica-
ció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 computacio-
nal), 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: Procedimiento agregarCliquesReforzadas(conjunto de restricciones)
2: Para cada cliente i hacer
3: partesDeV ecinos ← conjunto de partes de vecinos(i)
4: Para cada conjunto K 0 de clientes ∈ partesDeV ecinos hacer
5: restantes ← vecinos(i)\K 0
6: partesDeV ecinosRestantes ← conjunto de partes de (restantes)
7: Para cada conjunto K de clientes ∈ partesDeV ecinosRestantes hacer
8: Si K induce una clique maximal en restantes entonces
9: agregar al conjunto de restricciones la desigualdad asociada a K, K 0 y a i
10: Fin si
11: Fin para
12: Fin para
13: Fin para
14: Fin procedimiento

Algoritmo 10 Generación de desigualdades de Doble Clique Reforzada


1: Procedimiento agregarDoblesCliquesReforzadas(conjunto de restricciones)
2: Para cada cliente i, j con i 6= j hacer
3: partesDeV ecinos ← conjunto de partes de vecinos(i, j)
4: Para cada conjunto K 0 de clientes ∈ partesDeV ecinos hacer
5: restantes ← vecinos(i, j)\K 0
6: partesDeV ecinosRestantes ← conjunto de partes de (restantes)
7: Para cada conjunto K de clientes ∈ partesDeV ecinosRestantes hacer
8: Si K induce una clique maximal en restantes entonces
9: agregar al conjunto de restricciones la desigualdad asociada a K, K 0 , i y j
10: Fin si
11: Fin para
12: Fin para
13: Fin para
14: Fin procedimiento

Algoritmo 11 Generación de desigualdades de Clique Replicada


1: Procedimiento agregarCliquesReplicadas(conjunto de restricciones)
2: Para cada cliente i hacer
3: partesDeV ecinos ← conjunto de partes de vecinos(i)
4: Para cada conjunto K de clientes ∈ partesDeV ecinos hacer
5: Si K induce una clique maximal en vecinos(i) entonces
6: Para cada cliente k ∈ K y cliente pk 6= i adyacente a k, pk ∈ / K y cK (pk ) > 0 hacer
7: agregar al conjunto de restricciones la desigualdad asociada a K, i, k y pk
8: Fin para
9: Fin si
10: Fin para
11: Fin para
12: 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: Procedimiento agregarCliquesDobleExtendidas(conjunto de restricciones)
2: Para cada cliente i, j, t con i 6= j, t adyacente a j y no a i hacer
3: partesDeV ecinos ← conjunto de partes de vecinos(i, j)
4: Para cada conjunto K de clientes ∈ partesDeV ecinos hacer
5: Si K induce una clique maximal en vecinos(i, j) entonces
6: agregar al conjunto de restricciones la desigualdad asociada a K, i, j y t
7: Fin si
8: Fin para
9: Fin para
10: 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: Procedimiento agregarCliquesDoble2-Extendidas(conjunto de restricciones)
2: 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
3: partesDeV ecinos ← conjunto de partes de vecinos(i, j)
4: Para cada conjunto K de clientes ∈ partesDeV ecinos hacer
5: Si K induce una clique maximal en vecinos(i, j) entonces
6: agregar al conjunto de restricciones la desigualdad asociada a K, i, j, t y p
7: Fin si
8: Fin para
9: Fin para
10: Fin procedimiento

Generación de desigualdades de Clique Doble Cerrada. Nuevamente, es similar a la gene-


ració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: Procedimiento agregarCliquesDobleCerradas(conjunto de restricciones)
2: 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
3: partesDeV ecinos ← conjunto de partes de vecinos(i, j)
4: Para cada conjunto K de clientes ∈ partesDeV ecinos hacer
5: Si K induce una clique maximal en vecinos(i, j) y todo cliente k ∈ K es adyacente a p
y a t entonces
6: agregar al conjunto de restricciones la desigualdad asociada a K, i, j, t y p
7: Fin si
8: Fin para
9: Fin para
10: 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: Procedimiento agregar4Ciclo+Cliques(conjunto de restricciones)
2: 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
3: partesDeV ecinos ← conjunto de partes de vecinos(i, k)
4: Para cada conjunto K de clientes ∈ partesDeV ecinos hacer
5: Si K induce una clique maximal en vecinos(i, k) entonces
6: Para cada t0 ∈ K hacer
7: agregar al conjunto de restricciones la desigualdad asociada a i, j, k, K y t0
8: Fin para
9: Fin si
10: Fin para
11: Fin para
12: 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.

Clique Clique Clique Clique Clique Resto


Caracterı́stica \ Familias Doble Doble Doble Doble Doble de las
Reforzada Extendida 2-Extendida Cerrada Familias
Promedio de porcentajes de ajuste 34.78 2.42 9.77 6.08 2.85 0
Cantidad de instancias con el mayor porcentaje de ajuste 209 6 23 17 17 0
Cantidad de instancias no factibles detectadas 11 2 9 6 2 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 ex-
ponen 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 ins-
tancias, 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 suficiente-
mente 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ı́ com-
plejo, 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 algo-
ritmo 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

Cantidad de Cantidad de instancias no resueltas


Familia
instancias resueltas Por falta de tiempo Por falta de memoria o excepciones En total
Clique 1 24 64 89
Clique Doble 41 28 21 49
Clique Reforzada 1 42 47 89
Doble Clique Reforzada 1 62 27 89
Clique Replicada 1 26 63 89
Clique Doble Extendida 1 50 39 89
Clique Doble 2-Extendida 1 49 40 89
Clique Doble Cerrada 1 28 61 89
Orden de Ciclo 1 21 68 89
Ciclo Impar 1 21 68 89
4 Ciclo + Clique 1 26 63 89
Todas a la vez 42 48 0 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 37

Grupo n k s Clique Clique Reforzada Clique Replicada Orden de Ciclo Ciclo Impar 4 Ciclo + Clique
A 20 2 156
A 20 3 199
A 20 4 135
A 25 4 128
A 30 10 499
A 30 3 131 347
A 30 3 140 373
A 35 4 113
A 35 4 145
A 40 4 134 481 481 481 481
A 40 4 135 476 476 476
A 40 4 150 533 534 534
A 50 5 148 673 673 673 673 673 673
A 78 40 127 2817 2813 2816 2813 2813 2817
A 80 13 53 437 437 437 437 437 437
B 20 10 519 4136 4136 4136 4136 4136 4136
B 20 4 56
B 20 4 66
B 20 4 80
B 20 4 88
B 30 10 135
B 40 10 270
B 40 10 288
B 41 6 103
B 41 6 120
B 50 10 50
B 50 30 109
B 80 12 44 492 494 494 494 494 494
B 95 11 71 682 683 683 683 682 683
B 97 10 80 770 771 771 771 771 771
C 20 2 121
C 20 2 123
C 20 2 126
C 20 2 131
C 20 2 138
C 20 2 199
C 20 4 175
C 25 4 27
C 42 7 23 105
C 42 7 49 237 236
C 50 10 22 166
C 50 10 26 202
C 50 10 33
C 60 8 47 270 270 270 270 270 270
C 73 12 45 431 431 431 431 431 431
D 20 3 156
D 20 3 162
D 20 3 166
D 20 3 171
D 20 3 172
D 20 3 177
D 25 3 22
D 30 3 186 519 519 518 519
D 30 4 130
D 30 4 198
D 42 5 18 64 66 66
D 42 5 19 69 70 70
D 53 7 65 314 314 314 314 314 314
D 72 10 60 522 522 522 522 522 522
D 78 11 44 369 369 369 369 369 369
E 20 2 110
E 20 2 120
E 20 2 200
E 20 2 697
E 20 3 126
E 25 3 80
E 30 3 182 436
E 42 4 65 224
E 42 5 30 127
E 53 7 415 2458
E 64 9 540 4107
E 73 11 73 657 657
E 80 7 70 412 444 444 444 444 444
E 90 7 74 457 476 476 476 476 476
E 90 7 79 465 509 509 509 509 509
F 20 2 240
F 20 2 322
F 20 2 652
F 24 3 18
F 24 3 26 69
F 24 3 35
F 30 4 238 680 680
F 31 3 152 289 289 289
F 42 6 16 58 60 60 60 60
F 42 6 19 87 87 87
F 42 6 24 92 92 92 92
F 73 11 48 360 360 360 360 360 360
F 73 11 73 562 562 562 562 562 562
F 77 14 98 870 870 870 870 870 870
F 83 10 77 596 596 596 596 596 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 n k s Clique D. D. Clique Reforzada Clique D. Ext. Clique D. 2-Ext. Clique D. Cerrada Todas
A 20 2 156 134 134
A 20 3 199 412 479 412
A 20 4 135 309 395 309
A 25 4 128 226 396 226
A 30 10 499 2922 3,150 3,257 2922
A 30 3 131 151 347 337 151
A 30 3 140 195 373 354 195
A 35 4 113 156 390 309 332 156
A 35 4 145 373 527 502 518 373
A 40 4 134 256 481 359 481 256
A 40 4 135 202 476 353 417 202
A 40 4 150 256 534 396 401 256
A 50 5 148 382 673 436 673 382
A 78 40 127 2530 2819 2715 2819 2812 2530
A 80 13 53 362 437 417 428 427 359
B 20 10 519 4136 4136 4136 4136 4136 4136
B 20 4 56 90
B 20 4 66 110
B 20 4 80 138 138
B 20 4 88 154 154
B 30 10 135 1009 1009
B 40 10 270 2097
B 40 10 288 2281 2241
B 41 6 103 537 592 563 575 537
B 41 6 120 639 694 664 678 639
B 50 10 50 414 456 414
B 50 30 109 1,735
B 80 12 44 394 480 454 475 490 394
B 95 11 71 585 668 635 677 683 585
B 97 10 80 623 757 705 721 768 623
C 20 2 121 223 179 120
C 20 2 123 220 131 149 70
C 20 2 126 232 188 232 175
C 20 2 131 132 232 136 132
C 20 2 138 247 155 176 92
C 20 2 199 371 278 379 275
C 20 4 175 305 214
C 25 4 27 64 94 79 63
C 42 7 23 52 105 82 89 52
C 42 7 49 198 235 212 215 198
C 50 10 22 117 161 117
C 50 10 26 157 207 157
C 50 10 33 245 298 245
C 60 8 47 205 269 246 270 265 205
C 73 12 45 352 427 402 430 422 352
D 20 3 156 364 285
D 20 3 162 200 283 200
D 20 3 166 154 154
D 20 3 171 188 188
D 20 3 172 279
D 20 3 177 235
D 25 3 22 41 21
D 30 3 186 456 517 464 511 440 421
D 30 4 130 241 412 241
D 30 4 198 556 369
D 42 5 18 28 66 53 57 65 28
D 42 5 19 38 70 59 60 69 38
D 53 7 65 313 314 313 314 314 313
D 72 10 60 446 522 469 512 522 446
D 78 11 44 305 369 359 364 369 305
E 20 2 110 24 24
E 20 2 120 106 25
E 20 2 200 44 628 44
E 20 2 697 146
E 20 3 126 57 57
E 25 3 80 32 32
E 30 3 182 60 372 60
E 42 4 65 36 226 36
E 42 5 30 35 109 35
E 53 7 415 479 1999 479
E 64 9 540 762 3848 762
E 73 11 73 171 650 633 171
E 80 7 70 73 439 444 444 444 73
E 90 7 74 79 472 476 476 476 79
E 90 7 79 90 505 509 509 509 90
F 20 2 240 234 240 240 240 240 233
F 20 2 322 322 322 322 322 322 322
F 20 2 652 652 652 652 344 344
F 24 3 18 13 13
F 24 3 26 52
F 24 3 35 47
F 30 4 238 541 675 609 607 541 523
F 31 3 152 252 289 289 289 289 251
F 42 6 16 33 60 46 43 55 27
F 42 6 19 40 87 56 57 70 40
F 42 6 24 55 92 70 81 80 55
F 73 11 48 337 360 341 351 316 304
F 73 11 73 513 562 528 539 506 487
F 77 14 98 820 865 854 856 844 815
F 83 10 77 520 596 565 576 548 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: Función BestIn(V : un conjunto de nodos)
2: cliqueADevolver ← un conjunto vacı́o de nodos
3: 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 ).
5: Si fue encontrado, agregar mejorV ertice a cliqueADevolver
6: Fin mientras
Devolver cliqueADevolver
7: Fin función

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 solu-
ciones 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: Función BusquedaLocal(V : un conjunto de nodos)
2: CC, CCbest ← una cliquePfactible inicial
3: pesoActual, pesoM ax ← v∈CC d(v)
4: Computar P A y OM
5: Mientras pesoM ax ≥ 0 hacer
6: CCprev ← CC
7: Si hay en PA nodos aún no marcados entonces
8: v ← un nodo en PA no marcado con demanda máxima
9: Agregar v a CC
10: pesoActual ← pesoActual + d(v)
11: Marcar v
12: Si pesoActual > pesoM ax entonces
13: CCbest ← CC
14: pesoM ax ← pesoActual
15: Fin si
16: Si no
17: Si hay en CC nodos aún no marcados entonces P
18: v ← un nodo a quitar en CC tal que este efecto maximice u∈P A d(u)
19: Quitar v de CC
20: pesoActual ← pesoActual − d(v)
21: Desmarcar v
22: Fin si
23: Fin si
24: Actualizar P A y OM
25: Fin mientras
Devolver cliqueADevolver
26: Fin función

Algoritmo 18 Procedimiento de separación de la familia Clique


1: Procedimiento Separar Clique
2: Para cada nodo i hacer . Se ejecuta n veces
3: K ← clique maximal en N (i)
4: considerando como pesos de cada nodo k ∈ K a dk ∗ xki
P . Depende de la complejidad temporal del algoritmo heurı́stico de clique maximal
5: Si k∈K dk xki > li entonces . O(|K|)
6: Agregar la desigualdad asociada a K y a i al pool de separaciones . O(1)
7: Fin si
8: Fin para
9: Fin procedimiento

Algoritmo 19 Procedimiento de separación de la familia Clique Doble


1: Procedimiento Separar Clique Doble
2: Para cada nodo i hacer . Se ejecuta n veces
3: Para cada nodo j conectado a i hacer . Se ejecuta n veces
4: K ← clique maximal en N (i) ∩ N (j)
5: considerando como pesos de cada nodo k ∈ K a dk ∗ (xik − xjk )
P . Depende de la complejidad
P temporal del algoritmo heurı́stico de clique maximal
6: Si ri + k∈K dk (xik − xjk ) > (lj + (s − k∈K dk ) ∗ xji ) entonces . O(|K|)
7: Agregar la desigualdad asociada a K, i y a j al pool de separaciones . O(1)
8: Fin si
9: Fin para
10: Fin para
11: Fin procedimiento
42 Procedimientos de separación

4.1.4. Procedimiento de separación de Clique Reforzada

Avanzando Ppor 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: Procedimiento Separar Clique Reforzada
2: Para cada nodo i hacer . Se ejecuta n veces
3: K ← clique maximal en N (i)
4: considerando como pesos de cada nodo k ∈ K a dk ∗ xki
. Depende de la complejidad temporal del algoritmo heurı́stico de clique maximal
5: K0 P
← N (i) − K P . O(K)
6: Si k∈K dk xki + k∈K 0 cK (k)xki > li entonces . O(|K| + |K 0 |)
7: Agregar la desigualdad asociada a K, K 0 y a i al pool de separaciones . O(1)
8: Fin si
9: Fin para
10: 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: Procedimiento Separar Doble Clique Reforzada
2: Para cada nodo i hacer . Se ejecuta n veces
3: Para cada nodo j conectado a i hacer . Se ejecuta n veces
4: K ← clique maximal en N (i) ∩ N (j)
5: considerando como pesos de cada nodo k ∈ K a dk ∗ (xik − xjk )
. Depende de la complejidad temporal del algoritmo heurı́stico de clique maximal
6: K 0 ← (N
P (i) ∩ N (j)) −K P . O(K)
7: 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)
8: Agregar la desigualdad asociada a K, K 0 , i y a j al pool de separaciones . O(1)
9: Fin si
10: Fin para
11: Fin para
12: 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
P de separación simplificado en el cual se considera |Q| = |pk | = 1,
Algoritmo 22 muestra un procedimiento
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: Procedimiento Separar Clique Replicada
2: Para cada nodo i hacer . Se ejecuta n veces
3: K ← clique maximal en N (i)
4: considerando como pesos de cada nodo k ∈ K a dk ∗ xki
. Depende de la complejidad temporal del algoritmo heurı́stico de clique maximal
5: pk ← el nodo ∈/ N (i) y conectado con algún k ∈ K que maximiza cK (pk )(xpk k − xik )
P . O(|V | ∗ |K|)
6: Si k∈K dk xki + cK (pk )(xpk k − xik ) > li entonces . O(|K|)
7: Agregar la desigualdad asociada a K, k, pk y a i al pool de separaciones . O(1)
8: Fin si
9: Fin para
10: Fin procedimiento

Algoritmo 23 Procedimiento de separación de la familia Clique Doble Extendida


1: Procedimiento Separar Clique Doble Extendida
2: Para cada nodo i hacer . Se ejecuta n veces
3: Para cada nodo j conectado a i hacer . Se ejecuta n veces
4: K ← clique maximal en N (i) ∩ N (j)
5: considerando como pesos de cada nodo k ∈ K a dk ∗ (xik − xjk )
. Depende de la complejidad temporal del algoritmo heurı́stico de clique maximal
6: t ← un Pnodo ∈ N (j)\N (i) que minimiza cK (t)(xjt − xji ) . O(|N (j)\N (i)|)
7: Si ri + k∈K dk (xik − xjk ) > lj + (s − d(K) − cK (t)) xji + cK (t)xjt entonces
. O(|K| ∗ 2))
8: Agregar la desigualdad asociada a K, t, i y a j al pool de separaciones . O(1)
9: Fin si
10: Fin para
11: Fin para
12: Fin procedimiento

4.1.8. Procedimiento de separación de Clique Doble 2-Extendida

Análogo al procedimiento
P anterior, el Algoritmo 24 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 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: Procedimiento Separar Clique Doble 2-Extendida
2: Para cada nodo i hacer . Se ejecuta n veces
3: Para cada nodo j conectado a i hacer . Se ejecuta n veces
4: K ← clique maximal en N (i) ∩ N (j)
5: considerando como pesos de cada nodo k ∈ K a dk ∗ (xik − xjk )
. Depende de la complejidad temporal del algoritmo heurı́stico de clique maximal
6: t, p ← nodos ∈ N (j)\N (i) y ∈ N (i)\N (j) respectivamente, que minimizan
cK (t)(xpi − xji ) + cK (t)(xjt − xji )
P . O(|N (j)\N (i)| ∗ |N (i)\N (j)|)
7: 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)
8: Agregar la desigualdad asociada a K, t, p, i y a j al pool de separaciones
. O(1)
9: Fin si
10: Fin para
11: Fin para
12: 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: Procedimiento Separar Clique Doble Cerrada
2: Para cada nodo i hacer . Se ejecuta n veces
3: Para cada nodo j conectado a i hacer . Se ejecuta n veces
4: K ← clique maximal en N (i) ∩ N (j)
5: considerando como pesos de cada nodo k ∈ K a dk ∗ (xik − xjk )
. Depende de la complejidad temporal del algoritmo heurı́stico de clique maximal
6: 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 )
P . O(|N (j)\N (i)| ∗ |N (i)\N (j)|)
7: 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)
8: Agregar la desigualdad asociada a K, t, p, i y a j al pool de separaciones
. O(1)
9: Fin si
10: Fin para
11: Fin para
12: 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: Procedimiento Separar 4 Ciclo + Clique
2: Para cada nodo i hacer . Se ejecuta n veces
3: Para cada nodo j conectado a i hacer . Se ejecuta n veces
4: Para cada nodo k conectado a j y no a i hacer . Se ejecuta n veces
5: K ← clique maximal en N (i) ∩ N (k)
6: considerando como pesos de cada nodo t ∈ K a dt ∗ (xkt − xit )
. Depende de la complejidad temporal del algoritmo heurı́stico de clique maximal
7: t0 ← un nodoP K que maximiza dk ∗ (xkt0 − xit0 )
∈ . O(|K|)
8: Si li + lj > t∈K dt (xkt − xit ) + dk ∗ (xkt0 − xit0 ) + mı́n {di , dj , dk } entonces
. O(|K|)
9: Agregar la desigualdad asociada a K, i, j, k y a t0 al pool de separaciones
. O(1)
10: Fin si
11: Fin para
12: Fin para
13: Fin para
14: 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: Procedimiento Separar Orden de Ciclo
2: Para cada nodo i hacer . Se ejecuta n veces
3: Para cada nodo j conectado a i hacer . Se ejecuta n veces
4: Construir digrafo D asociado a i y a j con la asignación de pesos definida en 4.1. . O(|V |)
5: Aplicar algoritmo de ciclo de media mı́nima a D . O(|V | ∗ |E|)
6: Si el ciclo de media mı́nima tiene media < −1 entonces
. Verificación constante
7: 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
8: Fin si
9: Fin para
10: Fin para
11: Fin procedimiento

Algoritmo 28 Procedimiento para hallar un ciclo impar con longitud menor a 3


1: Procedimiento Ciclo impar con longitud menor a 3
2: Partir cada nodo v en dos nodos v1 y v2
3: Para cada arista (v, w) hacer
4: Formar dos nuevas aristas (v1 , w2 ) y (v2 , w1 )
5: Fin para
6: Para cada vértice v hacer
7: Hallar el camino más corto entre v1 y v2 . Este camino podrá reconstruirse como un ciclo de
menor longitud en el grafo original.
8: Si dicho ciclo existe y su longitud es menor a 3, entonces ha violado la desigualdad Ciclo
Impar
9: Fin para
10: 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: Procedimiento redondearX(Solucion s)
2: Mientras haya cambios en las variables de orden de s hacer
. Primera fase, el ciclo se ejecuta en el peor caso, m veces
3: Para cada Par de aristas ij y jk hacer . O(m2 )
4: Considerar todas las posibles combinaciones para asignar orden
5: entre i, j y j, aplicando reglas de transitividad . O(1)
6: Fin para
7: xij ← una variable de orden aún no redondeada, la más cercana a 0 ó a 1 . O(m)
8: Si se encontró alguna (i.e., quedan aún variables por redondear) entonces
9: Redondear el valor de xij a 0 ó a 1 según corresponda . O(1)
10: Fin si
11: Fin mientras . Las variables de orden son ahora válidas
12: 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,
P llamado por ejemplo v, se procurará asignarle el mayor
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: Para cada nodo v, siguiendo un orden topológico dado por las variables de orden hacer . O (m)
4: lv ← el menor número posible considerando a los vértices ya visitados vecinos de v
. O(n)
5: Si v es principal entonces . O(n)
6: rv ← lv + dv . O(1)
7: Si no . O(m)
8: K ← (los vecinos de v aún no visitados) ∪ (los vecinos de (los vecinos de v aún no
visitados)) P 
9: rv ← máx lv + dv , s − k∈K dk )
10: Fin si
11: 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)
12: 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: Función aplicarHeuristicaPrimalDeProgramacionLineal(Solucion s)
2: redondearX(solucion) . O(m3 )
3: problemaLP ← Un problema de programación lineal nuevo basado en el problema original
. O(1)
4: Agregar a problemaLP las mismas variables que el problema original (los vectores l, r, x)
. O(n2 )
5: Agregar a problemaLP las mismas desigualdades de antiparalelismo y demanda
. O(n)
6: 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
7: 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)
8: 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 procedi-
mientos 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 ex-
perimentació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 pro-


blema 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 porcen-
tajes 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 comporta-
miento 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 Ce-
rrada

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 (2) (4) (5) (6) (8)
Clique Ref. Doble C. Ref. (3) Clique Doble Clique Doble Clique (7) Doble Clique
Clique Repl. C.Doble Ext. Doble Doble Clique Doble C. Ref. Doble C. Ref. Doble Clique C.Doble Ext.
Orden de Ciclo C.Doble 2-Ext. Clique C. Ref. C.Doble Ext. C.Doble Ext. Doble C. Ref. C.Doble 2-Ext.
Ciclo Impar C.Doble Cerr. C. Repl. C.Doble 2-Ext. C.Doble 2-Ext.
4 Ciclo + C. C.Doble Cerr.
(a) 32.22 11.11 1.11 0 0 0 0 0
(b) 67.78 74.44 33.33 35.56 36.67 33.33 34.44 35.56
(c) 1.11 12.22 65.56 64.44 63.33 66.67 65.56 64.44
(d) 0 3.33 10.00 21.11 15.56 20.00 13.33 15.56
(e) 0 1.11 15.56 20.00 3.33 11.11 10.00 11.11
(f) 0.10 0.18 0.68 2.07 0.36 0.46 0.49 0.53
(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 can-
tidad 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
Clique Ref. Doble C. Ref. Clique Doble Clique Doble Clique Doble Clique
Grupo n k s Clique Repl. C.Doble Ext. Doble Doble Clique Doble C. Ref. Doble C. Ref. Doble Clique C.Doble Ext.
Orden de Ciclo C.Doble 2-Ext. Clique C. Ref. C.Doble Ext. C.Doble Ext. Doble C. Ref. C.Doble 2-Ext.
Ciclo Impar C.Doble Cerr. C. Repl. C.Doble 2-Ext. C.Doble 2-Ext.
4 Ciclo + C. C.Doble Cerr.
A 20 2 156 1.99 1.73 3.42 2.92 2.34 2.48
A 20 3 199 1.28 0.88 9.67 9.14 3.88 46.09
A 20 4 135 2.2 4.48 3.21 3.03 1.01 6.56
A 25 4 128 100.78 32.6 175.07 168.7 72.55 41.88
A 30 10 499 19.39 228.03 516.05 187.95 211.48 132.18
A 30 3 131 45.85 49.93 46.22 42.4 40.91 35.01
A 30 3 140 7.31 7.85 161.62 38.4 9.08 112.09
A 35 4 113 172.65 65.93 2341.42 2195.9 130.78
A 35 4 145 798.01 2155.56 41.53 46.59 101.11 628.71
A 40 4 134 1293.76 331.66 101.23 92.65 872.39 1225.17
A 40 4 135 1719.64 177.46 264.31
A 40 4 150 342.87 207.82 356.24 645.15
A 50 5 148
A 78 40 127
A 80 13 53
B 20 10 519 78.39 2.18 0.67 0.53 1.33 1.45 0.90 3.20
B 20 4 56 79.66 382.25 358.69 130.92 96.75 163.11
B 20 4 66 44.73 1122.68 123.59 90.14 643.97 40.10
B 20 4 80 49.76 581.84 47.88 51.16 9.32 184.90 61.79
B 20 4 88 31.69 8.18 2387.46 176.92 269.33 78.97 6.78
B 30 10 135 16.76 27.79 443.49 148.78 13.53 168.56
B 40 10 270 204.67 705.39 1886.82
B 40 10 288 22.64 88.71 168.98
B 41 6 103 93.18 33.60 200.58 199.85 76.02 597.92
B 41 6 120 122.25 245.22 908.99 892.29 108.9 2018.22
B 50 10 50 6.45 1.15 8.25 7.87 6.78 7.57
B 50 30 109
B 80 12 44
B 95 11 71
B 97 10 80
C 20 2 121 902.73 259.06 245.74 109.31 14.84
C 20 2 123 209.78 21.06 19.28 476.19 25.95
C 20 2 126 140.55 130.11 532.43
C 20 2 131 1989.22 1549.1 710.10 627.09 2205.38 147.93 1937.25
C 20 2 138 116.46 2164.55 41.90 38.18 1752.6 86.12
C 20 2 199 998.20 1040.17 1073.53
C 20 4 175
C 25 4 27 152.09 115.86 33.51 30.84 47.34 15.36
C 42 7 23 2317.14 1728.89
C 42 7 49 279.80 574.9
C 50 10 22 24.85 8.32 20.18 18.96 28.82 10.92
C 50 10 26 100.05 8.75 135.51 127.79 109.82 121.25
C 50 10 33 44.67 16.87 9.45 8.78 43.95 8.92
C 60 8 47
C 73 12 45
D 20 3 156 219.18 79.00 25.05 13.84 343.61 33.06
D 20 3 162 19.68 15.95 126.81 73.53 11.45 36.95
D 20 3 166 42.24 29.67 39.52 30.99 87.25 105.14
D 20 3 171 5.06 234 103.9 57.49 9.85 10.20
D 20 3 172 323.17 247.4 14.49 11.36 10.71 30.16
D 20 3 177 18.89 25.56 42.81 56.05 32.73 30.96
D 25 3 22 65.34 84.84 34.42 54.66 144.37 10.56
D 30 3 186
D 30 4 130 28.07 251.44 14.04 33.27 9.25 24.23
D 30 4 198 68.59 30.98 18.96 347.47 93.9 128.92
D 42 5 18 105.7 228.65 515.63 247.29
D 42 5 19 938.74 1748.34 259.35 962.76 891.18
D 53 7 65
D 72 10 60 753.55
D 78 11 44
E 20 2 110 3.49 0.28 6.12 5.37 4.2 5.08
E 20 2 120
E 20 2 200 10.20 10.33 10.56 8.19 19.59 11.93
E 20 2 697
E 20 3 126 8.11 11.70 1.85 1.86 18.17 1.59
E 25 3 80 4.85 0.81 5.89 5.48 4.64 4.80
E 30 3 182 4.84 2.71 9.73 8.74 5.95 8.29
E 42 4 65 23.17 13.36 49.42 43.02 30.03 36.73
E 42 5 30 8.56 8.97 14.3 13.03 10.02 11.39
E 53 7 415 18.98 22.16 30.56 27.7 21.89 24.97
E 64 9 540 28.24 59.03 42.29 39.24 32.20 35.68
E 73 11 73 35.31 59.42 48.57 45.68 38.56 42.67
E 80 7 70 136.09 492.10 274.40 241.78 170.68 208.00
E 90 7 74 261.62 735.94 534.35 470.75 329.62 402.36
E 90 7 79 275.03 687.46 568.12 499.57 348.50 427.13
F 20 2 240
F 20 2 322
F 20 2 652 2300.67
F 24 3 18 71.03 25.49 13.42 44.69 46.08 8.47
F 24 3 26 60.09 26.39 13.85 23.14 96.99 13.79
F 24 3 35 59.71 666.20 49.23 156.67 72.17 768.91
F 30 4 238
F 31 3 152
F 42 6 16 65.17 1354.04 515.95 154.24 77.24 765.17 60.01
F 42 6 19 205.40 416.04 386.56 1157.92
F 42 6 24 679.2 640.5 347.45 1284.44
F 73 11 48
F 73 11 73
F 77 14 98
F 83 10 77

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 57

Clique
Clique Ref. Doble C. Ref. Clique Doble Clique Doble Clique Doble Clique
Grupo n k s Clique Repl. C.Doble Ext. Doble Doble Clique Doble C. Ref. Doble C. Ref. Doble Clique C.Doble Ext.
Orden de Ciclo C.Doble 2-Ext. Clique C. Ref. C.Doble Ext. C.Doble Ext. Doble C. Ref. C.Doble 2-Ext.
Ciclo Impar C.Doble Cerr. C. Repl. C.Doble 2-Ext. C.Doble 2-Ext.
4 Ciclo + C. C.Doble Cerr.
A 20 2 156 246 134 134 134 134 134 134
A 20 3 199 474 412 412 412 412 412 412
A 20 4 135 309 309 309 309 309 309
A 25 4 128 226 226 226 226 226 226
A 30 10 499 3014 2922 2922 2922 2922 2922 2922
A 30 3 131 230 151 151 151 151 151 151
A 30 3 140 369 268 195 195 195 195 195 195
A 35 4 113 390 288 156 156 156 156 156 156
A 35 4 145 527 479 373 373 373 373 373 373
A 40 4 134 481 309 256 256 256 256 256 256
A 40 4 135 476 323 202 202 202 202 202 202
A 40 4 150 531 366 256 256 256 256 256 256
A 50 5 148 673 436 382 382 382 382 382 382
A 78 40 127 2819 2481 2459 2459 2457 2456 2458 2459
A 80 13 53 437 347 347 347 347 347 347 347
B 20 10 519 4136 4136 4136 4136 4136 4136 4136 4136
B 20 4 56 90 90 90 90 90 90 90
B 20 4 66 110 110 110 110 110 110 110
B 20 4 80 138 138 138 138 138 138 138
B 20 4 88 154 154 154 154 154 154 154
B 30 10 135 1059 1043 1039 1039 1039 1039 1039 1039
B 40 10 270 2139 2109 2097 2097 2097 2097 2097 2097
B 40 10 288 2284 2242 2241 2241 2241 2241 2241 2241
B 41 6 103 597 563 537 537 537 537 537 537
B 41 6 120 669 664 639 639 639 639 639 639
B 50 10 50 472 414 414 414 414 414 414
B 50 30 109 1984 1807 1753 1756 1754 1747 1765
B 80 12 44 493 446 394 394 394 394 394 394
B 95 11 71 683 621 585 585 585 585 585 585
B 97 10 80 771 705 623 623 623 623 623 623
C 20 2 121 120 120 120 120 120 120 120
C 20 2 123 218 70 70 70 70 70 70 70
C 20 2 126 227 120 120 120 120 120 120 120
C 20 2 131 132 132 132 132 132 132 132
C 20 2 138 92 92 92 92 92 92 92
C 20 2 199 275 275 275 275 275 275 275
C 20 4 175 337 212 214 214 210 212 210 214
C 25 4 27 94 66 54 54 54 54 54 54
C 42 7 23 105 66 52 52 52 52 52 52
C 42 7 49 237 200 193 193.00 193 193 193 193
C 50 10 22 167 117 117.00 117 117 117 117
C 50 10 26 207 157 157 157 157 157 157
C 50 10 33 297 245 245 245 245 245 245
C 60 8 47 270 217 205 205 205 205 205 205
C 73 12 45 431 375 346 346 346 346 346 346
D 20 3 156 291 285 285 285 285 285 285
D 20 3 162 305 212 200 200 200 200 200 200
D 20 3 166 200 154 154 154 154 154 154
D 20 3 171 213 188 188 188 188 188 188
D 20 3 172 286 266 266 266 266 266 266
D 20 3 177 250 201 201 201 201 201 201
D 25 3 22 40 30 21 21 21 21 21 21
D 30 3 186 512 404 367 367 367 367 367 367
D 30 4 130 436 310 241 241 241 241 241 241
D 30 4 198 556 429 361 361 361 361 361 361
D 42 5 18 64 52 27 27 27 27 27 27
D 42 5 19 69 51 36 36 36 36 36 36
D 53 7 65 314 279 278 278 278 278 278 278
D 72 10 60 522 469 446 446 446 446 446 446
D 78 11 44 310 269 269 269 269 269 269
E 20 2 110 24 24 24 24 24 24
E 20 2 120 25 25 25 25 25 25 25
E 20 2 200 44 44 44 44 44 44
E 20 2 697 146 146 146 146 146 146 146
E 20 3 126 57 57 57 57 57 57
E 25 3 80 32 32 32 32 32 32
E 30 3 182 456 60 60 60 60 60 60
E 42 4 65 223 226 36 36 36 36 36 36
E 42 5 30 126 127 35 35 35 35 35 35
E 53 7 415 2390 2427 479 479 479 479 479 479
E 64 9 540 3955 4017 762 762 762 762 762 762
E 73 11 73 639 633 171 171 171 171 171 171
E 80 7 70 443 444 73 73 73 73 73 73
E 90 7 74 475 476 79 79 79 79 79 79
E 90 7 79 503 509 90 90 90 90 90 90
F 20 2 240 239 158 158 158 158 158 158 158
F 20 2 322 322 198 198 198 198 198 198 198
F 20 2 652 652 308 308 308 308 308 308 308
F 24 3 18 23 13 13 13 13 13 13
F 24 3 26 61 50 50 50 50 50 50
F 24 3 35 68 58 47 47 47 47 47 47
F 30 4 238 679 481 481 481 481 481 481 481
F 31 3 152 283 235 159 159 159 159 159 159
F 42 6 16 59 27 27 27 27 27 27 27
F 42 6 19 86 40 40 40 40 40 40 40
F 42 6 24 92 53 45 45 45 45 45 45
F 73 11 48 360 265 256 256 256 256 256 256
F 73 11 73 562 441 434 434 434 434 434 434
F 77 14 98 870 772 755 755 755 755 755 755
F 83 10 77 596 472 472 472 472 472 472 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 Contribución de cada familia de desigualdades básicas

5.2.3. 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 59

Clique
Clique Ref. Doble C. Ref. Clique Doble Clique Doble Clique Doble Clique
Grupo n k s Clique Repl. C.Doble Ext. Doble Doble Clique Doble C. Ref. Doble C. Ref. Doble Clique C.Doble Ext.
Orden de Ciclo C.Doble 2-Ext. Clique C. Ref. C.Doble Ext. C.Doble Ext. Doble C. Ref. C.Doble 2-Ext.
Ciclo Impar C.Doble Cerr. C. Repl. C.Doble 2-Ext. C.Doble 2-Ext.
4 Ciclo + C. C.Doble Cerr.
A 20 2 156 27335 21 17 21 21 21 21
A 20 3 199 29787 43 15 181 181 115 803
A 20 4 135 87 129 67 67 29 165
A 25 4 128 2133 601 2349 2349 1329 679
A 30 10 499 14389 401 2943 2919 1117 2969 901
A 30 3 131 10763 311 307 163 163 237 155
A 30 3 140 5537 10849 49 49 583 147 49 513
A 35 4 113 3519 8323 913 317 6383 6383 587 9055
A 35 4 145 3873 8167 3983 8943 109 109 421 2111
A 40 4 134 1833 4781 3853 897 155 155 2169 2285
A 40 4 135 1945 5113 4871 7177 4007 4281 457 527
A 40 4 150 1969 4893 1073 603 4031 4305 945 1201
A 50 5 148 639 1973 4413 3719 1653 1713 3369 1993
A 78 40 127 213 345 2869 2319 225 309 2351 207
A 80 13 53 121 269 1307 1205 183 259 1193 275
B 20 10 519 2527 107 67 33 49 49 73 165
B 20 4 56 139 2471 1865 205 161 10695 249
B 20 4 66 187 6713 12315 261 197 3023 77
B 20 4 80 105 3731 249 103 21 937 113
B 20 4 88 57 79 9995 263 339 465 15
B 30 10 135 12633 24867 437 333 3743 1275 287 1609
B 40 10 270 4155 2078 1881 4551 5865 5863 11097 6963
B 40 10 288 4239 6037 227 687 5853 5819 955 6425
B 41 6 103 3423 6857 685 241 593 593 495 1867
B 41 6 120 3335 6779 901 1613 2343 2329 685 5503
B 50 10 50 2629 63 7 63 63 63 63
B 50 30 109 2213 6593 13549 5711 5885 14761 6571
B 80 12 44 197 1677 3819 3487 1399 1383 3075 1507
B 95 11 71 37 153 1155 1011 127 181 833 195
B 97 10 80 43 715 1599 1365 567 575 1261 655
C 20 2 121 2847 4377 8447 327 327 377 33
C 20 2 123 7827 331 12821 11229 41 41 1623 65
C 20 2 126 7361 2761 749 537 2871 2881 1769 3251
C 20 2 131 2103 7209 2537 629 2107 521 2393
C 20 2 138 241 12603 8559 81 75 5455 205
C 20 2 199 1119 4965 3851 2303 2265 7899 2583
C 20 4 175 7431 4747 11893 8261 2427 2423 7265 2959
C 25 4 27 6557 3271 625 349 63 63 113 45
C 42 7 23 1945 3295 7347 7531 3135 2187 6645 3589
C 42 7 49 1875 17445 8097 825 2887 697 5995 3461
C 50 10 22 2217 153 63 119 119 181 71
C 50 10 26 2281 843 63 845 845 845 851
C 50 10 33 2219 405 131 59 59 363 63
C 60 8 47 375 661 2417 2393 619 677 1823 677
C 73 12 45 199 621 1959 1863 521 535 1433 609
D 20 3 156 8281 1165 379 51 33 1077 89
D 20 3 162 9627 7313 145 105 277 189 59 125
D 20 3 166 6655 293 185 111 97 343 377
D 20 3 171 6967 43 1181 247 155 49 35
D 20 3 172 9031 1699 1155 35 29 53 99
D 20 3 177 8333 143 163 105 155 157 105
D 25 3 22 6685 2317 231 319 59 91 299 29
D 30 3 186 2573 267 1215 1177 271 223 963 229
D 30 4 130 6717 6145 211 1271 41 105 51 77
D 30 4 198 5773 6307 433 183 59 939 465 419
D 42 5 18 1629 721 3101 163 137 269 1823 193
D 42 5 19 1417 913 2799 1011 671 153 871 499
D 53 7 65 613 687 1865 1693 447 499 1391 603
D 72 10 60 265 2627 4271 3909 2347 723 3737 2751
D 78 11 44 795 2229 1439 643 655 1669 893
E 20 2 110 53 1 53 53 53 53
E 20 2 120 5631 14111 12561 4865 5135 10133 5871
E 20 2 200 39 1 39 39 39 39
E 20 2 697 4109 11051 9691 3683 3875 7653 4221
E 20 3 126 49 1 49 49 49 49
E 25 3 80 59 1 59 59 59 59
E 30 3 182 14749 29 7 29 29 29 29
E 42 4 65 1873 6087 65 31 65 65 65 65
E 42 5 30 2721 12217 45 43 45 45 45 45
E 53 7 415 1187 9309 69 79 69 69 69 69
E 64 9 540 665 8473 93 145 93 93 93 93
E 73 11 73 401 7827 99 149 99 99 99 99
E 80 7 70 147 1655 115 347 115 115 115 115
E 90 7 74 67 1129 133 353 133 133 133 133
E 90 7 79 75 1155 139 335 139 139 139 139
F 20 2 240 3691 369 1455 1303 563 477 1027 413
F 20 2 322 3361 595 1741 1473 483 439 1353 495
F 20 2 652 4445 389 1555 1307 441 409 1369 401
F 24 3 18 6157 419 165 49 127 209 31
F 24 3 26 7509 385 139 41 81 453 53
F 24 3 35 7071 4859 423 3027 145 411 369 1703
F 30 4 238 2789 699 2229 2129 585 677 1469 659
F 31 3 152 2253 383 1265 1113 373 447 883 553
F 42 6 16 1509 67 2073 803 117 65 835 65
F 42 6 19 1577 141 3275 3155 231 207 2129 783
F 42 6 24 1349 1691 3621 3429 423 447 397 905
F 73 11 48 135 259 843 961 327 369 621 351
F 73 11 73 161 285 1027 921 295 299 793 299
F 77 14 98 119 1025 1179 1201 381 405 861 557
F 83 10 77 49 255 577 517 201 209 419 171

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 61

Clique
Clique Ref. Doble C. Ref. Clique Doble Clique Doble Clique Doble Clique
Grupo n k s Clique Repl. C.Doble Ext. Doble Doble Clique Doble C. Ref. Doble C. Ref. Doble Clique C.Doble Ext.
Orden de Ciclo C.Doble 2-Ext. Clique C. Ref. C.Doble Ext. C.Doble Ext. Doble C. Ref. C.Doble 2-Ext.
Ciclo Impar C.Doble Cerr. C. Repl. C.Doble 2-Ext. C.Doble 2-Ext.
4 Ciclo + C. C.Doble Cerr.
A 20 2 156 0 113 122 113 113 113 113
A 20 3 199 369 79 103 174 172 113 267
A 20 4 135 96 146 166 166 108 176
A 25 4 128 159 189 245 245 185 202
A 30 10 499 718 183 366 751 701 284 628
A 30 3 131 408 263 286 343 343 275 300
A 30 3 140 726 366 197 215 380 308 212 333
A 35 4 113 718 372 330 329 613 612 355 534
A 35 4 145 565 401 379 456 320 320 397 528
A 40 4 134 965 572 472 468 488 488 542 715
A 40 4 135 751 456 495 542 854 862 454 519
A 40 4 150 650 501 418 362 880 902 470 693
A 50 5 148 1193 1370 736 907 1795 1849 967 1662
A 78 40 127 438 4142 1110 1511 4684 4500 1408 3706
A 80 13 53 573 4806 1644 1752 4730 4837 1708 4672
B 20 10 519 126 115 40 101 147 147 61 132
B 20 4 56 1219 588 716 1547 1511 924 1690
B 20 4 66 1361 653 970 1557 1432 791 1246
B 20 4 80 1140 631 548 1251 808 716 1363
B 20 4 88 1033 341 1021 1765 1964 631 741
B 30 10 135 846 494 132 233 540 505 171 463
B 40 10 270 678 1134 277 489 1252 1252 443 1115
B 40 10 288 512 1147 229 372 1371 1369 366 1188
B 41 6 103 296 768 250 229 693 693 285 790
B 41 6 120 411 794 266 321 939 939 303 967
B 50 10 50 151 142 130 142 142 142 142
B 50 30 109 293 998 555 1321 1265 449 1200
B 80 12 44 444 1417 729 830 1936 1973 981 1910
B 95 11 71 632 4188 1464 1494 4873 4997 1895 4819
B 97 10 80 684 1498 910 982 2260 2374 1203 2121
C 20 2 121 2054 562 998 1532 1525 667 556
C 20 2 123 1723 1096 592 714 560 560 765 517
C 20 2 126 1645 2072 463 583 2215 2246 769 2066
C 20 2 131 1957 580 832 1956 2358 683 2060
C 20 2 138 869 595 733 644 708 850 853
C 20 2 199 1784 587 827 2380 2435 904 2228
C 20 4 175 2115 2434 643 1068 2785 2592 901 2503
C 25 4 27 1262 1232 633 663 745 744 557 519
C 42 7 23 908 1515 554 732 1622 1510 749 1462
C 42 7 49 1181 1573 649 609 1933 1504 903 1744
C 50 10 22 203 196 195 227 227 199 214
C 50 10 26 146 193 228 235 235 208 220
C 50 10 33 236 158 198 161 161 169 153
C 60 8 47 826 3256 1306 1329 3977 3745 1694 3670
C 73 12 45 718 3483 1451 1508 4154 4138 1953 3804
D 20 3 156 1014 618 624 708 658 888 724
D 20 3 162 1502 1107 433 437 1062 943 456 712
D 20 3 166 1068 482 453 683 678 747 826
D 20 3 171 1101 272 691 1047 908 439 503
D 20 3 172 1016 631 723 611 604 432 701
D 20 3 177 1090 395 456 830 871 604 688
D 25 3 22 1186 2789 794 806 1135 1270 1195 578
D 30 3 186 1855 4757 2918 3215 4611 4684 3246 4850
D 30 4 130 719 1383 331 627 629 816 376 731
D 30 4 198 1022 1445 439 419 645 1339 585 986
D 42 5 18 1047 4129 1844 1052 2455 3121 2529 2275
D 42 5 19 1291 4044 1868 1645 4309 2548 1934 3185
D 53 7 65 786 4418 2266 2454 4967 4789 2703 4862
D 72 10 60 513 816 635 671 1164 987 715 1036
D 78 11 44 2982 1391 1721 3670 3847 1727 3249
E 20 2 110 142 110 142 142 142 142
E 20 2 120 1112 452 514 1403 1365 625 1230
E 20 2 200 140 110 140 140 140 140
E 20 2 697 1463 609 729 1736 1757 887 1602
E 20 3 126 74 100 74 74 74 74
E 25 3 80 137 116 137 137 137 137
E 30 3 182 0 187 225 187 187 187 187
E 42 4 65 295 0 273 271 273 273 273 273
E 42 5 30 278 0 188 180 188 188 188 188
E 53 7 415 181 0 246 210 246 246 246 246
E 64 9 540 104 0 247 289 247 247 247 247
E 73 11 73 214 0 251 327 251 251 251 251
E 80 7 70 383 0 298 664 298 298 298 298
E 90 7 74 577 0 511 695 511 511 511 511
E 90 7 79 404 0 536 697 536 536 536 536
F 20 2 240 2849 4950 3556 3763 4972 4916 4383 4762
F 20 2 322 3245 4990 3282 3812 4601 4659 3879 4921
F 20 2 652 2753 4730 2784 3622 4691 4536 3373 4648
F 24 3 18 1596 547 426 488 911 665 507
F 24 3 26 1543 514 517 654 694 700 588
F 24 3 35 1472 1780 452 772 895 1148 628 1578
F 30 4 238 2014 4047 2133 2186 4967 4540 2834 4792
F 31 3 152 1806 4776 3447 3952 4805 4548 3967 4854
F 42 6 16 776 940 1215 1096 1554 1357 1585 1103
F 42 6 19 699 1515 1428 1441 2186 2258 2062 2295
F 42 6 24 1183 2138 1425 1447 2260 2074 1432 2261
F 73 11 48 1073 4649 3043 2553 4867 4937 3850 4760
F 73 11 73 761 4947 2838 2809 4892 4580 3382 4644
F 77 14 98 1093 2860 2656 2375 4591 4501 3462 3883
F 83 10 77 1238 4477 3203 3341 4978 4985 4240 4728

Cuadro 5.5: Cantidad de cortes agregados dinámicamente con cada combinación de familias de de-
sigualdades 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 solu-
ciones 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 pertene-
ciente 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 progra-
mació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 exito-
samente. 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 63

Grupo n k s Tiempos de ejecución Gaps de optimalidad Cantidad de nodos


Sin H. H. 1 H. 2 Cplex Sin H. H. 1 H. 2 Cplex Sin H. H. 1 H. 2 Cplex
A 20 2 156 2.92 2.91 0.75 0 0 0 62.69 21 21 1 4630100
A 20 3 199 9.14 9.57 21.58 0 0 0 16.50 181 181 181 6406500
A 20 4 135 3.03 3.21 6.54 0 0 0 6.47 67 67 65 7092600
A 25 4 128 168.70 179.82 337.81 0 0 0 46.68 2349 2349 2069 4300000
A 30 10 499 187.95 202.13 349.88 0 0 0 3.54 1117 1117 1117 3578700
A 30 3 131 42.40 43.56 80.22 0 0 0 103.54 163 163 163 1770000
A 30 3 140 38.40 39.68 77.45 0 0 0 81.95 147 147 147 2162900
A 35 4 113 2195.90 2356.92 0 0 6.12 128.15 6383 6383 4101 1762900
A 35 4 145 46.59 42.78 66.84 0 0 0 37.01 109 109 109 1850300
A 40 4 134 92.65 97.61 176.17 0 0 0 73.44 155 155 155 1036600
A 40 4 135 ∞ 206.06 20.24 116.27 4281 4137 2335 1413900
A 40 4 150 ∞ 282.09 14.80 90.46 4305 4113 2385 1181000
A 50 5 148 ∞ 169.01 8.22 68.07 1713 1653 957 769300
A 78 40 127 ∞ 222.73 49.45 39.57 309 281 205 126900
A 80 13 53 ∞ 395.71 33.46 35.89 259 251 121 368000
B 20 10 519 1.45 1.47 2.7 0.26 0 0 0 0 49 49 39 900
B 20 4 56 96.75 98.82 149.93 1270.31 0 0 0 0.02 161 161 161 1396500
B 20 4 66 90.14 91.95 149.65 343.37 0 0 0 0.03 197 197 197 483600
B 20 4 80 9.32 9.74 16.01 109.93 0 0 0 0.08 21 21 21 137000
B 20 4 88 269.33 274.68 303.47 867.64 0 0 0 0.01 339 339 239 1057300
B 30 10 135 148.78 163.09 237.93 0 0 0 0.96 1275 1275 1015 6868300
B 40 10 270 ∞ 61.38 2.79 1.90 5863 5463 3517 4506600
B 40 10 288 ∞ 45.32 0.09 1.64 5819 5493 3699 4196300
B 41 6 103 199.85 230.83 380.06 0 0 0 9.05 593 593 549 3024400
B 41 6 120 892.29 960.18 1758.17 0 0 0 7.80 2329 2329 2319 2739300
B 50 10 50 7.87 10.27 1.20 0 0 0 13.16 63 63 1 5302500
B 50 30 109 ∞ 111.45 11.13 20.97 5885 5293 3435 3261300
B 80 12 44 ∞ 77.48 6.20 19.64 1383 1213 669 907100
B 95 11 71 ∞ 114.29 6.36 16.20 181 173 93 630600
B 97 10 80 ∞ 52.70 6.50 20.60 575 509 255 658900
C 20 2 121 245.74 249.01 381.19 0 0 0 48.21 327 327 327 2254700
C 20 2 123 19.28 19.91 22.16 0 0 0 177.04 41 41 25 1935700
C 20 2 126 ∞ 757.14 25.00 61.15 2881 2859 2131 2581800
C 20 2 131 2205.38 2220.31 2702.92 0 0 18.92 51.86 2107 2107 1883 2847800
C 20 2 138 38.18 39.23 58.23 0 0 0 123.22 75 75 77 2301200
C 20 2 199 ∞ 67.68 4.96 22.55 2265 2249 1681 2541900
C 20 4 175 ∞ 107.84 8.81 33.67 2423 2393 1943 1857900
C 25 4 27 30.84 31.31 52.44 0 0 0 62.28 63 63 63 1473500
C 42 7 23 1728.89 1804.55 0 0 26.83 88.42 2187 2187 1939 2006200
C 42 7 49 574.9 602.45 1029.26 0 0 0 20.11 697 697 693 1333500
C 50 10 22 18.96 22.92 9.28 0 0 0 30.68 119 119 17 2495300
C 50 10 26 127.79 152.59 1.39 0 0 0 24.91 845 845 1 2797400
C 50 10 33 8.78 10.77 0.86 0 0 0 15.02 59 59 1 2602300
C 60 8 47 ∞ 754.17 39.46 33.68 677 653 429 484000
C 73 12 45 ∞ 198.28 17.69 24.73 535 513 309 633900
D 20 3 156 13.84 14.42 22.24 0 0 0 23.54 33 33 33 3366000
D 20 3 162 73.53 77.2 124.70 0 0 0 27.79 189 189 189 3433300
D 20 3 166 30.99 31.47 52.38 0 0 0 71.41 97 97 97 3001500
D 20 3 171 57.49 58.84 100.78 0 0 0 30.32 155 155 155 4249300
D 20 3 172 11.36 11.80 18.20 0 0 0 52.73 29 29 29 2864300
D 20 3 177 56.05 58.10 35.64 0 0 0 27.25 155 155 55 3337900
D 25 3 22 54.66 55.74 102.72 0 0 0 71.43 91 91 91 2403400
D 30 3 186 ∞ 143.05 20.33 30.58 223 219 163 1366000
D 30 4 130 33.27 34.96 59.78 0 0 0 70.80 105 105 99 3292100
D 30 4 198 347.47 359.86 684.10 0 0 0 41.48 939 939 1093 2982900
D 42 5 18 515.63 533.42 827.28 0 0 0 125.34 269 269 269 1192000
D 42 5 19 259.35 269.84 446.43 0 0 0 90.61 153 153 153 2232600
D 53 7 65 ∞ 631.58 9.02 12.23 499 483 339 1086000
D 72 10 60 753.55 837.59 1610.54 0 0 0 14.60 723 723 723 1243000
D 78 11 44 ∞ 333.87 21.17 31.45 655 609 341 533100
E 20 2 110 5.37 5.67 0.45 0 0 0 539.97 53 53 1 3064600
E 20 2 120 0.73 ∞ 0 ∞ 212.50 5135 1 3419 2520400
E 20 2 200 8.19 4.72 0.67 0 0 0 536.03 39 39 1 3590900
E 20 2 697 ∞ 0.69 ∞ 285.62 3875 3797 2707 1997900
E 20 3 126 1.86 0.41 0.2 0 0 0 263.16 49 1 1 5820500
E 25 3 80 5.48 5.84 0.78 0 0 0 418.48 59 59 1 3294100
E 30 3 182 8.74 1.88 1.01 0 0 0 601.64 29 3 1 1494800
E 42 4 65 43.02 27.09 2.56 0 0 0 460.87 65 31 1 1419700
E 42 5 30 13.03 13.60 2.04 0 0 0 231.31 45 45 1 1408800
E 53 7 415 27.7 31.00 3.03 0 0 0 319.66 69 69 1 869800
E 64 9 540 39.24 45.43 3.42 0 0 0 342.26 93 93 1 1176800
E 73 11 73 45.68 55.87 4.06 0 0 0 200.47 99 99 1 954200
E 80 7 70 241.78 8.31 13.70 0 0 0 452.05 115 1 1 858200
E 90 7 74 470.75 351.19 20.17 0 0 0 449.37 133 83 1 545900
E 90 7 79 499.57 63.60 20.20 0 0 0 416.67 139 13 1 552100
F 20 2 240 ∞ 90.36 3.27 25.29 477 475 353 1350700
F 20 2 322 ∞ 115.22 11.24 60.88 439 431 373 1487100
F 20 2 652 ∞ 81.18 48.79 39.10 409 405 349 1792400
F 24 3 18 44.69 45.53 87.31 0 0 0 118.90 127 127 127 2251500
F 24 3 26 23.14 23.89 41.02 0 0 0 33.84 81 81 81 2349100
F 24 3 35 156.67 158.03 146.14 0 0 0 37.84 411 411 217 2210800
F 30 4 238 ∞ 196.91 6.65 34.90 677 673 547 1883700
F 31 3 152 ∞ 78.65 9.66 67.09 447 431 331 956400
F 42 6 16 77.24 80.56 152.45 0 0 0 98.45 65 65 65 1022100
F 42 6 19 386.56 402.45 727.40 0 0 0 102.46 207 207 207 1298600
F 42 6 24 640.5 664.34 1224.54 0 0 0 86.97 447 447 447 1087400
F 73 11 48 ∞ 150.98 24.27 50.64 369 345 219 1671900
F 73 11 73 ∞ 150.87 14.51 31.40 299 277 179 1550400
F 77 14 98 ∞ 80.19 6.19 13.27 405 379 283 1005700
F 83 10 77 ∞ 198.73 34.09 31.58 209 195 99 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 cual-
quier 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 pro-
blema 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 BestFirst BreadthFirst DepthFirst DiveAndBest


Cantidad de instancias resueltas en forma óptima 18 2 6 15
Tiempo total de ejecución 7h 56m 16h 57m 14h 11m 10h 21m
Cantidad de instancias resueltas con el menor tiempo de ejecución 11 1 1 5
Cantidad de instancias resueltas con la menor cantidad de nodos 9 1 1 4
(a) Análisis del parámetro EnumerationStrategy

Caracterı́stica \ Estrategia de branching CloseHalfExpensive CloseHalf


Cantidad de instancias resueltas en forma óptima 18 12
Tiempo total de ejecución 7h 56m 12h 12m
Cantidad de instancias resueltas con el menor tiempo de ejecución 15 3
Cantidad de instancias resueltas con la menor cantidad de nodos 15 2
(b) Análisis del parámetro BranchingStrategy

Caracterı́stica \ Frecuencia de los cortes 1 5 10 20 50


Cantidad de instancias resueltas en forma óptima 18 15 14 12 10
Tiempo total de ejecución 7h 56m 9h 25m 10h 50m 11h 23m 13h 10m
Cantidad de instancias resueltas con el menor tiempo de ejecución 7 3 3 2 1
Cantidad de instancias resueltas con la menor cantidad de nodos 12 3 3 1 0
(c) Análisis del parámetro SkipFactor

Caracterı́stica \ Cantidad de iteraciones en la fase de cortes 5 10 20 50 -1


Cantidad de instancias resueltas en forma óptima 12 16 18 18 18
Tiempo total de ejecución 9h 48m 8h 43m 7h 54m 7h 56m 7h 56m
Cantidad de instancias resueltas con el menor tiempo de ejecución 9 1 6 0 1
Cantidad de instancias resueltas con la menor cantidad de nodos 9 7 9 9 8
(d) 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 se-
leccionaron 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 Re-
forzada, 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 com-
probaron 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 trascenden-
cia 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 sofistica-
das 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.

ABACUS
Núcleo Aplicación base Herramientas auxiliares
Programa lineal Master Estructuras de datos básicas
Pool Subproblema Herramientas varias
Branch & Bound 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 reim-
plementació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 re-
solver 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 73

Figura A.3: Jerarquı́a de las restricciones actuales.


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 n k s LR Clique D. D. Reforzada D. Ext D. 2-Ext D. Cerrada Restantes


A.20.2.129.10.240.dat 20 2 129 221.00 0 0 0 0 0
A.20.2.155.10.240.dat 20 2 155 269.00 66.91 1.49 0 0 0 0
A.20.2.156.10.240.dat 20 2 156 274.00 51.09 0 0 0 0 0
A.20.3.117.10.240.dat 20 3 117 286.00 53.50 9.79 32.17 20.98 0 0
A.20.3.126.10.240.dat 20 3 126 318.00 53.14 2.83 9.43 0 0 0
A.20.3.199.10.240.dat 20 3 199 539.00 23.56 1.67 8.16 0 0 0
A.20.4.135.10.240.dat 20 4 135 458.00 32.53 1.53 14.41 13.76 0 0
A.25.4.108.10.240.dat 25 4 108 350.00 54.00 3.14 2.00 0 0 0
A.25.4.128.10.240.dat 25 4 128 427.00 47.07 0.70 5.15 7.03 0 0
A.25.4.155.10.240.dat 25 4 155 533.00 38.27 7.88 4.69 0 0 0
A.25.4.180.10.240.dat 25 4 180 508.00 25.39 0 11.22 11.42 0 0
A.30.3.103.10.240.dat 30 3 103 271.00 55.35 0 26.94 5.9 0 0
A.30.3.131.10.240.dat 30 3 131 347.00 56.48 0 33.72 2.02 0 0
A.30.3.140.10.240.dat 30 3 140 373.00 47.72 0 28.15 5.09 0 0
A.30.10.295.10.240.dat 30 10 295 1971.00 3.50 0 0
A.30.10.499.10.240.dat 30 10 499 3367.00 13.22 1.63 6.44 3.27 0 0
A.35.4.113.10.240.dat 35 4 113 390.00 60.00 0 20.51 14.87 0 0
A.35.4.145.10.240.dat 35 4 145 527.00 29.22 0 4.74 1.71 0 0
A.35.10.198.10.240.dat 35 10 198 1466.00 15.76 0 4.57 2.52 2.25 0
A.40.4.123.10.240.dat 40 4 123 426.00 0 32.63 0 0
A.40.4.134.10.240.dat 40 4 134 481.00 46.78 0 25.36 0 0 0
A.40.4.135.10.240.dat 40 4 135 476.00 57.56 0 25.84 12.39 0 0
A.40.4.150.10.240.dat 40 4 150 534.00 52.06 0 25.84 24.91 0 0
A.50.5.137.10.240.dat 50 5 137 604.00 54.14 0 29.08 1.66 0 0
A.50.5.145.10.240.dat 50 5 145 539.00 0 1.67 0 0
A.50.5.148.10.240.dat 50 5 148 673.00 43.24 0 35.22 0 0 0
A.70.13.49.10.240.dat 70 13 49 423.00 21.99 0.47 8.20 1.18 1.89 0
A.75.13.52.10.240.dat 75 13 52 489.00 18.40 2.25 5.52 2.45 2.66 0
A.78.10.46.10.240.dat 78 10 46 310.00 13.87 0 0 0 0 0
A.78.20.56.10.240.dat 78 20 56 723.00 15.21 0 1.11 0.28 3.04 0
A.78.40.122.10.240.dat 78 40 122 2554.00 13.39 0 6.30 0 0.23 0
A.78.40.127.10.240.dat 78 40 127 2819.00 10.25 0 3.69 0 0.25 0
A.80.13.51.10.240.dat 80 13 51 439.00 20.50 0 7.74 1.14 5.24 0
A.80.13.53.10.240.dat 80 13 53 437.50 17.16 0 4.58 2.06 2.29 0
A.85.10.55.10.240.dat 85 10 55 417.00 14.87 0 1.68 0 4.80 0
A.85.10.69.10.240.dat 85 10 69 531.00 15.07 0.19 4.33 0.19 2.64 0
Promedio 35.55 1.03 12.05 4.83 0.70 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 81

Instancia n k s LR Clique D. D. Reforzada D. Ext D. 2-Ext D. Cerrada Restantes


B.20.10.349.10.240.dat 20 349 28 2785.00 0.29 0 0
B.20.10.441.10.240.dat 20 441 28 3521.00 0.26 0.23 0.23 0.26 0 0
B.20.10.519.10.240.dat 20 519 28 4145.00 0.22 0.19 0.19 0.22 0 0
B.20.4.52.2.240.dat 20 4 52 104.00 21.15 1.92 21.15 15.38 2.88 0
B.20.4.56.2.240.dat 20 4 56 112.00 19.64 1.79 19.64 14.29 2.68 0
B.20.4.66.2.240.dat 20 4 66 132.00 16.67 1.52 16.67 12.12 2.27 0
B.20.4.80.2.240.dat 20 4 80 160.00 13.75 0.62 13.75 10 1.88 0
B.20.4.88.2.240.dat 20 4 88 176.00 12.5 0.57 12.5 9.09 1.7 0
B.30.10.135.10.240.dat 30 10 135 1069.00 2.81 0.56 1.59 1.31 0 0
B.30.10.136.10.240.dat 30 10 136 1077.00 2.79 0.56 1.58 1.3 0 0
B.30.10.157.10.240.dat 30 10 157 1245.00 2.41 0.48 1.37 1.12 0 0
B.30.10.86.10.240.dat 30 10 86 677.00 1.03 0 0
B.30.10.88.10.240.dat 30 10 88 693.00 1.01 0 0
B.40.10.179.10.240.dat 40 10 179 1415.00 3.25 0.42 1.98 0.78 0 0
B.40.10.270.10.240.dat 40 10 270 2143.00 2.15 0.28 1.31 0.51 0 0
B.40.10.288.10.240.dat 40 10 288 2287.00 2.01 0.26 1.22 0.48 0 0
B.41.6.103.10.240.dat 41 6 103 600.00 10.5 0.83 6.17 3.83 0 0
B.41.6.120.10.240.dat 41 6 120 702.00 8.97 0.71 5.27 3.28 0 0
B.41.6.154.10.240.dat 41 6 154 906.00 6.95 0.55 4.08 2.54 0 0
B.50.10.35.50.240.dat 50 10 35 323.00 18.27 4.64 0 0 0 0
B.50.10.42.50.240.dat 50 10 42 393.00 15.01 3.82 0 0 0 0
B.50.10.50.50.240.dat 50 10 50 473.00 12.47 3.17 0 0 0 0
B.50.30.109.10.240.dat 50 30 109 2093.50 14.19 7.17 8.93 5.73 2.68 0
B.50.30.120.10.240.dat 50 30 120 2308.00 12.91 6.54 8.19 5.2 2.43 0
B.50.30.71.10.240.dat 50 30 71 1352.50 21.97 14.05 8.95 4.14 0
B.80.12.38.20.240.dat 80 12 38 422.00 23.70 3.08 9.24 4.27 0.95 0
B.80.12.44.20.240.dat 80 12 44 494.00 20.24 2.63 7.89 3.64 0.81 0
B.80.14.36.20.240.dat 80 14 36 434.00 7.83 0 0
B.80.14.57.20.240.dat 80 14 57 707.00 15.56 3.11 4.67 2.83 0 0
B.80.14.65.20.240.dat 80 14 65 811.00 13.56 2.71 4.07 2.47 0 0
B.80.14.72.20.240.dat 80 14 72 902.00 12.20 2.44 3.77 2.22 0 0
B.80.18.47.20.240.dat 80 18 47 671.00 12.82 4.02 6.26 4.02 0 0
B.80.18.55.20.240.dat 80 18 55 791.00 10.87 3.41 5.31 3.41 0 0
B.95.11.71.20.240.dat 95 11 71 683.00 14.35 2.20 7.03 0.73 0 0
B.97.10.64.20.240.dat 97 10 64 611.00 24.22 2.13 10.8 8.02 0.33 0
B.97.10.71.20.240.dat 97 10 71 681.00 21.73 1.91 9.69 7.20 0.29 0
B.97.10.80.20.240.dat 97 10 80 771.00 19.2 1.69 8.56 6.36 0.26 0
Promedio 12.40 1.96 6.62 4.29 0.63 0

Cuadro B.2: Porcentajes de ajustes a la relajación lineal sobre instancias del grupo B, para cada familia
de desigualdades.
82

Instancia n k s LR Clique D. D. Reforzada D. Ext D. 2-Ext D. Cerrada Restantes


C.20.2.101.0.240.dat 20 2 101 182.00 2.75 43.41 0 0
C.20.2.121.0.240.dat 20 2 121 223.00 46.19 0 17.49 2.69 0 0
C.20.2.123.0.240.dat 20 2 123 226.00 69.03 2.21 40.27 34.07 15.49 0
C.20.2.126.0.240.dat 20 2 126 232.00 24.57 0 17.67 0 0 0
C.20.2.131.0.240.dat 20 2 131 240.00 45 0 42.92 27.50 0 0
C.20.2.136.0.240.dat 20 2 136 251.00 42.23 0 40.24 1.59 3.98 0
C.20.2.138.0.240.dat 20 2 138 256.00 64.06 1.56 37.50 31.25 15.62 0
C.20.2.156.0.240.dat 20 2 156 292.00 45.89 0 31.16 1.37 2.40 0
C.20.2.176.0.240.dat 20 2 176 176.00 0.57 0 0 0 0 0
C.20.2.199.0.240.dat 20 2 199 379.00 27.44 0 26.39 0 0 0
C.20.2.200.0.240.dat 20 2 200 200.00 9.00 0 5.50 0 0 0
C.20.4.128.0.240.dat 20 4 128 256.00 40.62 5.47 33.2 27.34 0 0
C.20.4.129.0.240.dat 20 4 129 258.00 38.76 0 36.05 32.95 0 0
C.20.4.143.0.240.dat 20 4 143 286.00 33.92 0 0 0 0 0
C.20.4.144.0.240.dat 20 4 144 288.00 37.5 0 25.69 25.69 10.76 0
C.20.4.175.0.240.dat 20 4 175 350.00 38.86 0 24.29 9.43 0 0
C.20.4.199.0.240.dat 20 4 199 561.00 22.46 3.03 8.56 11.59 8.91 0
C.25.4.13.5.515.dat 25 4 13 33.00 69.7 3.03 36.36 21.21 15.15 0
C.25.4.27.5.515.dat 25 4 27 96.00 33.33 0 15.62 11.46 14.58 0
C.42.7.23.8.515.dat 42 7 23 105.00 50.48 0 21.90 15.24 0 0
C.42.7.35.8.515.dat 42 7 35 225.00 25.33 0 16 8.89 0 0
C.42.7.49.8.515.dat 42 7 49 237.00 16.46 0.84 10.55 9.28 0 0
C.50.10.22.35.240.dat 50 10 22 169.00 30.77 2.96 4.14 2.96 0 0
C.50.10.26.35.240.dat 50 10 26 208.00 24.52 0 1.92 2.4 0 0
C.50.10.33.35.240.dat 50 10 33 299.00 18.06 0 1.34 0 0 0
C.60.8.47.10.240.dat 60 8 47 270.00 24.07 0.37 8.89 0 1.85 0
C.60.8.50.10.240.dat 60 8 50 332.00 21.99 1.81 8.73 1.2 0 0
C.73.12.32.15.515.dat 73 12 32 314.00 21.02 1.27 5.10 1.91 3.5 0
C.73.12.41.15.515.dat 73 12 41 427.00 17.56 1.64 5.62 0.23 4.22 0
C.73.12.42.15.515.dat 73 12 42 401.00 13.22 0.75 5.24 1 0 0
C.73.12.45.15.515.dat 73 12 45 431.00 18.33 0.70 6.73 0.23 2.09 0
C.73.12.46.15.515.dat 73 12 46 482.00 14.52 1.45 3.73 0.21 3.53 0
C.73.12.51.15.515.dat 73 12 51 586.00 14.51 0.68 7.00 1.88 1.02 0
C.90.12.52.15.515.dat 90 12 52 544.00 17.46 1.29 3.12 0.92 1.10 0
C.90.12.65.15.515.dat 90 12 65 632.00 10.92 0.47 3.48 0.16 0 0
C.90.12.79.15.515.dat 90 12 79 842.00 10.93 1.19 5.70 1.66 0.48 0
Promedio 29.69 0.93 15.94 9.16 2.91 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 83

Instancia n k s LR Clique D. D. Reforzada D. Ext D. 2-Ext D. Cerrada Restantes


D.20.3.156.240.dat 20 3 156 428.00 17.76 0 12.38 32.01 9.35 0
D.20.3.162.240.dat 20 3 162 306.00 34.64 0 3.59 0 0 0
D.20.3.166.240.dat 20 3 166 312.00 50.64 0 35.90 35.90 0 0
D.20.3.171.240.dat 20 3 171 324.00 41.98 0 33.02 34.26 0 0
D.20.3.172.240.dat 20 3 172 463.00 39.74 0 36.50 38.23 15.98 0
D.20.3.177.240.dat 20 3 177 333.00 29.43 0 24.62 24.92 24.02 0
D.20.3.200.240.dat 20 3 200 549.00 30.24 0 28.78 28.96 20.04 0
D.25.3.10.144.dat 25 3 10 24.00 0 0
D.25.3.22.144.dat 25 3 22 42.00 50.00 2.38 26.19 23.81 14.29 0
D.25.3.28.144.dat 25 3 28 78.00 29.49 0 29.49 29.49 15.38 0
D.30.3.186.1004.dat 30 3 186 519.00 11.56 0.39 10.40 0.19 15.22 0
D.30.3.191.1004.dat 30 3 191 370.00 0 0 0 0 0 0
D.30.3.197.1004.dat 30 3 197 553.00 13.2 0 7.05 1.81 3.44 0
D.30.3.200.1004.dat 30 3 200 559.00 20.39 0 7.87 2.86 14.67 0
D.30.4.130.102.dat 30 4 130 452.00 46.68 0 25.88 7.96 8.63 0
D.30.4.144.102.dat 30 4 144 505.00 38.02 1.58 12.08 6.34 7.33 0
D.30.4.150.102.dat 30 4 150 416.00 24.28 0 0 0 3.85 0
D.30.4.198.102.dat 30 4 198 556.00 29.86 0 17.09 0 3.60 0
D.42.5.18.1024.dat 42 5 18 66.00 57.58 0 19.70 13.64 0 0
D.42.5.19.1024.dat 42 5 19 70.00 45.71 0 15.71 14.29 0 0
D.53.7.55.144.dat 53 7 55 361.00 12.74 0 1.66 0.55 5.26 0
D.53.7.59.144.dat 53 7 59 337.00 13.65 0 3.26 0 1.78 0
D.53.7.65.144.dat 53 7 65 314.00 0.32 0 0.32 0 0 0
D.53.7.67.144.dat 53 7 67 386.00 11.40 0 1.30 0 0 0
D.53.7.69.144.dat 53 7 69 459.00 3.05 0 1.53 0 1.96 0
D.70.10.19.144.dat 70 10 19 154.00 42.86 0 24.03 16.88 0 0
D.70.10.25.144.dat 70 10 25 207.00 32.85 0 19.81 9.18 1.45 0
D.72.10.60.144.dat 72 10 60 522.00 14.56 0 10.15 1.92 0 0
D.72.10.80.144.dat 72 10 80 703.00 9.39 0.14 7.40 5.55 0 0
D.73.10.90.144.dat 73 10 90 794.00 9.07 0.13 5.92 5.04 0.50 0
D.73.10.100.144.dat 73 10 100 886.00 7.90 0 5.87 5.30 0 0
D.78.11.39.144.dat 78 11 39 387.00 26.36 0 5.94 0.78 4.91 0
D.78.11.44.144.dat 78 11 44 369.00 17.34 0 2.71 1.36 0 0
D.85.7.45.44.dat 85 7 45 258.00 20.54 0 0.39 0 0 0
D.85.7.61.44.dat 85 7 61 352.00 19.89 0 3.41 0 0 0
D.85.7.79.44.dat 85 7 79 460.00 18.48 0 1.30 0 0 0
D.85.8.52.44.dat 85 8 52 346.00 29.19 0 12.43 0 2.89 0
D.85.8.77.44.dat 85 8 77 521.00 17.85 0 6.33 0 1.54 0
Promedio 24.83 0.12 12.40 9.22 4.76 0

Cuadro B.4: Porcentajes de ajustes a la relajación lineal sobre instancias del grupo D, para cada familia
de desigualdades.
84

Instancia n k s LR Clique D. D. Reforzada D. Ext D. 2-Ext D. Cerrada Restantes


E.20.2.110.30.50.dat 20 2 110 198.00 87.88 4.55 0 0 0 0
E.20.2.113.30.50.dat 20 2 113 204.00 85.29 3.92 0 0 0 0
E.20.2.115.30.50.dat 20 2 115 208.00 83.65 3.86 0 0 0 0
E.20.2.117.30.50.dat 20 2 117 211.00 85.78 3.79 0 0 0 0
E.20.2.120.0.240.dat 20 2 120 120.00 79.17 10.00 79.17 79.17 0 0
E.20.2.200.30.50.dat 20 2 200 360.00 87.78 4.17 0 0 0 0
E.20.2.697.0.240.dat 20 2 697 697.00 79.05 9.90 79.05 79.05 0 0
E.20.3.126.14.144.dat 20 3 126 321.00 82.24 18.07 0 0 0 0
E.20.3.145.14.144.dat 20 3 145 371.00 79.78 17.25 0 0 0 0
E.20.3.168.14.144.dat 20 3 168 428.00 82.24 18.22 0 0 0 0
E.20.3.179.14.144.dat 20 3 179 458.00 79.91 17.47 0 0 0 0
E.25.3.35.14.144.dat 25 3 35 93.00 78.49 9.68 0 0 0 0
E.25.3.80.14.144.dat 25 3 80 211.00 84.83 10.90 0 0 0 0
E.25.3.87.14.144.dat 25 3 87 231.00 79.65 9.96 0 0 0 0
E.30.3.116.60.1004.dat 30 3 116 313.00 81.79 16.93 0 0 0 0
E.30.3.156.60.1004.dat 30 3 156 419.00 86.40 17.42 0 0 0 0
E.30.3.182.60.1004.dat 30 3 182 488.00 87.70 17.83 0 0 0 0
E.30.3.195.60.1004.dat 30 3 195 524.00 86.26 17.18 0 0 0 0
E.42.4.65.144.144.dat 42 4 65 231.00 84.42 2.16 0 0 0 0
E.42.4.82.144.144.dat 42 4 82 292.00 82.88 1.71 0 0 0 0
E.42.4.91.144.144.dat 42 4 91 323.00 86.38 1.86 0 0 0 0
E.42.5.30.144.144.dat 42 5 30 133.00 73.68 15.79 0 0 0 0
E.42.5.45.144.144.dat 42 5 45 199.00 75.88 16.08 0 0 0 0
E.42.5.56.144.144.dat 42 5 56 245.00 83.27 17.55 0 0 0 0
E.42.5.99.144.144.dat 42 5 99 434.00 81.80 17.05 0 0 0 0
E.53.7.400.40.50.dat 53 7 400 2367.00 81.07 16.69 0 0 0 0
E.53.7.415.40.50.dat 53 7 415 2458.00 80.51 16.52 0 0 0 0
E.53.7.466.40.50.dat 53 7 466 2759.00 80.86 16.64 0 0 0 0
E.53.7.512.40.50.dat 53 7 512 3030.00 81.19 16.70 0 0 0 0
E.64.9.511.60.102.dat 64 9 511 3887.00 81.43 5.56 0 0 0 0
E.64.9.540.60.102.dat 64 9 540 4107.00 81.45 5.53 0 0 0 0
E.73.11.33.90.102.dat 73 11 33 298.00 72.15 1.34 0 0 0 0
E.73.11.73.90.102.dat 73 11 73 657.00 73.97 1.07 0 0 0 0
E.73.11.80.90.102.dat 73 11 80 718.00 76.04 1.25 0 0 0 0
E.80.7.57.90.102.dat 80 7 57 362.00 83.98 1.10 0 0 0 0
E.80.7.70.90.102.dat 80 7 70 444.00 83.56 1.13 0 0 0 0
E.80.7.75.90.102.dat 80 7 75 478.00 79.71 0.84 0 0 0 0
E.90.7.62.90.102.dat 90 7 62 400.00 81.50 0.75 0 0 0 0
E.90.7.74.90.102.dat 90 7 74 476.00 83.40 0.84 0 0 0 0
E.90.7.79.90.102.dat 90 7 79 509.00 82.32 0.79 0 0 0 0
Promedio 81.73 9.25 3.95 3.95 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 85

Instancia n k s LR Clique D. D. Reforzada D. Ext D. 2-Ext D. Cerrada Restantes


F.20.2.240.240.dat 20 2 240 240.00 2.5 0 0 0 0 0
F.20.2.322.240.dat 20 2 322 322.00 0 0 0 0 0 0
F.20.2.334.240.dat 20 2 334 334.00 38.62 2.10 37.72 38.62 0 0
F.20.2.620.240.dat 20 2 620 1069.00 7.48 0 7.39 4.40 0
F.20.2.625.240.dat 20 2 625 1086.00 0 0 47.15 0
F.20.2.648.240.dat 20 2 648 648.00 70.22 6.64 70.22 5.86 3.70 0
F.20.2.652.240.dat 20 2 652 652.00 0 0 0 0 47.24 0
F.24.3.18.144.dat 24 3 18 34.00 61.76 5.88 8.82 0 0 0
F.24.3.26.144.dat 24 3 26 73.00 26.03 1.37 9.59 9.59 9.59 0
F.24.3.35.144.dat 24 3 35 68.00 30.88 0 1.47 0 0 0
F.30.4.238.144.dat 30 4 238 680.00 19.71 0.40 10.29 10.40 20.44 0
F.30.4.239.144.dat 30 4 239 478.00 2.72 0 0 0 0 0
F.30.4.242.144.dat 30 4 242 691.00 12.16 0 0 0.14 4.20 0
F.30.4.246.144.dat 30 4 246 492.00 13.01 0.81 0.61 0 9.96 0
F.30.4.250.144.dat 30 4 250 500.00 3 0 0.60 0 18.00 0
F.31.3.137.144.dat 31 3 137 261.00 0 0 0 0 0 0
F.31.3.146.144.dat 31 3 146 400.00 19.00 0 0.5 0 10 0
F.31.3.152.144.dat 31 3 152 289.00 12.80 0 0 0 0 0
F.31.3.237.144.dat 31 3 237 460.00 7.83 0 0 0 0 0
F.31.3.250.144.dat 31 3 250 488.00 0 0 0 0 0 0
F.42.6.16.144.dat 42 6 16 60.00 45.00 0 23.33 28.33 8.33 0
F.42.6.19.144.dat 42 6 19 87.00 54.02 0 35.63 34.48 18.39 0
F.42.6.24.144.dat 42 6 24 92.00 40.22 0 23.91 11.96 11.96 0
F.73.11.48.102.dat 73 11 48 360.00 6.39 0 5.28 2.50 12.22 0
F.73.11.69.102.dat 73 11 69 471.00 3.82 0 3.61 0 4.46 0
F.73.11.73.102.dat 73 11 73 562.00 8.54 0 5.87 3.74 9.96 0
F.73.11.89.102.dat 73 11 89 613.00 5.71 0 3.59 0.33 2.94 0
F.73.11.97.102.dat 73 11 97 666.00 6.76 0 6.46 0.15 6.31 0
F.77.14.61.144.dat 77 14 61 480.00 19.17 0 11.46 9.58 9.79 0
F.77.14.91.144.dat 77 14 91 637.00 5.81 0 0.31 0 6.12 0
F.77.14.98.144.dat 77 14 98 870.00 5.63 0.57 1.72 1.61 2.99 0
F.77.14.99.144.dat 77 14 99 693.00 2.74 0 0 0 5.05 0
F.83.10.63.102.dat 83 10 63 429.00 8.16 0 5.13 3.96 7.69 0
F.83.10.69.102.dat 83 10 69 469.00 12.15 0 4.05 3.62 13.65 0
F.83.10.77.102.dat 83 10 77 596.00 12.75 0 5.03 3.19 8.05 0
Promedio 16.60 0.51 8.31 4.9 8.77 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 Hamil-
tonian 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-Zuse-
Zentrum für Informationstechnik, Berlin, Preprint SC (1993) 93-3.

[16] Grötschel M. y Lovász L., Combinatorial Optimization. Konrad-Zuse-Zentrum für Informa-


tionstechnik, Berlin, Preprint SC (1993) 93-13.

[17] Grötschel M.; Lovász L. y Schrijver A., Geometric algorithms and combinatorial optimiza-
tion. 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 Opti-
mization 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.

You might also like