Programacion lineal entera

35
PROGRAMACIÓN LINEAL ENTERA FCC BUAP Luis Alfredo Moctezuma 5/24/2016 1 Programación lineal entera

Transcript of Programacion lineal entera

PROGRAMACIÓN LINEAL ENTERA

FCC BUAPLuis Alfredo Moctezuma

5/24/2016 1Programación lineal entera

Introducción

• PROGRAMACIÓN LINEAL ENTERA

– Ramificación y acotamiento

– Método de plano de corte

5/24/2016 Programación lineal entera 2

Introducción

• Algunas o todas las variables están restringidas a tener valores enteros (o discretos)– Personas necesarias para realizar una tarea

• No existe un programa de cómputo para programas l ineales enteros que pueda resolverlos en forma consistente

O(2n)

5/24/2016 Programación lineal entera 3

Introducción

• Problema lineal entero

– Puro• Todas las variables son enteras

– Mixto• No todas las variables son enteras

5/24/2016 Programación lineal entera 4

ALGORITMOS DE PROGRAMACIÓN ENTERA

• En la estrategia de esos algoritmos intervienen tres pasos

1. Relajar el espacio de soluciones del programa lineal entero omitiendo la restricción entera en todas las variables enteras, y sustituyéndola con cualquier variable binaria y que tenga el intervalo continuo 0 ... y ... 1

5/24/2016 Programación lineal entera 5

ALGORITMOS DE PROGRAMACIÓN ENTERA,~

2. Resolver el programa lineal e identificar su óptimo continuo

3. Iniciar en el punto óptimo continuo e ir agregando restricciones especiales que modifiquen en forma iterativa el espacio de soluciones del programa lineal, en una forma que al final produzca un punto extremo que satisfaga los requisitos enteros1. Método de ramificación y acotamiento 2. Método del plano cortante

5/24/2016 Programación lineal entera 6

Algoritmo de ramificación y acotamiento(B&B)

• Detecta en qué ramificación, las soluciones dadas ya no están siendo óptimas, para podar esa rama del árbol y no continuar malgastando recursos y procesos

5/24/2016 Programación lineal entera 7

Algoritmo de ramificación y acotamiento, ejemplo

Maximizar z = 5x1 + 4x2

Sujeto a x1+x2 ≤ 5 10x1+6x2 ≤ 45x1,x2 enteros no negativos

5/24/2016 Programación lineal entera 8

Algoritmo de ramificación y acotamiento, ejemplo,~

• Los puntos de red de la f i g u r a d e f i n e n e l espacio de soluciones de l programa l inea l entero.

• E l p r o b l e m a l i n e a l asoc iado, e l “0” , se define eliminando las restricciones enteras. Su solución óptima es:

5/24/2016 Programación lineal entera 9

Algoritmo de ramificación y acotamiento, ejemplo,~

• Como la solución óptima del programa lineal 0 no satisface los requisitos enteros, el algoritmo de ramificación y acotamiento modifica el espacio de soluciones de tal manera que al final se identifica el programa lineal entero óptimo

• Primero se selecciona una de las variables enteras,cuyo valor óptimo en el programa 0 no sea entero

5/24/2016 Programación lineal entera 10

Algoritmo de ramificación y acotamiento, ejemplo,~

• Si se selecciona x1=3.75 en forma arbitraria, la región 3<x1<4 del espacio de soluciones del programa 0 no contiene valores enteros de x1 y se puede eliminar

• Eso equivale a reemplazar el programa lineal 0 original con dos nuevos programas lineales, el 1 y el 2 (PL1 y PL2):– Espacio de PL1 = Espacio de PL0 + (x1 ≤ 3)– Espacio de PL2 = Espacio de PL0 + (x1 ≥ 4)

• x1 es la variable de ramificación

5/24/2016 Programación lineal entera 11

Algoritmo de ramificación y acotamiento, ejemplo,~

• Se deben examinar ambos subproblemas. En forma arbitraria se examinará primero PL1,asociado con x1≤3

• Maximizar z = 5x1 + 4x2 x1 + x2 ≤ 5 10x1 + 6x2 ≤ 45 x1 ≤ 3 x1 , x2 ≥ 0

5/24/2016 Programación lineal entera 12

Algoritmo de ramificación y acotamiento, ejemplo,~

5/24/2016 Programación lineal entera 13

Algoritmo de ramificación y acotamiento, ejemplo,~

• Esta solución satisface los requisitos de ser entero para x1 y x2 . Por consiguiente, se dice que PL1 está agotado. No puede producir una solución mejor del programa lineal entero

z* = 23 es una cota inferior

5/24/2016 Programación lineal entera 14

Algoritmo de ramificación y acotamiento, ejemplo,~

• Se examina el PL2. – Como la z* es 23.75 en el programa 0 y sucede que todos los

coeficientes de la función objetivo son enteros, es imposible que el PL2 produzca una mejor solución entera. En consecuencia se descarta al PL2 y se llega a la conclusión que se ha agotado

5/24/2016 Programación lineal entera 15

Algoritmo de ramificación y acotamiento, resumen

• Suponiendo un problema de maximización, se establece una cota inferior inicial z=-∞ del valor objetivo óptimo del programa lineal entero. i=0

• Paso 1– (Agotamiento/acotamiento). Se selecciona PLi, el siguiente

subproblema a examinar. Se resuelve PLi y se trata de agotarlo, usando una de las tres siguientes condiciones.• a) El valor de z óptimo del PLi no puede producir un

valor objetivo mejor que la cota inferior actual• b) PLi produce una solución entera factible mejor, que

la cota inferior actual• c) PLi no tiene solución factible

5/24/2016 Programación lineal entera 16

Algoritmo de ramificación y acotamiento, resumen

• Se presentarán dos casos:a) Si PLi está agotado y se encuentra una solución mejor, actualizar la cota inferior. Si todos los subproblemas se han agotado, detenerse; el programa lineal entero óptimo corresponde a la cota inferior actual, si la hay. En caso contrario, i=i + 1 y repetir el paso 1.b) Si PLi no está agotado, seguir en el paso 2, para ramificar

5/24/2016 Programación lineal entera 17

Algoritmo de ramificación y acotamiento, resumen

• Paso 2. (Ramificación.) Seleccionar uno de los valores enteros, xj , cuyo valor óptimo x*j en la solución del PLi no sea entero. Eliminar la región

(en la que [v ] def ine e l mayor entero ≤ v) creando dos subproblemas lineales que corresponden a

i =i +1 e ir al paso 1

5/24/2016 Programación lineal entera 18

Algoritmo de ramificación y acotamiento, resumen

5/24/2016 Programación lineal entera 19

Algoritmo de plano de corte

• Como en el algoritmo de B&B, el del plano cortante también se inicia en la solución óptima del programa lineal continuo

• Al espacio de soluciones se agregan restricciones especiales, llamadas cortes, en una forma que produzca un punto extremo entero

• Requisitos– Los cortes agregados no deben eliminar alguno de los puntos

enteros factibles originales, pero deben pasar por al menos un punto entero, factible o no factible

5/24/2016 Programación lineal entera 20

Algoritmo de plano de corte

• En el siguiente ejemplo se demostrará cómo se usan los cortes en forma gráfica para producir una solución entera y después implementar algebraicamente esta idea

5/24/2016 Programación lineal entera 21

Algoritmo de plano de corte, ejemplo

• Max Z= 7x1 + 10x2

s.a -x1 + 3x2 ≤ 67x1 + x2 ≤ 35x1,x2 ≥0 y enteras

Este algoritmo modif ica el espacio de soluciones agregando cortes que producen un punto extremo entero óptimo

5/24/2016 Programación lineal entera 22

Algoritmo de plano de corte, ejemplo,~

• Se parte del óptimo del programa lineal continuo, z= 66.5 x1=4.5 x2=3.5

• Se agrega el corte I, que produce la solución lineal óptima continua, z=62 x1=4.57143 x2= 3

5/24/2016 Programación lineal entera 23

Algoritmo de plano de corte, ejemplo,~

• Se agrega el corte II, que junto con el corte I y las restricciones originales, llega al óptimo del programa lineal, z= 58 x1=4 x2=3

5/24/2016 Programación lineal entera 24

Algoritmo de plano de corte, ejemplo,~

• La cantidad de cortes es independiente del tamaño del problema– aunque finita, en el sentido que un problema con una cantidad

pequeña de variables y restricciones puede necesitar más cortes que un problema mayor

• En este caso sólo fue casualidad que un problema con 2 variables necesitara de exactamente 2 cortes para llegar a la solución entera óptima

5/24/2016 Programación lineal entera 25

Algoritmo de plano de corte, ejemplo,~

• Resuelto algebraicamente

5/24/2016 Programación lineal entera 26

Algoritmo de plano de corte, ejemplo,~

• Se sacan todos los coeficientes de la ecuación como factor común, con un valor entero y un componente fraccionario, siempre y cuando el componente fraccionario que resulte sea estrictamente positivo

5/24/2016 Programación lineal entera 27

Algoritmo de plano de corte, ejemplo,~

• Se sacan todos los coeficientes de la ecuación como factor común, con un valor entero y un componente fraccionario, siempre y cuando el componente fraccionario que resulte sea estrictamente positivo

5/24/2016 Programación lineal entera 28

Algoritmo de plano de corte, ejemplo,~

• Como x3 y x4 son no negativas, y todas las fracciones originalmente son estrictamente positivas, el lado derecho debe satisfacer la siguiente desigualdad:

• Ahora, como z + 2x3+ 1x4 - 66, el lado izquierdo, por construcción tiene valor entero, el lado derecho, tambien debe ser entero

– Es el corte que se desea, y representa una condición necesaria para obtener una solución entera

– También se le llama corte fraccionario, porque todos sus coeficientes son fracciones

5/24/2016 Programación lineal entera 29

Algoritmo de plano de corte, ejemplo,~

• Cómo se pueden obtener los cortes de las ecuaciones de restricción

• Corte asociado

5/24/2016 Programación lineal entera 30

Algoritmo de plano de corte, ejemplo,~

• Si en forma arbitraria se selecciona el corte generado a partir del renglón x2, se puede escribir como sigue, en forma de ecuación:

– La tabla es óptima, pero no factible. Aplicar el método dual símplex para recuperar la factibilidad

5/24/2016 Programación lineal entera 31

Algoritmo de plano de corte, ejemplo,~

• La última solución todavía no es entera en x1 y x3. Se selecciona a x1, en forma arbitraria, como el siguiente renglón de fuente; esto es

• Corte asociado

5/24/2016 Programación lineal entera 32

Algoritmo de plano de corte, ejemplo,~

• Con el método símplex dual se obtiene el siguiente cuadro:

5/24/2016 Programación lineal entera 33

Algoritmo de plano de corte, ejemplo,~

• La solución óptima es x1=4, x2=3 z=58– Todas las variables básicas son enteras

5/24/2016 Programación lineal entera 34

Referencias

• Hamdy A. Taha. (2004). Investigación de operaciones. México: Pearson.

•• Código

5/24/2016 Programación lineal entera 35