Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ramificacion y
Acotacion”
Introducción
Como cualquier problema acotado de programación entera pura tiene sólo un
número finito de soluciones factibles, resulta natural considerar el uso de algún tipo
de procedimiento de enumeración para encontrar una solución óptima.
Desafortunadamente, este número finito puede ser, y casi siempre lo es, muy grande,
por lo que es imperativo que cualquier procedimiento de enumeración sólo examine
una pequeña fracción de estas soluciones factibles. Un enfoque de este tipo lo
proporciona el método de ramificación y acotamiento.
2
Dentro de los métodos de Ramificación y Acotamiento, algunos
de los algoritmos disponibles son:
3
Método de ramificación y acotación (Branch
and Bound)
El método de ramificación y acotación o también llamado Branch and Bound,
resuelve el problema de tal forma que si la solución a este verifica
condiciones de integridad, entonces también es la solución al problema
entero, de lo contrario se comienza con la ramificación del problema.
7
"MÉTODO DE RAMIFICACIÓN Y ACOTAMIENTO
PARA MODELOS ENTEROS PUROS"
8
La solución de un subproblema puede ser:
10
RESUMEN
Hasta el momento solo hemos visto métodos de resolución de
problemas lineales continuos. Sin embargo es muy frecuente que la
naturaleza del problema nos diga que las variables son enteras o
binarias. Una alternativa es simplemente aproximar la solución
hacia el entero mas cercano, pero esta estrategia podría ser bastante
mala como de hecho ocurre para las variables binarias.
El algoritmo de ramificación y acotamiento (o de branch and
bound) comienza con una relajación del problema (no considerar
restricciones de integralidad) y construye un árbol con soluciones
enteras particionado el conjunto de soluciones factibles de modo de
descartar soluciones fraccionarias. Sin embargo, este solo hecho de
descomponer nos puede llevar a un problema inmanejable por lo
que debemos podar el árbol de manera inteligente. 11
Pseudocódigo
El pseudocódigo del algoritmo de Ramificación y poda es el
siguiente:
Funcion RyP {
P = Hijos(x,k)
while ( no vacio(P) )
x(k) = extraer(P)
if esFactible(x,k) y G(x,k) < optimo
si esSolucion(x)
Almacenar(x)
else
RyP(x,k+1)
Aplicaciones en el ámbito general
Problema de la mochila.
Programación lineal.
Programación no lineal.
Problema del viajante.
Problema de la asignación cuadrática.
Problema de máxima satisfacibilidad (Versión Inglesa).
Búsqueda del vecino más cercano (Versión Inglesa).
Análisis del ruido falso.