TRABAJO DE INVESTIGACION
METODO DE BRANCH & BOUND
Ramo:
Investigación de Operaciones.
Profesora:
Alicia Pérez O.
Integrantes:
Erik Egaña. Nelson Pérez Z. Juan Carmona V.
Fecha:
La Serena Enero 2014
INDICE 1. Introducción 2. Objetivos generales 3. Objetivos específicos 4. Desarrollo I – Definiciones y Conceptos Ramificación Acotación Eliminación Selección Búsqueda en Profundidad (depth-first) Primero el Mejor (Best-first) Búsqueda en Anchura o por Niveles (Breadth-first) II – Paralelismo y distribución de cargas Sobrecarga de la búsqueda Decisión entre comunicación y computación Escalabilidad y algoritmos escalables Algoritmo de Ramificación y Acotación secuenciales y paralelas III – Paradigma de la Orientación a objetos 5. Conclusión. 6. Bibliografía.
Introducción Branch-and-Bound (B&B) es una técnica eficiente para la búsqueda de soluciones donde su objetivo es encontrar no solamente una solución, pero si la óptima. El Método de Branch and Bound se aplica mayoritariamente para resolver problemas de optimización. Esta técnica, conocida también como técnica de “Ramificación y poda”, se interpreta como un árbol de soluciones, donde cada rama lleva a una posible solución posterior a la actual. La característica de esta técnica, es que el algoritmo se encarga de detectar en qué ramificación las soluciones dadas ya no están siendo óptimas, para “podar” esa rama del árbol y no continuar malgastando recursos y procesos en casos que se alejan de la solución óptima. Casi todas las otras técnicas de búsquedas son distintas del método B&B porque encuentran soluciones no óptimas o soluciones subóptimas. El problema debe ser representado con un grafo de estados, donde el estado inicial significa el problema propuesto y el estado final es el objetivo a alcanzar. Hay variaciones como búsqueda con retroceso, programación dinámica, los árboles de decisión Y/O y otros.
Objetivo General Entregar información sobre el método de Branch & Bound, basado en el diseño de Algoritmos de Ramificación y Poda.
Objetivos Específicos En este trabajo, será presentado por 3 secciones: La primera sección, algunas definiciones, conceptos y funcionamiento de lo algoritmo Branch-and-Bound.
La segunda sección, el paralelismo y distribución de carga para algoritmos paralelos.
La tercera sección, la orientación a objetos para esos algoritmos, conclusiones y bibliografía.
I – Definiciones y Conceptos El funcionamiento general de lo algoritmo B&B consiste en reducir el espacio de búsqueda del problema podando las zonas del árbol aún no exploradas que no pueden crear mejores soluciones que la solución en curso. Para tanto, el método de ramificación y acotación B&B busca siempre la óptima solución y, nunca una buena solución. Para comprenderemos mejor como el algoritmo B&B funciona, algunos conceptos deben ser descritos.
Ramificación Significa elegir el próximo nodo en curso de la lista de nodos vivos, siendo el nodo vivo eliminado da lista y la continuación ocurre generando sus hijos. Para elegir el próximo nodo en curso hay 3 estrategias:
FIFO: Se utiliza una cola para implementar la lista de nodos vivos, tiendo el nodo en curso el primero nodo de la lista de nodos vivos (LNV) y sus hijos se añaden al final de la lista. El recorrido aquí es por niveles.
LIFO: Se utiliza una pila para implementar la LNV. Aquí el próximo nodo vivo será el primero de la LNV y sus hijos se añaden al inicio de la lista. Esta estrategia es muy similar al recorrido en profundidad, tiendo como diferencia de generar todos los hijos del nodo en curso antes de elegir el próximo nodo.
MINIMO COSTE: Se utiliza una cola con prioridades para implementar la LNV. Ahora, cada nodo de la LNV tiene una prioridad o coste, de forma que siempre el nodo con mayor prioridad será elegido. Un problema de optimización con restricciones puede ser transformado en un problema de encontrar la solución de mínimo coste. Así, crease una función de estimación. Encontrar una función de estimación fácil de calcular no es una tarea fácil. Hay propiedades que la función debe cumplir. Se no se cumplen el algoritmo se detén al encontrar la primera solución, la cual pude no ser la óptima.
En la fase de ramificación es posible emplear poda para que el tamaño del árbol de estados sea reducido. Esta poda no es la misma que a poda realizada por el método. La poda realizada por el método es para evitar una duplicación de los estados en el árbol, evitando, así, que un mismo nodo sea explorado más de una vez.
Acotación Significa usar una función U para podar en el árbol del espacio de estados de los nodos que se ajusten a una regla de poda. La función U tiene, inicialmente, valor máximo determinado por una heurística basada en información extra del problema, siendo que U nunca podrá ser menor que la solución de mínimo coste.
Eliminación Significa podar los nodos que lo límite es mayor que la solución encontrada hasta ahora.
Selección Generalmente, la función de selección está determinada por una función de prioridad heurística. Los subproblemas están almacenados en la estructura de datos en un orden parcial o total, que no es decreciente de la función heurística. Como la función de selección afecta su eficacia y al espacio de memoria requerido, algunas reglas de selección heurística más comunes son descritas como: profundidad, anchura o niveles y primero el mejor. Búsqueda en Profundidad (depth-first) La función de seleccionar el subproblemas, que debe estar a más profundidad en el árbol, debe tener un menor valor de la función de prioridad heurística. Para utilizarse este método es necesario utilizar una estructura de almacenamiento llamado LIFO o pila. La complejidad de la pila se incrementa linealmente con el nivel del árbol de búsqueda alcanzado y el factor de división. Los subproblemas generados a partir del subproblemas elegido y descompuesto son introducidos en la pila siguiendo un orden decreciente de la función de prioridad heurística. Las principales ventajas son: la primera, es el método de selección más económico del punto de vista del espacio de memoria requerido y; la segunda es que conduce más rápidamente a la obtención de una mejor cota superior. En contrapartida, las desventajas son: el número de subproblemas inspeccionados es mayor que el realizado en otros tipos de selecciones y; se entra una rama del árbol que no lleva a la solución óptima, necesitándose mucho tiempo para salir de esa ramificación.
Primero el Mejor (Best-first) La función de selección elige aquel subproblema con un menor valor de la función de prioridad heurística independientemente del nivel de profundidad en que se encuentre en un árbol de búsqueda. La estructura de almacenamiento usada es una lista ordenada. La ventaja es que difícilmente un problema es descompuesto innecesariamente. Se exploran menos nodos que usando otras estrategias; y la desventaja: la mejor cota superior, suele obtenerse en las fases finales del algoritmo y el crecimiento exponencial en el espacio de memoria necesario aumenta conforme la profundidad del árbol. Búsqueda en Anchura o por Niveles (Breadth-first) La función de selección elige, de entre aquellos subproblemas que están a menor profundidad en el árbol de búsqueda, el que tenga un menor valor de la función de prioridad heurística. La estructura de almacenamiento usado por este método es FIFO o cola. La ventaja de utilizarse ese método es que admite que la aplicación haga teste de dominancia entre los subproblemas que se encuentra a la misma profundidad del árbol de búsqueda; y la desventaja es que ese tipo de estrategia no es recomendable ni desde el punto de vista del tiempo de computación ni desde el del ahorro de memoria. Hay todavía, otra estrategia llamada Modelo Híbrido que es una combinación de la búsqueda en profundidad y de la búsqueda primero el mejor. Se basa en aplicar alternativamente cada una de las estrategias. Primero realizase una en profundidad hasta que no se pueda proseguir la búsqueda por la rama generada. De los nodos activos generados seleccionase uno aplicando la búsqueda primero el mejor y a partir de él se realiza una nueva búsqueda en profundidad, repitiendo el proceso hasta la finalización del algoritmo.
II – Paralelismo y distribución de cargas Cuando se tiene muchos problemas complejos el esfuerzo computacional exigido es muy grande e por eso, surge la necesidad de paralelizarlos, porque la paralelización es una de las opciones para facilitar el tratamiento de problemas reales. El factor más relevante para la eficiencia de un algoritmo paralelo de B&B es la distribución igualitaria do trabajo entre los procesos. Esto se hace atrevas de la distribución de partes distintas del árbol para diversos procesadores. En este punto es importante que aja una comunicación segura entre los procesadores, porque cuando un procesador encontrar una buena solución, y será una buena solución para este subproblema, esta información deberá ser pasada para los otros procesadores evitando que busquen la óptima solución por nodos no necesarios. En un sistema paralelo B&B es fundamentalmente importante que la distribución de performance sea hecha. Así, ejecutase el algoritmo B&B para que el proceso sea acelerado dividiendo el problema en subproblemas, buscando la solución atrevas de múltiplos procesos menores. Algoritmo de Ramificación y Acotación secuenciales y paralelas Los primeros algoritmos de ramificación y acotación describieron esquemas enumerativos para resolver problemas NP-completos. Por su generalidad y la efectividad que tenía, fue ampliamente usado. Los métodos de ramificación y acotación son algoritmos basados en árboles de búsqueda y sus principios se basan en hacer una descomposición sucesiva del problema original en diversos subproblemas más pequeños, hasta encontrar la solución, solución esta, que debe ser la óptima. Un árbol de búsqueda describe estos subproblemas y el proceso de descomposición donde el objetivo consiste en una búsqueda heurística, para que subproblemas que no contengan la solución óptima no sean explorados.
Una buena comprensión de un problema a ser solucionado, es decir, hacer una buena elección de reglas básicas (ramificación, acotación, selección, eliminación). Los algoritmos de ramificación y acotación consisten en una secuencia de iteraciones en las que se aplican las reglas básicas a una estructura de datos, que nada más es do que una lista ordenada de subproblemas. Un subproblema de esta estructura de datos es seleccionado e descompuesto, y al asociado una solución factible. La mejor solución factible encontrada durante la ejecución del algoritmo de ramificación y acotación será un límite superior a la solución final y será utilizado para eliminar aquellos subproblemas que no contengan. Una solución mejor que la que ya se ha encontrado. La estructura de datos está compuesta por subproblemas activos, o sea, subproblemas que fueran generados en algún punto de la ejecución del algoritmo pero no fueran eliminados ni descompuestos, y por esto tienen una solución factible. Así como los algoritmos secuenciales, los paralelos también deben encontrar las soluciones óptimas, donde una búsqueda exhaustiva en el árbol de búsqueda es impracticable. Están basados, así como los algoritmos de ramificación y acotación secuenciales, en una descomposición sucesiva del problema original en subproblemas más pequeños, hasta encontrar la solución óptima. La diferencia está en que en este tipo de algoritmo el procesamiento es paralelo. Esto porque el procesamiento paralelo ha sido considerado una fuente adicional de mejora en la eficiencia de la búsqueda, ya que los problemas que son generados durante la especificación de estos algoritmos pueden resolver simultánea e independientemente, pudiéndose usar muchos procesadores para resolver concurrentemente varios subproblemas. Por eso, estos algoritmos se diferencian de otros, como por ejemplo, por sus conjuntos de datos serán irregulares y de tamaños distintos, en carga de trabajo no son uniforme, por poder o no depender del número de procesadores, la programación tornase un trabajo preciso que hay que tener cuenta algunas posibilidades como:
Sobrecarga de la búsqueda Sobrecarga en las comunicaciones y tiempo ocioso debido a desbalanceo de la carga y a conflictos de acceso a memoria son algunos de los motivos de esta sobrecarga de búsqueda. Así, si las implementaciones paralelas y secuenciales del algoritmo realizan la misma cantidad de trabajo, es normal que la ganancia en velocidad para n procesadores S(n) < n. Sin embargo, la cantidad de trabajo realizada en la implementación paralela a menudo difiere de la realizada por la versión secuencial porque se exploran diferentes partes del árbol de búsqueda. Sea W el trabajo realizado por el algoritmo de búsqueda secuencial y W p el realizado por la versión paralela con p procesadores. Se define el factor de sobrecarga de la búsqueda del sistema paralelo como la relación entre el trabajo realizado por la versión paralela y la secuencial, o W p / W. En la mayoría de los algoritmos de búsqueda paralelos el factor de sobrecarga de la búsqueda es mayor que uno. Si el factor de sobrecarga es menor que uno, entonces el algoritmo no es el más rápido para resolver el problema. Decisión entre comunicación y computación Como para muchos algoritmos la sobrecarga de la búsqueda es mayor que uno, esto implica decir que la implementación paralela realiza más trabajo que la secuencial. Si una región de búsqueda es dividida entre procesadores y estos realizan una busca independiente, en conjunto ellos irán realizar una búsqueda mayor que en la versión secuencial, porque no hay comunicación entre ellos. Si hubiera comunicación, esta búsqueda, seguramente será menor. Es importante acordar que con este intercambio de informaciones permitirá que más procesadores hacen uso de la regla de eliminación, reduciendo la sobrecarga de la búsqueda, pero aumentando la sobrecarga de las comunicaciones.
Escalabilidad y algoritmos escalables La ganancia de velocidad no se incrementa linealmente con el número procesadores si se usa la versión paralela para resolverse un problema de tamaño fijo. En estos casos, ha línea de ganancia de ganancia de velocidad tiende a saturarse. Cuando se intenta paralelizar un algoritmo secuencial, normalmente se han de detectar las partes inherentemente secuenciales y las potencialmente paralelas. La descomposición, generalmente, introduce una sobrecarga adicional como por ejemplo en las comunicaciones entre los procesadores. Para obtener buenas implementaciones paralelas hay que intentar que estas sobrecargas queden ocultas bajo otros cálculos u operaciones del algoritmo. Sin embargo, cuando se tiene que decidir entre varios subproblemas que poseen la misma prioridad a cuál de estos tiene mayor probabilidad de ser un camino crítico mínimo, aparece las anomalías debido a la naturaleza de los problemas, es difícil, si no imposible, decidir qué dirección de la búsqueda se debe seguir para reducir el trabajo a realizar.
III – Paradigma de la Orientación a objetos La mayoría de los métodos utilizados para el desarrollo de sistemas es basada en la descomposición funcional y/o dirigidos a datos de lo sistema. En los métodos orientados a objetos los datos tienen una integración muy alta. La orientación a objetos basase sus principios sobre el modelo de desarrollo donde sus fundamentos son interligados de forma sinergética. Entonces, programación orientada a objetos es un método de implementación en que programas son organizados como colecciones cooperativas de objetos, cada uno representando una instancia de alguna clase y cujas clases son miembros de una jerarquía de clases unidas a través de herencia.
Para modelos B&B pódese definir un conjunto de reglas básicas en un contexto y por lo tanto puede desarrollar en forma independiente de la aplicación. Anteriormente fue descrito como funciona un algoritmo B&B y en este funcionamiento se pude notar algunas reglas que son: ramificación para la descomposición de los nodos, la regla de cálculo de los límites, la regla de escoger el siguiente nodo a avaluar, y la regla de eliminación de los nodos a avaluar. En ordenadores secuenciales, la especificación de las reglas es la parte más importante para obtenerse un algoritmo útil. Ya para obtener un algoritmo B&B paralelo eficiente, no es suficiente mirar solamente el problema. El desempeño de las implantaciones depende fuertemente de la arquitectura de lo que se busca, e inclusive en el árbol de búsqueda que se va a generar. En un ambiente orientado a objetos, es fácil acomodar a un gran número de diferentes implantaciones de B&B en diferentes arquitecturas paralelas. Un modelo de B&B puede ser implantado de una forma muy sencilla a través do uso de objetos e poliformismo. El poliformismo permite manipular al evaluador un objeto
únicamente
conociendo
su interfaz,
no
necesitando
conocer
su
implementación. Tanto en los algoritmos secuenciales u paralelos del B&B hay que seguir el camino del conjunto de nodos que todavía se pueden tener en cuenta para ser evaluados. Un algoritmo B&B para solucionar cada una de los implementaciones en cada caso específico debe presentar una estructura flexible y debe acomodar a la mayor cantidad de soluciones como sea posible.
Conclusiones Actualmente los problemas exigen soluciones que deben ser encontradas rápida e precisamente, tiendo un bajo costo y encontrando la solución óptima. Para tanto, algoritmos que utilizan técnicas en reducir el espacio de búsqueda del problema, haciendo podas en las zonas aún no exploradas hasta que la solución óptima sea encontrada son los más eficientes. En este sentido los algoritmos Branch-andBound tienen una gran aplicabilidad e eficiencia. Sin embargo, el conocimiento adquirido con la ejecución de este trabajo fue, particularmente, importante porque la aplicabilidad del algoritmo Branch-andBound podrá ser desarrollada en la realidad. El estudio deberá ser mayor cuando se habla de distribución de carga para que sea aplicado de manera correcta e eficiente dentro de la realidad que conocemos.
Bibliografía .inf.utfsm.cl mcriff fio ilp. tml sa.um .es asignaturas iarp ... teoria R
E
R
-
.pdf
.uv.es sala trentera.pdf eco-mat.ccee.uma.es mateco
ocencia
eccion
.pdf
books.google.com › Business & Economics › Economics › General .ingenieria-industrial.net inde .p p accion
id