Está en la página 1de 13

“Metodo de

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:

1. Algoritmo de Land y Doig.


2. Algoritmo de Driebeek
3. Algoritmo de costos penales
4. Algoritmo de Kolesar

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.

La ramificación consiste en dividir cada problema en dos nuevos


subproblemas, obtenidos mediante el uso de restricciones excluyentes que
dividen el conjunto de oportunidades del problema original en dos partes,
pero eliminando en ambas partes la solución no entera del problema original.
Cuando en la solución al problema una variable que es entera xi toma el
valor xbi no entero, entonces se generan, a partir de dicho valor, dos
restricciones xi ≤ [xbi] y xi ≥ [xbi]+1 (siendo [xbi] la parte entera por defecto
de xbi). 4
La acotación: se basa en el hecho de que dado que los
conjuntos de oportunidades
el proceso de acotación consiste, para problemas de máximo, en
tomar como cota inferior aquella solución entera con mayor valor
de la función objetivo obtenida y dado que cualquier otro
subproblema con solución no entera sabemos que al ramificarlo
nos dará como resultado valores de la función objetivo menores
o iguales, nos permite descartar como subproblemas a ramificar
todos aquellos que tengan como solución óptima un valor de la
función inferior a la cota establecida. De este modo se reduce el
número de subproblemas a ramificar y por lo tanto el tiempo
necesario para la resolución de los problemas enteros.
5
Ejemplo
Max F(X) = 8x1 + 10x2
s.a. 4x1 + 6x2 ≤ 24
8x1 + 3x2 ≤ 24
x1≥0,x2≥0, x1,x2∈Z+
Resolviendo en primer lugar el PLA, es decir
Max F(X) = 8x1 + 10x2
s.a. 4x1 + 6x2 ≤ 24
8x1 + 3x2 ≤ 24
x1≥0,x2≥0
6
Resolviendo en primer lugar el PLA, es decir
Max F(X) = 8x1 + 10x2
s.a. 4x1 + 6x2 ≤ 24
8x1 + 3x2 ≤ 24
x1≥0,x2≥0
se obtiene la solución x1 = 2, x2 = 8/3, f(x) = 128/3, dado que ésta solución
no es entera se ramifica a partir de la variable x2 del siguiente modo
subproblema 1 subproblema 2
Max F(X) = 8x1 + 10x2 . Max F(X) = 8x1 + 10x2
s.a. 4x1 + 6x2 ≤ 24 s.a. 4x1 + 6x2 ≤ 24
8x1 + 3x2 ≤ 24 8x1 + 3x2 ≤ 24
x2 ≥ 3 x2 ≤ 2
x1≥0,x2≥0 x1≥0,x2≥0
solución x1=1,5, x2=3,F(x)=42 solución x1=2,5, x2=2,F(x)=38

7
"MÉTODO DE RAMIFICACIÓN Y ACOTAMIENTO
                                    PARA MODELOS ENTEROS PUROS"

Consta de los siguientes:


1. Resolver el modelo relajado. Si la solución es entera detenerse si no continuar con el
método.
2. Escoger arbitrariamente una variable entera xj cuyo resultado sea fracción e igual a
xbj.
3. Resolver dos nuevos problemas similares al anterior pero uno con la restricción
adicional xj≤[xbj] y otro modelo con la restricción adicional xj≥[xbj]+1.
4. De los subproblemas en el paso 3 analizar sólo aquellos subproblemas cuya solución
sea mayor (max) o menor (min) a cualquiera de las soluciones enteras conocidas (cota
inferior: caso máx y cota superior: caso min).

8
La solución de un subproblema puede ser:

1. Solución no factible (ya no se divide en subproblemas)


2. Problema agotado: (ya no se divide en subproblemas)
a. Una solución factible entera del problema original (Z)
· Cota inferior (caso max)=Zcota→Si Zcota<Z→Zcota=Z
1. · Cota superior (caso min)= Zcota→Si Zcota>Z→Zcota=Z
b. Una solución que no sea mejor a las soluciones enteras conocidas:
· Max: Zcota≥Z
· Min: Zcota≤Z
3. Solución no entera, que cumpla con Zcota≤Z (máx) o Zcota≥Z (min), continuar
con el método.
5. Seleccionar el modelo lineal que tenga el máximo valor de la función objetivo
(caso máx).
9
Aunque en la actualidad éste método
emplea técnicas muy sofisticadas para
la elección de variables, nodos, cotas,
etc, la idea original del algoritmo es muy
sencilla por lo que tratemos de
resumirla brevemente

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

Esta técnica es usada por un gran número de problemas NP-hard ,


tales como:

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.

También podría gustarte