Está en la página 1de 6

Algoritmo de

Sesión Ramificación y
10 Acotamiento

I
OBJETIVOS
 Plantear problemas de programación Entera.
 Aplicar el algoritmo de Ramificación y Acotamiento
 Utilizar el LINDO, POMQM o WINQSB para el análisis respectivo.

II
TEMAS A TRATAR
 Formulación de problemas de programación entera.
 Algoritmo de Ramificación y Acotamiento.

III
MARCO TEORICO

Revisar Apuntes de Clase

IV
(La práctica tiene una duración de 02 horas) ACTIVIDADES

ALGORITMO DE RAMIFICACIÓN Y ACOTAMIENTO


Los problemas de programación entera pueden resolverse en teoría, por medio de la enumeración de todas
las soluciones posibles y la selección de la mejor. En el ejemplo que sigue solo hay dos variables. Pero
aun este sencillo ejemplo tiene 305 combinaciones posibles de soluciones enteras.
Ramificación y acotamiento es una estrategia de búsqueda sistemática que reduce mucho el número de
combinaciones que se deben examinar. Comienza con la solución óptima del Simplex en donde se
ignoraron las restricciones de variables enteras. Se selecciona después una variable con valor no entero y
se crean dos “ramas” mutuamente excluyentes. Esto da lugar a dos nuevos problemas de PL que se deben
resolver. Si ninguna solución es entera, se crean ramas y se resuelven nuevos problemas. En cada paso, la
solución que se encuentra proporciona una “cota” para esa rama en el sentido de que ninguna otra
solución puede ser mejor. Por ejemplo, se inicia el proceso con una solución óptima no entera. Se sabe
que no existe ninguna otra solución no entera que sea mejor. Un ejemplo ayudara a clarificar este proceso.
Ejemplo: Considérese el siguiente problema de programación entera:
Maximizar: Z = 60X + 50Y
Restricciones: 2X + 4Y <= 80
3X + 2Y <= 55
X <= 16
Y <= 18
X, Y ≥ 0 y ENTERO
La gráfica de este problema se muestra en la figura siguiente:

La solución no entera óptima cae en la intersección de las dos primeras restricciones: X = 7.5, Y = 16.25,
Z = 1262.5. Ninguna variable es entera. También puede afirmarse que ninguna otra solución no entera
dará un valor mayor a 1262.5 para la función objetivo.
RAMIFICACIÓN
Se inicia la ramificación con cualquiera de las dos variables, por ejemplo selecciónese X que tiene un
valor de solución de 7.5. Como sólo son de interés las soluciones enteras, pueden eliminarse todos los
valores de X entre 7 y 8. Es decir, puede dividirse el espacio de soluciones en dos partes, con una X<= 7 y
otra con X>= 8, tal como se muestra en la figura siguiente:
Y
3X + 2Y = 55
20

18
Y = 18

16

14 X = 16

12

2X + 4Y = 80
10
X <= 7
8

4
X >= 8

2 4 6 8 10 12 14 16 18 20 X
Esto crea dos nuevos problemas de PL uno para cada rama.
Rama A: Maximizar: Z = 60X + 50Y
Restricciones: 2X + 4Y <= 80
3X + 2Y <= 55
X <= 16
Y <= 18
X <= 7
Rama B: Maximizar: Z = 60X + 50Y
Restricciones: 2X + 4Y <= 80
3X + 2Y <= 55
X <= 16
Y <= 8
X >= 8
Nótese que la restricción original X<=16 se convierte en superflua en la rama A. Ahora debe resolverse
cada uno de los problemas ignorando de nuevo la restricción de variables enteras.
Un diagrama de árbol es muy útil para guardar un registro de las ramas. La solución para las dos ramas
se muestra en el diagrama de árbol de la figura siguiente:

INICIO

X = 7.5

y = 16.25
º
z = 1262.5

X <= 7 X >= 8

INICIO INICIO
RAMA A RAMA B

X=7 X=8

y = 16.5 y = 15.5
º º
z = 1245 z = 1255

Aunque ambas soluciones dan valores enteros de X, dejan a Y con valores no enteros. Nótese también que
la función objetivo ha disminuido en ambos casos. En este punto puede afirmarse que ninguna solución
entera en la rama A puede dar un valor de la función objetivo mayor que 1245. De igual manera, 1255 es
una cota superior en la rama B.
La ramificación posterior se muestra en la figura de la página siguiente.
Los modelos de programación lineal correspondientes a cada una de las ramas posteriores del árbol son:

Rama B1: Rama B2:


Maximizar: Z = 60X + 50Y Maximizar: Z = 60X + 50Y
S.t.: 2X + 4Y <= 80 S.t.: 2X + 4Y <= 80
3X + 2Y <= 55 3X + 2Y <= 55
X <= 16 X <= 16
Y <= 8 Y <= 8
X >= 8 X >= 8
Y <= 15 Y >= 16

Arbol de ramificación completa

INICIO

X = 7.5

y=
16.25
º
z = 1262.5

X <= 7 X >= 8

INICIOA
RAMA INICIOB
RAMA

X=7 X=8

y = 16.5 y = 15.5
º º
z = 1245 z = 1255

Y <= 16 Y >= 17 Y <= 15 Y >= 16

INICIO A1
RAMA RAMA
INICIO
A2 INICIO
RAMA B1 INICIO B2
RAMA

X=7 X=6 X = 8.33 No hay


soluciones
Y = 16 y = 17 y = 15 factibles
º º º º
Z = 1220 Z = 1210 z = 1250

X <= 8 X >= 9

INICIOB1a
RAMA RAMA
INICIO
B1b

X=8 X=9
Y = 14
X = 15
º º
z = 1230 Z = 1240

Rama A1: Rama A2:


Maximizar : Z = 60X + 50Y Maximizar : Z = 60X + 50Y
S.t.: 2X + 4Y <= 80 S.t: 2X + 4Y <= 80
3X + 2Y <= 55 3X + 2Y <= 55
X <= 16 X <= 16
Y <= 8 Y <= 8
X >= 8 X >= 8
Y <= 16 Y >= 17

Rama B1a: Rama B2b:


Maximizar : Z = 60X + 50Y Maximizar : Z = 60X + 50Y
S.t.: 2X + 4Y <= 80 S.t.: 2X + 4Y <= 80
3X + 2Y <= 55 3X + 2Y <= 55
X <= 16 X <= 16
Y <= 8 Y <= 8
X >= 8 X >= 8
Y <=15 Y <=16
X <= 8 X >= 9
En este caso se ha tenido que ramificar todo el árbol, pero generalmente no es necesario ya que la
solución (valor de Z) de una rama puede servir de cota para no seguir extendiendo otras ramas cuyas
soluciones sean de igual o menor valor a la cota. Por ejemplo si la solución de la rama A hubiera sido
Z=1240, entonces no hay la necesidad de extenderla ya que cualquier solución debajo de ella es menor
que 1240.
Por lo tanto la solución entera óptima del problema se encuentra en la rama B1b con X=9, Y=14 y
Z=1240.

IV
(La práctica tiene una duración de 02 horas) ACTIVIDADES

Problema 1:

a) Utilizando el WinQsb, PomQm, Lindo o Solver de Excel encuentre la solución óptima de los
siguientes problemas. Muestre la salida del software.
1) MAX 8X + 7Y
ST
2X + 0.5Y <= 12
4X + 7Y <= 36
X, Y >= 0 Y ENTERO

2) MAX 3X1 + 3X2 + 13X3


ST
-3X1 + 6X2 + 7X3 <= 8
6X1 – 3X2 + 7X3 <=8
X1, X2, X3 <= 5
X2 >= 0
X1, X3 >= 0 Y ENTERO

3) MAX 16X1 + 22X2 + 12X3 + 8X4


ST
5X1 + 7X2 + 4X3 + 3X4 <= 14
X1, X2, X3, X4  { 0,1}
4) MAX 3X1 + X2 + 2X3 - X4 + X5
ST
2X1+X2-3X4<=1
X1+2X2-3X3-X4+2X5>=2
X1,X2,X3,X4,X5  { 0,1}

5) MIN 3X1 + 2X2 + 4X3


ST
2X1 + 4X2 + 3X3 >= 40
X1 + X2 + 5X3 >= 30
X1, X2, X3 >= 0 Y ENTERO

b) Utilizando el algoritmo de Ramificación y Acotamiento, construya el árbol respectivo para cada


problema de la parte a) y muestre la rama que tiene la solución óptima. Verifique sus respuestas
con las obtenidas en el punto anterior.

También podría gustarte