programación entera

9
02/11/13 Programación Entera www.geocities.ws/mdmoli/archivos/ioi2/unidad2ioi.html 1/9 UNIDAD 2: PROGRAMACION ENTERA Introducción. Programación entera. Clasificación. Algoritmo de Gomory. Ramificación y acotamiento. Manejo de software específico Bibliografía 1. Introducción a la investigación de operaciones - Hillier y Lieberman - Ed. McGraw-Hill - 1993 - 5ª edición 2. Toma de decisiones por medio de investigación de operaciones - Thierauf, Robert - Limusa Noriega Editores - 1993 Introducción a la programación entera Los problemas de programación lineal en que se requiere que algunas o todas las variables tomen valores enteros, son de programación entera. La programación entera a llegado a ser un área muy especializada de la ciencia de la administración. Un enfoque práctico: Una empresa que fabrica costales para alimento de ganado y una solución lineal requiere que se fabriquen 3000,472 costales, carecerá de sentido. En tales situaciones, a menudo se adopta la solución no entera al requerimiento de enteros simplemente redondeando los resultados al entero más próximo. Esto produce lo que se llama la “solución 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 función 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 producción cercana a los 19.000 costales. Cuando tienen importancia las soluciones enteras Existen muchos problemas importantes en los que la “solución redondeada” simplemente no funciona. Esta complicación puede deberse a la escala de las variables por considerar. Por ejemplo, si la solución de un modelo de programación 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 decisión de construir 11 de los primeros y 6 de los segundos, o cualquier otra solución redondeada. La magnitud del rendimiento y la asignación de recursos asociados con cada unidad del problema aconsejan determinar la mejor solución entera posible. Con otro ejemplo, sé vera que muchos modelos usan variables enteras para indicar decisiones lógicas. Por ejemplo, veremos que problemas en los que queramos que una variable “x” sea igual a 1 si vamos a construir un almacén o x sea igual a cero (si-no). Supóngase que la solución de una versión de programación lineal de este problema produce un valor no entero, por ejemplo, x = 0,38. Vemos que este valor no contiene información aprovechable como solución al problema real. Es claro que no podemos construir 0,38 de un almacén. Es cierto que podemos elegir almacenes de diversos tamaños, pero en todo caso, o bien tenemos un almacén o no lo tenemos. Se podría suponer que en un caso como este se trataría de redondear al entero más próximo (0 en este caso) como forma de salvar la dificultad. Por desgracia, esto no garantiza que se obtenga una buena (y no digamos óptima) solución. 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 programación lineal si no fuese por el requerimiento de que sean enteros los valores de algunas variables de decisión, en los que no se puede encontrar una buena solución mediante el uso del método Simplex seguido del redondeo de los valores óptimos resultantes para variables de decisión. Estos problemas deben ser resueltos mediante algoritmos especialmente diseñados para resolver problemas de programación entera. Programación Lineal contra Programación Entera A pesar del impresionante avance en nuestra capacidad para resolver problemas de programación entera, la tecnología aun dista mucho de la que hay disponible para manejar problemas en los que no es necesario que las variables de decisión sean enteras. Muchos problemas que se resuelven fácilmente como problemas de programación lineal llegan a ser irresolubles para propósitos prácticos cuando se exige que las variables de decisión sean enteras (es decir, que el tiempo y el costo necesario para los cálculos resultan demasiado grandes) Tipos de modelos de Programación Entera: Programación Entera es un termino general para los modelos de programación matemática que presentan condiciones de integridad (condiciones que estipulan que algunas o todas las variables de decisión deben tener valores enteros). Ya hemos apuntado que los modelos de programación lineal entera son modelos de programación lineal que tienen la característica adicional de que algunas de las variables de decisión deben tener valores enteros. Existen diversas clasificaciones de esta categoría 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 decisión tengan

Upload: dammyxd

Post on 23-Oct-2015

17 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programación Entera

02/11/13 Programación Entera

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

UNIDAD 2: PROGRAMACION ENTERA Introducción. Programación entera. Clasificación. Algoritmo de Gomory. Ramificación y acotamiento. Manejo de software específico

Bibliografía

1. Introducción a la investigación de operaciones - Hillier y Lieberman - Ed. McGraw-Hill - 1993 - 5ª edición2. Toma de decisiones por medio de investigación de operaciones - Thierauf, Robert - Limusa Noriega Editores - 1993

Introducción a la programación entera Los problemas de programación lineal en que se requiere que algunas o todas las variables tomen valores enteros, son de programaciónentera. La programación entera a llegado a ser un área muy especializada de la ciencia de la administración. Un enfoque práctico:

Una empresa que fabrica costales para alimento de ganado y una solución lineal requiere que se fabriquen 3000,472 costales, carecerá desentido. En tales situaciones, a menudo se adopta la solución no entera al requerimiento de enteros simplemente redondeando los resultados alentero más próximo. Esto produce lo que se llama la “solución redondeada”. Mediante ese recurso se obtienen soluciones aceptables para eladministrador en aquellas situaciones en las que, con sentido practico, sencillamente no importa el redondeo. Por ejemplo, no hay diferenciasignificativa, ya sea en la función objetivo o en las restricciones, entre producir 19.283,64 y 19.283 costales de alimento para ganado, Enrealidad, probablemente baste para el ajuste de los datos del modelo que satisfaga al administrador una producción cercana a los 19.000costales.

Cuando tienen importancia las soluciones enteras Existen muchos problemas importantes en los que la “solución redondeada” simplemente no funciona. Esta complicación puede deberse ala escala de las variables por considerar. Por ejemplo, si la solución de un modelo de programación lineal recomienda que la Boeing construya11,6 aparatos 747 y 6,8 aparatos 727, el administrador probablemente no quedara contento con la simple medida de tomar la decisión de construir11 de los primeros y 6 de los segundos, o cualquier otra solución redondeada. La magnitud del rendimiento y la asignación de recursos asociadoscon cada unidad del problema aconsejan determinar la mejor solución entera posible. Con otro ejemplo, sé vera que muchos modelos usanvariables enteras para indicar decisiones lógicas. Por ejemplo, veremos que problemas en los que queramos que una variable “x” sea igual a 1 sivamos a construir un almacén o x sea igual a cero (si-no). Supóngase que la solución de una versión de programación lineal de este problemaproduce un valor no entero, por ejemplo, x = 0,38. Vemos que este valor no contiene información aprovechable como solución al problema real. Es claro que no podemos construir 0,38 de un almacén. Es cierto que podemos elegir almacenes de diversos tamaños, pero en todo caso,o bien tenemos un almacén o no lo tenemos. Se podría suponer que en un caso como este se trataría de redondear al entero más próximo (0 eneste caso) como forma de salvar la dificultad. Por desgracia, esto no garantiza que se obtenga una buena (y no digamos óptima) solución. 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 programación lineal si no fuese por elrequerimiento de que sean enteros los valores de algunas variables de decisión, en los que no se puede encontrar una buena solución mediante eluso del método Simplex seguido del redondeo de los valores óptimos resultantes para variables de decisión. Estos problemas deben ser resueltosmediante algoritmos especialmente diseñados para resolver problemas de programación entera.

Programación Lineal contra Programación Entera

A pesar del impresionante avance en nuestra capacidad para resolver problemas de programación entera, la tecnología aun dista muchode la que hay disponible para manejar problemas en los que no es necesario que las variables de decisión sean enteras. Muchos problemas que seresuelven fácilmente como problemas de programación lineal llegan a ser irresolubles para propósitos prácticos cuando se exige que las variablesde decisión sean enteras (es decir, que el tiempo y el costo necesario para los cálculos resultan demasiado grandes)

Tipos de modelos de Programación Entera: Programación Entera es un termino general para los modelos de programación matemática que presentan condiciones de integridad(condiciones que estipulan que algunas o todas las variables de decisión deben tener valores enteros). Ya hemos apuntado que los modelos deprogramación lineal entera son modelos de programación lineal que tienen la característica adicional de que algunas de las variables de decisióndeben tener valores enteros. Existen diversas clasificaciones de esta categoría 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 decisión tengan

Page 2: Programación Entera

02/11/13 Programación Entera

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

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 unproblema de programación lineal

Programas Enteros Mixtos Un problema en el que solo se requieren que algunas variables tengan valores enteros mientras que otras pueden asumir cualquiernumero no negativo (es decir, cualquier valor continuo) se llama programación lineal entera mixta (PLEM). Por ejemplo, supóngase que en elproblema 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; x1 y x2 enteros

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 interés debido a que se pueden usar las variables 0-1 para representar decisiones dicotómicas (sí o no). Diversos problemas deasignación, ubicación de plantas, planes de producción y elaboración de cartera, son de programación lineal entera 0-1. Existen dos métodos para generar las restricciones especiales que fuercen la solución óptima del problema, hacia la solución óptimaentera deseada:

- Método de ramificar y acotar.- Método de planos de corte.

En ambos métodos las restricciones agregadas eliminan partes del espacio de soluciones, pero nunca alguno de los puntos enterosfactibles. Desafortunadamente, ninguno de los dos métodos es efectivo en la solución de problemas de programación lineal entera. No obstantelos métodos de ramificar y acotar son mucho mejores en cuanto al calculo se refiere que los métodos de plano de corte. Por esta razón, lamayoría de los códigos comerciales se basan en el procedimiento de ramificar y acotar.

Algoritmo de Ramificar y Acotar

En este momento será más conveniente explicar los fundamentos del algoritmo de ramificar y acotar (R y A), por medio de un ejemplo

numérico: Consideremos el siguiente problema de Programación 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 programación lineal entera representado por los puntos. El espacio desoluciones de programación lineal asociado, programación lineal óptima, se define por cancelación de las restricciones enteras. La solución

Page 3: Programación Entera

02/11/13 Programación Entera

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

programación 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 programación lineal. Como la solución ó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 linealesde forma tal que nos permita identificar, finalmente, para conseguir la solución óptima entera. Primero seleccionaremos una de las variables cuyo valor corriente en la solución óptima no cumple el requisito de valor entero.Seleccionando x1=3,75 arbitrariamente, observamos que la región ( 3 < x1 < 4 ) del espacio de soluciones lineales, no puede incluir ningunaespacio solución factible entera. Entonces podemos modificar el espacio de soluciones lineales eliminando esta región no prometedora, lo que, enrealidad, 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 factiblesdel 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 originalPLO. La diferencia principal es que la selección de las nuevas restricciones e acotamiento ( x1 >= 3 y x1 <= 4 ) mejoraran la oportunidad deforzar a los puntos extremos óptimos de PL1 y PL2 hacia la satisfacción del requisito de valor entero. Además el hecho que las restricciones deacotamiento están en la “vecindad inmediata” del optimo continuo del PLO, incrementara las posibilidades de producir “buenas” solucionesenteras. Las nuevas restricciones x1 >= 3 y x1 <= 4 son mutuamente excluyentes, PL1 y PL2 deben tratarse como dos programas linealesseparados. Esta dicotomía da lugar al concepto de ramificación en el algoritmo de R y A. En efecto, ramificar significa subdividir un espacio desoluciones corrientes en subespacios mutuamente excluyentes. Aquí vemos las ramas PL1 y PL2 y x1 llamada variable de ramificación

Page 4: Programación Entera

02/11/13 Programación Entera

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

Sabemos que la solución óptima entera debe encontrarse en PL1 o PL2. Sin embargo, en ausencia del espacio grafico de soluciones, notenemos manera de determinar donde puede encontrarse la solución óptima, por lo que nuestra única opción 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, debemosresolver 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 restricción adicional de acotamiento superior, x1 <= 3. así podemos aplicar elalgoritmo primal de acotamiento superior para resolver el problema. Esto da la nueva solución óptima. X1 = 3, x2 = 2 y z = 23 Como esta solución satisface el requisito de valor entero, se dice que el PL1 esta agotado, vació, lo que significa que el PL1 no puedeproducir ninguna solución mejor y no necesita investigarse mas a fondo. Determinar una solución factible entera en una etapa temprana de los cálculos es crucial para incrementar la eficiencia del algoritmo R yA. Tal solución fija una cota inferior al valor objetivo optimo, que a su vez se puede usar para descartar automáticamente cualquier subproblemano explorado (como el PL2) que no dan mejor solución entera. En este ejemplo el PL1 produce la cota inferior z = 23. Esto significa que cualquiersolución entera mejorada debe tener el valor de z mayor 23. Sin embargo, como la solución óptima del problema PLO tiene z = 23,75 y comotodos los coeficientes de la función objetivo son enteros, se infiere que ningún subproblema que proceda del PLO puede producir un valor de zmejor que 23. En consecuencia, podemos descartar al PL2 porque no puede dar una mejor solución entera. Del análisis anterior vemos que un subproblema esta agotado si no satisface una de las siguientes condiciones:

1. El subproblema da una solución factible entera2. El subproblema no puede dar una mejor solución que la mejor cota inferior disponible (valor z) del problema (Un caso especial de estacondición es que el subproblema no tendrá ninguna solución factible en absoluto) Pero si en nuestro ejemplo decidimos investigar PL2 primero la solución resultante será: x1 = 4, x2 = 0,8333, z = 23,3333. Como x2 no es

entero el PL2 debe investigarse mas a fondo creándose 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 solución factible y porello esta agotado. A continuación seleccionamos el PL3 para investigarlo. Su solución la da x1 = 4,5, x2 = 0 y z = 22,5. Como x1 = 4,5 no esentero, 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 solución factible, esta agotado. A continuación escogemos el PL5 cuya

Page 5: Programación Entera

02/11/13 Programación Entera

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

solución óptima (x1 = 4, x2 = 0, z = 20) satisface el requisito de valor entero. Finalmente, hemos encontrado una solución entera que fija una cotainferior (z = 20) a la solución entra óptima. Desafortunadamente, esta cota inferior es “muy débil” y “muy tardía” para ser útil. El único nodorestante, PL1, queda agotado a continuación con z = 23, lo que fija una nueva cota inferior. Como no quedan ya subproblemas por investigar, laultima cota inferior asocia la solución óptima del PLE con PL1.

La pero secuencia posible de solución, 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, ¿cómo seleccionamos a la variable de ramificación? Y, de entre todos lossubproblemas no explorados, ¿Cuál debe investigarse a continuación? Observe que en la figura, encontramos una buena solución en el primersubproblema PL1, lo que nos permitió declarar agotado al PL2 sin ninguna investigación posterior. Básicamente, 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 esraro y puede encontrarse situaciones reales. Aunque existen muchos métodos 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 solución mejorada del PLE, no existe una teoría consistente queproduzca resultados concretos uniformes para la solución del problema general de PLE.

Resumiremos ahora los pasos del algoritmo de R y A. Suponiendo un problema de maximización, definiremos z como la cota inferior de la

solución entera óptima del problema. Hacemos inicialmente z = - ¥ e i = 0.

Paso 1: Agotamiento y ramificación. Seleccione PLi como el próximo subproblema por investigarse. Resolvemos el PLi y trataremos deagotarlo usando las condiciones apropiadas.

(a) Si el PLi se declara agotado (solución inferior, infactible o entera), ponga al día la cota inferior z si se encuentra una mejor solución

del PLE; si no es así, seleccione un nuevo subproblema i y repita el paso 1. Si todos los subproblemas se han investigado, la soluciónóptima del PLE esta asociada con la ultima cota inferior z en caso de que exista, si no es así

(b) Si el PLi no esta agotado, siga con el paso 2 para efectuar la ramificación del PLi.

Paso 2: Ramificación. Seleccione una de las variables xj cuyo valor optimo en la solución del PLi no satisfaga la restricción del valor entero.Elimine la región 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:

Page 6: Programación Entera

02/11/13 Programación Entera

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

Maximizar z = 7x1 + 9x2 Sujeto a: -x1 + 3x2 <=6 7x1 + x2 <=35 x1, x2 enteros no negativos La solución óptima (ignorando la condición discreta)se demuestra gráficamente 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 todavía conjuntos convexos.También este cambio deberá hacerse sin “partir” ninguna de las soluciones enteras factibles del problema original. La figura muestra como dosrestricciones secundarias (arbitrariamente elegidas) se agregan al problema proporcionando la solución óptima entera en el punto extremo nuevo(4, 3). Note que el área cortada del espacio de soluciones original no incluye ningún valor entero.

El algoritmo fraccional (entero puro)

Un requisito básico para la aplicación de este algoritmo es que todos los coeficientes y la constante del segundo miembro de cada restriccióndeben ser enteros. Por ejemplo la restricción:

X1 + 1/3 x2 <= 13/2Debe transformarse a: 6x1 + 2x2 <= 39

Donde no aparecen fracciones. Lo ultimo se logra multiplicando ambos lados de la restricción original por el mínimo común múltiplo de losdenominadores.

El requisito anterior se impone ya que, como se mostrara posteriormente, el algoritmo entero puro no diferencia entre las variables de holguray las regulares del problema en el sentido de que todas las variables deben ser enteras. La presencia de coeficientes fraccionarios en lasrestricciones, por consiguiente, puede no permitir que las variables de holgura tengan valores enteros. En este caso, el algoritmo fraccional puedeindicar que no existe solución factible, aunque el problema pueda tener una solución entera factible en función de las variables que no son deholgura.

Los detalles del algoritmo los veremos ahora. Primero, el problema PL queda resuelto, esto sin tomar en cuenta la condición de entero. Sedesarrollan de la siguiente manera las restricciones secundarias que forzaran la solución entera. Sea la tabla óptima final para el problema lineal lasiguiente:

Básica x1 xi xm wi wj wn Solución

z 0 0 0 C1 Cj Cn b0

x1 1 0 0 a11 an1 an1 b1

Page 7: Programación Entera

02/11/13 Programación Entera

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

x2 0 1 0 a1i ani ani bi

x3 0 0 1 a1m anm anm bm

Las variables xi (i = 1,2 ...,m) representan las variables básicas mientras que las variables wj(j = 1,2 ...,n) son las variables no básicas. Estasvariables han sido arregladas como tales por conveniencia.

Considere la i-esima ecuación donde la variable básica x tiene un valor que no es entero. n j

xi = bi - å a w, no es entero J=1 i j Cualquiera de tales ecuaciones se denominara como un renglón fuente. Ya que en general los coeficientes de la función objetivo pueden

hacerse enteros, la variable z también es entera y la ecuación z puede elegirse como un renglón fuente. Realmente la prueba del algoritmo deconvergencia exige que z sea entera

Sea:

bi = [bi] + ¦i

aj = [aj] + ¦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 fracción estrictamente positiva y ¦ij esuna fracción no negativa.Por ejemplo:

a [a] f = a – [a]

1 ½ 1 ½

-2 1/3 -3 2/3

-1 -1 0

-2/5 -1 3/5

El renglón fuente, por consiguiente, proporciona n n

¦i - å ¦ij wj = xi – [bi] + å [aj] wj J=1 j=1 i A fin de que todas las variables xi y wj sean enteras, el segundo miembro de la ecuación anterior debe ser entero. Esto implica que el primer

miembro debe también 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 construcción, una condición necesaria para satisfacer la integridad será:

¦i - å ¦ij wj <= 0 La ultima restricción puede ponerse en la forma

Si = å ¦ij wj - ¦i (corte fraccional)

Donde Si es una variable de holgura no negativa que por definición debe ser entera. Esta ecuación de restricción 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 restricción no estasatisfecha por la solución dada. El método dual simplexPuede ser utilizado entonces para aclarar el espacio de soluciones hacia la solución óptima entera. La nueva tabla después de agregar elcorte fraccional, será:

Básica x1... xi... xm… wi… wj… wn S1 Solución

Z 0 0 0 c1 cj cn 0 b0

x1 1 0 0 a11 aj1 an1 0 b1

x2 0 1 0 a1i aji ani 0 bi

x3 0 0 1 a1m ajm anm 0 bm

Page 8: Programación Entera

02/11/13 Programación Entera

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

Xm 0 0 0 -¦i1 -¦ij -¦in 1 -¦I

Si la nueva solución (después de aplicar el método dual simplex) es entera, termina el procedimiento. En cualquier otro caso se construyeun nuevo corte fraccional de la tabla resultante y se utiliza de nuevo el método dual simplex para quitar la infactibilidad. Este procedimiento serepite hasta que se logra una solución entera. Pero si en cualquier iteración el algoritmo dual simplex indica que no existe solución factible, elproblema no tiene solución factible entera. Consideremos el problema que fue resuelto gráficamente al iniciar la sección. La solución continua esta dada por

Básica x1 x2 x3 x4 Solución

z 0 0 28/11 15/11 63

X2 0 1 7/22 1/22 7/2

X1 1 0 -1/22 3/22 9/2

Ya que esta solución no es entera, debe agregarse un corte fraccional a la tabla. Usualmente se elige la ecuación 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, laecuación 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

Básica x1 x2 x3 x4 S1 L.D.

Z 0 0 8/11 15/11 0 63

X2 0 1 7/22 1/22 0 3 ½

X1 1 0 -1/22 3/22 0 4 ½

Si 0 0 -7/22 -1/22 1 -1/2

Simplex proporcionó:

Básica x1 x2 x3 x4 S1 L.D.

Z 0 0 0 1 8 59

X2 0 1 0 0 1 3

X1 1 0 0 1/7 -1/7 4 4/7

X3 0 0 1 1/7 -22/7 1 4/7

Ya que la solución todavía no es entera, se elabora un nuevo corte. La ecuación 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 corrección a la última tabla, se obtiene:

Básica x1 x2 x3 x4 S1 S2 L.D.

z 0 0 0 1 8 0 59

x2 0 1 0 0 1 0 3

x1 1 0 0 1/7 -1/7 0 4 4/7

x3 0 0 1 1/7 -22/7 0 1 4/7

Page 9: Programación Entera

02/11/13 Programación Entera

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

S2 0 0 0 -1/7 -6/7 1 -4/7

El método dual simplex proporciona ahora:

Básica x1 x2 x3 x4 S1 S2 L.D.

z 0 0 0 0 2 7 55

x2 0 1 0 0 1 0 3

x1 1 0 0 0 -1 1 4

x3 0 0 1 0 -4 1 1

X4 0 0 0 1 6 -7 4

La cual da la solución óptima entera z = 55, x1 = 4, x2 = 3.