Professional Documents
Culture Documents
Sturla
REPBLICA ARGENTINA
PROGRAMACIN LINEAL
ENTERA
Se puede reproducir libremente. Se agradecer citar la fuente.
THE RECORDING, COPYING, LOAN, UNAUTHORIZED HIRE, PUBLIC SHOWING OR
BROADCAST OF THIS DATAGRAM IS STRONGLY ENCOURAGED.
Claudio L. R. Sturla
Bibliografa:
Hillier, Frederick S. y Lieberman, Gerald J. Introduccin a la Investigacin de Operaciones, 3
edicin en Castellano, McGraw Hill de Mxico S. A. de C. V., Naucalpan de Jurez, 1.993, ISBN
968-422-993-3.
Munier, Nolberto J., Aplicaciones de la Programacin Lineal, Editorial Astrea, Buenos Aires.
Taha, Amdy A., Investigacin de Operaciones, una Introduccin, Sexta Edicin, Prentice Hall,
Mxico, 1.998, ISBN 970-17-0166-6.
Winston, Wayne L., Investigacin de Operaciones, Grupo Editorial Iberoamrica S. A. de C. V.,
Mxico, ISBN 970-625-029-8, 1.994.
Sitios Internet
http://mat.gsia.cmu.edu/orclass/integer/integer.html
Aplicacin Ilustrativa
Se estn evaluando cinco proyectos a lo largo de un horizonte de planificacin de tres aos.
La tabla proporciona las utilidades esperadas para cada proyecto y los egresos anuales asociados:
Egresos (millones de de UM anuales)
Proyecto
1
2
3
4
5
Fondos disponibles
(millones de UM)
5
4
3
7
8
1
7
9
4
6
8
10
2
1
10
25
25
25
Utilidades
(millones de UM)
20
40
20
15
30
Determinar los proyectos que se van a realizar a lo largo de un horizonte de tres aos.
El problema se reduce a una decisin s-no para cada proyecto.
Definamos la variable binaria x j como:
296719651.doc
196
1, el proyecto j es seleccionado
xj
0, el proyecto j no es seleccionado
Por lo tanto nuestro problema de programacin lineal entera es:
Maximizar Z 20 x1 40 x 2 20 x3 15 x 4 30 x5
Sujeto a:
5 x1 4 x2 3 x3 7 x4 8 x5 25
x1 7 x2 9 x3 4 x4 6 x5 25
8 x 10 x 2 x x 10 x 25
2
3
4
5
1
con
0
xj j
1
La solucin entera ptima con WinQSB es:
296719651.doc
197
Ejemplo N 1
Supngase que deseamos invertir 14.000 UM
Hemos identificado cuatro oportunidades de inversin.
La 1 requiere un inversin de 5.000 UM y tiene un VAN de 8.000 UM; la 2 requiere 5.000 UM y un
VAN de 11.000 UM; la 3 requiere 4.000 UM y tiene un VAN de 6.000 UM y la 4 requiere 3.000 UM
con un VAN de 4.000 UM
Dnde deberamos colocar nuestro dinero para maximizar nuestro VAN total?
Maximizar
8 x1 11 x 2 6 x3 4 x 4
sujeto a
5 x1 7 x 2 4 x3 3 x 4 14
xi 0, 1 j 1, ,4
Base
P5
P6
P7
P8
296719651.doc
P0
14
1
1
1
8
P1
5
1
0
0
11
P2
7
0
1
0
6
P3
4
0
0
1
4
P4
3
0
0
0
0
P5
1
0
0
0
0
P6
0
1
0
0
0
P7
0
0
1
0
P8
P9
0
0
0
1
0
0
0
0
198
P9
1
0
0
-8
0
-11
0
-6
0
-4
0
0
0
0
0
0
0
0
1
0
0
0
11
0
0
P5
P6
P2
7
1
1
1
1
11
5
1
0
0
0
-8
0
0
1
0
0
0
4
0
0
1
0
-6
3
0
0
0
1
-4
1
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
11
0
0
0
1
0
0
0
0
0
0
1
0
7/5
1
2
1
1
1
1
19
0
1
0
0
0
0
0
0
1
0
0
0
4
0
0
1
0
-6
3
0
0
0
1
-4
1
0
0
0
0
0
-5
1
0
0
0
8
0
0
1
0
0
11
0
0
0
1
0
0
0
0
0
0
1
0
1/2
P8
P9
P5
P1
P2
0
8
11
0
0
P8
P9
6
8
11
0
0
P3
P1
P2
P8
P9
1/2
1
1
1
22
0
1
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
0
0
0
-3/4
1
0
0
-1/4
0
3/2
-5/4
1
0
5/4
0
0
0
1
0
0
11
0
0
0
1
0
0
0
0
0
0
1
0
x1 1
x2 2
x3 1 / 2
x4 0
Problema N 2
Tenemos una mochila de capacidad 14.
Existen itemes (aqu 4) cada uno de los cuales tiene un tamao y un valor.
El itm 1 requiere 5 unidades de espacio y da un valor de 11; la 2 ocupa 5 y un valor de 11; la 3 ocupa 4
y un valor 6 y la 4 ocupa 3 con un valor de 4.
Dicho simplemente, 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.
Veremos que encontramos que se pueden formular muchas situaciones de la vida real mediante la
programacin entera.
Desafortunadamente, tambin veremos que normalmente los problemas de programacin entera son ms
difciles de resolver que los de programacin lineal.
Un problema de programacin entera en el cual todas las variables tienen que ser nmeros enteros, se
llama un problema de programacin entera pura. Por ejemplo,
max z 3 x1 2 x 2
s.a. x1 x 2 6
(1)
x1 , x 2 0 ; x1 , x 2 entero
199
x1 , x2 0 ; x1 entero
es un problema de programacin entera mixta (x2 no tiene que ser un nmero entero).
Un problema de programacin entera en el cual todas las variables deben ser iguales a 0 a 1, se llama
un problema de programacin entera 01 (algunos le llaman programacin lineal binaria).
DEFINICIN: El problema de programacin lineal que se obtiene al omitir todas las restricciones enteras o 0-1 para las variables, se llama la relajacin programacin lineal para
la programacin entera.
Por ejemplo, la relajacin programacin lineal de (1) es:
max z 3 x1 2 x2
s.a. x1 x2 6
x1 , x2 0
Se puede considerar cualquier problema de programacin entera como la relajacin programacin lineal
ms algunas otras restricciones (las restricciones que indican cules variables tienen que ser enteras o
iguales a 0 a 1).
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.
Para cualquier programacin entera que es un problema de maximizacin, esto implica que:
El valor ptimo de z para la relajacin programacin lineal >= al valor ptimo de z para el problema de
programacin entera
(2)
Este resultado ser de importancia cuando se analice la solucin de problemas de programacin entera.
Para esclarecer ms las propiedades de los problemas de programacin veamos el sencillo problema siguiente:
max z 21 x1 11 x2
s.a. 7 x1 4 x2 13
(3)
x1 , x2 0 ; x1 , x2 entero
En el grfico se observa que la regin factible para este problema est formada por el conjunto de
puntos:
S = {(0,0), (0,1), (0,2), (0,3), (1,0), (1,1)}
A diferencia de la regin factible para cualquier problema de programacin lineal, la regin factible para
(3) no es un conjunto convexo.
Mediante un simple clculo y la comparacin de los valores de z para cada uno de los seis puntos de la
regin factible,
296719651.doc
200
Valor de z 21 x1 11 x 2
0
11
22
33
21
32
Si la regin factible para la relajacin programacin lineal de un problema de programacin entera pura
es acotada, como en (3), la regin factible de la programacin entera estar formada por un nmero
finito de puntos.
En teora, se podra resolver este problema enumerando los valores de z para cada punto factible, como
se describi en el prrafo anterior, y determinar el punto factible que tiene el mayor valor de z.
El problema con este mtodo (como podra haber dicho el Dr. Carl Sagan) es que mayora de los problemas de programacin entera reales tienen regiones factibles que consisten en billones y billones de
puntos factibles.
En tales casos, una enumeracin completa de todos los puntos factibles consumira mucho tiempo de
computadora.
Pero a menudo se resuelven los problemas de programacin entera mediante una enumeracin inteligente de todos los puntos en la regin factible.
Un estudio complementario de (3) esclarece algunas otras propiedades interesantes de los problemas de
programacin entera.
Supngase que un analista ingenuo sugiere el mtodo siguiente para resolver un problema de programacin entera: Primero resuelva la relajacin programacin lineal; despus redondee (hasta el entero
296719651.doc
201
296719651.doc
202
Ninguno de los dos candidatos es una solucin factible para la programacin entera.
Recurdese que el algoritmo simplex permita resolver los problemas de programacin lineal yendo de
una solucin bsica factible a una mejor.
Tambin recurdese que, en la mayora de los casos, el algoritmo simplex examina solamente una pequea fraccin de todas las soluciones bsicas antes de encontrar la solucin ptima.
Esta propiedad del algoritmo simplex permite resolver un problema de programacin lineal relativamente grande mediante una cantidad pequea de clculos.
De manera anloga al algoritmo simplex, se podra esperar resolver uno de programacin entera mediante un algoritmo que pasara de una solucin entera factible a una solucin entera mejor.
Por desgracia no se conoce tal algoritmo.
203
(4)
Por ejemplo, si Stockco invierte en las inversiones 1 y 4, se obtendr un VAN de 16.000 + 8.000 =
24.000 UM.
Esto implica que la funcin objetivo para Stockco es
max z 16 x1 22 x2 12 x3 8 x 4
(5)
La empresa se enfrenta a la restriccin de que se puede invertir como mximo 14.000 UM.
Es posible mostrar, mediante el mismo razonamiento utilizado para desarrollar (4), que
Cautidad total invertida (en miles de UM) = 5 x1 7 x2 4 x3 3 x4
(6)
(7)
(8)
204
Ciudad 1
0
10
20
30
30
20
Ciudad 2
10
0
25
35
20
10
HACIA
Ciudad 3
Ciudad 4
20
30
25
35
0
15
15
0
30
15
20
25
Ciudad 5
30
20
30
15
0
14
Ciudad 6
20
10
20
25
14
0
Solucin
Para cada ciudad, el municipio debe determinar si se construye una estacin de bomberos en esa ciudad
o no. Se definen las variables 0-1 x1 , x 2 , x3 , x 4 , x5 y x6 como
1, 2
1, 2, 6
3, 4
3, 4, 5
4, 5, 6
2, 5, 6
Para asegurarse de que por lo menos una estacin de bomberos est dentro de 15 minutos de la ciudad
1, aadimos la restriccin
x1 x 2 1
(Restriccin de la ciudad 1)
Esta restriccin asegura que es imposible que x1 = x2 = 0, as que por lo menos una estacin de bomberos
se construir dentro de 15 minutos de la ciudad 1.
De manera similar, la restriccin
205
296719651.doc
(Restriccin de la ciudad 2)
asegura que por lo menos una estacin de bomberos se ubicar dentro de 15 minutos de la ciudad 2.
De manera similar, se obtienen las restricciones para las ciudades 3-6.
Al combinar estas seis restricciones con la funcin objetivo (y con el hecho de que cada variable debe ser
igual a 0 1), se obtiene el siguiente problema de programacin entera 0-1:
min z x1 x2 x3 x 4 x5 x6
s.a. x1 x 2
x1 x2
x3 x 4
x3 x 4 x5
x2
1
x6 1
1
1
x 4 x5 x 6 1
x5 x6 1
x j 0 1 j 1, 2, 3, 4, 5, 6
As, el Municipio de Florencio Varela puede construir dos estaciones de bomberos: una en la ciudad 2 y
una en la ciudad 4.
Ejemplo N 5
Considrese el siguiente problema de ubicacin.
Una ciudad est revisando la ubicacin de sus comisaras.
La ciudad est constituida por una serie de barrios, como muestra la figura.
296719651.doc
206
x1 , x 2 0 ; x1 , x 2 entero
La solucin ptima para la relajacin programacin lineal para esta programacin entera pura es
x1 0 ; x 2 6 ; z 12
Ya que esta solucin da valores enteros a cada variable, la observacin anterior implica que
x1 0 ; x 2 6 ; z 12
296719651.doc
207
As, el valor ptimo de z para la programacin entera no puede ser mayor que el valor ptimo de z para
la relajacin programacin lineal.
Esto significa que el valor ptimo de z para la programacin entera debe ser
z 12
Pero el punto x1 0 ; x 2 6 ; z 12 es factible para la programacin entera y tiene z 12
Por lo tanto x1 0 ; x 2 6 ; z 12 debe ser ptimo para la programacin entera
Ejemplo N 6
La Telfa Corporation fabrica mesas y sillas.
Una mesa requiere 1 hora de trabajo y 9 pies de madera, y una silla necesita 1 hora de trabajo y 5 pies de
madera.
Actualmente se dispone de 6 horas de trabajo y 45 pies de madera.
Cada mesa contribuye con 8 UM a la utilidad, y cada silla contribuye con 5 UM.
Formule y resuelva un problema de programacin lineal entera para maximizar la utilidad de Telfa.
Sean
x1 = nmero de mesas fabricadas
x2 = nmero de sillas fabricadas
Ya que x1 y x2 deben ser enteros, Telfa quiere resolver el siguiente problema de programacin lineal
entera:
mx z 8 x1 5 x 2
s.a. x1 x 2 6 (restriccin de trabajo)
9 x1 5 x 2 45 (restriccin de madera)
x1 , x 2 0 ; x1 , x 2 enteros
296719651.doc
208
296719651.doc
209
296719651.doc
165
15
9
; x1
3,75 ; x 2 2,25
4
4
4
210
Sabemos que
valor ptimo de z para el problema de programacin entera <= valor ptimo de z para la relajacin
programacin lineal
Esto significa que el valor ptimo de z para la programacin entera no puede ser mayor que
165
41,25
4
O sea que el valor ptimo para la relajacin programacin lineal es una cota superior para las utilidades
de Telfa.
El siguiente paso es dividir la regin factible de la relajacin programacin lineal en un intento por
obtener ms informacin acerca de la ubicacin de la solucin ptima para la programacin entera.
Elegimos arbitrariamente una variable que es una fraccin en la solucin ptima para la relajacin programacin lineal (por ejemplo x1 ).
Ahora obsrvese que cada punto en la regin factible para la programacin entera tiene que tener
x1 3 , o bien, x1 4 (Por qu no puede tener una solucin factible para la programacin entera
3 x1 4
?).
Con esto en mente, "ramificamos" con respecto a la variable x1 y creamos los siguientes dos subproblemas:
296719651.doc
211
15
4
Esto significa que la solucin ptima para la relajacin programacin lineal no puede volver a aparecer
cuando resolvemos el subproblema 2 o el subproblema 3.
En el grfico se observa que se incluyen todos los puntos en la regin factible para la programacin
entera de Telfa, en la regin factible para el subproblema 2 o para el subproblema 3.
Tambin observamos que las regiones factibles para los subproblemas 2 y 3 no tienen puntos en comn.
Ya que se generaron los subproblemas 2 y 3 agregando restricciones en las que interviene x1 , decimos
que se crearon los subproblemas 2 y 3 mediante la ramificacin con respecto a x1
Elegimos ahora cualquier subproblema que no se ha resuelto todava como uno de programacin lineal.
Arbitrariamente elegimos resolver el subproblema 2.
z 41 ; x1 4 , x 2
9
1,8
5
El punto C.
296719651.doc
212
Subproblema 1
165
4
15
x1
4
9
x2
4
z
t1
x1 4
x1 3
Subproblema 2
z 41
x1 4
x2
Subproblema 3
9
5
213
214
Como cualquiera rama que sale del subproblema 4 no proporcionar informacin til, es intil crear
cualquier rama que salga del subproblema 4.
Cuando una ramificacin adicional respecto a un subproblema no proporciona informacin til, decimos
que el subproblema (o el nodo) est agotado.
Ahora los nicos subproblemas sin resolver son los subproblemas 3 y 5.
La regla LIFO seala que habra que resolver ahora el subproblema 5.
En el grfico de ejes cartesianos ortogonales observamos que la solucin ptima para el subproblema 5
es el punto I
z
365
40
; x1
; x2 1
9
9
Esta solucin no proporciona inmediatamente informacin til; por lo tanto, elegimos dividir la regin
factible del subproblema 5 mediante la ramificacin respecto a la variable fraccionaria x1
296719651.doc
215
40
puede estar en la regin factible para el subproblema 6 o para el
9
subproblema 7.
La solucin ptima para el subproblema 5 no volver a aparecer cuando resolvamos los subproblemas 6
y 7.
296719651.doc
216
Como tanto x1 como x 2 toman valores enteros, esta solucin es factible para el problema original de
programacin entera.
Una solucin que se obtiene resolviendo un subproblema en el cual todas las variables tienen valores
enteros, es una solucin candidato.
Como la solucin candidato puede ser ptima, tenemos que conservar una solucin candidato hasta encontrar una mejor solucin factible para la programacin entera (si la hay).
Tenemos una solucin factible para la programacin entera original, con z = 37; por lo tanto, se puede
concluir que el valor ptimo de z para la programacin entera es 37
As, el valor de z para la solucin candidato es una cota inferior para el valor ptimo de z en la programacin entera original.
Indicamos esto colocando la notacin LB = 37 (LB = lower bound) en el cuadrito correspondiente al
siguiente subproblema por resolver.
Vea el rbol.
296719651.doc
217
Sabemos ahora que el subproblema 7 proporciona una solucin entera factible, con z = 37
Tambin sabemos que el subproblema 7 no puede proporcionar una solucin entera factible con
z 37
As, otra ramificacin con respecto al subproblema 7 no proporcionar informacin nueva acerca de la
solucin ptima para la programacin entera, y subproblema se ha agotado.
El rbol hasta ahora es:
296719651.doc
218
Los nicos subproblemas que quedan por resolver, son los subproblemas 6 y 3.
Segn la regla LIFO, tenemos que resolver ahora el subproblema 6.
En el ltimo grfico vemos que la solucin ptima para el subproblema 6 es el punto A:
z 40 ; x1 5 ; x 2 0
Como todas las variables de decisin tienen valores enteros, la solucin del subproblema 6 es una solucin candidato.
Dicha solucin candidato tiene un valor de z de 40, que es mayor que el valor de z de la mejor solucin
candidato anterior (el candidato 7, con z = 37).
O sea, el subproblema 7 no puede proporcionar la solucin ptima para la programacin entera (sealamos este hecho colocando una X al lado del subproblema 7).
Tambin actualizamos nuestra LB hasta 40.
Se indica el rbol.
296719651.doc
219
Ya que el subproblema 3 no puede proporcionar un valor de z mayor que la cota inferior actual de 40, el
subproblema 3 no puede proporcionar la solucin ptima para la programacin entera original.
Por lo tanto, colocamos una X al lado del subproblema 3.
En ese mismo rbol observamos que no quedan subproblemas por resolver y que slo el subproblema 6
puede proporcionar la solucin ptima para la programacin entera.
As, la solucin ptima para la programacin entera Telfa es fabricar 5 mesas y 0 sillas.
Esta solucin contribuir con 40 UM a las utilidades.
Al utilizar el mtodo de ramificar y acotar para resolver el problema de Telfa, hemos enumerado implcitamente todos los puntos en la regin factible de la programacin entera.
Finalmente, se eliminan todos estos puntos (menos el punto correspondiente a la solucin ptima) de la
consideracin, y se termina el procedimiento de ramificar y acotar.
296719651.doc
220
221
Actualizado al 29/11/2.00
D:\INVESTIGACIN OPERATIVA\FRBA PL ENTERA Impreso el 29/11/2015
296719651.doc
222