Anda di halaman 1dari 70

Tema 3.

Programacin Lineal Entera Investigacin Operativa

CONTENIDOS

1. Introduccin

2. Ejemplos clsicos de programacin entera

3. Enumeracin exhaustiva e implcita

4. Algoritmo de ramificacin y acotacin

5. Programacin entera mixta

6. Programacin 0-1

7. Mtodos de los planos de corte


Tema 3. Programacin Lineal Entera Investigacin Operativa

1. Introduccin

En algunos problemas de programacin matemtica los valores


fraccionarios de las variables de decisin no tienen sentido, por ejemplo,
cuando representan un nmero de trabajadores o de unidades indivisibles
producidas (coches, equipos informticos...)

Este requerimiento de que las variables de decisin slo tomen valores


enteros a menudo significa que an cuando la funcin objetivo y las
restricciones sean lineales, el problema no pueda ser resuelto mediante el
mtodo del smplex.

No existe garanta de que los valores de las variables obtenidos en la


solucin ptima sean enteros.

Si decidisemos redondear los valores ptimos obtenidos, podra dar como


resultado una solucin factible con un valor en la funcin objetivo peor que
la solucin ptima o incluso, una solucin infactible.
Tema 3. Programacin Lineal Entera Investigacin Operativa

Debido a estas dificultades asociadas con los problemas de programacin


entera, se han desarrollado algoritmos especializados en problemas en los
que algunas de las variables de decisin tomen valores enteros.

En el presente captulo nos dedicamos al estudio de la resolucin de


problemas de programacin lineal entera mediante las tcnicas de
ramificacin y acotacin y de planos de corte.
Tema 3. Programacin Lineal Entera Investigacin Operativa

2. Ejemplos clsicos de programacin entera

Presentamos algunos ejemplos representativos de esta clase de problemas,


en concreto, el problema de la mochila, el problema del viajante y el
problema de asignacin generalizado.

Todos son problemas de programacin 0-1 y han sido muy renombrados de-
bido a que su estructura aparece en diferentes tipos de aplicaciones
prcticas, habindose desarrollado mtodos especializados para su resolu-
cin que aprovechan la estructura matemtica inherente a estos problemas.

El problema de la mochila

Un excursionista debe elegir entre varios objetos para transportar en su


mochila, que no debe exceder de determinado peso y donde el objetivo
consiste en maximizar el valor de la mochila, es decir, de los objetos que se
eligen.
Tema 3. Programacin Lineal Entera Investigacin Operativa

Consideremos n objetos, donde el objeto j tiene asociado un determinado


peso pj y un valor vj.

Para cada objeto hay que decidir si se incluye o no en la mochila, de


manera que es posible definir las variables de decisin

El problema se puede formular de la siguiente forma:

donde P es el lmite de peso de la mochila.


Tema 3. Programacin Lineal Entera Investigacin Operativa

El problema del viajante

El problema del viajante de comercio o del cartero chino es un problema


entero de gran dificultad computacional.
Un viajante tiene que visitar todas y cada una de n ciudades una sola vez,
regresando a la ciudad de origen. El problema que debemos resolver es en
qu orden debe visitar las distintas ciudades para que el coste (o distancia)
del viaje sea mnimo.

Se puede representar de manera natural mediante una red cuyos vrtices


simbolizan las n ciudades y los arcos las rutas entre pares de ciudades,
teniendo asociado un coste cij.

La designacin de los arcos se hace de acuerdo con el orden del viaje, de


manera que el k-simo tramo va a estar asociado con el k-simo arco.
Tema 3. Programacin Lineal Entera Investigacin Operativa

El problema se puede formular de la siguiente forma:

Formulacin como problema 0-1 programas de tamao muy grande,


incluso para un nmero pequeo de ciudades se han propuesto algunos
mtodos de solucin alternativos y heursticas basadas en la estructura
especial del problema bastante eficientes.
Tema 3. Programacin Lineal Entera Investigacin Operativa

El problema de asignacin generalizado

Es una extensin sencilla del problema de asignacin, en el que cada tarea


debe ser asignada a un empleado, pero cada empleado tiene la capacidad
de llevar a cabo ms de una tarea.

Suponemos que hay m empleados y n tareas que realizar, que cada


empleado, j, dispone de una cantidad de tiempo limitado bj y que la tarea i
le llevar al empleado j un tiempo aij.
Tema 3. Programacin Lineal Entera Investigacin Operativa

3. Enumeracin exhaustiva e implcita

Se considera inicialmente el problema lineal relajado (PR), que se obtiene


del problema entero prescindiendo de la condicin de que las variables
sean enteras.

A continuacin, se pasa a resolver dicho problema programacin lineal.

Si la solucin ptima alcanzada es entera, lo ser tambin del programa


entero del que partimos.

En caso contrario, se sustituir mediante aproximacin por redondeo por


los nmeros enteros ms prximos.

Sin embargo, el mtodo de aproximacin entera por redondeo puede


llevar a una solucin muy distinta de la verdadera solucin ptima del
programa entero o, peor an, a una solucin infactible.
Tema 3. Programacin Lineal Entera Investigacin Operativa

Mtodo de enumeracin exhaustiva o explcita

Idea bsica: En un problema de programacin entera el conjunto factible


puede tener un nmero finito de puntos. Se podra evaluar cada punto y
as, tomar como solucin ptima aquella que d mejor valor a la funcin
objetivo.

Se comienza por determinar los recorridos Xi (en valores enteros) de


cada variable xi, despus el conjunto producto cartesiano X =
X1Xn y, a partir de l, el conjunto factible SX, obtenido de la
verificacin de las restricciones para cada punto de X.

Finalmente, se obtiene la solucin ptima evaluando la funcin objetivo


en cada punto de S.

En problemas reales el nmero de variables de decisin es grande


el proceso de enumeracin explcita no se considera adecuado ya que el
nmero de soluciones a analizar sera muy elevado.
Tema 3. Programacin Lineal Entera Investigacin Operativa

Por ejemplo, en un problema con 15 variables de decisin, cada una de las


cuales pueda tomar 10 valores enteros, habra que analizar ms de 100 bi-
llones de puntos.

Ejemplo. Consideremos el problema de programacin entera:

Resolviendo el problema relajado obtenemos la solucin ptima

xPR* = (5.5, 4.75),

con zPR* = 15.75.


Tema 3. Programacin Lineal Entera Investigacin Operativa

Por lo tanto, los recorridos de las variables x1 y x2 son

X1 = {0, 1, 2, 3, 4, 5, 6},
X2 = {0, 1, 2, 3, 4, 5}
siendo el producto cartesiano X = {(0,0), (0,1),..., (6,5)}, formado por 42 puntos.

El conjunto factible es S = {(0,0), (1,1), (2,2)}.

El punto factible que maximiza el valor de la funcin objetivo es xPE*=(2, 2), con
zPE*=6, siendo, por tanto, la solucin ptima del problema.
Tema 3. Programacin Lineal Entera Investigacin Operativa

Problemas con restricciones que no definen regiones acotadas


podra conducir a una regin factible no acotada el problema con
este mtodo sera intratable.

Parece necesario buscar mtodos ms adecuados y con mayor


fundamento que permitan resolver eficientemente los problemas de
programacin entera.

Mtodo de enumeracin implcita

Considerado inicialmente por Balas para problemas lineales 0-1, utiliza


algunas de las ideas ya propuestas en los dos mtodos anteriores:

conjuntos parciales de posibles soluciones que sean candidatos para


determinar en ellos la solucin al problema, prescindiendo de aquellos
que no lo sean, y

alguna forma de problemas parciales de programacin lineal cuya


solucin ptima sea la del programa entero.
Tema 3. Programacin Lineal Entera Investigacin Operativa

Vamos a introducir algunas ideas previas del mtodo con un ejemplo. Dado
el problema de programacin entera.

(PE)

Sea S la regin factible del problema PE y F la del problema lineal relajado


(PR) asociado, problema que representaremos de forma abreviada

cuya solucin ptima, es xPR* = (6.46, 4.46), con zPR* = 17.38.


Tema 3. Programacin Lineal Entera Investigacin Operativa

Dicha solucin no es factible para el programa entero del que partimos.

Sin embargo, como x2 (y tambin x1) tiene que ser un nmero entero para la
solucin ptima xPE*, dicha solucin, adems de pertenecer a F, deber veri-
ficar que x2 4 x2 5.
Con esta observacin vemos que se ha dividido la regin factible en tres
subconjuntos,

F {x: x2 4}, F {x: 4 < x2 < 5} y F { x : x2 5},

y como la componente x2 debe ser entera, prescindiremos del segundo sub-


conjunto:
Tema 3. Programacin Lineal Entera Investigacin Operativa

Podemos entonces construir dos problemas de programacin lineal:

cuyos conjuntos factibles son el primer y tercer conjunto de los tres conside-
rados anteriormente.

Las soluciones ptimas para los problemas son xPL1* = (6, 4) con zPL1* =16
y xPL2* = (5.6, 5) con zPL2*=16.2.

A PL1 y PL2 construidos a partir del problema relajado PR se los denomina


subproblemas del problema base PE y al proceso de construccin de tales
subproblemas ramificacin (branching).
Tema 3. Programacin Lineal Entera Investigacin Operativa

La solucin de PL1 verifica la restriccin de que sea entera es una solu-


cin factible del problema PE. Lo que no sabemos es si se trata de la
solucin ptima, es decir, si no existe otra solucin entera con mayor valor
para el objetivo.

Teorema. Si el problema PR es infactible, tambin lo es el PE y en otro


caso (bajo la forma de maximizacin) es zPE* zPR*.

A partir de l podemos afirmar que zPR*=17.38 es una cota superior para el


valor del objetivo correspondiente a la solucin entera ptima y, anloga-
mente, con PL1 y PL2, para sus correspondientes conjuntos factibles.

Adems, el valor del objetivo para cualquier otra solucin entera del proble-
ma PL1 debe ser menor que 16, por lo que el valor 16 es una cota inferior
para el valor del objetivo de la solucin ptima del problema PE, ya que
cada solucin de S se va a obtener de PL1 o PL2, de manera que no se
pierden soluciones del PE.
Tema 3. Programacin Lineal Entera Investigacin Operativa

Teniendo en cuenta que zPR*=17.38, no se puede deducir sin analizar el


problema PL2 que la solucin ptima del problema PL1 lo sea del PE.

Consideramos el problema PL2, con solucin ptima no entera y valor de


la funcin objetivo zPL2*=16.2, que es mayor que zPL1*=16 habr que
analizar la existencia de soluciones enteras en la regin factible de PL2
con un valor para el objetivo mayor que 16.

Ramificamos sobre la variable x1, lo que nos lleva a considerar los proble-
mas PL3 y PL4:
Tema 3. Programacin Lineal Entera Investigacin Operativa

El problema PL4 es infactible, mientras que la solucin ptima de PL3 es


xPL3* = (5, 5.375) con zPL3* = 15.38, que es menor que zPL1* = 16. Luego
la solucin entera correspondiente al problema PL1 es la solucin del
problema entero original.

Grficamente:
Tema 3. Programacin Lineal Entera Investigacin Operativa

4. Algoritmo de ramificacin y acotacin

Por un lado, la ramificacin se refiere a la particin del conjunto factible


(continuo) del problema lineal relajado en subproblemas o subconjuntos
(tambin continuos), prescindiendo de aquellas partes del conjunto
factible del problema lineal relajado que no lo sean del problema entero.

Por otro lado, la acotacin se refiere a la cota superior (para la forma de


maximizacin) que se obtiene del problema lineal relajado y a la cota
inferior que se obtiene del valor de los objetivos de los subproblemas
obtenidos del proceso de ramificacin, para ordenar las soluciones de los
subproblemas y as, determinar la solucin ptima del problema entero.

Un aspecto importante de la ramificacin sondeo: proceso mediante el


cual se decide si se prescinde de algn conjunto de posibles soluciones
enteras porque no pueda contener la solucin ptima.
Tema 3. Programacin Lineal Entera Investigacin Operativa

Algoritmo de ramificacin y acotacin


Tema 3. Programacin Lineal Entera Investigacin Operativa

Algoritmo de ramificacin y acotacin


Tema 3. Programacin Lineal Entera Investigacin Operativa

Paso 1 se debe adoptar una regla de ramificacin que nos indique la


variable no entera sobre la que ramificar (en el caso de que haya varias
posibilidades), ya que aunque en su resolucin a mano podemos
escoger una aleatoriamente, en las implementaciones en programas de
ordenador habr que introducir necesariamente algn criterio.

Eleccin de un subconjunto no sondeado para ramificacin

La regla de la mejor cota. Consiste en tomar el subconjunto con mayor


valor para el objetivo (para el problema de maximizacin), lo que puede
hacer que se alcance antes la solucin entera al hacer terminales otros
subconjuntos y as, minimizar el nmero de iteraciones del algoritmo.

La regla de la cota ms reciente (ms sistemtica). Selecciona el


subconjunto surgido ms recientemente y que no haya sido sondeado.
Para aquellos subconjuntos surgidos al mismo tiempo se tomara aqul
con mayor cota.
Tema 3. Programacin Lineal Entera Investigacin Operativa

Ejemplo. Apliquemos el algoritmo de ramificacin y acotacin con la regla de la


mejor cota sobre el problema entero (PE)

Sea F la regin factible del problema lineal relajado (PR) asociado al PE.

Paso 0. Resolvemos el PR (mtodo del smplex) xPR*=(0, 8.2, 8.8), con zPR* =
42.2. Al tener esta solucin valores no enteros, dicha solucin no es ptima para el
PE y debemos continuar con el algoritmo.

Establecemos como cota inferior para el valor del objetivo zI=-.


Paso 1. Como estamos en la primera iteracin, hacemos una particin del conjunto
F eligiendo entre las variables x2 y x3 para ramificar.
Tema 3. Programacin Lineal Entera Investigacin Operativa

Tomamos arbitrariamente x2, obteniendo los siguientes subconjuntos, al aadir las


restricciones x2 8 y x2 9 al conjunto F,

F {x: x2 8} y F {x: x2 9}.


Paso 2. Para cada subconjunto, calculamos una cota superior para el valor del ob-
jetivo del PE resolviendo los subproblemas

con xPL2*=(0.05, 8, 8.58) con zPL2* = 41.37 y el subproblema PL3 infactible.

Paso 3. Sondeamos estos subconjuntos para ver si son terminales. Notemos que
por (i) el subproblema PL3 es terminal, al ser infactible.

PL2 no es infactible (i), tiene zS = 41.37 > - = zI (ii), y la solucin ptima no se al-
canza en un punto con valores enteros (iii); por lo que no es terminal.
Tema 3. Programacin Lineal Entera Investigacin Operativa

Paso 4. Como hay un subproblema que no es terminal, volvemos al Paso 1.

En la siguiente iteracin consideramos el subproblema PL2. Ramificamos sobre la


primera componente, aadiendo las restricciones x1 0 y x1 1, para formar los
subproblemas

con xPL4* = (0, 8, 8.67) con zPL4* = 41.33 y xPL5* = (1, 4.4, 4.6) con zPL5*=26.4.

Estos dos subproblemas no son terminales, ya que no son infactibles (i), para PL4
y PL5 es zS = 41.33 >- = zI y zS = 26.4 > - = zI, respectivamente (ii), y sus
valores ptimos no se alcanzan para un punto factible del PE (iii).

Tenemos ahora dos vrtices no terminales y aplicando la regla de la mejor cota to-
mamos para ramificar el subproblema PL4, hacindolo sobre la variable x3. Para
ello, aadimos las restricciones x3 8 y x3 9 para formar los subproblemas
Tema 3. Programacin Lineal Entera Investigacin Operativa

con xPL6* = (0, 7.67, 8) con zPL6* = 39 y PL7 infactible.

PL7 es terminal, al ser infactible, mientras que PL6 no lo es, ya que no cumple las
mismas condiciones (i), (ii) y (iii).

Aplicamos la regla de la mejor cota para elegir entre PL5 y PL6 sobre quin
ramificar. Tomando PL6, ramificamos sobre la variable x2 aadiendo las restriccio-
nes x2 7 y x2 8 para formar los subproblemas

con xPL8* = (0, 7, 8) con zPL8* = 37 y PL9 infactible.


Tema 3. Programacin Lineal Entera Investigacin Operativa

Ambos problemas son terminales, el PL9 por ser infactible, y el PL8 por verificar
la condicin (iii), ya que su solucin ptima es factible para el PE y zS = 37 >- =
zI.

Hacemos zI = 37 (zS) y pasamos a sondear los subconjuntos que hasta este mo-
mento son no terminales. Si no es as, tendremos que ramificar a partir de ellos
para obtener nuevos subproblemas.

El nico subproblema no terminal que tenemos es PL5. Como ahora zS = 26.4


37 = zI, el subproblema pasa a ser terminal.

Finalmente, como todos los subproblemas han sido sondeados y no queda


ninguno no terminal, el algoritmo para, siendo la solucin ptima del PE

x* = (0, 7, 8), con z*=37.


Tema 3. Programacin Lineal Entera Investigacin Operativa

Aspectos computacionales

Eleccin de la variable sobre la que ramificar entre aqullas con valor


no entero de un subproblema dado.

No hay un criterio absoluto para tal eleccin, aunque s algunos que


pueden ser de ayuda en algunos casos, como son la seleccin de

la variable de menor ndice,


la de mayor valor no entero,
la que est ms lejos de ser entera, esto es, aquella cuya parte
fraccionaria est ms cerca de 0.5, o
el establecimiento de una jerarqua en las variables de acuerdo con
algn criterio, por ejemplo, de tipo econmico, ramificando sobre
aquella que se encuentre en el nivel ms alto de la jerarqua.

La experiencia parece confirmar que el ltimo criterio resulta ms efi-


caz.
Tema 3. Programacin Lineal Entera Investigacin Operativa

Inicializacin de la cota inferior para el objetivo del PE se toma igual


a - o a una cantidad negativa muy grande.

Puede ser til invertir algo de tiempo en buscar una solucin factible
entera que nos proporcione una cota inicial zI para el problema, a partir
de la cual podamos obtener subconjuntos terminales ms rpidamente
(de la condicin (ii)).

Por otro lado, desde un punto de vista global, el nmero de ramificacio-


nes, tanto en profundidad como en amplitud, que pueden surgir puede
ser elevado, lo que nos llevar a un mayor nmero de iteraciones. En
este sentido, la eleccin del vrtice sobre el que ramificar juega un
papel importante.

Aunque no hay una respuesta definitiva a este punto, la regla de la


mejor cota es computacionalmente ms atractiva ya que en general
minimiza el nmero de iteraciones del algoritmo.
Tema 3. Programacin Lineal Entera Investigacin Operativa

En problemas de gran tamao podemos conformarnos con una solucin


prxima a la ptima, lo que suele suponer un gran ahorro computacional
en el proceso.

Si en alguna etapa del proceso el valor zS para la solucin del problema


es ligeramente mayor que la actual cota inferior zI, posiblemente sea
pequea la mejora que se puede obtener en la solucin actual frente al
posible gasto computacional para alcanzar la solucin ptima.

Como norma se suele considerar vlida la aproximacin si

(zS - zI)/zS ,
con 0.003.
Tema 3. Programacin Lineal Entera Investigacin Operativa

5. Programacin entera mixta

En estos problemas algunas de las variables de decisin que se


consideran pueden tomar valores reales, mientras que otras slo
pueden tomar valores enteros.

El algoritmo de ramificacin y acotacin es aplicable a estos problemas


mixtos, salvo que en este caso no se ramifica sobre las variables que
son reales.

En todo caso, la solucin obtenida con el algoritmo de ramificacin y


acotacin ser la solucin ptima para el programa mixto, ya que las
variables que toman valores reales aparecen en el problema lineal
relajado y en todos los problemas subsecuentes.
Tema 3. Programacin Lineal Entera Investigacin Operativa

Ejercicios. Algoritmo de ramificacin y acotacin

1. Obtener la solucin ptima del siguiente problema de programacin


entera pura utilizando el algoritmo de ramificacin y acotacin:
Tema 3. Programacin Lineal Entera Investigacin Operativa

2. Obtener la solucin ptima del siguiente problema de programacin


entera mixta utilizando el algoritmo de ramificacin y acotacin:
Tema 3. Programacin Lineal Entera Investigacin Operativa

6. Programacin 0-1

Hay problemas en programacin entera en los que todas o algunas de


las variables de decisin pueden tomar nicamente los valores 0 1
(variables 0-1), denominndose programas 0-1.

La aplicacin del algoritmo de ramificacin y acotacin a estos


problemas es vlida. Sin embargo, se han desarrollado mtodos cuya
aplicacin se puede llevar a cabo de forma ms eficiente, simplificando
la determinacin de cotas.

Algoritmo aditivo (1965) requiere que el problema 0-1 est expresado


en la forma de minimizacin con todos sus coeficientes no negativos y
con todas las restricciones del tipo , que se convierten posteriormente
en ecuaciones introduciendo variables de holgura, ver Taha (1997).
Tema 3. Programacin Lineal Entera Investigacin Operativa

Otro algoritmo, en el que los coeficientes de la funcin objetivo z = cTx


verifican la condicin

0 c1 c2 cn.

Para cualquier problema de programacin lineal 0-1, se puede construir


otro problema lineal 0-1 equivalente cuya funcin objetivo verifica la
condicin anterior, supuesto que se han reordenado las variables para
tener los coeficientes en orden creciente de magnitud haciendo

xj = yi para aquellas variables con coeficientes cj 0 y


xj = 1 - yi para aqullas con coeficientes cj < 0.
Tema 3. Programacin Lineal Entera Investigacin Operativa

Ejemplo. Consideremos el problema

Ordenamos los sumandos de la funcin objetivo en orden creciente de magnitud


(ignorando el signo) y tenemos
z = x4 - 2x3 - 3x2 + 4x1.

Hacemos los cambios de variable x4 = y1, x3 = 1 - y2, x2 = 1 - y3 y x1 = y4, y


sustituimos en la funcin objetivo y restricciones, obteniendo
Tema 3. Programacin Lineal Entera Investigacin Operativa

La aplicacin del algoritmo de ramificacin y acotacin con algunas mo-


dificaciones especficas a problemas lineales 0-1 permite mayor rapidez
en el proceso de clculo.
Consideramos el siguiente problema (PE) con los coeficientes de la
funcin objetivo positivos y en orden creciente de magnitud.

y sea F su cjto factible ignorando que las variables tomen valores 0 1.


Consideramos el problema relajado del PE, pero en este caso, en lugar
de prescindir de las condiciones de que las variables sean enteras, man-
tenemos stas y prescindimos del resto de restricciones del problema,
quedando como conjunto factible del problema relajado

H = {(x1, x2, x3): xj = 0 1, j = 1,2,3}.


Tema 3. Programacin Lineal Entera Investigacin Operativa

As, el problema relajado (PR) ser

La solucin ptima del problema PR es el punto x = (1, 1, 1), al ser todos


los coeficientes no negativos.

Si dicho punto es factible para el PE, es decir, si satisface las


restricciones del problema original, tal punto ser la solucin ptima.

Si no es as, seguimos con el mtodo de solucin asignando como cota


inferior zI del valor del objetivo del PE un valor 0, correspondiente al
punto x = (0, 0, 0).
A continuacin, eliminamos subconjuntos de H que no pueden contener
la solucin ptima del PE se generan soluciones en H para
subproblemas y se comprueba si stas tambin estn en F.
Tema 3. Programacin Lineal Entera Investigacin Operativa

Para ramificar tomamos arbitrariamente la variable x1 y determinamos


una cota superior del valor del objetivo para los problemas obtenidos

Las cotas superiores del valor ptimo del objetivo de cada


subproblema se obtienen evaluando la funcin objetivo en los puntos
(0,1,1) y (1,1,1), dando zS = 8 y zS = 10, respectivamente.

Ntese que el valor objetivo para cualquier punto en H, as como en F


con x1 = 1, no podr ser mayor que zS = 10.
El siguiente paso consiste en comprobar si los subproblemas PR1 y PR2
son terminales. Para ello, comenzamos viendo si son infactibles. Para
PR1 calculamos todas las posibles soluciones (con x1 = 0), que son
Tema 3. Programacin Lineal Entera Investigacin Operativa

Si tomamos nicamente x1 = 0, llamamos solucin parcial a aquella en


la que quedan sin precisar los valores de las variables x2 y x3, y la
denotaremos como (0, - , - ).

Cuando se especifiquen valores para las variables x2 y x3, decimos que


se tiene una complecin de la solucin parcial, y si adems sta es
factible, se denomina complecin factible.

Comprobamos ahora si hay compleciones factibles para la solucin


parcial con x1 = 0 en el PR1 y para x1 = 1 en PR2. Para ello, evaluamos
si satisfacen las restricciones en F.
Tema 3. Programacin Lineal Entera Investigacin Operativa

PR1 no es infactible, ya que hay alguna complecin de la solucin


parcial (0, -, -) que satisface las restricciones.
Como zS = 8 > 0 = zI, PR1 satisface ii). Respecto a iii), debemos
comprobar si el punto (0, 1, 1) utilizado para obtener la cota superior
de PR1 es factible. Como no es as, podemos concluir el sondeo
afirmando que PR1 no es terminal.

PR2 es infactible terminal


Nueva iteracin ramificando el subproblema PR1 sobre la variable x2,
elegida arbitrariamente. Formamos dos nuevos subproblemas, PR3
(aadiendo la restriccin x2 = 0) y PR4 (aadiendo la restriccin x2 = 1),
con cotas superiores 4 y 8 para el valor objetivo, respectivamente.
Tema 3. Programacin Lineal Entera Investigacin Operativa

PR4, con solucin parcial (0,1,-), es infactible terminal

PR3, con solucin parcial (0, 0, -), no es infactible.

Adems, para PR3, zS = 4 > 0 = zI, pero el punto (0,0,1), que ha dado
lugar a la cota superior en este subproblema, es factible y, por tanto,
posible solucin del PE, siendo zI = 4 la nueva cota inferior y pasando
el subproblema a ser terminal.

Todos los problemas han sido sondeados y son terminales la solu-


cin ptima es la correspondiente a PR3, es decir,

x*=(0,0,1), con z* = 4.
Tema 3. Programacin Lineal Entera Investigacin Operativa

Algoritmo 0-1
Tema 3. Programacin Lineal Entera Investigacin Operativa

Algoritmo 0-1
Tema 3. Programacin Lineal Entera Investigacin Operativa

Ejemplo. Apliquemos el algoritmo al programa del ejemplo anterior (notemos que


inicialmente se ha prescindido de la constante -5)

Paso 0. Comprobamos que x = 1 es infactible, ya que no satisface la segunda res-


triccin. Determinamos una cota inferior para el valor del objetivo, zI = z(0) = 0, y
una cota superior el valor de la funcin objetivo en xS = (0, 1, 1, 1), zS = 2 + 3 +
4 = 9.

Paso 1. Ramificamos sobre x1, obteniendo los subproblemas PR1 y PR2.


Tema 3. Programacin Lineal Entera Investigacin Operativa

Ambos no son terminales, luego ramificamos sobre PR2, al tener mayor valor para
su cota superior, y obtenemos los subproblemas PR3 y PR4.
Tema 3. Programacin Lineal Entera Investigacin Operativa

PR4 es terminal por la condicin iii), ya que el punto


(1,1,0,1), utilizado para obtener la cota superior, es
factible para el PE y as, la cota inferior se actualiza y
pasa a ser zI = 7. PR3 es terminal por ii).
Tema 3. Programacin Lineal Entera Investigacin Operativa

Volvemos a PR1 para ramificar sobre l. Como


hemos actualizado la cota inferior lo sondeamos
nuevamente y vemos que zS = 7 7 = zI terminal.
Tema 3. Programacin Lineal Entera Investigacin Operativa

Ejercicio. Algoritmo de ramificacin y acotacin para programas 0-1

Obtener la solucin ptima del siguiente problema de


programacin entera 0-1
Tema 3. Programacin Lineal Entera Investigacin Operativa

7. Mtodos de los planos de corte

El mtodo de los planos de corte fue inicialmente propuesto por Gomo-


ry al final de los aos cincuenta del siglo pasado.

Consiste en ir resolviendo una sucesin de problemas de optimizacin


de programacin lineal relajados con una regin factible cada vez ms
restringida hasta alcanzar una solucin ptima con valores enteros.

De esta manera, si la solucin xo ptima del programa lineal relajado no


tiene todas sus componentes enteras, es posible obtener una desigual-
dad (corte o restriccin) vlida para la regin factible del problema
entero que no la verifique dicha solucin.

Tal desigualdad se aade al programa lineal, obteniendo as una regin


factible ms reducida, y se repite sucesivamente este paso hasta
alcanzar, si existe, una solucin con valores enteros.
Tema 3. Programacin Lineal Entera Investigacin Operativa

Ejemplo. Consideremos el problema de programacin lineal entera:

La solucin ptima del problema relajado (PR) es x1*=0.85 y x2*=2.85, con z*=
6.67, que se corresponde con el punto P de la siguiente figura
Tema 3. Programacin Lineal Entera Investigacin Operativa

Introduciendo variables de holgura s1 y s2 en las restricciones, obtenemos

4x1 + 3x2 + s1 = 12 -x1 + x2 + s2 = 2

donde, al ser x1 y x2 enteras, tambin deben serlo s1 y s2.

Podemos expresar x1 y x2 en funcin de s1 y s2

x1 = 6/7 -(1/7)s1 + (3/7)s2, x2 = 20/7 -(1/7)s1 - (4/7)s2

y si x1 y s1 son enteros, deber serlo tambin x1 + s1 = (6/7) + (6/7)s1 + (3/7)s2.

Como s1,s2 0, el primer entero posible es 1, y por ello deber ser (6/7)s1 +
(3/7)s2 1/7, que es la expresin del corte como funcin de s1 y s2.

Como funcin de x1 y x2, el corte debe tener la forma

21x1 + 21x2 77,

denominado corte de Gomory, que no lo verifica el punto P.


Tema 3. Programacin Lineal Entera Investigacin Operativa

Aadimos esta restriccin al problema y procedemos de nuevo de forma


anloga, resolviendo el problema lineal relajado, con solucin ptima x1*=0.83 y
x2*=2.83, con z*=6.5.

Al no ser entera, introducimos tres variables de holgura s1, s2 y s3, y determina-


mos un nuevo corte de Gomory.

Paso a paso se van aadiendo nuevos cortes hasta llegar a una solucin del
problema relajado asociado que sea entera y que, por tanto, ser la solucin
ptima del problema original.
Tema 3. Programacin Lineal Entera Investigacin Operativa

Mtodo de los cortes fraccionales

Consideremos el problema de programacin lineal entera (PE) en forma


estndar

(6.1)

Este mtodo est basado en el algoritmo del smplex dual y toma como
corte asociado a una variable (bsica) xi, la desigualdad

y xi bsica (iB) en la tabla ptima del smplex para el PR, con xio
valor ptimo de xi (mediante Lx_I designamos la parte entera de x).
Tema 3. Programacin Lineal Entera Investigacin Operativa

Teorema. Toda solucin factible del problema (6.1) verifica la restric-


cin

Ntese tambin que la solucin ptima del problema relajado no satis-


face el corte asociado a xi si xio no es un valor entero, ya que en ese
caso

obtenindose una contradiccin.


Tema 3. Programacin Lineal Entera Investigacin Operativa

Algoritmo
Tema 3. Programacin Lineal Entera Investigacin Operativa

Algoritmo
Tema 3. Programacin Lineal Entera Investigacin Operativa

Ejemplo. Apliquemos el algoritmo anterior al programa entero que se us en el ejem-


plo anterior:

Paso 0. Resolvemos el problema relajado mediante el mtodo del smplex, obtenien-


do la siguiente tabla ptima (x3 y x4 son variables de holgura)

con solucin x1o = 6/7 y x2o = 20/7.

Paso 1. Como xo no es entera, vamos al Paso 2.


Tema 3. Programacin Lineal Entera Investigacin Operativa

Paso 2. Calculamos

fpo = min{ f1o=6/7-6/7, f2o=20/7-20/7} = min{6/7, 6/7} = 6/7

y puesto que coinciden, tomamos arbitrariamente f2o, siendo, por tanto, p=2 la fila
fuente.

Paso 3. Formamos el corte -(1/7)x3 -(4/7)x4 + x5 = -6/7, con x5 variable de holgura.


Aadimos esta restriccin a la tabla:

Paso 4. Aplicamos el mtodo del smplex dual, obteniendo la siguiente tabla:


Tema 3. Programacin Lineal Entera Investigacin Operativa

con solucin ptima x11 = 3/2 y x21 = 2. Volvemos al paso 1.

Paso 1. Como x11 = 3/2 no es entero, ir al Paso 2, siendo la fila fuente la primera.

Paso 3. Formamos el corte -(1/4)x3 + (3/4)x5 + x6 = -1/2, con x6 variable de holgura.


Aadimos la restriccin a la tabla anterior y obtenemos:
Tema 3. Programacin Lineal Entera Investigacin Operativa

Paso 4. Aplicamos el mtodo del smplex dual, obteniendo la siguiente tabla:

con solucin ptima x12 = 1 y x22 = 2. Volvemos al paso 1.

Paso 1. Como xj2 es entera para j = 1,2, x* = (1, 2) es la solucin ptima con
z* = 5.
Tema 3. Programacin Lineal Entera Investigacin Operativa

Existe una familia de mtodos de planos de corte que bajo ciertas


condiciones, permiten construir algoritmos finitos para el problema
entero general.

Por ejemplo, el mtodo entero de Gomory surge como alternativa al


fraccionario con el fin de evitar los errores de redondeo que se
producen en ste, para lo cual los coeficientes de los planos de corte
debern ser enteros.

Sin embargo, estos algoritmos se han utilizado muy poco en


problemas prcticos por el elevado nmero de cortes necesarios para
la convergencia.

Esto ha motivado investigaciones hacia un nuevo planteamiento del


problema introduciendo algoritmos denominados de planos de corte
fuertes, que utilizan cortes que son fuertes en el sentido de que
definen caras de la cpsula convexa de la regin factible del problema
entero, con resultados prcticos ms prometedores.
Tema 3. Programacin Lineal Entera Investigacin Operativa

Tambin se han combinado los cortes de Gomory con los mtodos de


ramificacin y acotacin, aunque los resultados tampoco han sido
satisfactorios.

Como consecuencia, se han desarrollado tambin algunas heursticas


bastante eficientes que han dado lugar a mtodos que permiten la
solucin de problemas concretos en un tiempo sensiblemente inferior.
Tema 3. Programacin Lineal Entera Investigacin Operativa

Ejercicio. Mtodo de los cortes fraccionales de Gomory

Obtener la solucin ptima del siguiente problema de


programacin lineal entera mediante el mtodo de los cortes
fraccionales de Gomory
Resolver por Ramificacin y Acotacin
Resolver por planos de corte fraccionales
Resolver por planos de corte fraccionales