Está en la página 1de 9

02/11/13

Programacin Entera

UNIDAD 2 : PROGRAMACION ENTERA Introduccin. Programacin entera. Clasificacin. Algoritmo de Gomory. Ramificacin y acotamiento. Manejo de software especfico Bibliografa 1. 2. Introduccin a la investigacin de operaciones - Hillier y Lieberman - Ed. McGraw-Hill - 1993 - 5 edicin Toma de decisiones por medio de investigacin de operaciones - Thierauf, Robert - Limusa Noriega Editores - 1993

Introduccin a la programacin entera Los problemas de programacin lineal en que se requiere que algunas o todas las variables tomen valores enteros, son de programacin entera. La programacin entera a llegado a ser un rea muy especializada de la ciencia de la administracin. Un enfoque prctico: Una empresa que fabrica costales para alimento de ganado y una solucin lineal requiere que se fabriquen 3000,472 costales, carecer de sentido. En tales situaciones, a menudo se adopta la solucin no entera al requerimiento de enteros simplemente redondeando los resultados al entero ms prximo. Esto produce lo que se llama la solucin redondeada. Mediante ese recurso se obtienen soluciones aceptables para el administrador en aquellas situaciones en las que, con sentido practico, sencillamente no importa el redondeo. Por ejemplo, no hay diferencia significativa, ya sea en la funcin objetivo o en las restricciones, entre producir 19.283,64 y 19.283 costales de alimento para ganado, En realidad, probablemente baste para el ajuste de los datos del modelo que satisfaga al administrador una produccin cercana a los 19.000 costales. Cuando tienen importancia las soluciones enteras Existen muchos problemas importantes en los que la solucin redondeada simplemente no funciona. Esta complicacin puede deberse a la escala de las variables por considerar. Por ejemplo, si la solucin de un modelo de programacin lineal recomienda que la Boeing construya 11,6 aparatos 747 y 6,8 aparatos 727, el administrador probablemente no quedara contento con la simple medida de tomar la decisin de construir 11 de los primeros y 6 de los segundos, o cualquier otra solucin redondeada. La magnitud del rendimiento y la asignacin de recursos asociados con cada unidad del problema aconsejan determinar la mejor solucin entera posible. Con otro ejemplo, s vera que muchos modelos usan variables enteras para indicar decisiones lgicas. Por ejemplo, veremos que problemas en los que queramos que una variable x sea igual a 1 si vamos a construir un almacn o x sea igual a cero (si-no). Supngase que la solucin de una versin de programacin lineal de este problema produce un valor no entero, por ejemplo, x = 0,38. Vemos que este valor no contiene informacin aprovechable como solucin al problema real. Es claro que no podemos construir 0,38 de un almacn. Es cierto que podemos elegir almacenes de diversos tamaos, pero en todo caso, o bien tenemos un almacn o no lo tenemos. Se podra suponer que en un caso como este se tratara de redondear al entero ms prximo (0 en este caso) como forma de salvar la dificultad. Por desgracia, esto no garantiza que se obtenga una buena (y no digamos ptima) solucin. En realidad, veremos que el redondeo no siempre conduce a solucione factibles en casos como este. El fondo del asunto es que existen muchos problemas administrativos importantes que serian de programacin lineal si no fuese por el requerimiento de que sean enteros los valores de algunas variables de decisin, en los que no se puede encontrar una buena solucin mediante el uso del mtodo Simplex seguido del redondeo de los valores ptimos resultantes para variables de decisin. Estos problemas deben ser resueltos mediante algoritmos especialmente diseados para resolver problemas de programacin entera. Programacin Lineal contra Programacin Entera A pesar del impresionante avance en nuestra capacidad para resolver problemas de programacin entera, la tecnologa aun dista mucho de la que hay disponible para manejar problemas en los que no es necesario que las variables de decisin sean enteras. Muchos problemas que se resuelven fcilmente como problemas de programacin lineal llegan a ser irresolubles para propsitos prcticos cuando se exige que las variables de decisin sean enteras (es decir, que el tiempo y el costo necesario para los clculos resultan demasiado grandes) Tipos de modelos de Programacin Entera: Programacin Entera es un termino general para los modelos de programacin matemtica que presentan condiciones de integridad (condiciones que estipulan que algunas o todas las variables de decisin deben tener valores enteros). Ya hemos apuntado que los modelos de programacin lineal entera son modelos de programacin lineal que tienen la caracterstica adicional de que algunas de las variables de decisin deben tener valores enteros. Existen diversas clasificaciones de esta categora de modelos.

Programas Enteros Puros Un modelo entero puro (PLE) es, como su nombre lo indica, un problema en el que se exige que todas las variables de decisin tengan
www.geocities.ws/mdmoli/archivos/ioi2/unidad2ioi.html 1/9

02/11/13

Programacin Entera

valores enteros. Por ejemplo Min 6x1 + 5x2 + 4x3 s.a. 108x1 + 92x2 + 58x3 >= 576 7x1 + 18x2 + 22x3 >= 83 x1, x2, x3 ><0 y enteros Es un modelo entero puro. Sin las restricciones adicionales de que x1, x2, x3 sean enteros (o sea las condiciones de integralidad) seria un problema de programacin lineal Programas Enteros Mixtos Un problema en el que solo se requieren que algunas variables tengan valores enteros mientras que otras pueden asumir cualquier numero no negativo (es decir, cualquier valor continuo) se llama programacin lineal entera mixta (PLEM). Por ejemplo, supngase que en el problema anterior solo x1 y x2 deben ser enteros y x3 no. El problema resultante es: Min 6x1 + 5x2 + 4x3 s.a. 108x1 + 92x2 + 58x3 >= 576 7x1 - 18x2 + 22x3 >= 83 x1, x2, x3 >=0; Programas Enteros 0-1 En algunos problemas se restringe el valor de las variables a 0 o 1. Dichos problemas se llaman binarios o programas lineales enteros 0-1. Son de particular inters debido a que se pueden usar las variables 0-1 para representar decisiones dicotmicas (s o no). Diversos problemas de asignacin, ubicacin de plantas, planes de produccin y elaboracin de cartera, son de programacin lineal entera 0-1. x1 y x2 enteros

Existen dos mtodos para generar las restricciones especiales que fuercen la solucin ptima del problema, hacia la solucin ptima entera deseada: - Mtodo de ramificar y acotar. - Mtodo de planos de corte. En ambos mtodos las restricciones agregadas eliminan partes del espacio de soluciones, pero nunca alguno de los puntos enteros factibles. Desafortunadamente, ninguno de los dos mtodos es efectivo en la solucin de problemas de programacin lineal entera. No obstante los mtodos de ramificar y acotar son mucho mejores en cuanto al calculo se refiere que los mtodos de plano de corte. Por esta razn, la mayora de los cdigos comerciales se basan en el procedimiento de ramificar y acotar. Algoritmo de Ramificar y Acotar En este momento ser ms conveniente explicar los fundamentos del algoritmo de ramificar y acotar (R y A), por medio de un ejemplo numrico: Consideremos el siguiente problema de Programacin lineal Entera: Max z = 5x1 + 4x2 Sujeto a x1 + x2 <=5 10x1 + 6x2 <=45 x1, x2 >= 0 y entero En la siguiente figura se muestra el espacio de soluciones de la programacin lineal entera representado por los puntos. El espacio de soluciones de programacin lineal asociado, programacin lineal ptima, se define por cancelacin de las restricciones enteras. La solucin
www.geocities.ws/mdmoli/archivos/ioi2/unidad2ioi.html 2/9

02/11/13

Programacin Entera

programacin lineal ptima se da como x1 = 3,75, x2 = 1,25 y z = 23,75.

El procedimiento de Ramificar y Acotar se basa en tratar solo con el problema programacin lineal. Como la solucin ptima (x1 = 3,75, x2 = 1,25 y z = 23,75) pero no satisface la necesidad de valores enteros, el algoritmo de R y A exige modificar el espacio de soluciones lineales de forma tal que nos permita identificar, finalmente, para conseguir la solucin ptima entera. Primero seleccionaremos una de las variables cuyo valor corriente en la solucin ptima no cumple el requisito de valor entero. Seleccionando x1=3,75 arbitrariamente, observamos que la regin ( 3 < x1 < 4 ) del espacio de soluciones lineales, no puede incluir ninguna espacio solucin factible entera. Entonces podemos modificar el espacio de soluciones lineales eliminando esta regin no prometedora, lo que, en realidad, es equivalente a reemplazar el espacio original por dos espacios los PL1 y PL2, definidos de la manera siguiente: 1. Espacio PL1 = espacio PLO + (x1 <= 3) 2. Espacio PL2 = espacio PLO + (x1 >= 4)

Esta figura muestra los espacios PL1 y PL2 en forma grafica. Se ve que los dos espacios contienen los mismos puntos enteros factibles del modelo PLE. Esto significa que, desde el punto de vista del problema original de PLE, tratar con PL1 y PL2 es igual que tratar con el original PLO. La diferencia principal es que la seleccin de las nuevas restricciones e acotamiento ( x1 >= 3 y x1 <= 4 ) mejoraran la oportunidad de forzar a los puntos extremos ptimos de PL1 y PL2 hacia la satisfaccin del requisito de valor entero. Adems el hecho que las restricciones de acotamiento estn en la vecindad inmediata del optimo continuo del PLO, incrementara las posibilidades de producir buenas soluciones enteras. Las nuevas restricciones x1 >= 3 y x1 <= 4 son mutuamente excluyentes, PL1 y PL2 deben tratarse como dos programas lineales separados. Esta dicotoma da lugar al concepto de ramificacin en el algoritmo de R y A. En efecto, ramificar significa subdividir un espacio de soluciones corrientes en subespacios mutuamente excluyentes. Aqu vemos las ramas PL1 y PL2 y x1 llamada variable de ramificacin

www.geocities.ws/mdmoli/archivos/ioi2/unidad2ioi.html

3/9

02/11/13

Programacin Entera

Sabemos que la solucin ptima entera debe encontrarse en PL1 o PL2. Sin embargo, en ausencia del espacio grafico de soluciones, no tenemos manera de determinar donde puede encontrarse la solucin ptima, por lo que nuestra nica opcin es investigar ambos problemas. Hacemos esto trabajando con un problema a la vez (PL1 o PL2). Supongamos que escogemos a PL1 asociado con x1 <= 3. En efecto, debemos resolver el siguiente problema: Max z = 5x1 + 4x2 Sujeto a x1 + x2 <=5 10x1 + 6x2 <=45 x1 <=3 x1, x2 >= 0 Como se indico antes PL1 es el mismo que el PLO con la restriccin adicional de acotamiento superior, x1 <= 3. as podemos aplicar el algoritmo primal de acotamiento superior para resolver el problema. Esto da la nueva solucin ptima. X1 = 3, x2 = 2 y z = 23 Como esta solucin satisface el requisito de valor entero, se dice que el PL1 esta agotado, vaci, lo que significa que el PL1 no puede producir ninguna solucin mejor y no necesita investigarse mas a fondo. Determinar una solucin factible entera en una etapa temprana de los clculos es crucial para incrementar la eficiencia del algoritmo R y A. Tal solucin fija una cota inferior al valor objetivo optimo, que a su vez se puede usar para descartar automticamente cualquier subproblema no explorado (como el PL2) que no dan mejor solucin entera. En este ejemplo el PL1 produce la cota inferior z = 23. Esto significa que cualquier solucin entera mejorada debe tener el valor de z mayor 23. Sin embargo, como la solucin ptima del problema PLO tiene z = 23,75 y como todos los coeficientes de la funcin objetivo son enteros, se infiere que ningn subproblema que proceda del PLO puede producir un valor de z mejor que 23. En consecuencia, podemos descartar al PL2 porque no puede dar una mejor solucin entera. Del anlisis anterior vemos que un subproblema esta agotado si no satisface una de las siguientes condiciones: 1. El subproblema da una solucin factible entera 2. El subproblema no puede dar una mejor solucin que la mejor cota inferior disponible (valor z) del problema (Un caso especial de esta condicin es que el subproblema no tendr ninguna solucin factible en absoluto) Pero si en nuestro ejemplo decidimos investigar PL2 primero la solucin resultante ser: x1 = 4, x2 = 0,8333, z = 23,3333. Como x2 no es entero el PL2 debe investigarse mas a fondo crendose el PL3 y PL4 y usando las respectivas ramas x2 >=0 y x2 >=1. Esto significa que Espacio PL3 = espacio PLO + (x1 >= 4) + (x2 <=0) Espacio PL4 = espacio PLO + (x1 >= 4) + (x2 >=1) En este momento para escoger tres subproblemas, el PL1, PL3 y PL4. (Observe nuevamente que estos tres subproblemas incluyen todas las soluciones enteras factibles del problema original PLE.) Si seleccionamos arbitrariamente el PL4, descubrimos que no tiene solucin factible y por ello esta agotado. A continuacin seleccionamos el PL3 para investigarlo. Su solucin la da x1 = 4,5, x2 = 0 y z = 22,5. Como x1 = 4,5 no es entero, creamos dos subproblemas, el PL5 y PL6 del PL4, usando las restricciones x1 <= 4 y x1 >= 5 respectivamente. Obtenemos entonces: Espacio PL5 = espacio PLO + (x1 >= 4) + (x2 <=0) + (x1 <= 4) Espacio PL6 = espacio PLO + (x1 >= 4) + (x2 <=0) + (x1 >= 5) Escogemos ahora el PL6, para investigarlo. Como el PL6 no tiene solucin factible, esta agotado. A continuacin escogemos el PL5 cuya
www.geocities.ws/mdmoli/archivos/ioi2/unidad2ioi.html 4/9

02/11/13

Programacin Entera

solucin ptima (x1 = 4, x2 = 0, z = 20) satisface el requisito de valor entero. Finalmente, hemos encontrado una solucin entera que fija una cota inferior (z = 20) a la solucin entra ptima. Desafortunadamente, esta cota inferior es muy dbil y muy tarda para ser til. El nico nodo restante, PL1, queda agotado a continuacin con z = 23, lo que fija una nueva cota inferior. Como no quedan ya subproblemas por investigar, la ultima cota inferior asocia la solucin ptima del PLE con PL1. La pero secuencia posible de solucin, mostrada en al figura siguiente, se ha escogido intencionalmente para evidenciar una de las principales debilidades del algoritmo de R y A. Esto es, un subproblema especifico, cmo seleccionamos a la variable de ramificacin? Y, de entre todos los subproblemas no explorados, Cul debe investigarse a continuacin? Observe que en la figura, encontramos una buena solucin en el primer subproblema PL1, lo que nos permiti declarar agotado al PL2 sin ninguna investigacin posterior. Bsicamente, el problema PLE se resolvi investigando solo un subproblema. En el siguiente caso tuvimos que resolver seis subproblemas antes de alcanzar la optimidad. Este caso no es raro y puede encontrarse situaciones reales. Aunque existen muchos mtodos para aumentar l habilidad del algoritmo de R y A de ver adelante y hacer una buena conjetura, respecto a s una rama dada conducir a una solucin mejorada del PLE, no existe una teora consistente que produzca resultados concretos uniformes para la solucin del problema general de PLE.

Resumiremos ahora los pasos del algoritmo de R y A. Suponiendo un problema de maximizacin, definiremos z como la cota inferior de la solucin entera ptima del problema. Hacemos inicialmente z = - e i = 0. Paso 1 : Agotamiento y ramificacin. Seleccione PLi como el prximo subproblema por investigarse. Resolvemos el PLi y trataremos de agotarlo usando las condiciones apropiadas. (a) (b) Si el PLi se declara agotado (solucin inferior, infactible o entera), ponga al da la cota inferior z si se encuentra una mejor solucin del PLE; si no es as, seleccione un nuevo subproblema i y repita el paso 1. Si todos los subproblemas se han investigado, la solucin ptima del PLE esta asociada con la ultima cota inferior z en caso de que exista, si no es as Si el PLi no esta agotado, siga con el paso 2 para efectuar la ramificacin del PLi.

Paso 2 : Ramificacin. Seleccione una de las variables xj cuyo valor optimo en la solucin del PLi no satisfaga la restriccin del valor entero. Elimine la regin creando dos subproblemas PL que correspondan a las dos siguientes restricciones mutuamente excluyentes, vuelva al paso 1. Algoritmo de planos de corte El concepto de plano de corte lo ilustraremos primero con un ejemplo. Considere el problema de progrmacion lineal entera:
www.geocities.ws/mdmoli/archivos/ioi2/unidad2ioi.html 5/9

02/11/13

Programacin Entera

Maximizar z = 7x1 + 9x2 Sujeto a: -x1 + 3x2 <=6 7x1 + x2 <=35 x1, x2 enteros no negativos La solucin ptima (ignorando la condicin discreta)se demuestra grficamente en la siguiente figura.

Esta dada por z = 63, x1 = 9/2 y x2 = 7/2, la cual no es entera. La idea del algoritmo de planos de corte es cambiar el conjunto convexo del espacio de soluciones, de tal manera que los puntos extremos apropiados lleguen a ser todos enteros. Tales cambios en las fronteras del espacio de soluciones, deben proporcionar todava conjuntos convexos. Tambin este cambio deber hacerse sin partir ninguna de las soluciones enteras factibles del problema original. La figura muestra como dos restricciones secundarias (arbitrariamente elegidas) se agregan al problema proporcionando la solucin ptima entera en el punto extremo nuevo (4, 3). Note que el rea cortada del espacio de soluciones original no incluye ningn valor entero. El algoritmo fraccional (entero puro) Un requisito bsico para la aplicacin de este algoritmo es que todos los coeficientes y la constante del segundo miembro de cada restriccin deben ser enteros. Por ejemplo la restriccin: X1 + 1/3 x2 <= 13/2 Debe transformarse a: 6x1 + 2x2 <= 39 Donde no aparecen fracciones. Lo ultimo se logra multiplicando ambos lados de la restriccin original por el mnimo comn mltiplo de los denominadores. El requisito anterior se impone ya que, como se mostrara posteriormente, el algoritmo entero puro no diferencia entre las variables de holgura y las regulares del problema en el sentido de que todas las variables deben ser enteras. La presencia de coeficientes fraccionarios en las restricciones, por consiguiente, puede no permitir que las variables de holgura tengan valores enteros. En este caso, el algoritmo fraccional puede indicar que no existe solucin factible, aunque el problema pueda tener una solucin entera factible en funcin de las variables que no son de holgura. Los detalles del algoritmo los veremos ahora. Primero, el problema PL queda resuelto, esto sin tomar en cuenta la condicin de entero. Se desarrollan de la siguiente manera las restricciones secundarias que forzaran la solucin entera. Sea la tabla ptima final para el problema lineal la siguiente:

Bsica z x1

x1 0 1

xi 0 0

xm 0 0

wi C1 a 11

wj Cj a n1

wn Cn a n1

Solucin b0 b1
6/9

www.geocities.ws/mdmoli/archivos/ioi2/unidad2ioi.html

02/11/13

Programacin Entera

x2 x3

0 0

1 0

0 1

a 1i a 1m

a ni a nm

a ni a nm

bi bm

Las variables xi (i = 1,2 ...,m) representan las variables bsicas mientras que las variables wj(j = 1,2 ...,n) son las variables no bsicas. Estas variables han sido arregladas como tales por conveniencia. Considere la i-esima ecuacin donde la variable bsica x tiene un valor que no es entero. j xi = bi - a w, no es entero J=1 i j Cualquiera de tales ecuaciones se denominara como un rengln fuente. Ya que en general los coeficientes de la funcin objetivo pueden hacerse enteros, la variable z tambin es entera y la ecuacin z puede elegirse como un rengln fuente. Realmente la prueba del algoritmo de convergencia exige que z sea entera Sea: bi = [bi] + i a j = [a j] + ij i i Donde N = [a] es el mayor entero tal que N <= a. Se deduce que 0 < i < 1 y 0 <= ij <1; sea, i es una fraccin estrictamente positiva y ij es una fraccin no negativa. Por ejemplo: a 1 -2 1/3 -1 -2/5 El rengln fuente, por consiguiente, proporciona n n i - ij wj = xi [bi] + [a j] wj J=1 j=1 i A fin de que todas las variables xi y wj sean enteras, el segundo miembro de la ecuacin anterior debe ser entero. Esto implica que el primer miembro debe tambin ser entero. Dado que fij >= 0 y wj >=0 para toda i y j, se deduce que = ij wj >= 0. En consecuencia i - ij wj <= i <1 Como i - ij wj debe ser entro por construccin, una condicin necesaria para satisfacer la integridad ser: i - ij wj <= 0 La ultima restriccin puede ponerse en la forma Si = ij wj - i (corte fraccional) [a] 1 -3 -1 -1 f = a [a] 2/3 0 3/5 n

Donde Si es una variable de holgura no negativa que por definicin debe ser entera. Esta ecuacin de restriccin define el llamado corte fraccional. De la ultima tabla, wj = 0 y, por consiguiente, Si = - i, los cuales in factible. Esto significa que la nueva restriccin no esta satisfecha por la solucin dada. El mtodo dual simplex Puede ser utilizado entonces para aclarar el espacio de soluciones hacia la solucin ptima entera. La nueva tabla despus de agregar el corte fraccional, ser:

Bsica Z x1 x2 x3

x1... 0 1 0 0

xi... 0 0 1 0

xm 0 0 0 1

wi c1 a 11 a 1i a 1m

wj cj a j1 a ji a jm

wn cn a n1 a ni a nm

S1 0 0 0 0

Solucin b0 b1 bi bm
7/9

www.geocities.ws/mdmoli/archivos/ioi2/unidad2ioi.html

02/11/13

Programacin Entera

Xm

- i1

- ij

- in

- I

Si la nueva solucin (despus de aplicar el mtodo dual simplex) es entera, termina el procedimiento. En cualquier otro caso se construye un nuevo corte fraccional de la tabla resultante y se utiliza de nuevo el mtodo dual simplex para quitar la infactibilidad. Este procedimiento se repite hasta que se logra una solucin entera. Pero si en cualquier iteracin el algoritmo dual simplex indica que no existe solucin factible, el problema no tiene solucin factible entera. Consideremos el problema que fue resuelto grficamente al iniciar la seccin. La solucin continua esta dada por Bsica z X2 X1 x1 0 0 1 x2 0 1 0 x3 x4 28/11 15/11 7/22 1/22 -1/22 3/22 Solucin 63 7/2 9/2

Ya que esta solucin no es entera, debe agregarse un corte fraccional a la tabla. Usualmente se elige la ecuacin correspondiente a max { i}. Ya que ambas ecuaciones en este problema tienen el mismo valor de i esto es 1 = 2 = una u otra pueden ser utilizadas, la ecuacin x2 da: X2 + 7/22 x3 + 1/22 x4 = 3 Por consiguiente e corte fraccional esta dado por S1 - 7/22 x3 + 1/22 x4 = -

Esto da la nueva tabla Bsica Z X2 X1 Si Simplex proporcion: Bsica Z X2 X1 X3 x1 0 0 1 0 x2 0 1 0 0 x3 0 0 0 1 x4 1 0 1/7 1/7 S1 8 1 -1/7 -22/7 L.D. 59 3 4 4/7 1 4/7 x1 0 0 1 0 x2 0 1 0 0 x3 x4 8/11 15/11 7/22 1/22 -1/22 3/22 -7/22 -1/22 S1 0 0 0 1 L.D. 63 3 4 -1/2

Ya que la solucin todava no es entera, se elabora un nuevo corte. La ecuacin x1 se escribe como: x1 + 1/7 x4 + 6/7s1 = - 4/7 Lo que nos proporciona S1 - 1/7 x4 - 6/7s1 = - 4/7 Agregando esta correccin a la ltima tabla, se obtiene: Bsica z x2 x1 x3 x1 0 0 1 0 x2 0 1 0 0 x3 0 0 0 1 x4 1 0 1/7 1/7 S1 8 1 -1/7 -22/7 S2 0 0 0 0 L.D. 59 3 4 4/7 1 4/7
8/9

www.geocities.ws/mdmoli/archivos/ioi2/unidad2ioi.html

02/11/13

Programacin Entera

S2

-1/7

-6/7

-4/7

El mtodo dual simplex proporciona ahora: Bsica z x2 x1 x3 X4 x1 0 0 1 0 0 x2 0 1 0 0 0 x3 0 0 0 1 0 x4 0 0 0 0 1 S1 2 1 -1 -4 6 S2 7 0 1 1 -7 L.D. 55 3 4 1 4

La cual da la solucin ptima entera z = 55, x1 = 4, x2 = 3.

www.geocities.ws/mdmoli/archivos/ioi2/unidad2ioi.html

9/9

También podría gustarte