PhD. Roberto Hincapié Reyes Solución por medio de heurísticas • Las técnicas heurísticas son métodos de solución simplificados que no llegan a la solución óptima, pero que logran una solución buena en un tiempo razonable. • No es fácil decidir que una técnica heurística es mejor que otra. Lo mejor que se puede hacer es ensayar diferentes instancias de problema y decidir de acuerdo con un análisis. Solución por medio de heurísticas Las técnicas se basan en la descripción detallada de un algoritmo. Lo importante en el algoritmo es garantizar tres cosas: – Que el algoritmo efectivamente da solución al problema, aunque no sea necesariamente óptima – Que el algoritmo es finito, es decir, que termina en un número finito de pasos. – Que sea escalable, es decir, que no crezca en forma exponencial o factorial con el tamaño del problema. Solución por medio de heurísticas Solución del problema de cobertura sin capacidad ni interferencia. La matriz A representa los valores αi,j. Activo=COBERTURA(S, U, A) • Defina Cubiertos=∅, como el conjunto de los usuarios cubiertos por algún AP activo. Defina No Cubiertos={u1, u2, u3, …, uN} como el conjunto de los usuarios no cubiertos por ningún AP activo. • Defina Activo=∅, como el conjunto de los AP activos. • Defina Analizar={s1, s2, s3, …, sM}, como el conjunto de sitios candidatos. • Paso1: Para cada sitio en Analizar, calcule el número de usuarios del conjunto No Cubiertos que cubriría si se activara. • Paso2: Defina i* como el sitio que cubre mas usuarios de No Cubiertos. Si hay empate, defina aleatoriamente. Sea u* el conjunto de usuarios que cubre este sitio. SI u*= ∅, vaya al paso 8. • Paso3: Activos=Activos ∪ {Si*} • Paso4: Analizar= Analizar \ {Si*} • Paso5: Cubiertos=Cubiertos ∪ u* • Paso6: No Cubiertos=No Cubiertos \ u* • Paso7: Si Analizar≠ ∅ • Paso8: Salida: Activo. Solución por medio de heurísticas Podría usted plantear una heurística para el problema de cobertura con capacidad? Las heurísticas se basan muchas veces en plantear el problema en función de problemas mas sencillos y sus heurísticas correspondientes. Solución por medio de heurísticas Solución del problema de cobertura con capacidad, sin interferencia • Para cada sitio candidato de S, reduzca el radio del sitio hasta que el conjunto de usuarios cubiertos sea igual a C. Esto equivale a crear el conjunto Ui, definido por los usuarios que son cubiertos por el sitio candidato i, conformado por los C usuarios mas cercanos al AP. A partir de esta definición, cree una nueva matriz A*, de términos αi,j*. • Con el conjunto de conjuntos definido anteriormente, ejecute el algoritmo Activo=COBERTURA(S, U, A*) Problema General de Enrutamiento Modelo del sistema: Supongamos un conjunto de nodos, conectados entre si por medio de enlaces de comunicación unidireccionales. Si entre el nodo A y el nodo B existe un enlace, denotado como eA,B, entonces A puede enviar información directamente hacia B. El enlace eA,B tiene un peso o distancia asociado, dado por dA,B. Se define V como el conjunto de nodos. Se define E como el conjunto de enlaces existentes. Se define G(V,E) como un grafo dirigido que representa la topología de la red. Se supone adicionalmente un flujo de datos que requiere transmitir información desde un nodo origen S hasta un nodo destino T. Este flujo se transmite a través de los nodos intermedios utilizando enlaces existentes. El flujo se define como un par de nodos (s,t) pertenecientes a V que representan el origen y destino de la información. Planteamiento del Problema Planteamiento del Problema Se define la ruta de distancia mínima como la ruta Ps,t* tal que dPs,t*<=dPs,t para cualquier otra ruta Ps,t posible. El problema es encontrar la ruta de distancia mínima para el flujo (s,t). Planteamiento del Problema Para escribir el problema de optimización, se requiere definir las variables Xi,j. Suponiendo que el enlace ei,j existe, Xi,j tiene un valor de 1, si el enlace (i,j) pertenece al camino Ps,t. De lo contrario el valor es cero. Así mismo, para un nodo i∈V, se define Ei,out como el conjunto de los enlaces salientes de i. Y se define Ei,in como el conjunto de los enlaces entrantes a i Con la definición anterior, el problema de optimización queda Planteamiento del Problema Problema general de enrutamiento Solución Heurística: • El problema anterior tiene una heurística ampliamente conocida, llamada el algoritmo de Dijkstra, el cual logra efectivamente encontrar la ruta mas corta extremo a extremo, desde un nodo origen hasta todos los demás nodos. • [D, prev_hop]=DIJKSTRA(G, s) – Suponga un grafo dirigido de N nodos, con pesos en los enlaces. Sea S el nodo inicial. Un vector D de tamaño N guardará al final del algoritmo las distancias desde S al resto de los nodos. – Paso1: Inicializar todas las distancias en D con un valor infinito relativo ya que son desconocidas al principio, exceptuando la de S que se debe colocar en 0 debido a que la distancia de S a S sería 0. – Paso 2: Sea a = S (Se toma a como nodo actual). – Paso 3: Recorremos todos los nodos adyacentes de a, excepto los nodos marcados, llamaremos a estos vi. – Paso 4: Si la distancia desde S hasta vi guardada en D es mayor que la distancia desde S hasta a, sumada a la distancia desde a hasta vi; esta se sustituye con la segunda nombrada, esto es: si (Di > Da + d(a, vi)) entonces Di = Da + d(a, vi) – Paso 5: Marcamos como completo el nodo a. – Paso 6: Se toma como próximo nodo actual el de menor valor en D, no marcado. Si existe este nodo siguiente, vaya al paso 3. – Paso 7: Una vez terminado al algoritmo, D estará completamente lleno. Adaptado de: http://es.wikipedia.org/wiki/Algoritmo_de_Dijkstra Problema general de enrutamiento Enrutamiento de múltiples flujos Modelo del sistema: Supongamos un conjunto de nodos, conectados entre si por medio de enlaces de comunicación unidireccionales. Si entre el nodo A y el nodo B existe un enlace, denotado como eA,B, entonces A puede enviar información directamente hacia B. El enlace eA,B tiene un peso o distancia asociado, dado por dA,B. Así mismo, la capacidad del enlace eA,B está dada por CA,B Se define V como el conjunto de nodos. Se define E como el conjunto de enlaces existentes. Se define G(V,E) como un grafo dirigido que representa la topología de la red. Se supone adicionalmente un conjunto de flujos de datos F={f1,f2,…, fK} que requiere transmitir información desde un nodo origen Sk hasta un nodo destino Tk. El requerimiento de capacidad del flujo fk, está dado por Rk. Este flujo se transmite a través de los nodos intermedios utilizando enlaces existentes. Un flujo se define como un par de nodos fk=(Sk, Tk) pertenecientes a V que representan el origen y destino de la información. Planteamiento del problema: Planteamiento del problema: Se define la ruta de distancia mínima como la ruta Ps,t* tal que dPs,t*<=dPs,t para cualquier otra ruta Ps,t posible. Se define una ruta posible, como aquella que contenga enlaces existentes dentro de la topología y que tengan la capacidad para transmitir los flujos que pasen a través de ellas. El problema es encontrar las ruta de distancia mínima para los flujos pertenecientes a F. Planteamiento del problema: Para escribir el problema de optimización, se requiere definir las variables Xi,j,k. Suponiendo que el enlace ei,j existe, Xi,j,k tiene un valor de 1, si el enlace (i,j) pertenece al camino Psk,tk. Es decir, que el flujo késimo utiliza el enlace ei,j. De lo contrario el valor es cero. Así mismo, para un nodo i∈V, se define Ei,out como el conjunto de los enlaces salientes de i. Y se define Ei,in como el conjunto de los enlaces entrantes a i Con la definición anterior, el problema de optimización queda Enrutamiento de múltiples flujos Enrutamiento de múltiples flujos El problema anterior se puede solucionar de manera iterativa, utilizando la rutina de Dijkstra vista anteriormente. • La rutina debe completarse un poco para poder obtener la ruta completa desde el origen al destino. • Vamos a crear una función llamada P=ruta(s,t,G), que regresa la secuencia de nodos entre s y t de la ruta mas corta. Enrutamiento de múltiples flujos P=ruta(s,t,G) • Paso 1: [D, prev_hop]=DIJKSTRA(G, s) • Paso 2: P=[]; • Paso 3: Nodo=t; • Paso 4: prev=prev_hop(Nodo); • Paso 5: P=[Nodo, P]; • Paso 6: Nodo=prev; • Paso 7: Si Nodo ≠ s, vaya al paso 4; • Paso 8: P=[s, P]; • Paso 9: Retorna P; Enrutamiento de múltiples flujos • A partir de algoritmo anterior, se define un nuevo algoritmo, que busca encontrar el grafo Residual. Este consiste en restar de la capacidad de los enlaces del grafo actual, la tasa de transmisión del flujo actual, sobre los enlaces afectados por el mismo. Enrutamiento de múltiples flujos G=Grafo_residual(G, P, R) • Paso 1: k=1; • Paso 2: CP(k),P(k+1)=CP(k),P(k+1)-R • Paso 3: k=k+1; • Paso 4: si k<||P||, vaya a paso 2. • Paso 5: Retorna G; Enrutamiento de múltiples flujos Suponiendo que existen K flujos, la heurística completa quedaría así: • Paso 1: f=1; • Paso 2: Pf=ruta(sf,tf,G); • Paso 3: G=Grafo_residual(G, Pf, Rf); • Paso 4: f=f+1; • Paso 5: Si f<=K, vaya al paso 2; • Paso 6: Retorna Pf, con f={1,2,…,K}; Enrutamiento de múltiples flujos Para pensar: cómo podría lograr un problema de enrutamiento, donde la capacidad de todos los enlaces se ocupen de la menor manera posible? Es decir, cómo evitar que haya enlaces “cuello de botella”, donde se concentran muchos flujos? Enrutamiento Multicast Modelo del sistema: Supongamos un conjunto de nodos, conectados entre si por medio de enlaces de comunicación BIdireccionales. Si entre el nodo A y el nodo B existe un enlace, denotado como eA,B, entonces A puede enviar información directamente hacia B y B puede enviar información directamente hacia A. El enlace eA,B tiene un costo, peso o distancia asociado, dado por dA,B. Nota, el enlace eA,B es arbitrario en el ordenamiento de a y b. Es decir, eA,B es lo mismo que eB,A. De manera arbitraria, se puede nombrar a un enlace como ei , siendo i el índice del enlace. Se define V como el conjunto de nodos. Se define E como el conjunto de enlaces existentes. Se define G(V,E) como un grafo NO dirigido que representa la topología de la red. No dirigido indica que los enlaces son todos bidireccionales. El modelo general busca encontrar un árbol de expansión de mínimo costo. Un árbol se define como “un grafo no dirigido, en el cual dos vertices cualquiera están conectados por un único camino. En otras palabras, un árbol es un grafo conectado sin ciclos.” Enrutamiento Multicast Planteamiento del Problema: Planteamiento del Problema: Para escribir el problema de optimización, se requiere definir las variables Xi,j. Suponiendo que el enlace ei,j existe, Xi,j tiene un valor de 1, si el enlace (i,j) pertenece al árbol A. De lo contrario el valor es cero. Se define dentro del conjunto de nodos V, un subconjunto B cualquiera de nodos pertenecientes al mismo. Con la definición anterior, el problema de optimización queda Planteamiento del Problema: El problema se define como la minimización del costo de los enlaces elegidos. La primera restricción indica que los nodos se conectan con N-1 enlaces, siendo N el número de nodos. La última restricción debe analizarse con mas cuidado. Planteamiento del Problema: Un conjunto B se define como cualquier subconjunto de nodos del conjunto N. B no es vacío ni igual a V. Planteamiento del Problema: Un conjunto B se define como cualquier subconjunto de nodos del conjunto N. B no es vacío ni igual a V. Planteamiento del Problema: Un conjunto B se define como cualquier subconjunto de nodos del conjunto N. B no es vacío ni igual a V. Planteamiento del Problema: Un conjunto B se define como cualquier subconjunto de nodos del conjunto N. B no es vacío ni igual a V. Planteamiento del Problema: Suponga el siguiente grafo. Para el mismo, se debe encontrar el árbol de expansión de mínimo costo. Enrutamiento Multicast Enrutamiento Multicast Suponga el siguiente grafo. Para el mismo, se debe encontrar el árbol de expansión de mínimo costo. Enrutamiento Multicast Suponga el siguiente grafo. Para el mismo, se debe encontrar el árbol de expansión de mínimo costo. Enrutamiento Multicast La solución arroja un grafo que no tiene ciclos y que pasa por todos los nodos de la red. Enrutamiento Multicast El problema del modelo anterior, es que la cantidad de restricciones crece exponencialmente. • Si se define cada nodo como una variable binaria que vale 1 si el nodo pertenece a B, existen 2^N subconjuntos posibles diferentes. Sin embargo el vacío y el completamente lleno no aplican. Entonces se tienen 2^N-2 subconjuntos totales. Para 10 nodos, se tienen 1022 restricciones. Para 20 nodos, 1’048.574 restricciones. Para 100 nodos, 1.2677e +030 restricciones. • Este problema con un número razonable de nodos, ni siquiera se puede escribir. Enrutamiento Multicast Solución Heurística: • El problema anterior tiene una heurística ampliamente conocida, llamada el algoritmo de Prim. D representa el costo de los diferentes enlaces. Suponga un grafo NO dirigido de N nodos, con pesos en los enlaces • [Enew]=PRIM(E,V,D) – Paso1: Inicializar Vnew={x}; Enew={}; donde x es un nodo arbitrario del grafo. Se elige aleatoriamente. – Paso 2: Elija un enlace eu,v con costo mínimo tal que u pertenece a Vnew y v no pertenece a Vnew. Si existe un empate, se puede elegir aleatoriamente cualquiera de los enlaces. – Paso 3: Agregue v al conjunto Vnew. Agregue el enlace eu,v al conjunto Enew. – Paso 4: Si el conjunto Vnew no es igual a V, vaya al paso 2. – Paso 5: Salida del algoritmo, Enew.
Adaptado de: http://en.wikipedia.org/wiki/Prim%27s_algorithm