Inv.
de
Operaciones
“Ramificación Y
acotamiento “
Programación Lineal Entera
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Modelo de Ramificación y
Acotamiento
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Ramificación y Acotamiento
El método de Branch and Bound (o Ramificación y
Acotamiento) es un algoritmo diseñado para la
resolución de modelos de Programación Entera. Su
operatoria consiste en linealizar el modelo
de Programación Entera, es decir, resolver éste como
si fuese un modelo de Programación Lineal y luego
generar cotas en caso que al menos una variable de
decisión (entera) adopte un valor fraccionario.
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Ramificación y acotamiento
El algoritmo genera en forma recursiva cotas (o
restricciones adicionales) que favorecen la obtención
de valores enteros para las variables de decisión. En
este contexto resolver el modelo lineal asociado a un
modelo de Programación Entera se conoce
frecuentemente como resolver la relajación
continua del modelo entero
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Ejemplo aplicación método
Consideremos el siguiente modelo de Programación
Entera el cual resolveremos con el algoritmo de Branch
and Bound:
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Ejemplo aplicación método
El paso inicial consiste en resolver este problema como
si fuese un modelo de Programación Lineal (relajación
continua). Si la solución de dicho problema llegara a
respetar las condiciones de integralidad para las
variables de decisión, ésta ya sería la solución óptima
del problema entero.
Si bien este procedimiento se puede extender a
problemas de mayor dimensión, utilizamos un modelo
en 2 variables para poder representar los pasos del
algoritmo gráficamente. El gráfico a continuación
muestra dicha resolución:
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Ejemplo aplicación método
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Ejemplo aplicación método
La solución óptima del problema lineal asociado (que llamaremos P0)
es X1=2,8 y X2=1,6 con valor óptimo V(P0)=20,8. Claramente esta
solución no cumple las condiciones de integralidad para las variables de
decisión por tanto es necesario generar cotas o restricciones adicionales de
modo de poder obtener soluciones enteras. Para ello debemos seleccionar
una de las 2 variables de decisión con valores fraccionarios para poder
generar cotas. En estricto rigor es indistinto cuál de ellas seleccionemos
debido a que el método nos debe llevar a conclusiones similares (aun cuando
la cantidad de pasos requeridos o rapidez de convergencia cambie).
En el ejemplo generaremos cotas adicionales para la variable X1 aproximando
su valor actual al entero inferior más cercano (P1) y entero superior más
cercano (P2).
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Como criterio de selección de la variable a tratar ,
puede ser: la que mas aporta a la función objetivo, en
este caso es X1 , con esto se definirá un rango o
eliminación de la parte fraccionaria de la variable , lo
que implica que aparecerán dos nuevas restricciones:
• X1 ≥ 3 P2
• X1≤ 2 P1
Con lo cual se incorporan dos nuevas restricciones al
problema original
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Ejemplo aplicación método P1
Max Z = 4X1+ 6X2
Sujeto a : 2X1+4X2 ≤ 12
4X1+3X2 ≤ 16
X 1≤ 2
X1,X2 ≥ 0 y enteras
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Ejemplo aplicación método
La resolución gráfica del problema 1 (P1) nos da como
solución óptima X1=2 y X2=2 que es una solución
entera. El valor óptimo del problema 1 es V(P1)=20.
Notar que V(P1)<V(P0) lo cual es natural dado que el
dominio de soluciones factibles del P1 es menor
(subconjunto) al dominio de soluciones factibles de P0
Esta primera solución entera será nuestra cota
inferior y la compararemos con las soluciones
siguientes , hasta encontrar el optimo
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Max Z = 4X1+ 6X2
Sujeto a : 2X1+4X2 ≤ 12
4X1+3X2 ≤ 16
X 1≥ 3
X1,X2 ≥ 0 y enteras
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Ejemplo aplicación método
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Problema 3
Max Z = 4X1+ 6X2
Sujeto a : 2X1+4X2 ≤ 12
4X1+3X2 ≤ 16
X 1≥ 3
X 2≤ 1
X1,X2 ≥ 0 y enteras
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Problema 4
Max Z = 4X1+ 6X2
Sujeto a : 2X1+4X2 ≤ 12
4X1+3X2 ≤ 16
X 1≥ 3
X 2≥ 2
X1,X2 ≥ 0 y enteras
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Ejemplo aplicación método
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Ejemplo aplicación método
Luego no sería del todo necesario seguir desarrollando
el algoritmo dado que si generamos cotas para la
variable X2 del P2 en ningún caso podríamos obtener
una solución entera con valor óptimo superior a 20
(valor que reporta en la función objetivo la actual
solución entera de P1) y por tanto podríamos concluir
que X1=2 y X2=2 es la solución óptima del problema
entero. No obstante el siguiente diagrama muestra los
pasos adicionales en caso que quisiera agregar cotas
adicionales a partir del P2.
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Ejemplo aplicación método
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Ejemplo aplicación método
Un argumento similar al expuesto previamente en este
caso explicaría la no necesidad de seguir ramificando
el P21. Se propone que verifica que se obtiene la
misma solución óptima si luego del P0 ramificamos a
través de X2 agregando las restricciones: X2≤1 y X2≥2.
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Ejemplo 2
El método de Branch and Bound (en español
Ramificación y Acotamiento) aborda la resolución de
modelos de programación entera a través de la
resolución de una secuencia de modelos de
programación lineal que constituirán los nodos o
subproblemas del problema entero. Si bien el
procedimiento es entendible a un número mayor de
variables, para efectos prácticos se revisara su
aplicación para modelos de programación entera en 2
variables.
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Ejemplo 2
Resuelva el siguiente modelo de programación entera a
través del algoritmo de ramificación y acotamiento
(Branch and Bound)
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Ejemplo 2
El primer paso consiste en resolver el problema sin considerar
las condiciones de integralidad, es decir, asumiendo que es un
modelo de Programación Lineal. El siguiente gráfico muestra la
resolución gráfica donde el área en verde corresponde al
dominio de soluciones factibles asociado al problema lineal lo
que se denomina la relajación continua del problema entero.
Adicionalmente, sólo con el objetivo de ilustrar se han marcado
con azul las posibles soluciones enteras para este problema. En
este sentido resulta evidente que el dominio de soluciones
factibles del problema entero es un subconjunto del dominio del
problema lineal y esto en el caso de un problema de
maximización determina que el valor óptimo del problema lineal
será una cota superior del valor óptimo del problema entero.
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Ejemplo 2
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Ejemplo 2
La relajación continua (Problema P0) nos da como solución
óptima X1=20/9 y X2=14/9 con valor óptimo V(P0)=319,1. Dado que al menos
una variable de decisión toma valor fraccionario se debe buscar una
aproximación a valor entero. En este caso en particular con 2 soluciones
fraccionarias como criterio se puede seleccionar aquella con un mayor
impacto (coeficiente) en la función objetivo, sin embargo, no importando cuál
de ellas se seleccione en un inicio los resultados serán los mismos.
En consecuencia, seleccionaremos X1 y aproximaremos los resultados
(20/9=2,222) al entero superior e inferior más cercano. Esto genera 2
subproblemas que llamaremos P1 y P2 respectivamente. El problema P1 es
similar a P0 pero considera como restricción adicional X1 ≤ 2. Al resolver dicho
problema se obtiene X1=2 y X2=7/4 con V(P1)=380. El problema P2 es similar
a P0 pero adicionalmente tiene la restricción X1 ≥ 3, con solución óptima X1=3
y X2=0 y V(P2)=360. Este nodo (P2) se agota y sólo el P1 puede generar
nuevos nodos.
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Ejemplo 2
Cabe destacar que un nodo o subproblema se agota en
las siguientes situaciones: 1) Se alcanza una solución
entera, 2) El problema es infactible, 3) Se obtiene una
solución fraccionaria pero no es necesario continuar
dado que ésta no es mejor (en términos de valor de la
función objetivo) que una solución entera que se ha
alcanzado previamente.
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Ejemplo 2
Continuando con el procedimiento el P1 genera 2 nuevos nodos.
P11 (similar a P1 con la restricción adicional X2<=1) con solución
X1=2 y X2=1 y V(P11)=320. El problema P12 (similar a P1 con la
restricción adicional X2>=2) con solución X1=12/7 y X2=2 y
V(P12)=365,7.
Sólo P12 genera nuevos nodos: P121 (similar a P12 con la
restricción adicional X1<=1) con solución X1=1 y X2=21/8 y
V(P121)=330. Adicionalmente el problema P122 (similar a P12
con la restricción adicional X1>=2) resulta ser infactible al no
existir solución.
Investigación de Operaciones – Profesor: Juan Carlos Guzmán
Ejemplo 2
Finalmente, si bien se puede continuar ramificando (generando
nodos) a contar del problema P121 esto no es necesario dado
que el valor óptimo sólo podrá ir disminuyendo (dado que cada
vez se resuelve un problema sobre un dominio de soluciones
factibles menor) y por tanto en ningún caso se podrá obtener
una solución entera mejor que la que ya se dispone (P2). Por
tanto X1=3 y X2=0 es solución óptima del problema entero con
valor óptimo V(PE)=360. Se recomienda verificar que se
obtienen los mismos resultados ramificando inicialmente por
X2 en vez de X1.
Investigación de Operaciones – Profesor: Juan Carlos Guzmán