Você está na página 1de 32

105

CA P T U L O 4
P ROGRAMACI N E NT E RA


4.1. Introduccin a la Programacin Lineal Entera (PLE)
Los primeros intentos para resolver un problema de programacin lineal entera
surgieron de la metodologa utilizada en la resolucin de problemas de
programacin lineal. El primer algoritmo finito fue dado por R. Gomory y se
denomin Mtodo de los planos de corte.
Los avances tericos en la resolucin de programacin lineal entera han sido
importantes, si bien no se ha visto correspondido en la eficacia del cmputo. Esto
es debido a los errores de redondeo cometidos en las sucesivas iteraciones y
acumulados en el cmputo que realizan los ordenadores.
Un problema de Programacin Entera es un problema de programacin lineal
en el cual algunas de las variables, o todas, tienen que ser nmeros enteros no
negativos. El objetivo de la Programacin Lineal Entera es encontrar el valor de la
funcin que

Max (Min) z = c
1
x
1
+ c
2
x
2
+ + c
n
x
n


denominada funcin objetivo.
La funcin objetivo se encuentra sujeta a una serie de restricciones:

a
11
x
1
+ a
12
x
2
+ + a
1n
x
n
( s, >, =) b
1

a
21
x
1
+ a
22
x
2
+ + a
2n
x
n
( s, >, =) b
2

.
a
m1
x
1
+ a
m2
x
2
+ + a
mn
x
n
( s, >, =) b
m

x
j
> 0 (j=1, 2, ...., n)
x
j
entero

106 Investigacin Operativa

Cuando se nos presente la resolucin de un Problema de Programacin Entera,
lo resolvemos como un problema de Programacin Lineal. Si sus soluciones son
enteras, sta es la solucin para el problema de programacin lineal entera.
En cualquier problema se verifica que la solucin ptima
z
op
(PL) > z
op
(PLE)
sta relacin se cumple siempre porque cualquier solucin factible para un
problema de PLE es tambin una solucin factible para la su relajacin lineal (PL).
Definicin 4.1. El problema de programacin lineal que se obtiene al omitir
todas las restricciones enteras variables 0-1 se llama relajacin de programacin
lineal para la programacin entera.
Definicin 4.2. Criterio de optimalidad en un problema de PLE: Una
solucin entera factible x
F
es ptima para el problema de PLE si es solucin ptima
de una relajacin lineal. En tal caso se cumple que z
op
(PL) = z
op
(PLE)=z
F

Un problema de programacin entera en el cual solamente algunas de las
variables tienen que ser nmeros enteros, se llama un problema de programacin
entera mixta. Por ejemplo
5
2 3 max
2 1
2 1
s +
+ =
x x st
x x z

entero ; 0 ,
1 2 1
x x x >

Un problema de programacin entera en el cual todas las variables toman
valores 0 1, se denomina problema de programacin entera 0-1 (programacin
lineal binaria).
La relajacin de programacin lineal para la programacin mixta del ejemplo
anterior es:
0 ,
5
2 3 max
2 1
2 1
2 1
>
s +
+ =
x x
x x st
x x z


Por lo tanto, la relajacin programacin lineal es una versin menos
restringida, o ms relajada, de la programacin entera.
Esto significa que la regin factible para cualquier programacin entera tiene
que estar incluida en la regin factible de la relajacin programacin lineal
correspondiente.
Programacin Lineal Entera 107


4.2. Restricciones
A menudo, cuando tenemos que plantear un problema de programacin
matemtica, se nos presentan enunciados en los que figura la condicin:

i) o bien (una o la otra).
Esto supone una formulacin del tipo
f(x
1
, x
2
,, x
n
) s 0

g(x
1
, x
2
,, x
n
) s 0
Para implementar esta condicin, se toma una variable binaria, 0-1, y un
valor M suficientemente grande para asegurar el cumplimiento de las restricciones
f(x
1
, x
2
,, x
n
) s M y g(x
1
, x
2
,, x
n
) s M, adems de las otras restricciones del
problema.
f(x
1
, x
2
,, x
n
) s My
g(x
1
, x
2
,, x
n
) s M(1-y)
y = 0, 1
Podemos ver que si y = 0, la restriccin f(x
1
, x
2
,, x
n
) s 0, se cumple. La
restriccin g(x
1
, x
2
,, x
n
) s M puede cumplirse, pero no lo sabemos.
Para y= 1, la restriccin f(x
1
, x
2
,, x
n
) s M puede cumplirse y g(x
1
, x
2
,, x
n
)s
0 se cumple.
ii) si entonces(condicional)
En este tipo de restricciones se desea estar seguro de que se satisface la
restriccin g(x
1
, x
2
,, x
n
) > 0 si se satisface la restriccin f(x
1
, x
2
,, x
n
) > 0.
Para implementar el caso anterior, tomando un valor M suficientemente grande,
introducimos una variable binaria, 0-1, y cambiamos los signos en las
desigualdades, dando como resultado la formulacin siguiente:
f(x
1
, x
2
,, x
n
) s M(1-y) (es un artificio esta formulacin)
- g(x
1
, x
2
,, x
n
) s My
y = 0, 1
Para f(x
1
, x
2
,, x
n
) > 0, y = 0, tenemos
108 Investigacin Operativa

f(x
1
, x
2
,, x
n
) s M, se cumple
- g(x
1
, x
2
,, x
n
) s 0, se cumple
Para f(x
1
, x
2
,, x
n
) > 0, y = 1, tenemos
f(x
1
, x
2
,, x
n
) s 0
- g(x
1
, x
2
,, x
n
) s M
Si no se satisface f(x
1
, x
2
,, x
n
) > 0, los x
j
(1=1, 2, ..., n) no tienen
restricciones y tanto g(x
1
, x
2
,, x
n
) < 0 como g(x
1
, x
2
,, x
n
) > M son posibles.
4.3. Programacin lineal general con enteros
La Programacin Lineal estndar asume que las variables de decisin son
continuas. Sin embargo, en muchas aplicaciones, los valores fraccionarios pueden
no tener sentido, por ejemplo 9/2 trabajadores. Los problemas de programacin
lineal con enteros son ms difciles de resolver que los de programacin lineal
continua. Por qu no resolver todos los problemas como problemas de
programacin lineal estndar y redondear las respuestas a los enteros ms
cercanos? Desafortunadamente, esto genera dos problemas:
- La solucin redondeada puede no ser factible.
- El redondeo puede no dar una solucin ptima.
Por lo tanto, el redondeo de resultados de programacin lineal puede
proporcionar respuestas razonables, pero, para garantizar soluciones ptimas,
debemos aplicar programacin lineal con enteros. Por defecto, el software LINDO
de Programacin Lineal asume que todas las variables son continuas. Para
problemas de Programacin Lineal Entera, deberemos utilizar la sentencia de
entero general, GIN. GIN, seguida de un nombre de variable, restringe el valor de
la variable a los enteros no negativos (0, 1, 2,). El siguiente ejemplo ilustra el
uso de la sentencia GIN.
Max 11X1 + 10X2
st 2X1 + X2 s 12
X1 - 3X2 > 1
END
GIN X1
GIN X2

La salida despus de siete iteraciones es:
Programacin Lineal Entera 109



VALOR DE LA FUNCION OBJETIVO

1) 66.00000

VARIABLE VALOR COSTE REDUCIDO
X1 6.000000 -11.000000
X2 0.000000 -10.000000

FILA HOLGURA O EXCEDENTE
2) 0.000000
3) 5.000000

Si no hubiramos especificado X1 y X2 como enteros generales en este
modelo, LINDO no habra hallado la solucin ptima de X1 = 6 y X2 = 0. En
cambio, LINDO habra considerado a X1 y X2 como continuos y habra llegado a
la solucin X1 = 5.29 y X2 = 1.43.
Obsrvese, asimismo, que el simple redondeo de la solucin continua a los
valores enteros ms prximos no da la solucin ptima en este ejemplo. En
general, las soluciones continuas redondeadas pueden no ser las ptimas y, en el
peor de los casos, no son factibles. Sobre esta base, uno se puede imaginar que
puede requerir mucho tiempo obtener la solucin ptima en un modelo con muchas
variables de enteros. En general, esto es as, y convendr utilizar la caracterstica
GIN slo cuando es absolutamente necesario.
Como ltimo comentario, el comando GIN tambin acepta un argumento de
valor entero en lugar de un nombre de variable. El nmero corresponde al nmero
de variables que uno desea que sean enteros generales. Estas variables deben
aparecer primero en la formulacin. De tal modo, en este ejemplo sencillo,
podramos haber reemplazado las dos sentencias GIN por la nica sentencia GIN 2.
Veamos ahora un ejemplo con restricciones del tipo "Y-O".
Supongamos que una panadera vende seis variedades de rosquillas. La
preparacin de las variedades 1, 2 y 3 implica un proceso bastante complicado, por
lo que la panadera decidi que no les conviene hornear estas variedades, a menos
que pueda hornear y vender por lo menos 10 docenas de las variedades 1, 2 y 3 de
forma conjunta. La capacidad de la panadera limita el nmero total de rosquillas
horneadas a 30 docenas, y el beneficio por unidad de la variedad j es c
j
euros. Se
supone que la panadera consigue vender todo lo que hornea.
Denotando por x
j
, (j = 1, 2, , 6) el nmero de docenas de la variedad j que se
deben hornear.

Max z = E c
j
X
j

st E x
j
s 30
x
1
+ x
2
+ x
3
= 0, x
1
+ x
2
+ x
3
> 10

Estos problemas se suelen resolver introduciendo una variable binaria, y.
110 Investigacin Operativa

Max z = E c
j
X
j

st E x
j
s 30
x
1
+ x
2
+ x
3
- 10y s 0
x
1
+ x
2
+ x
3
- 10y> 10
y = 0, 1; X
j
> 0 (j=1, 2, ..., 6)
Un ejemplo de programacin lineal binaria escrito para el programa LINDO:

Max 11X1 + 9X2 + 8X3 + 15X4
st 4X1 + 3X2 + 2X3 + 5X4 s 8
END
INT X1
INT X2
INT X3
INT X4

Con el comando INT en LINDO se restringe la variable a 0 1. A estas
variables con frecuencia se las llama variables binarias. En muchas aplicaciones,
las variables binarias pueden ser muy tiles en situaciones de todo o nada. En los
ejemplos podemos considerar: asumir un coste fijo, construir una nueva planta o
comprar un nivel mnimo de algn recurso para recibir un descuento por cantidad,
etc.
La salida que proporciona LINDO da la solucin ptima y el valor ptimo
despus de ocho iteraciones utilizando el mtodo "Branch-and-Bound" (Ramificar
y Acotar).
Observe que, en lugar de repetir INT cuatro veces, se puede emplear INT 4.
Las primeras cuatro variables aparecieron en la funcin objetivo.

VALOR DE LA FUNCION OBJETIVO

1) 24.00000

VARIABLE VALOR COSTE REDUCIDO
X1 0.000000 -11.000000
X2 1.000000 -9.000000
X3 0.000000 -8.000000
X4 1.000000 -15.000000

FILA HOLGURA O EXCEDENTE PRECIOS DUALES
2) 0.000000 0.000000
N. DE ITERACIONES = 8

Programacin Lineal Entera 111


4.4.- Algoritmos de Gomory para la Programacin Lineal Entera
Dado un problema de programacin lineal entera
Max z = c
T
X
st
AX s b
X > 0
X entero
Estudiaremos dos mtodos para su resolucin: el mtodo fraccional y el entero
de Gomory.
4.4.1. Algoritmo fraccional de Gomory
Antes de iniciar su desarrollo, es necesario que todos los coeficientes que
aparecen en las restricciones sean enteros, esto se consigue multiplicando cada
restriccin por el mnimo comn mltiplo de los denominadores de los coeficientes
a
ij
y b
i
correspondientes a cada restriccin. Esto est motivado porque en el
desarrollo del algoritmo no se hace distincin entre las variables de decisin y de
holgura.
La funcin objetivo, escrita en funcin de las variables bsicas y no bsicas, es
z = c
i
y
i
+ c
j
w
j
(4.1)

=
m
1 i

=
n
1 j
Las variables bsicas y
i
(i=1, 2, ..., m) de cualquier tabla del simplex se pueden
escribir en la forma:
x
k
= y
k
+

o
k j
w
j
(tomando la fila k-sima de la tabla del simplex)
=
n
1 j
y
k
= x
k
- o
k j
w
j
(4.2)

=
n
1 j
siendo y
k
variable bsica y w
j
variable no bsica en la tabla del simplex, o
k j
, los
coeficientes de la j-sima variable no bsica en la k-sima fila y x
k
, la solucin para
y
k
.
Un nmero real puede expresarse como suma de su parte entera y su parte
fraccionaria
a = [a]+ f
a
, x
k
= [x
k
] + f
k
, o
i j
= [o
i j
] + f
ij

112 Investigacin Operativa

donde [a], parte entera, es el mayor entero menor o igual que a y f
a
verifica 0sf
a
<1.
Si x
k
no es entero y aplicamos la descomposicin anterior a la ecuacin (4.2),
tenemos:
y
k
= ([x
k
] + f
k
)-

([o
k j
] + f
kj
) w
j

=
n
1 j
de donde
f
k
-

f
kj
w
j
= y
k
- [x
k
] - [o
k j
] w
j

=
n
1 j

=
n
1 j
Teniendo en cuenta que todas las variables w
j
e y
k
deben ser enteras, el
segundo miembro de la igualdad ha de ser un nmero entero y, por tanto, el
primero tambin lo ser.
Operando, vemos que
f
k
-

f
kj
w
j
s f
k

=
n
1 j
ya que f
kj
>0, w
j
>0.
Como 0 s f
k
< 1 y f
k
- f
kj
w
j
ha de ser un nmero entero, al tener que ser
menor que uno, debe verificarse que

=
n
1 j
f
k
-

f
kj
w
j
s 0 f
k
s f
kj
w
j

=
n
1 j

=
n
1 j
Introduciendo una variable de holgura h
k
, se obtiene la restriccin
f
k
+ h
k
=

f
kj
w
j
-f
k
= - f
kj
w
j
+ h
k

=
n
1 j

=
n
1 j
que se denomina plano de corte.
Los planos de corte sern restricciones que nos permiten llegar a la solucin
entera ptima dentro de la regin factible.
Programacin Lineal Entera 113


Dada la ltima tabla del simplex de un problema de PL que proporciona el
programa LINDO escriba el plano de corte asociado a la variable x1:

ROW (BASIS) X1 X2 SLK 2 SLK 3 SLK 4
1 ART 0.000 0.000 0.500 0.000 0.250 7.750
2 X1 1.000 0.000 1.5 0.000 -0.25 2.250
3 SLK 3 0.000 0.000 -2.000 1.000 0.500 0.500
4 X2 0.000 1.000 -0.500 0.000 0.250 2.750

Solucin: -1/4=0.25=h
x1
-1/5h
1
-3/4h
3


9/4=2+1/4; f1=1/4
3/2=1+1/2; f
a12
=1/2
-1/4=-1+3/4; f
a14
=3/4

4.4.2. Algoritmo entero de Gomory
El algoritmo entero de Gomory surge como alternativa al algoritmo fraccional
en un intento de evitar los errores de redondeo presentados por ste. Para ello, los
coeficientes de los planos de corte que se construyan debern ser enteros. Para
desarrollar este mtodo, no es necesario resolver el problema de programacin
lineal, se partir de una tabla dual factible. Las variables no factibles y
i
(i=1, 2, ...,
m) de cualquier tabla del simplex, en cualquier iteracin, se pueden escribir en la
forma:
x
k
= y
k
+

o
k j
w
j
(tomando la fila k-sima de la tabla del simplex)
=
n
1 j
y
k
= x
k
- o
k j
w
j
(4.3)

=
n
1 j
siendo y
i
variable bsica y w
j
variable no bsica en la tabla del simples, o
k j
, los
coeficientes de la j-sima variable no bsica en la k-sima fila y x
k
, el valor de y
k

en la solucin no factible, es decir x
k
< 0.
Dividiendo (4.3) por un nmero real = 0 se tiene

j
n
j
kj
k k
w
x y

=
=
1

o


114 Investigacin Operativa

Teniendo en cuenta que todo nmero real puede expresarse como suma de su
parte entera y su parte fraccionaria
a = [a]+ f
a
, x
k
= [x
k
] + f
k
, o
i j
= [o
i j
] + f
ij

la expresin anterior se expresa

j
n
j
kj
kj
k
k
w f
x
y f

=
|
|
.
|

\
|
+
(

=
|
|
.
|

\
|
+
(

1
/ 1
1

o



operando


o

k
j
n
j
kj
k
x
w y s
(

+
(

=1
1

Teniendo en cuenta que todas las variables w
j
e y
k
deben ser enteras, el primer
miembro de la igualdad ha de ser un nmero entero y, por tanto,

(

s
(

+
(

=

o

k
j
n
j
kj
k
x
w y
1
1
(4.4.)
Multiplicando la expresin (4.3) por
(

1
tenemos

k j kj
n
j
k
x w y
(

s
(

+
(

=

o

1 1 1
1
(4.5)
Restando (4.5)-(4.4), se obtiene

(

>
|
|
.
|

\
|
(

=

o
o

k
k j
n
j
kj
kj
x
x w
1 1
1

Tomando > 1,
(

1
=0, e introduciendo una variable de holgura, h
k
, se tiene
la restriccin

(

= +
(

=

o
k
k j
n
j
kj
x
h w
1

Programacin Lineal Entera 115


y el plano de corte que deberemos incluir en las restricciones es

(

+
(

=

o
k
j
n
j
kj
k
x
w h ) (
1

Podemos observar que, tal como hemos construido el plano de corte, toda
solucin entera del problema verifica dicha restriccin.
4.5. Algoritmo de ramificar y acotar
En la prctica, la mayora de los problemas de programacin entera se
resuelven mediante el uso de la tcnica de ramificar y acotar.
Los mtodos de ramificar y acotar encuentran la solucin ptima para un
problema de programacin entera mediante la enumeracin eficiente de los puntos
en la regin factible.
Antes de explicar cmo funciona la ramificacin y el acotamiento, es necesario
hacer la siguiente observacin: si se resuelve un problema de programacin entera
mediante la relajacin de un problema de programacin lineal y se obtiene una
solucin en la cual todas las variables son nmeros enteros, entonces la solucin
ptima de la relajacin de programacin lineal ser tambin la solucin ptima de
programacin entera.
Le mtodo de ramificar y acotar consiste en descomponer el problema original
en una sucesin de subproblemas hasta identificar la solucin ptima.
Para darse cuenta de la validez de esta observacin, considrese el siguiente
problema de programacin entera:

6 2
2 3
2 1
2 1
s +
+ =
x x st
x x z Max
entero , ; 0 ,
2 1 2 1
x x x x >
La solucin ptima, considerndolo un problema de programacin lineal para
esta programacin entera, es
12 , 6 , 0
2 1
= = = z x x
116 Investigacin Operativa

Esta solucin da valores enteros a cada variable, la observacin anterior
implica que
12 , 6 , 0
2 1
= = = z x x
tambin es la solucin ptima para el problema de programacin entera.
Obsrvese que la regin factible para la programacin entera es un subconjunto
de todos los puntos en la regin factible de la relajacin por programacin lineal.
As, el valor ptimo de z para la programacin entera no puede ser mayor que
el valor ptimo de z para la relajacin de programacin lineal, es decir,
z
op
(PL) > z
op
(PLE)
Esto significa que el valor ptimo de z para la programacin entera debe ser
. 12 s z
Pero el punto 12 , 6 , 0
2 1
= = = z x
, 0
2 1
x es factible para la programacin entera y
tiene = z Por lo tanto, 12. 12 , 6 = = = z x x debe ser ptimo para la
programacin entera.

En forma resumida, los pasos del algoritmo Ramificar y Acotar, para un
problema de maximizacin, son:
1.- Definimos z como la cota inferior de la solucin entera ptima del problema
de programacin lineal entera. Hacemos inicialmente z = - e i = 0 (subproblema
i-simo).
2.- Estudio y ramificacin. Seleccione SPi (subproblema i-simo) como el
prximo subproblema por investigarse. Resuelva el SPi y trate de estudiarlo
utilizando las condiciones apropiadas.
Si el SPi se ha estudiado (solucin inferior, no factible o entera), actualice la
cota inferior z si se encuentra una mejor solucin del programacin lineal entera;
si no es as, seleccione un nuevo subproblema 1 y repita el paso 2. Si todos los
subproblemas se han investigado, detngase; la solucin ptima del problema de
PLE est asociada con la ltima cota inferior z, en caso de que sta exista.
Si no es as, si el SPi no est estudiado, siga con el paso 3 para efectuar la
ramificacin del SPi.
3.- Ramificacin. Seleccione una de las variables x
j
. cuyo valor ptimo x
*
j
en la
solucin del SPi no satisfaga la restriccin de valor entero. Elimine la regin [x
*
j

] <
Programacin Lineal Entera 117


x
j
< [x
*
j
] + 1 (donde [a] define al mayor entero s a), creando dos subproblemas SP
que correspondan a las dos siguientes restricciones mutuamente excluyentes:
x
j
< [x
*
j
] y x
j
> [x
*
j
] + 1 Volver al paso 2.
Resulta ms conveniente explicar los fundamentos del algoritmo de ramificar y
acotar mediante un ejemplo numrico.
Considere el siguiente problema de programacin lineal entera:
z = 5x
1
+ 4x
2

st
x
1
+ x
2
s 5
10x
1
+ 6x
2
s 45
x
1
, x
2
> 0 y enteras
El espacio de soluciones de PL asociado, SP0, se define por cancelacin de las
restricciones enteras. La solucin ptima SP0 da
x
1
= 3.75, x
2
= 1.25 y z = 23.75
El procedimiento ramificar y acotar se basa en tratar slo con el problema PL.
Como la solucin ptima no satisface la necesidad de valores enteros, el algoritmo
de ramificar y acotar exige ''modificar'' el espacio de soluciones PL en forma tal
que nos permita identificar, finalmente, la solucin ptima del problema de
programacin lineal entera. Primero, seleccionamos una de las variables cuyo
valor corriente en la solucin ptima SP0 infringe el requisito de valor entero.
Seleccionando x
1
= 3.75 arbitrariamente, observamos que la regin (3 < x
1
< 4) del
espacio de soluciones SP0 no puede, por definicin, incluir ninguna solucin
factible del problema de programacin lineal entera. Entonces, podemos modificar
el espacio de soluciones de PL eliminando esta regin no prometedora, lo que, en
realidad, es equivalente a reemplazar el espacio original SP0 por dos subproblemas
de programacin lineal, los SP1 y SP2, definidos de la manera siguiente:
1. Espacio SP1 = espacio SP0 + (x
1
s 3)
2. Espacio SP2 = espacio SP0 + (x
1
> 4)
Los dos espacios contienen los mismos puntos enteros factibles del modelo
programacin lineal entera. Esto significa que, desde el punto de vista del
problema original de programacin lineal entera, tratar con SP1 y SP2 es igual que
tratar con el subproblema original SP0. La diferencia principal es que la seleccin
de las nuevas restricciones de acotamiento (x
1
s 3 y x
1
> 4) mejorarn la
118 Investigacin Operativa

oportunidad de forzar a los puntos extremos ptimos de SP1 y SP2 hacia la
satisfaccin del requisito de valor entero. Adems, el hecho de que las restricciones
de acotamiento estn en la ''vecindad inmediata'' del ptimo continuo del SP0
incrementar las posibilidades de producir "buenas" soluciones enteras.
Las nuevas restricciones x
1
s 3 y x
1
> 4 son mutuamente excluyentes, SP1 y
SP2 deben tratarse como dos problemas de programacin lineal separados. Esto da
lugar al mtodo de ramificar y acotar. En efecto, ramificar significa subdividir un
espacio de soluciones en subespacios mutuamente excluyentes. Las ramas
asociadas se definen por las restricciones x
1
s 3 y x
1
> 4, donde x
1
se denomina
variable de ramificacin. La solucin ptima de la programacin lineal entera
debe encontrarse en el SP1 o en el SP2. Sin embargo, en ausencia del espacio
grfico de soluciones, no se sabe dnde puede encontrarse la solucin ptima, por
lo que la nica opcin es investigar ambos problemas. Se hace esto trabajando con
un problema SP1 o SP2. Escojamos arbitrariamente al SP1, asociado con x
1
s3. En
efecto, debemos resolver el siguiente problema:

Max z = 5x1 + 4x2
st
x
1
+ x
2
s 5
10x
1
+ 6x
2
s 45
x
1
s 3
x
1
, x
2
> 0
Como se indic antes, el SP1 es el mismo que el SP0 con la restriccin
adicional de acotamiento superior, x
1
s 3. As, podemos aplicar el mtodo simplex
de acotamiento superior para resolver el problema. Esto da la nueva solucin
ptima: x
1
= 3, x
2
= 2 y z = 23.
Como esta solucin satisface el requisito de valor entero, se dice que el SP1
est agotado, lo que significa que el SP1 no puede producir ninguna solucin mejor
de la programacin lineal entera y no necesita investigarse ms a fondo.
Determinar una solucin factible entera en una etapa temprana de los clculos
es crucial para incrementar la eficiencia del algoritmo Ramificar y Acotar. Tal
solucin fija una cota inferior al valor objetivo ptimo del problema programacin
lineal entera, que, a su vez, se puede usar para descartar automticamente
cualesquiera subproblemas no explorados (como el SP2) que no dan una mejor
solucin entera. En trminos de nuestro ejemplo, el SP1 produce la cota inferior z =
23. Esto significa que cualquier solucin entera mejorada debe tener un valor de z
mayor que 23. Sin embargo, como la solucin ptima del problema SP0 (original)
tiene z = 23.75 y como todos los coeficientes de la funcin objetivo son enteros, se
infiere que ningn subproblema que proceda del SP0 puede producir un valor de z
mejor que 23. En consecuencia, sin ulterior investigacin, podemos descartar al
Programacin Lineal Entera 119


SP2. En este caso se dice que el SP2 est agotado porque no puede dar una mejor
solucin entera.
Del anlisis anterior vemos que un subproblema est agotado si se satisface una
de las siguientes condiciones:
i) El subproblema da una solucin factible entera del problema programacin
lineal entera.
ii) El subproblema no puede dar una mejor solucin que la mejor cota inferior
disponible (valor de z) del problema programacin lineal entera. (Un caso
especial de esta condicin es que el subproblema no tendr ninguna solucin
factible)
Si la funcin objetivo ha de minimizarse, el procedimiento es el mismo,
excepto que se emplean cotas superiores. As, el valor de la primera solucin entera
se vuelve una cota superior para el problema y se eliminan los SPi cuando sus
valores z de primera aproximacin son mayores que la cota superior actual.

4.5.1. Consideraciones para los clculos
Siempre se realizan las bifurcaciones a partir de aquel programa que parece
estar ms cerca del valor optimo. Cuando existen varios candidatos para continuar
las bifurcaciones, se selecciona aquel que tenga el mayor valor z si se va a
maximizar la funcin objetivo, o aquel que tenga el menor valor z si se va a
minimizar la funcin objetivo.
Las restricciones adicionales se agregan una a una. Si una primera
aproximacin incluye a ms de una variable no entera, las nuevas restricciones se
imponen a aquella variable que est ms lejos de ser un entero; esto es, aquella
variable cuya parte fraccionaria est ms cerca de 0.5. En caso de empate, se
selecciona arbitrariamente una de las variables.
Finalmente, es posible que un programa entero o un programa lineal tengan
ms de una solucin optima.
Veamos, mediante un ejemplo, el mtodo de ramificar y acotar.

Max z= 8x1 + 5x2
st
x
1
+ x
2
s6
9x
1
+ 5x
2
s45
x
1
, x
2
> 0




120 Investigacin Operativa

SP0:
Max 8x1 + 5x2
st
x1 + x2 s 6
9x1 + 5x2 s 45
z= 41.25
x1 =3.75
x2 =2.25


x1>4 x1s 3


SP1=SP0+ x1>4

Max 8x1 + 5x2
st
x1 + x2 s 6
9x1 + 5x2 s 45
x1>4
SP2 =SP0+ x1s3

Max 8x1 + 5x2
st
x1 + x2 s 6
9x1 + 5x2 s 45
x1s 3
z= 41
x1 = 4
x2 =1.8
z= 39
x1 =3
x2 =3


x2>2 x2s1



SP3=SP1+ x2>2


NO FACTIBLE
SP4=SP1+ x2s1

Max 8x1 + 5x2
st
x1 + x2 s 6
9x1 + 5x2 s 45
x2s 1

------
z= 40,555
x1 =4,444
x2 =1



x1>5 x1s4
SP5=SP4+ x1> 5

Max 8x1 + 5x2
st
x1 + x2 s 6
9x1 + 5x2 s 45
SP6=SP1+ x1s 4

Max 8x1 + 5x2
st
x1 + x2 s 6
9x1 + 5x2 s 45


Programacin Lineal Entera 121


x1> 5 x1s 4
z
*
= 40
x1 =5
x2 =0
x= 37
x1 =4
x2 =1


dejando a un lado el requerimiento de que las variables sean enteras, se obtiene x
1
=
3.75, x
2
=2.25, con z = 41.25, como la solucin al problema de programacin lineal
asociado. Dado que x
1
est ms alejada de un valor entero que x
2
, la empleamos
para generar los subproblemas SP1 y SP2: x
1
>4 y x
1
s 3. Seguiremos ramificando
los subproblamas que nos han dado soluciones no enteras hasta agotar las posibles
ramificaciones. Todos aquellos subproblemas que nos den soluciones enteras
entrarn a formar parte del conjunto de soluciones candidatas a la solucin ptima,
en nuestro caso las soluciones candidatas nos las ofrecen los subproblemas: SP2
(z=39, x1=3, x2=3), SP5 (z=40, x1=5, x2=0) y SP6 (z=37, x1=4, x2=1); de todas
ellas tomaremos la que mayor valor tenga en la funcin objetivo SP5 (z=40, x1=5,
x2=0).
Resuelto el ejercicio anterior mediante LINDO, tenemos:
Max 8x1 + 5x2
st
x1 + x2 <= 6
9x1 + 5x2 <= 45

END
GIN 2

LP OPTIMUM FOUND AT STEP 2
OBJECTIVE VALUE = 41.2500000

SET X1 TO >= 4 AT 1, BND= 41.00 TWIN= 39.00 7
SET X2 TO <= 1 AT 2, BND= 40.56 TWIN=-0.1000E+31 9 (no factible)
SET X1 TO >= 5 AT 3, BND= 40.00 TWIN= 37.00 12

NEW INTEGER SOLUTION OF 40.0000000 AT BRANCH 3 PIVOT 12
BOUND ON OPTIMUM: 40.00000
DELETE X1 AT LEVEL 3
DELETE X2 AT LEVEL 2
DELETE X1 AT LEVEL 1
ENUMERATION COMPLETE. BRANCHES= 3 PIVOTS= 12

LAST INTEGER SOLUTION IS THE BEST FOUND
RE-INSTALLING BEST SOLUTION...

OBJECTIVE FUNCTION VALUE

1) 40.00000
122 Investigacin Operativa


VARIABLE VALUE REDUCED COST
X1 5.000000 -8.000000
X2 0.000000 -5.000000

ROW SLACK OR SURPLUS DUAL PRICES
2) 1.000000 0.000000
3) 0.000000 0.000000

NO. ITERATIONS= 12
BRANCHES= 3 DETERM.= 1.000E 0

Las expresiones:
SET X1 TO >= 4 AT 1, BND= 41.00 TWIN= 39.00 7 significa que la
mejor solucin para x1 > 4 es 41 y de 39 para x1 s 3.
NEW INTEGER SOLUTION OF 40.00 AT BRANCH 3 PIVOT 12, nos
indica que encontr la solucin optima en la tercera ramificacin (SET X1 TO
>= 5 AT 3, BND= 40.00 TWIN= 37.00 12).

Veamos otro ejemplo:

Max z = 3x
1
+ 4x
2

st 2x
1
+ x
2
<= 6
2x
1
+ 3x
2
<= 9
x
1
, x
2
no negativas y enteras

LP OPTIMUM FOUND AT STEP 2

OBJECTIVE FUNCTION VALUE

1) 12.75000

VARIABLE VALUE REDUCED COST
X1 2.250000 0.000000
X2 1.500000 0.000000

ROW SLACK OR SURPLUS DUAL PRICES
2) 0.000000 0.250000
3) 0.000000 1.250000

Planteando ahora los subproblemas, por el mtodo de ramificar y acotar,
tenemos:



Programacin Lineal Entera 123


SP1 SP2

Max z = 3x
1
+ 4x
2

st 2x
1
+ x
2
<=6
2x
1
+ 3x
2
<= 9
x
2
< =1
x
1
y x
2
no negativas y enteras

Max z = 3x
1
+ 4x
2

st 2x
1
+ x
2
s 6
2x
1
+ 3x
2
< 9
x
2
=> 2
x
1
y x
2
no negativas y enteras


LP OPTIMUM FOUND AT STEP 2

OBJECTIVE FUNCTION VALUE

1) 11.50000

VARIABLE VALUE REDUCED COST
X1 2.500000 0.000000
X2 1.000000 0.000000


ROW SLACK OR SURPLUS DUAL PRICES
2) 0.000000 1.500000
3) 1.000000 0.000000
4) 0.000000 2.500000

NO. ITERATIONS= 2
LP OPTIMUM FOUND AT STEP 1

OBJECTIVE FUNCTION VALUE

1) 12.50000

VARIABLE VALUE REDUCED COST
X1 1.500000 0.000000
X2 2.000000 0.000000


ROW SLACK OR SURPLUS DUAL PRICES
2) 1.000000 0.000000
3) 0.000000 1.500000
4) 0.000000 -0.500000

NO. ITERATIONS= 1

SP3 SP4

Max z = 3x
1
+ 4x
2

st 2x
1
+ x
2
s 6
2x
1
+ 3x
2
< 9
x
2
< = 1
x
1
< = 2
x
1
y x
2
no negativas y enteras


Max z = 3x
1
+ 4x
2

st 2x
1
+ x
2
< 6
2x
1
+ 3x
2
< 9
x
2
=>2
x
1
<= 2
x
1
y x
2
no negativas y enteras

LP OPTIMUM FOUND AT STEP 1

OBJECTIVE FUNCTION VALUE

1) 10.00000

VARIABLE VALUE REDUCED COST
X1 2.000000 0.000000
X2 1.000000 0.000000


ROW SLACK OR SURPLUS DUAL PRICES
2) 1.000000 0.000000
3) 2.000000 0.000000
4) 0.000000 4.000000
5) 0.000000 3.000000

NO. ITERATIONS= 1

LP OPTIMUM FOUND AT STEP 1

OBJECTIVE FUNCTION VALUE

1) 12.50000

VARIABLE VALUE REDUCED COST
X1 1.500000 0.000000
X2 2.000000 0.000000


ROW SLACK OR SURPLUS DUAL PRICES
2) 1.000000 0.000000
3) 0.000000 1.500000
4) 0.000000 -0.500000
5) 0.500000 0.000000

NO. ITERATIONS= 1



124 Investigacin Operativa

SP5 SP6
Max z = 3x
1
+ 4x
2

st 2x
1
+ x
2
< 6
2x
1
+ 3x
2
< 9
x
2
< = 1
x
1
>= 3
x
1
y x
2
no negativas y enteras
Max z = 3x
1
+ 4x
2

st 2x
1
+ x
2
< 6
2x
1
+ 3x
2
< 9
x
2
< = 2
x
1
>= 3
x
1
y x
2
no negativas y enteras

OBJECTIVE FUNCTION VALUE

1) 9.000000

VARIABLE VALUE REDUCED COST
X1 3.000000 0.000000
X2 0.000000 0.000000


ROW SLACK OR SURPLUS DUAL PRICES
2) 0.000000 4.000000
3) 3.000000 0.000000
4) 1.000000 0.000000
5) 0.000000 -5.000000

NO. ITERATIONS= 3


OBJECTIVE FUNCTION VALUE

1) 12.50000

VARIABLE VALUE REDUCED COST
X1 1.500000 0.000000
X2 2.000000 0.000000


ROW SLACK OR SURPLUS DUAL PRICES
2) 1.000000 0.000000
3) 0.000000 0.500000
4) 0.000000 -1.500000
5) -1.500000 -1.000000

NO. ITERATIONS= 2

4.6. Programacin lineal entera aplicada a la funcin lineal por trozos
En este apartado veremos cmo utilizar la programacin entera binaria para
modelar problemas de optimizacin en los que intervienen funciones lineales por
trozos.





x
1
x
2
x
3

Supongamos que una funcin lineal a trozos, f(x), tiene n puntos de ruptura x
1
,
x
2
,, x
n
. Para algn k (k=1, 2, ..., n-1), x
k
s x s x
k+1
, podemos formar una
combinacin lineal
Programacin Lineal Entera 125


x = o
k
x
k
+ (1- o
k
) x
k+1

f(x) = o
k
f(x
k
)+ (1- o
k
) f(x
k+1
)
f(x) =

o
i
f(x
i
) = z
=
n
1 i
Por tanto, si tenemos f(x) con n puntos de ruptura podemos plantear el
problema en el campo de la programacin lineal entera de la siguiente forma:
x =

o
i
x
i


f(x) =

o
i
f(x
i
)
=
n
1 i =
n
1 i
st

o
i
=1
=
n
1 i
Introducimos una variable binaria 0-1, y
i
= (0, 1), tal que
y
i
=1

=
1 n
1 i
o
1
s y
1

o
2
s y
1
+ y
2

o
3
s y
2
+ y
3


o
n-1
s y
n-2
+ y
n-1
o
n
s y
n-1

o
i
s 2

y
i

=
n
1 i

=
1 n
1 i
126 Investigacin Operativa

4.7. Problemas importantes que hacen uso de la programacin lineal
Dentro de este apartado estudiaremos problemas de programacin lineal muy
conocidos en este campo:
i) Problema de Transporte
ii) Problema de Asignacin
iii) Problema de Transbordo

4.7.1. Formulacin del Modelo de Transporte
La programacin lineal es un campo tan amplio que se extiende a tipos de
problemas para los cuales existen mtodos de solucin especiales. Uno de estos se
conoce como problema de transporte. El mtodo simplex de programacin lineal
puede servir para resolver estos problemas. Pero se han desarrollado mtodos ms
sencillos que aprovechan ciertas caractersticas de los problemas. Entonces, el
mtodo del transporte son slo tcnicas especiales para resolver ciertos tipos de
problemas de programacin lineal.
El transporte desempea un papel importante en la economa y en las
decisiones administrativas. Con frecuencia la disponibilidad de transporte
econmico es crtica para la supervivencia de una empresa.
Qu significa problema de transporte? Supngase que un fabricante tiene tres
plantas que producen el mismo producto. Estas plantas, a su vez, mandan el
producto a cuatro almacenes. Cada planta puede mandar productos a todos los
almacenes, pero el coste de transporte vara con las diferentes combinaciones. El
problema es determinar la cantidad que cada planta debe mandar a cada almacn
con el fin de minimizar el coste total de transporte.
La manera ms fcil de reconocer un problema de transporte es por su
naturaleza o estructura de-hacia: de un origen hacia un destino, de una fuente
hacia un usuario, del presente hacia el futuro, de aqu hacia all. Al afrontar este
tipo de problemas, la intuicin dice que debe haber una manera de obtener una
solucin. Se conocen las fuentes y los destinos, las capacidades y demandas y los
costes de cada trayectoria. Debe haber una combinacin ptima que minimice el
coste (o maximice la ganancia). La dificultad estriba en el gran nmero de
combinaciones posibles.
Puede formularse un problema de transporte como un problema de
programacin lineal y aplicarse el mtodo simplex. Si lo hiciramos,
encontraramos que los problemas de transporte tienen caractersticas matemticas
nicas.
Consideremos un conjunto de lugares que llamaremos orgenes y otro que
llamaremos destinos.
Programacin Lineal Entera 127


El problema de transporte, con m orgenes y n destinos, se puede dar en una
tabla:
Destino (b
j
)
Origen (a
i
) b
1
b
2
. b
n

a
1
c
11
/x
11
c
12
/x
12
c
1n
/x
1n

a
2
c
21
/x
21
c
22
/x
22
c
2n
/x
2n

. . . .
. . . .
a
m
c
m1
/x
m1
c
m2
/x
m2
c
mn
/x
mn

Los pasos a seguir para formular un problema de trasporte son:
1. Definicin de variables:
x
ij
= nmero de unidades que deseamos transportar del origen i-simo (oferta) al
destino j-simo (demanda)
c
ij
= coste de enviar una unidad del origen i-simo (oferta) al destino j-simo
(demanda)
2. Formulacin del problema de transporte:
Min z =

c
ij
x
ij

=
m
1 i

=
n
1 j
st
oferta i : x
ij
s a
i

=
n
1 j
demanda j : x
i j
> b
j

=
m
1 i
x
ij
> 0 i, j (i = 1, 2, ..., m; j = 1, 2, ...., n)

Cada modelo tiene tantas restricciones de oferta como el nmero de orgenes
(m) que existan y tantas restricciones de demanda como el nmero de destinos (n)
que existan.
Las restricciones de oferta garantizan que no se transportar ms de la cantidad
disponible en los orgenes y las restricciones de demanda garantizan que las
cantidades demandas sern satisfechas.
Siendo m el nmero de restricciones de oferta y n el nmero de restricciones de
demanda, en un Modelo de Transporte existir siempre, m x n variables en totaly
existir siempre m+n -1 variables bsicas y (mxn)- (m+n-1) no bsicas.
128 Investigacin Operativa



Dentro de este planteamiento podemos encontrar tres situaciones:

1.- Problema Balanceado(ofertas igual a las demandas):

a
i
= b
j
= A
=
m
1 i

=
n
1 j
2.- Las ofertas superan a las demandas:

a
i
> b
j

=
m
1 i

=
n
1 j
3.- Las demandas superan a las ofertas:

a
i
s b
j

=
m
1 i

=
n
1 j

Pasemos a estudiar cada uno de los casos expuestos:

1.- El primer caso es el estndar (balanceado) al que tenderemos siempre.

2.- En el caso 2 las ofertas superan a las demandas: a
i
> b
j

=
m
1 i

=
n
1 j
Para conseguir que el problema se convierta en un problema balanceado,
crearemos un destino ficticio.
Para el origen i-simo la oferta es: a
i
= x
ij
+ x
i0

=
n
j 1
La oferta total es A= a
i
=

x
ij
+ x
i0

=
m
i 1 =
m
i 1 =
n
j 1

=
m
i 1
Operando en la expresin anterior, tenemos
x
i0
= b
0
= a
i
-

b
j

=
m
i 1

=
m
i 1 =
n
j 1
donde x
i0
es el nmero de unidades que deseamos transportar desde el origen i-
simo (oferta) al destino ficticio, b
0
.
3.-En el caso 3 (las demandas superan a las ofertas): a
i
s b
j
, en este caso
generamos un a
0
(origen ficticio).

=
m
1 i

=
n
1 j
Programacin Lineal Entera 129


Para el destino j-simo la demanda es: b
j
= x
ij
+ x
0j

=
m
i 1
donde x
0j
es el nmero de unidades que deseamos transportar desde el origen
ficticio al destino j-simo.
b
j
= x
i j
+ x
0j

=
n
j 1

=
n
j 1

=
m
i 1

=
n
j 1
El origen ficticio oferta la cantidad
x
0j
= a
0
= b
j
- a
i

=
n
j 1

=
n
j 1

=
m
i 1
Teorema 6.1. Todo problema de transporte admite una solucin factible
acotada.
Demostracin
Consideraremos el caso balanceado, ya que todos se reducen a ste.
Definamos la variable: x
i j
=
A
b a
j i

Oferta i-sima :

=
n
j 1
A
b a
j i
=
A
a
i

=
n
j 1
b
j
=
A
a
i
A = a
i

Demanda j-sima :

=
m
i 1
A
b a
j i
=
A
b
j

=
m
i 1
a
i
=
A
b
j
A = b
j

Por tanto, admite una solucin factible que est acotada, x
i j
s min { a
i
, b
j
}.


4.7.2. Mtodos para encontrar soluciones factibles

Al iniciar, todos los renglones de los orgenes y las columnas de destinos de la
tabla simplex de transporte se toman en cuenta para proporcionar una variable
bsica (asignacin).
130 Investigacin Operativa

1. Se selecciona la siguiente variable bsica (asignacin) entre los renglones
y columnas en que todava se puede hacer una asignacin de acuerdo a
algn criterio.
2. Se hace una asignacin lo suficientemente grande como para que use el
resto de los recursos en ese rengln o la demanda restante en esa columna
(cualquiera que sea la cantidad ms pequea).
3. Se elimina ese rengln o columna (la que tena la cantidad ms pequea
en los recursos o demanda restantes) para las nuevas asignaciones. (Si la
fila y la columna tienen la misma cantidad de recursos y demanda
restante, entonces arbitrariamente se elimina el rengln. La columna se
usar despus para proporcionar una variable bsica degenerada, es
decir, una asignacin con cero unidades.)
4. Si slo queda un rengln o una columna dentro de las posibilidades,
entonces el procedimiento termina eligiendo como bsicas cada una de las
variables restantes (es decir, aquellas variables que no se han elegido ni se
han eliminado al quitar su rengln o columna) asociadas con ese rengln o
columna que tiene la nica asignacin posible. De otra manera se regresa
al paso 1.

Con el uso del ordenador, todos estos problemas se resuelven mediante el
software apropiado. Por ello mencionaremos, de forma resumida, dos mtodos para
resolver el problema del transporte: el mtodo de la esquina noroeste y el mtodo
de aproximacin de Vogel.

El Mtodo de la Esquina Noroeste: la primera eleccin es x
11
(es decir, se
comienza en la esquina noroeste de la tabla simplex de transporte). De ah en
adelante, si x
ij
fue la ltima variable bsica seleccionada, la siguiente eleccin es
x
i,j+1
(es decir, se mueve una columna a la derecha) si quedan recursos en el origen
i. De otra manera, se elige x
i+1,j
(es decir, se mueve un rengln hacia abajo).
Lo primero que debemos hacer al resolver cualquier problema de transporte es
comprobar que est balanceado; si no lo estuviera, agregamos un origen o un
destino artificial segn sea el caso para conseguir que el problema quede
balanceado y podamos comenzar a resolverlo.

El Mtodo de Aproximacin de Vogel: para cada rengln y columna que queda
bajo consideracin, se calcula su diferencia, que se define como la diferencia
aritmtica entre el coste unitario ms pequeo (c
ij
) y el que le sigue, de los que
quedan en ese rengln o columna. (Si se tiene un empate para el coste ms
pequeo de los restantes de un rengln o columna, entonces la diferencia es 0). En
el rengln o columna que tiene la mayor diferencia se elige la variable que tiene el
menor coste unitario que queda. (Los empates para la mayor de estas diferencias se
pueden romper de manera arbitraria).
Iniciamos el mtodo calculando las primeras diferencias para cada rengln y
columna.
Programacin Lineal Entera 131


El mtodo de aproximacin de Vogel ha sido el ms popular durante muchos
aos, en parte porque es relativamente fcil hacerlo a mano. Este criterio toma en
cuenta los costes unitarios en forma efectiva, ya que la diferencia representa el
mnimo coste adicional en que se incurre por no hacer una asignacin en la celda
que tiene el menor coste en esa columna o rengln.
Podemos decir que el mtodo de aproximacin de Vogel proporciona una
mejor solucin inicial que el criterio de la esquina noroeste, en otras palabras es
ms cualitativo.
La prueba de optimalidad estndar del mtodo simplex para el problema de
transporte se puede reducir de la siguiente manera:

Una solucin bsica factible es ptima si y slo si c
ij
u
i
v
j
> 0 para toda (i,j) tal
que x
ij
es no bsica.
As, lo nico que hay que hacer para realizar esta prueba es obtener los valores
de u
i
y v
j
para la solucin bsica factible actual y despus calcular los valores
c
ij
u
i
v
j
segn se describe enseguida. Como el valor de c
ij
u
i
v
j
debe ser cero si x
ij

es una variable bsica, u
i
y v
j
satisfacen el conjunto de ecuaciones:

c
ij
= u
i
+ v
j
para cada (i,j) tal que x
ij
es bsica.

Existen m+n1 variables bsicas y, por tanto, hay m+n1 ecuaciones de este
tipo. Como el nmero de incgnitas (las u
i
y v
j
) es m+n, se puede asignar un valor
arbitrario a cualquiera de estas variables sin violar las ecuaciones. La eleccin de
esta variable y su valor no afecta al valor de ningn c
ij
u
i
v
j
, aun cuando x
ij
sea no
bsica, por lo que la nica diferencia (menor) estriba en la facilidad para resolver
estas ecuaciones. Una eleccin conveniente para lograr esto es seleccionar la u
i
que
tiene el mayor nmero de asignaciones en su rengln (los empates se rompen de
manera arbitraria) y asignarle un valor de cero. Gracias a la sencilla estructura de
estas ecuaciones, resulta muy fcil obtener algebraicamente los valores del resto de
las variables.
Con el uso del ordenador, todos estos problemas se resuelven mediante el
software apropiado.


4.7.3. Problema de Asignacin

El problema de asignacin es un caso particular del problema del transporte.
En general, es un problema de transporte balanceado. Trabajaremos bajo distintos
supuestos acerca del nmero de sujetos y puestos de trabajo.

Definimos la variable x
ij
=

contrario caso en
j puesto el asigna le se i persona la a si
0
1
132 Investigacin Operativa


Supuesto 1: m = n.
Min z = c
ij
x
ij

=
m
1 i

=
m
1 j
s.t.
sujeto i-simo :

x
ij
= 1
=
m
1 j
puesto j-simo : x
i j
= 1

=
m
1 i
x
ij
> 0 i j

Supuesto 2: Asignacin mltiple
Sea a
i
= nmero de tareas, como mximo, que puede desarrollar el i-simo
individuo

Min z = c
ij
x
ij

=
m
1 i

=
m
1 j
s.t.
sujeto i :

x
ij
s a
i

=
m
1 j
puesto j :

x
i j
= 1
=
m
1 i
x
ij
> 0 , i j


Supuesto3. m=n. Analicemos el caso: m > n
Min z = c
ij
x
ij

=
m
1 i

=
n
j 1
s.t.
sujeto i :

x
ij
s 1, (i=1,2,..., m)
=
n
j 1
puesto j :

x
i j
= 1, (j=1,2,..., n)
=
m
1 i

x
ij
> 0 , i j
Para m < n
Programacin Lineal Entera 133


Min z =

c
ij
x
ij

=
m
1 i

=
n
j 1
s.t.
sujeto i :

x
ij
= 1, (i=1,2,..., m)
=
n
j 1
puesto j :

x
i j
s 1, (j=1,2,..., n)
=
m
1 i
x
ij
> 0 , i j

Veamos unos ejemplos que ilustren lo anterior.
Un buffet de abogados ha aceptado 5 nuevos casos, cada uno de los cuales
puede ser llevado adecuadamente por cualquiera de los cinco asociados ms
recientes. Debido a la diferencia de experiencia y prctica, los abogados emplearon
distintos tiempos en los casos. Uno de los asociados ms experimentados ha
estimado las necesidades de tiempo en horas como sigue:

Abogados Caso 1 Caso 2 Caso 3 Caso 4 Caso 5
1 145 122 130 95 115
2 80 63 85 48 78
3 121 107 93 69 85
4 118 83 116 80 105
5 97 75 120 80 111
Determine la forma ptima de asignar los casos a los abogados de manera que
cada uno de ellos se dedique a un caso diferente y que el tiempo total de los
empleados sea mnimo.
Definimos la variable x
ij
=

contrario caso en
j caso el asigna le se i abogado al si
0
1
Min z =145x
11
+ 122x
12
+ 130x
13
+ 95x
14
+ 130x
15
+ 80x
21
+ 63x
22
+ 85x
23
+
48x
24
+ 78x
25
+ 121x
31
+ 107x
32
+ 93x
33
+ 69x
34
+ 85x
35
+ 118x
41
+ 83x
42
+ 116x
43

+ 80x
44
+ 105x
45
+ 97x
51
+ 75x
52
+ 120x
53
+ 80x
54
+111x
55

st
x
11
+ x
12
+ x
13
+ x
14
+ x
15
= 1
x
21
+ x
22
+ x
23
+ x
24
+ x
25
= 1
x
31
+ x
32
+ x
33
+ x
34
+ x
35
= 1
x
41
+ x
42
+ x
43
+ x
44
+ x
45
= 1
x
51
+ x
52
+ x
53
+ x
54
+ x
55
= 1

134 Investigacin Operativa

x
11
+ x
21
+ x
31
+ x
41
+ x
51
= 1
x
12
+ x
22
+ x
32
+ x
42
+ x
52
= 1
x
13
+ x
23
+ x
33
+ x
43
+ x
53
= 1
x
14
+ x
24
+ x
34
+ x
44
+ x
54
= 1
x
15
+ x
25
+ x
35
+ x
45
+ x
55
= 1

x
ij
binarias (i, j=1, 2, ..., 5)

Llevado el planteaminto del problema a LINDO, tenemos:

LP OPTIMUM FOUND AT STEP 16
OBJECTIVE VALUE = 443.000000

FIX ALL VARS.( 16) WITH RC > 2.00000

NEW INTEGER SOLUTION OF 443.000000 AT BRANCH 0 PIVOT 16
BOUND ON OPTIMUM: 443.0000
LAST INTEGER SOLUTION IS THE BEST FOUND
RE-INSTALLING BEST SOLUTION...

OBJECTIVE FUNCTION VALUE

1) 443.0000

VARIABLE VALUE REDUCED COST
X11 0.000000 145.000000
X12 0.000000 122.000000
X13 1.000000 130.000000
X14 0.000000 95.000000
X15 0.000000 130.000000
X21 0.000000 80.000000
X22 0.000000 63.000000
X23 0.000000 85.000000
X24 1.000000 48.000000
X25 0.000000 78.000000
X31 0.000000 121.000000
X32 0.000000 107.000000
X33 0.000000 93.000000
X34 0.000000 69.000000
X35 1.000000 85.000000
X41 0.000000 118.000000
X42 1.000000 83.000000
X43 0.000000 116.000000
X44 0.000000 80.000000
X45 0.000000 105.000000
X51 1.000000 97.000000
X52 0.000000 75.000000
X53 0.000000 120.000000
X54 0.000000 80.000000
X55 0.000000 111.000000

Programacin Lineal Entera 135


En negrita se ha resaltado la solucin de la asignacin.
Otro ejemplo. Una tienda de autoservicio que funciona las 24 horas tiene los
siguientes requerimientos mnimos para los cajeros:
Periodo 1 2 3 4 5 6
Hora del da 3-7 7-11 11-15 15-19 19-23 23-3
N Mnimo 7 20 14 20 10 5

El perodo 1 sigue inmediatamente a continuacin del perodo 6. Un cajero
trabaja 8 horas consecutivas, empezando al inicio desde los 6 perodos.
Determnese qu grupo diario de empleados satisface las necesidades con el
mnimo de personal.
Definimos la variable x
i
= nmero de empleados que comienzan su labor al
inicio del perodo i-simo (i=1, 2, ..., 5)

Min z =x
1
+ x
2
+ x
3
+ x
4
+ x
5
+ x
6

st
x
1
+ x
2
> 20
x
2
+ x
3
> 14
x
3
+ x
4
> 20
x
4
+ x
5
> 10
x
5
+ x
6
> 5
x
1
+ x
6
> 7
x
1
, x
2
, x
3
, x
4
, x
5
, x
6
> 0


OBJECTIVE FUNCTION VALUE

1) 45.00000

VARIABLE VALUE REDUCED COST
X1 6.000000 0.000000
X2 14.000000 0.000000
X3 0.000000 0.000000
X4 20.000000 0.000000
X5 4.000000 0.000000
X6 1.000000 0.000000

ROW SLACK OR SURPLUS DUAL PRICES
2) 0.000000 -1.000000
3) 0.000000 0.000000
4) 0.000000 -1.000000
5) 14.000000 0.000000
6) 0.000000 -1.000000
7) 0.000000 0.000000

La solucin la recogemos en la tabla siguiente:
136 Investigacin Operativa

Periodo 1 2 3 4 5 6
Hora del da 3-7 7-11 11-15 15-19 19-23 23-3
N Mnimo 6 14 0 20 4 1

4.7.4. Problema de Transbordo

El problema de Transbordo es un caso ms general que el problema de
transporte. Los puntos de transbordo son aquellos puntos de paso que cumplen la
condicin de que lo que llega a un nodo tiene que salir de l.
El planteamiento del problema se hace atendiendo a lo anteriormente expuesto.
Min z = c
ij
x
ij
(se suman todos los arcos)

= =
n
j
m
i 1 1
st
orgenes: x
ij
- x
ij
s a
i
(arcos que salen - arcos que entran)

transbordo: x
ij
- x
ij
= 0 (puntos de transbordo)

destinos: x
ij
- x
ij
> b
j
(arcos que entran - arcos que salen)


4.7.5. El problema de la mochila

Existen multitud de variantes del problema de la mochila. En este caso, trataremos
con una variante del problema que se denomina Problema de la Mochila 0-1.
Supngase que se tiene n objetos distintos y una mochila. Cada uno de los
objetos tiene asociado un peso positivo w
i
y un valor positivo v
i
para i=1, 2, , n.
La mochila puede llevar un peso que no sobrepase la cantidad W. Teniendo en
cuenta estos datos, el objetivo del problema es llenar la mochila de tal forma que se
maximice el valor de los objetos transportados en ella. Hay que tener en cuenta que
la suma de los pesos de los objetos seleccionados no debe superar la capacidad
mxima W de la mochila. Por lo tanto, para obtener la solucin deseada, se debe
decidir para cada uno de los objetos, si se introduce o no en la mochila. Cada
objeto tiene asociado una variable x
i
que toma el valor 1 si el objeto se mete en la
mochila y 0 en caso contrario. Cualquier objeto se puede introducir en la mochila si
hay espacio para l, pero lo que no se puede hacer es transportar en ella una
fraccin o parte de un objeto. A este tipo de problemas en los que los objetos no
pueden ser fraccionados se les llama Problemas de la Mochila 0-1 o Entera.
Matemticamente el problema se puede formular como se muestra a continuacin:
Max z =
i
n
i
i
x v

=1
st
w
i
x
i
sW

=
n
i 1
v
i
, w
i
>0, x
i
e{0,1}, i=1, 2, ,n

Você também pode gostar