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