Introducción a la Computación (Matemática) Heurísticas de Programación
Introducción a la Computación Menú del día de hoy Problemas Difíciles P y NP Viajante de Comercio Coloreo Problema de la mochila Ruteo de Vehículos Heurísticas y Metaheurísticas Golosa Búsqueda Local VNS GRASP Simulated Annealing Tabú Search Existen muchas variantes de los problemas. Heurísticas y Metaheurísticas son temas muy amplios, con muchas vairantes. Vamos a presentar una introducción.
Sobre problemas fáciles y difíciles Clases de complejidades (noción de problema difícil) Se fija un modelo de cómputo (similar al que vimos nosotros para contar cantidad de operaciones) y un recurso (tiempo, espacio, etc.) Clases de complejidad fundamentales: P : fácil encontrar una solución un problema está en P si existe un algoritmo que resuelve en tiempo polinomial cualquier instancia del problema, ej: mínimo de una lista (O(n)) NP : fácil chequear si es solución no necesariamente fácil de resolver. Problema fundamental de Ciencias de la Computación: P = NP? Todo esto se puede formalizar más, es solo una introducción.
Sobre problemas fáciles y difíciles Ejemplos Problemas en P: mínimo de una lista, ordenamiento, búsqueda, máximo común divisor, saber si un número es primo (2002), etc. Problemas en NP: viajante de comercio, ruteo de vehículos, suma de subconjuntos, corte de materiales, problema de la mochila, etc. (los detalles en minutos...) Computers and Intractability: A Guide to the Theory of NP-Completeness, Michael Garey and David S. Johnson. Qué hacemos con los problemas que son difíciles? Algoritmos Exactos cuando sea posible, para instancias de tamaño acotado Algoritmos Heurísticos aproximados, pero eficientes
Problema del Viajante de Comercio (TSP) Problema: Dada una lista de ciudades y distancias entre pares de ellas, cuál es la ruta más corta posible que visita cada ciudad exactamente una vez y regresa a la ciudad de origen? Muchas aplicaciones prácticas. Muchas variantes (costos simétricos/asimétricos, recolecciones y entregas, etc.)
Problema del Viajante de Comercio (TSP) Algoritmo Exacto Enumero todas las posibles soluciones (permutaciones de ciudades) y calculo el costo de cada una para quedarme con la mejor.
Problema del Viajante de Comercio (TSP) Algoritmo Exacto Complejidad: O(n!). 10 ciudades 1814400 posibilidades 50 ciudades 15207046600856689021806304083032384422188820784480256000000000000 Poco útil en la práctica.
Problema del Viajante de Comercio (TSP) Algoritmo Heurístico Heurística Golosa: Elegir la opción que parece mejor para la subsolución actual En cada paso el viajante elige moverse a la ciudad más cercana. Complejidad? De dónde empiezo? Para n ciudades distribuidas aleatoriamente en el plano, el algoritmo consigue un camino 25% más costoso que el camino más corto. Es posible construir instancias con una distribución de ciudades que haga que el algoritmo consiga la peor ruta (Gutin, Yeo, and Zverovich, 2002). Hagamos un poco de experimentación...
Problema del Viajante de Comercio (TSP) Algoritmo Heurístico: k-opt Existen heurísticas de refinamiento de una solución. Se construye una solución inicial para el problema, y luego se aplican operadores para refinar la solución. Operador 2-Opt: Remover 2 ejes y reemplazarlos con otros 2 ejes para reconectar los fragmentos resultantes de la remoción, y así obtener un nuevo camino más corto. Se puede generalizar a k-opt. En la práctica suelen utilizarse 2-Opt y 3-Opt dado que para k > 3 el operador se vuelve muy costoso. Variantes para aplicar el movimiento: First accept Best accept
Problema del Viajante de Comercio (TSP) 2-Opt: un ejemplo
Problema del Viajante de Comercio (TSP) En particular, es un problema NP-completo (cualquier otro problema en la clase NP puede transformarse en p en tiempo polinomial). Resolverlo equivale a probar P = NP. $1,000,000 del Clay Mathematics Institute
Problema de la mochila Problema: Dados una mochila que puede cargar hasta N kg, y un conjunto de ítems, cada uno con un peso (en kg) y un valor (en $), encontrar el subconjunto de ítems con máximo valor que quepa en la mochila. Muchas aplicaciones prácticas (e.g., conformación de un portfolio de acciones)
Problema de la mochila Algortimo Heurístico Heurística Golosa: Ordenar los items por peso (creciente) y meter en la mochila todos los de menor peso que pueda. Trato de meter muchos items Problema? Ordenar los items por valor en forma decreciente, y meter los más valiosos que pueda. Trato de meter cosas de mucho valor Problema? Ordenarlos según el valor por unidad de peso. (George Dantzig)
Problema de la mochila Algoritmo goloso: En cada paso de la construcción de una solución, tomar la mejor decisión local. Mochila: Elegir en cada paso el ítem con la mejor relación valor/peso que quepa en la mochila. Ejemplos (mochila que puede cargar hasta 15kg): Valor Peso Valor/Peso 4 12 0.33 2 2 1 2 1 2 1 1 1 10 4 2.5 Valor Peso Valor/Peso 12 12 1 9 10 0.9 4 5 0.8
Problema de Coloreo Problema: Dado un conjunto de nodos y ejes que los conectan, determinar la mínima cantidad de colores necesarios para pintar los nodos de forma tal que no haya nodos adyacentes pintados con el mismo color. Aplicaciones: Scheduling, asignación de frecuencias de radio, asignación de registros en compiladores, etc. Sudoku como problema de coloreo (cantidad fija de colores). Cómo sería un algoritmo goloso para este problema?
Problema de Ruteo de Vehículos (VRP) Problema: Dados n clientes y un depósito, se debe encontrar a lo sumo k rutas de costo total mínimo, donde cada ruta empieza y termina en el depósito. Además cada cliente tiene asociada una cantidad de mercadería que es recolectada al visitarlo. Los vehículos no pueden exceder una capacidad máxima Q de esta mercadería. Generalización del TSP. Es difícil incluso encontrar una solución factible.
Problema de Ruteo de Vehículos (VRP) Enfoque clásico: utilizar una heurística constructiva para tratar de obtener una solución inicial. Ejemplo: Cluster & Route Utilizo una técnica de clustering para obtener k clusters de clientes. Aplico una heurística de TSP en cada cluster (si viola la restricción de capacidad en los vehículos, vuelvo a clusterizar). Luego se aplican operadores para refinar la solución. Ejemplo: Operadores de TSP en cada ruta Operadores inter-ruta: Insertar un cliente en otra ruta para mejorar la calidad de la solución Intercambiar pares de clientes entre rutas.
Algoritmos de búsqueda local Comenzar con una solución S elegida al azar. 1 Explorar los vecinos de S. 2 S mejor vecino. 3 Repetir hasta no poder mejorar. Ejemplos: Mochila: Vecino = Sacar un ítem y poner otro. TSP: Vecino = intercambiar dos ciudades de un recorrido. VRP: Vecino = movimiento definido por algún operador (intercambiar clientes entre rutas).
Algoritmos de búsqueda local Comenzar con una solución S elegida al azar. 1 Explorar los vecinos de S. 2 S mejor vecino. 3 Repetir hasta no poder mejorar. Algunas cuestiones: Cómo defino el vecindario de soluciones? Cómo lo exploro? Variante: Inmediatamente después de encontrar una mejor solución, moverse a esa solución (criterios: first/best accept) Podría ser difícil incluso encontrar la solución inicial.
Optimización Combinatoria Todos los problemas que vimos tienen su versión como problemas de decisión y como problemas de optimización. Ejemplo: TSP Versión decisión: Existe un camino factible de costo menor que C? Versión de optimización: Encontrar el camino factible de costo mínimo Problemas de Optimización Combinatoria Dado un conjunto (finito) S de soluciones factibles y una función objetivo a optimizar f : S R, hallar s S tal que f (s ) f (s) (minimización) para todo s S.
Más sobre el tema Existen variantes (más complejas) de las técnicas que vimos que se utilizan para atacar problemas de optimización combinatoria. Muchas veces se combinan con la utilización de modelos matemáticos basados en Programación Lineal (Entera). Otras metaheurísticas famosas: Programación genética. Simulated annealing. Colonia de hormigas. GRASP VNS VND Si se quedaron con ganas... materias del DC: Investigación Operativa (Prof. Isabel Méndez-Díaz, Paula Zabala, Irene Loiseau). Metaheurísticas (Prof. Irene Loiseau).
Más sobre el tema Si se quedaron con ganas de TSP... In Pursuit of the Traveling Salesman: Mathematics at the Limits of Computation William J. Cook