Está en la página 1de 50

UNIVERSIDAD SAN

PEDRO
ESCUELA INGENIERIA
INDUSTRIAL
INVESTIGACION DE
OPERACIONES II
PROGRAMACION LINEAL ENTERA
METODO: RAMIFICACION Y ACOTACION O BRANCH AND BOUND
Caracterización de la PLE
La programación lineal también conocida como optimización lineal, es la
maximización o minimización de una función lineal sobre un poliedro convexo
definido por un conjunto de restricciones lineales no negativas. La teoría de la
programación lineal cae dentro de la teoría de la optimización convexa y es
también considerada como parte importante de la investigación de operaciones.

La programación lineal entera (PLE) es el conjunto de problemas de


programación lineal para los cuales todas o parte de sus variables pertenecen a
los números enteros. Los modelos de programación lineal entera pudieran
clasificarse en tres grupos:
 Entero completamente. Todas las variables de decisión son enteras.
 Mixto. Algunas de las variables son enteras, las otras no.
 Binario. Las variables solo toman los valores 0 ó 1.
CLASIFICACION DE LA PROGRAMACION ENTERA
Programación lineal entera
Son aquellos en que todas las variables únicamente pueden tomar valores enteros.
También se distinguen dentro de estos los problemas totalmente enteros como
aquellos en que tanto las variables como todos los coeficientes que intervienen en
el problema han de ser enteros.

Programación lineal mixta


Son aquellos en los que hay al mismo tiempo variables continuas y variables que
sólo pueden tomar valores enteros.

Programación lineal binaria


Una variable entera binaria es aquella que solamente puede adoptar los valores 0 ó
1. Este tipo de variable se emplea para resolver situaciones del tipo inclusión o
exclusión.
¿Cómo resolver un problema mediante la programación lineal?
El primer paso para la resolución de un problema de programación lineal
consiste en la identificación de los elementos básicos de un modelo matemático.

Pasos para la resolución de un problema utilizando programación lineal


1. Definir el objetivo
2. Identificar las variables de decisión
3. Identificar los datos del problema
4. Identificar la función objetivo
5. Identificar las restricciones
Tipos de restricciones
1. Restricción de capacidad
2. Restricción de mercado
3. Restricción de entradas
4. Restricción de calidad
5. Restricciones de balance de material
6. Restricciones Internas
7. Condición de no – negatividad
El objetivo de la Programación Lineal Entera es encontrar el valor de la función que

Denominada función objetivo.


La función objetivo se encuentra sujeta a una serie de restricciones:
Enteros Puros
Tipos de Modelos Enteros Mixtos
Enteros Binarios
Ramificación y Acotación o
Branch And Bound
Métodos de
Solución Planos de Corte (Algoritmo de
Programación Gomory)
Lineal Entera
 Problema de Asignación, Transporte,
Mochila, Viajero
 Problema de Corte de Rollos, Cubrimiento,
Aplicaciones en: Empaquetado, Participación, Producción
de algunos activos, etc.
 Selección de Invitados a una Boda
 Programación de la Explotación Forestal
 Otros problemas
El de Ramificación y Acotación o Algoritmo Branch and Bound
Un primer paso para solucionar un problema de programación lineal entera
es resolver, mediante el método Simplex, el problema lineal asociado. Se trata de
un problema lineal con la misma función objetivo y restricciones que el modelo
original, pero al que se ha relajado la condición de que todas o algunas de las
variables de decisión sean enteras. Si la solución así obtenida es entera, se habrá
encontrado la solución del modelo de programación lineal entera. En caso
contrario, la solución así obtenida es una primera aproximación a la solución del
modelo, Sallán et al. (2002).

En el procedimiento del algoritmo Branch and Bound se trata de ir


añadiendo restricciones al programa lineal asociado hasta encontrar la solución
entera óptima. Para ello se procede en dos pasos: ramificación (Branch) y
acotamiento (Bound).
  Ramificación

Se trata de añadir restricciones al modelo que fuercen a que una de las


variables sea entera. Esto se consigue añadiendo una de estas dos restricciones
para que alguna de las variables que no sea entera en la solución obtenida hasta el
momento, Sallán et al. (2002):
 - Redondeo por defecto: se impone que la variable sea inferior o igual a la
parte entera del valor de esa variable en el óptimo del problema lineal con las
restricciones hasta el momento. Esto equivale a añadir la restricción:
 

- Redondeo por exceso: se impone que la variable , sea mayor o igual al


entero inmediatamente superior al valor . Esto equivale a añadir la restricción:
En seguida, se deberá proceder a resolver mediante el método Simplex dos
problemas lineales. El primero, además de las restricciones que pudiera tener de
etapas anteriores, llevará incorporada las restricciones de redondeo por defecto
incorporada en esta etapa. El segundo se diferenciará del primero en que incluirá la
restricción de redondeo por exceso, en vez de la de redondeo por defecto.
Acotamiento
Al hacer la ramificación, se encuentran dos alternativas posibles para obtener la
solución entera. Los valores óptimos de la función objetivo Z* de cada uno de los
programas lineales resueltos en la etapa anterior serán una cota superior de las posibles
soluciones que se puedan obtener mediante posteriores ramificaciones a partir de ese
modelo. En consecuencia, sólo tendrá sentido continuar con el procedimiento de
ramificación a partir del problema lineal que tenga mayor Z* de los dos (para el
problema de máximo). Siguiendo la otra ramificación, se obtendrán soluciones enteras
con valores de Z* inferiores, con toda seguridad, a los que se obtendrían con la otra
ramificación, y por tanto subóptimos, Sallán et al, (2002).

Este hecho marca, además, cuándo se debe detener la exploración de soluciones


enteras: cuando el problema escogido tenga una solución con todas las variables
enteras. Por ser el valor de la función objetivo una cota superior del óptimo, cualquier
otra solución entera que se pudiera explorar sería subóptima, y por lo tanto no vale la
pena seguir explorando Sallán et al, (2002).
La solución óptima del modelo de programación entera no necesariamente es la
obtenida en la última etapa, sino la solución entera con mayor valor de función
objetivo de las obtenidas en el proceso.
Método de Bifurcación y Acotación (Branch And Bound)
Es una estrategia sistemática, que reduce mucho el número de combinaciones
que se deben examinar.
Algoritmo
1. Encontrar la solución mediante el Método Simplex. Si la solución no es
entera, pase al segundo punto.
2. Comienza con la solución óptima del simplex en donde se ignoran las
restricciones de variables enteras.
3. Se selecciona una variable con valor no cero y se crean dos ramas
mutuamente excluyentes, esto da lugar a dos (2) nuevos problemas de
Programación Lineal; que se deben resolver.
4. Si ninguna solución es entera, con la rama de mayor valor de Z, se crean
nuevas ramas y se resuelven nuevos problemas por programación lineal
(Método Simplex).
5. Se repite el punto 4), Hasta encontrar la solución entera óptima.
 
Problema 1

 
Convertir las inecuaciones en igualdades, agregando variables de holgura

 
Igualar a cero la Función Objetivo
Pasar los datos a una tabla simplex inicial
La Base Solución
-2 -1 0 0 0 0
1 1 1 0 0 5
-1 1 0 1 0 0
6 2 0 0 1 21
 Primera Iteración
Determinar la variable de entrada y salida
Determinar la variable entrante: Para maximizar la variable de entrada es el coeficiente más negativo,
de la fila z: , entonces la variable que entra a la base es
Si existiesen dos o más coeficientes iguales que cumplan la condición anterior (caso de empate), entonces
se optará por cualquier variable.
Una vez obtenida la variable que entra en la base, se procede a determina cual será la variable que sale de
la misma. La decisión se toma en base a un sencillo cálculo: dividir cada término independiente (columna
b o solución) entre el elemento correspondiente de la columna pivote, siempre que ambos elementos sean
estrictamente positivos (mayores que cero). Se escoge la fila cuyo resultado haya resultado mínimo.
, Entonces la variable que sale es
La Base Solución
-2
-2 -1
-1 0
0 0
0 0
0 00
1
1 1
1 1
1 0
0 0
0 55
-1 1 0 1 0 0
-1
6 1
2 0
0 1
0 0
1 0
21
6 2 0 0 1 21
 Actualizar la tabla.
Los nuevos coeficientes de la tabla se calculan de la siguiente manera:
En la fila del elemento pivote es 5, y este valor debe dividirse entre 5, para convertirlo en 1 y se
calcula como:

En el resto de las filas cada elemento se calcula:

Con esto se normaliza el elemento pivote y su valor pasa a ser 1, mientras que el resto de
elementos de la columna pivote se anulan (análogo al método de Gauss-Jordan).
  La Base Solución
0
0 -1/3
-1/3 0
0 0
0 1/3
1/3 21/3
21/3
0
0 2/3
2/3 1
1 0
0 -1/6
-1/6 3/2
3/2
0 4/3 0 1 1/6 21/6
0
1 4/3
1/3 0
0 1
0 1/6
1/6 21/6
21/6 (1)(-1)(2)
1 1/3 0 0 1/6 21/6 (1)(-1)(2)

 Condición de optimalidad o de parada.


Como existe un coeficiente negativo en la fila , aún no hemos llegado al valor optimo, por tanto debemos
continuar con la siguiente iteración
Iteración 2
Determinar la variable entrante: Para maximizar la variable de entrada se elige el coeficiente más negativo, de
la fila z: , entonces la variable que entra a la base es
 Determinar la variable que sale de la base: Una vez obtenida la variable que entra en la base, se procede a
determina cual será la variable que sale de la misma. La decisión se toma en base a un sencillo cálculo: dividir
cada término independiente (columna b o solución) entre el elemento correspondiente de la columna pivote,
siempre que ambos elementos sean estrictamente positivos (mayores que cero). Se escoge la fila cuyo resultado
haya resultado mínimo.
, Entonces la variable que sale es
  La Base Solución
0
0 -1/3
-1/3 0
0 0
0 1/3
1/3 21/3
21/3
0
0 2/3
2/3 1
1 0
0 -1/6
-1/6 3/2
3/2
0 4/3 0 1 1/6 21/6
0
1 4/3
1/3 0
0 1
0 1/6
1/6 21/6
21/6 (1)(-1)(2)
1 1/3 0 0 1/6 21/6 (1)(-1)(2)

 Actualizar la tabla.
Como la celda pivote tiene un valor de 33/5, esta debe convertirse en 1, para eso debe hacer lo
siguiente:

En el resto de las filas cada elemento se calcula:


  La Base Solución
0
0 0
0 1/2
1/2 0
0 1/4
1/4 31/4
31/4
0
0 1
1 3/2
3/2 0
0 -1/4
-1/4 9/4
9/4 (1/3)(-4/3)(-1/3)
(1/3)(-4/3)(-1/3)
0 0 -2 1 1/2 1/2
0
1 0
0 -2
-1/2 1
0 1/2
1/4 1/2
11/4
1 0 -1/2 0 1/4 11/4

 Solución optima relajada


ALGORITMO DE RAMIFICACION Y ACOTACION
 Como la solución óptima de PL1 no satisface las restricciones enteras, el espacio de soluciones se
subdivide de una manera sistemática que finalmente localiza el óptimo de la PLE. En primer lugar, el
algoritmo de ramificación y acotamiento selecciona una variable entera cuyo valor óptimo en PL1 no
es entero. En este ejemplo, tanto x1 como x2 y x4 califican, pero esta ultima no lo tomamos en cuenta,
por que no es parte de las variables de decisión. Seleccionando x1(= 2.75) arbitrariamente, la región 2
x1 3 del espacio de soluciones de PL1 contiene valores no enteros de x1, y por lo tanto puede ser
eliminada. Esto equivale a reemplazar el PL1 original con dos problemas de PL nuevos.
Espacio de PL2 = Espacio de PL1 + (x1 2)
Espacio de PL3 = Espacio de PL1 + (x1 3)
La figura 2 ilustra los espacios de PL2 y PL3. Los dos espacios combinados contienen los mismos
puntos enteros factibles que la PLE original, es decir, que no se pierde información cuando PL1 se
reemplaza con PL2 y PL3.
 
 Solución para Subproblema 2
Para tendríamos lo siguiente:

 
 Solución para Subproblema 3
Para tendríamos lo siguiente:

 
Subproblema 1
z = 7.75
x1 = 2.75
x2= 2.25

 x 3
Cota 1

Subproblema 2 Subproblema 3
z=6 z = 7.5
x1 = 2 x1 = 3
x2= 2 x2= 1.5
 Como la solución aun no es entera, para , seguimos con la ramificación, para esto consideremos el eje ,
tenemos lo siguiente:
1
2
Subproblema 4 = Subproblema 3 + Restricción( 1)
Subproblema 5 = Subproblema 3 + Restricción( 2)
 
Solución Subproblema 4
Para 1
 Tenemos
 Acá observamos que la solución es = 3.1667, =
1; sigue siendo una solución no entera para .
 Solución Subproblema 5
Para
 Tenemos

 
En la figura se aprecia que no es factible para esta
restricción 2
 
Subproblema 1
z = 7.75
x1 = 2.75
x2= 2.25
 x1 2  x1 3

Subproblema 2 Subproblema 3
z=6 z = 7.5
x1 = 2 x1 = 3
x2= 2 x2= 1.5

 x2 1  x2 2

Cota
Subproblema 4 Subproblema 5
z = 7.33 No factible
x1 = 3.1667
x2 = 1

 
 Del Subproblema 4 tenemos la solución siguiente = 3.16667, = 1, por tanto evaluemos para y 4
 Subproblema 6 = Subproblema 4 + Restricción ( )
Subproblema 7 = Subproblema 4 + Restricción ( )
 
Solución Subproblema 6

Tenemos
 El Subproblema 6 nos da la siguiente solución entera: =
3, = 1,
 
Solución Subproblema 7
Tenemos

No es factible para esta restricción


A continuación se ve la ramificación completa
Subproblema 1
z = 7.75
x1 = 2.75
x2= 2.25
 x
1 2
 x
1 3

Subproblema 2 Subproblema 3
z=6 z = 7.5
x1 = 2 x1 = 3
x2 = 2 x2= 1.5

 x 2 1  x 2 2

Subproblema 4 Subproblema 5
z = 7.33 No factible
x1 = 3.1667
x2 = 1

 
 x 2 3  x 2 4

Subproblema 6 Subproblema 7
Valor Optimo z=7 No factible
x1 = 3  
x2 = 1
 
 Problema 2

 Solución

1. Agregando variables de holgura a las restricciones , tenemos:


 
 2. Igualamos a cero la Función Objetivo

 
3. Pasamos los datos en un tablero simplex inicial
Variables Solución
básicas

Paso 4. Verificamos si todos los coeficientes asociados al renglón de Z 
son mayores  o iguales a cero, si es así, entonces la solución en la tabla es la
óptima y el proceso termina. Si no es así, se continúa.
 En este caso existen tres coeficientes negativos asociados al renglón de Z, 

por lo  que se debe continuar con el proceso.


 
Paso 5. De los  coeficientes  del  renglón Z se toma el que tenga el mayor valor
negativo (número menor) y se selecciona toda la columna. La variable de esta
columna es la que entra al sistema (pasa a ser básica). Para nuestro caso es
Variables básicas Solución

Paso 6.  Se  divide  el  coeficiente  de  la  columna  “Solución”  entre  el 
elemento  correspondiente de la columna seleccionada en el punto anterior, y de los
resultados de la división se selecciona el menor valor positivo y todo el renglón
asociado con este valor. Ésta es la variable que sale de la base (pasa a ser no básica).
Nota: Las divisiones entre cero o entre números negativos no se toman en cuenta. Si
todas son negativas o indeterminadas, el problema no tiene solución. Y se termina el
proceso
Variables básicas Solución   Resultados

10/3 =
3.333
11/1 =
11.000
  13/3=4.333
De la tabla se selecciona el renglón de la restricción uno, o sea .
Variables básicas Solución   Resultados

10/2 = 5.00
11/4= 2.75
13/3=4.333

Paso 7. La celda que se encuentra en la intersección de la columna con el renglón


seleccionado contiene un elemento al que, por medio de operaciones elementales entre
renglones, se convierte en elemento pivote y los demás elementos de su columna, en
ceros; con esto se obtiene una nueva columna de la matriz identidad.
La celda con doble marco contiene al que deberá servir como elemento pivote y
como se tiene un 4 en la celda es necesario convertirlo en 1. Entonces, la nueva
tabla simplex para el renglón del elemento pivote se escribe como:
  Variables Solución  
básicas
  
 
 
 
 

Nota que la variable que entra se escribe en el lugar de la variable que sale, x 2 en el lugar de x5, para esta tabla, y
que lo que se busca es formar una columna con un 1 en el lugar de las intersecciones, esto es, obtener un
elemento pivote y ceros en los demás sitios de la misma columna.
 
En la parte derecha, fuera de la tabla, se indica la operación que se realizó para obtener como resultado el nuevo
renglón.
 
Continuamos con el renglón R1 o de la función objetivo:
  Variables Solución  
básicas
0  
0
 

Paso 8. Se repite el proceso desde el Paso 4 operando sobre matrices hasta obtener
todos los coeficientes del renglón Z, con valores mayores o iguales a cero.
 
Regresemos  al  Paso  4. En  este  caso  existe  un  coeficiente  negativo 
asociado  al  renglón de Z, por lo que debe continuar el proceso.

Paso 5. De los  coeficientes  del  renglón Z se toma el que tenga el mayor valor
negativo (número menor) y se selecciona toda la columna. La variable de esta
columna es la que entra al sistema (pasa a ser básica). Seleccionamos x1 como la
variable que entra.
  Variables Solución  
básicas
0  
0
 

Paso 6.  Se  divide  el  coeficiente  de  la  columna  “Solución”  entre  el 
elemento  correspondiente de la columna seleccionada en el punto anterior, y de los
resultados de la división se selecciona el menor valor positivo y todo el renglón asociado
a este valor. Ésta es la variable que sale de la base (pasa a ser no básica). Nota: Las
divisiones entre cero o entre números negativos no se toman en cuenta. Si todas son
negativas o indeterminadas, el problema no tiene solución y termina el proceso.
  Variables Solución  Resultados
básicas
0   
0
 =1.80
=11.00
 (19/4)/(9/4)=2.11

 (19/4)/(9/4)=2.11

De la tabla se selecciona el renglón de la restricción 1, o R1, por ser el resultado menor que
el resto
  Variables Solución  Resultados
básicas
0  

 =1.80
=11.00
 (19/4)/(9/4)=2.11
 (19/4)/(9/4)=2.11
Paso 7. La celda que se encuentra en la intersección de la columna con el renglón
seleccionado contiene un elemento al que, por medio de operaciones elementales
entre renglones, se convierte en elemento pivote y los demás elementos de su
columna, en ceros; con esto se obtiene una nueva columna de la matriz identidad.
  Variables Solución  
básicas
 
 

Nota que la variable que entra se escribe en el lugar de la variable que sale, x 1 en el
lugar de x4, para esta tabla, y que lo que se busca es formar una columna con un 1
en el lugar del elemento pivote y ceros en los demás sitios de la misma columna.
Paso 8. Se repite el proceso desde el Paso 4 operando sobre matrices hasta obtener
todos los coeficientes del renglón Z, con valores mayores o iguales a cero.
 
Como en esta última tabla, no todos los coeficientes de renglón R0 o Z son
no negativos, es decir, mayores o iguales a cero, aún hay un valor negativo que
corresponde a x3.
  Variables Solución  Resultados
básicas

(7/10)/(1)=7/10
(7/10)/(1)=7/10

Por lo tanto, x3 entra a la base y sale es la variable x5. Las demás como tienen 0 en la
columna pivote, no se toman en cuenta.
  Variables Solución  Resultados
básicas

(7/10)/(1)=7/10
(7/10)/(1)=7/10

Como la celda pivote tiene un valor de 1, realizamos directamente las


operaciones elementales de matrices para llegar al cuadro siguiente
  Variables Solución  
básicas
 
 
 
 
 
 Solución relajada

 
 Los puntos de cuadrícula en la figura 1 definen el espacio de soluciones de PLE. El problema
PL1 continuo asociado en el nodo 1 (área sombreada) se define a partir de la PLE eliminando
las restricciones enteras. La solución óptima de PL1 es x1= 1.80, x2 = 2.30, x3 = 0.70 y z =
19.40.
Como la solución óptima de PL1 no satisface las restricciones enteras, el espacio de
soluciones se subdivide de una manera sistemática que finalmente localiza el óptimo de la
PLE. En primer lugar, el algoritmo de ramificación y acotamiento selecciona una variable
entera cuyo valor óptimo en PL1 no es entero. En este ejemplo, tanto x1 como x2 y x3 califican.
Seleccionando x1(= 1.80) arbitrariamente, la región 1 x1 2 del espacio de soluciones de PL1
contiene valores no enteros de x1, y por lo tanto puede ser eliminada. Esto equivale a
reemplazar el PL1 original con dos problemas de PL nuevos.
 Espacio de PL2 = Espacio de PL1 + (x1 1)
Espacio de PL3 = Espacio de PL1 + (x1 2)
La figura 2 ilustra los espacios de PL2 y PL3. Los dos espacios combinados contienen los
mismos puntos enteros factibles que la PLE original, es decir, que no se pierde información
 Espacio de PL2 = Espacio de PL1 + (x1 1)
 Espacio de PL3 = Espacio de PL1 + (x1 )

También podría gustarte