You are on page 1of 27

Prof. Ing. Claudio L. R.

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

Prof. Ing. Claudio L. R. Sturla

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

Prof. Ing. Claudio L. R. Sturla

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

La resolucin de la relajacin programacin lineal de este problema es:


ck
0
0
0
0

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

Prof. Ing. Claudio L. R. Sturla


0

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

es un problema de programacin entera pura.


296719651.doc

199

Prof. Ing. Claudio L. R. Sturla


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,
max z 3 x1 2 x 2
s.a. x1 x 2 6

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

Prof. Ing. Claudio L. R. Sturla


Punto
0,0
0,1
0,2
0,3
1,0
1,1

Valor de z 21 x1 11 x 2
0
11
22
33
21
32

se halla que la solucin ptima para (3) es z = 33, x1 = 0, x2 = 3.

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

Prof. Ing. Claudio L. R. Sturla


ms cercano) cada variable que debe ser un nmero entero y que tiene un valor fraccionario en la solucin ptima de la relajacin programacin lineal.
Cuando se aplica este mtodo a (3), se obtiene primero la solucin ptima de la relajacin de progra macin lineal
x1 1,8571 ; x2 0

El redondeo de esta solucin proporciona la solucin


x1 2 ; x 2 0

como una posible solucin ptima para (3).


Sin embargo, esta solucin no es factible para (3) y, por lo tanto, no puede ser de ninguna manera una
solucin ptima.
Aun si se redondea xi hacia abajo (produciendo la posible solucin x1 1 ; x2 0 ), no se obtiene la
solucin ptima.
Para algunos problemas de programacin entera, incluso puede resultar que cada redondeo de la solucin ptima de la relajacin programacin lineal no es factible para el problema de la programacin
entera.
Para ver esto, considrese el siguiente problema de programacin entera:
(GRAFICAR PORQUE SIN NO SE VE)
max z 4 x1 x 2
s.a. 2 x1 x 2 5
2 x1 3 x 2 5
x1 , x 2 0 ; x1 , x 2 entero

La solucin ptima para la relajacin programacin lineal de esta programacin entera es


z 10 ; x1 2,5 ; x 2 0

La solucin grfica es:

296719651.doc

202

Prof. Ing. Claudio L. R. Sturla

El redondeo de esta solucin proporciona como solucin posible


x1 2 ; x 2 0 x1 3 ; x2 0

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.

Otro problema de programacin entera


En esta seccin se mostrar cmo se puede formular situaciones prcticas como problemas de programacin entera.
Este ejemplo es un problema de presupuesto de capital similar al problema de la Star Oil, que hemos
visto en programacin lineal genrica.
Ejemplo N 3
Una empresa considera cuatro inversiones.
La inversin 1 proporcionar un valor actual neto (VAN) de 16.000 UM; la inversin 2 un VAN de
22.000 UM; la inversin 3 un VAN de 12.000 UM; y la inversin 4 un VAN de 8.000 UM.
296719651.doc

203

Prof. Ing. Claudio L. R. Sturla


Cada inversin requiere la del momento actual: la inversin 1, 5.000 UM; la inversin 2, 7.000 UM; la
inversin 3, 4.000 UM; y la inversin 4, 3.000 UM respectivamente.
Se dispone de 14 000 UM para la inversin.
Formule un problema de programacin lineal entera cuya solucin nos dir cmo maximizar el VAN
obtenido de las inversiones 1, 2, 3 y 4.
SOLUCIN
Como en las formulaciones de los problemas de programacin lineal, comenzamos con la definicin de
una variable para cada decisin que se debe tomar.
Esto lleva a definir una variable 0-1:

1si se realiza la inversin j


x j j 1, 2,3, 4
0 de otra manera
Por ejemplo, x2 = 1 si se realiza la inversin 2, y x2 = 0 si no se realiza.
El VAN obtenido por Stockco (en miles de UM) es
VAN total obtenido por Stockco = 16 x1 22 x 2 12 x3 8 x 4

(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)

Ya que se pueden invertir 14.000 UM, se debe satisfacer


5 x1 7 x 2 4 x3 3 x 4 14

(7)

Al combinar (5) y (7) con las restricciones x j 0 1 j 1, 2, 3, 4 , se tiene el siguiente problema de


programacin entera 0-1:
max z 16 x1 22 x 2 12 x3 8 x 4
s.a. 5 x1 7 x 2 4 x3 3 x 4 14
x j 0 1 j 1, 2, 3, 4

(8)

Problemas de cobertura de conjuntos


El siguiente ejemplo es tpico para una clase importante de problemas de programacin entera, conocidos como problemas de cobertura de conjuntos.
Ejemplo N 4
Hay seis ciudades (ciudades 16) en el Municipio de Florencio Varela.
El municipio debe determinar en qu lugar construir cuarteles de bomberos.
296719651.doc

204

Prof. Ing. Claudio L. R. Sturla


El municipio quiere construir una cantidad mnima de cuarteles de bomberos para asegurar que por lo
menos un cuartel est dentro de 15 minutos (tiempo de viaje) de cada ciudad.
En la tabla se muestran los tiempos requeridos (en minutos) para viajar entre las ciudades del municipio.
Formule un problema de programacin entera, que indique cuntas estaciones de bomberos habra que
construir y en dnde.
Tiempo requerido para viajar entre ciudades en el condado de Kilroy
DE
Ciudad 1
Ciudad 2
Ciudad 3
Ciudad4
Ciudad 5
Ciudad 6

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 si se construye una estacin de bomberos en la ciudad i


xj
0 si no es as
Entonces el nmero total de estaciones de bomberos que se construyen est dado por x1 + x2 + x3 + x4 +
x5 + x6, y la funcin objetivo del municipio es minimizar
z x1 x 2 x3 x 4 x5 x6

Cules son las restricciones del municipio?


El Municipio de Florencio Varela tiene que asegurarse de que haya una estacin de bomberos dentro de
15 minutos de cada ciudad.
La tabla indica las localidades que pueden comunicarse con la ciudad en 15 minutos o menos.
Ciudad 1
Ciudad 2
Ciudad 3
Ciudad 4
Ciudad 5
Ciudad 6

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

Prof. Ing. Claudio L. R. Sturla


x1 x 2 x6 1

(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

Una solucin ptima para este problema de programacin lineal es:


z 2 ; x2 x4 1 ; x1 x3 x5 x6 0

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

Prof. Ing. Claudio L. R. Sturla


Los ejemplos representan una clase de problemas de la programacin entera conocidos como problemas
de cobertura de conjuntos.
En un problema de cobertura de conjuntos, se debe "cubrir" cada miembro de un conjunto dado (llmelo
Conjunto 1) mediante un miembro aceptable de algn conjunto (llmelo Conjunto 2).
El objetivo en un problema de cobertura de conjuntos es minimizar el nmero de elementos del Conjunto 2 que se necesitan para cubrir todos los elementos del Conjunto 1.
En el ejemplo, el Conjunto 1 est formado por las ciudades del Municipio de Florencio Varela y el
Conjunto 2 est formado por las estaciones de bomberos.
La estacin en la ciudad 2 cubre las ciudades 1, 2, y 6; la estacin 4 cubre las ciudades 3, 4, y 5.
Los problemas de cobertura de conjuntos tienen muchas aplicaciones en reas como la programacin de
las tripulaciones de aerolneas, la divisin en distritos polticos, la programacin de aerolneas y la
programacin de rutas de camiones.

Resolucin de problemas de programacin entera pura mediante el mtodo


de ramificar y acotar (branch and bound)
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 de un subproblema.
Antes de explicar cmo funciona la ramificacin y el acotamiento, es necesario hacer la siguiente observacin elemental, pero importante: si resuelve la relajacin de programacin lineal de una programacin entera pura y 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.
Para darse cuenta de la validez de esta observacin, considrese el siguiente problema de programacin
entera:
mx z 3 x1 2 x 2
s.a. 2 x1 x 2 6

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

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 programacin lineal.
Vase el grfico

296719651.doc

207

Prof. Ing. Claudio L. R. Sturla

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

Prof. Ing. Claudio L. R. Sturla


El mtodo de ramificar y acotar empieza por resolver la relajacin programacin lineal de la programacin entera.
Si todas las variables de decisin toman valores enteros en la solucin ptima de la relajacin progra macin lineal, entonces la solucin ptima para la relajacin programacin lineal ser tambin la solucin ptima para la programacin entera.
Llamamos a la relajacin programacin lineal, subproblema 1.
Desafortunadamente, la solucin ptima para la relajacin programacin lineal es

296719651.doc

209

Prof. Ing. Claudio L. R. Sturla

296719651.doc

165
15
9
; x1
3,75 ; x 2 2,25
4
4
4

210

Prof. Ing. Claudio L. R. Sturla

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

Prof. Ing. Claudio L. R. Sturla


Subproblema 2 = Subproblema 1 + la restriccin x1 4
Subproblema 3 = Subproblema 1 + la restriccin x1 3
Obsrvese que ni el subproblema 2, ni el subproblema 3 incluyen puntos con x1

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.

En el grfico anterior vemos que la solucin ptima para el subproblema 2 es

z 41 ; x1 4 , x 2

9
1,8
5

El punto C.
296719651.doc

212

Prof. Ing. Claudio L. R. Sturla


En el grfico se resume lo ejecutado hasta ahora.
Por ejemplo, el subproblema 3 es:

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

La representacin de todos los subproblemas que se han creado se llama rbol.


Cada subproblema es un nodo del rbol, y cada lnea que une dos nodos del rbol se llama arco.
296719651.doc

213

Prof. Ing. Claudio L. R. Sturla


Las restricciones asociadas a cualquier nodo del rbol son las restricciones para la relajacin programacin lineal ms las restricciones asociadas a los arcos que llevan del subproblema 1 al nodo.
Como la solucin ptima para el subproblema 2 no proporcion una solucin con enteros puros, elegimos utilizar el subproblema 2 para crear dos nuevos subproblemas.
Elegimos una variable con un valor fraccionario en la solucin ptima para el subproblema 2 y despus
ramificamos respecto a esta variable.
Como x 2 es la nica variable fraccionaria en la solucin ptima del subproblema 2, ramificamos con
respecto a x 2
Dividimos la regin factible para el subproblema 2 en dos partes, que corresponden a los puntos con
x 2 2 y x 2 1 , respectivamente.
As se crean los siguientes dos subproblemas:
Subproblema 4 = Subproblema 1 + las restricciones x1 4 y x 2 2 = subproblema 2 + la restriccin
x2 2
Subproblema 5 = Subproblema 1 + las restricciones x1 4 y x 2 1 = subproblema 2 + la restriccin
x2 1 .

Las regiones factibles para los subproblemas 4 y 5, se muestran en el grfico siguiente:

El subconjunto de subproblemas no resueltos consta de los subproblemas 3, 4 y 5.


Ahora elegimos un subproblema para resolverlo.
Por razones que discutiremos ms adelante, seleccionamos resolver el subproblema creado ms recientemente para resolverlo. (Esto se llama la regla LIFO, del ingls 1ast in flrst out.).
La regla LIFO seala que tendramos que resolver ahora el subproblema 4 5.
Elegimos arbitrariamente resolver el subproblema 4.
En el grfico observamos que el subproblema 4 no es factible.
296719651.doc

214

Prof. Ing. Claudio L. R. Sturla


Por lo tanto, el subproblema 4 no puede proporcionar la solucin ptima para el problema de programacin entera.
Para indicar este hecho, colocamos una x junto al subproblema 4 (Ver rbol).

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

Prof. Ing. Claudio L. R. Sturla


Esto proporciona dos nuevos subproblemas como se muestra en el grfico:

Subproblema 6 = Subproblema 5 + la restriccin x1 5


Subproblema 7 = Subproblema 5 + la restriccin x1 4
Juntos, los subproblemas 6 y 7 abarcan todos los puntos enteros en la regin factible del subproblema 5.
Tambin, ningn punto con x1

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

Prof. Ing. Claudio L. R. Sturla


Nuestro rbol tiene ahora el siguiente aspecto:

Ahora los subproblemas 3, 6 y 7 quedan sin resolver.


La regla LIFO seala que ahora tenemos que resolver el subproblema 6 o el subproblema 7.
Elegimos arbitrariamente, resolver el subproblema 7.
Del grfico observamos que solucin ptima para el subproblema 7 es el punto H
z 37 ; x1 4 ; x 2 1

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

Prof. Ing. Claudio L. R. Sturla

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

Prof. Ing. Claudio L. R. Sturla

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

Prof. Ing. Claudio L. R. Sturla

Solamente queda el subproblema 3 por resolver.


Del segundo grfico del problema, se obtiene que la solucin ptima para el subproblema 3 es el punto
F:
z 39 ; x1 x 2 3

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.

Aqu insertar el problema de pgina 21 del tutorial de Trick

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

Prof. Ing. Claudio L. R. Sturla


Para mostrar que en el procedimiento de ramificar y acotar realmente se consideran todos los puntos de
la regin factible de la programacin entera, examinamos varias soluciones posibles para el problema de
Telfa y mostramos cmo el procedimiento de ramificar y acotar consider estos puntos como no
ptimos.
Por ejemplo, cmo sabemos que x1 2 y x 2 3 no es ptimo?
Este punto est en la regin factible para el subproblema 3, y sabemos que todos los puntos en la regin
factible para el subproblema 3 tienen z 39
De esta manera el anlisis del subproblema 3 muestra que x1 2 ; x 2 3 no puede vencer a z = 40 y
no puede ser ptimo.
Otro ejemplo es por qu no es ptimo x1 4 ; x 2 2 ?
Siguiendo las ramas del rbol, encontramos que x1 4 ; x2 2 corresponde al subproblema 4.
Como ningn punto del subproblema 4 es factible, x1 4 ; x 2 2 no puede satisfacer las restricciones
de la programacin entera original y, por lo tanto, no puede ser ptimo para el problema de Telfa.
De una manera similar, el anlisis de ramificar y acotar ha eliminado todos los puntos x1 ; x 2 (menos
el punto que corresponde a la solucin ptima) de la consideracin.
Para el problema sencillo de Telfa, usar el mtodo de ramificar y acotar puede parecer como si se utilizara un can para matar una mosca, pero para una programacin entera en la cual la regin factible
contiene un gran nmero de puntos enteros, el mtodo de ramificar y acotar puede ser un mtodo eficaz
para eliminar puntos no ptimos de la consideracin.
Por ejemplo, suponga que aplicamos el mtodo de ramificar y acotar y que el LB actual 42 .
Supngase que resolvemos un subproblema que contiene 1 milln de puntos factibles para la programacin entera.
Si la solucin ptima para este subproblema tiene z < 42, habremos eliminado 1 milln de puntos no
ptimos mediante la solucin de uno slo!
Los aspectos clave del mtodo de ramificar y acotar para resolver problemas de programacin entera
pura se pueden resumir de la manera siguiente:
Paso 1: Si no es necesario ramificar con respecto a un subproblema, ste se agot. Las siguientes
tres situaciones llevan a un subproblema que se agota: (1) el subproblema no es factible.
(2) El subproblema proporciona una solucin ptima en la cual todas las variables tienen
valores enteros. (3) El valor ptimo de z para el subproblema no es mayor (en un problema
de maximizacin) que la LB actual.
Paso 2: Se puede eliminar un subproblema de la consideracin en las situaciones siguientes: (1)
el subproblema no es factible. En el problema de Telfa, el subproblema 4 se elimin de la
consideracin por esta razn. (2) La LB (que representa el valor de z para el mejor candidato hasta ahora) es por lo menos tan grande como el valor de z para el subproblema. En el
problema de Telfa, se eliminaron los subproblemas 3 y 7 por esta razn.
Recurdese que al resolver el problema de Telfa mediante el mtodo de ramificar y acotar, se realizaron
muchas elecciones aparentemente arbitrarias.
Por ejemplo, cuando x1 y x 2 resultaron ser valores fraccionarios en la solucin ptima subproblema 1,
cmo determinamos la variable para la ramificacin?
O bien, cmo determinamos qu subproblema resolver despus?
La manera en la cual se contestan estas preguntas, puede proporcionar rboles que difieren mucho en
tamao y en tiempo requerido por la computadora para obtener una solucin ptima.
Mediante la experiencia y del ingenio, los usuarios del mtodo de ramificar y acotar han ideado algunas
pautas para tomar las decisiones necesarias.
Se usan comnmente dos procedimientos generales para determinar qu subproblema se tiene que resolver despus.
Un procedimiento que se usa muchsimo es la regla LIFO, que elige resolver el subproblema creado ms
recientemente.
296719651.doc

221

Prof. Ing. Claudio L. R. Sturla


LIFO nos baja por un lado del rbol de ramificar y acotar (como en el problema de Telfa) y rpidamente
encuentra una solucin candidato.
Despus regresamos subiendo hacia la raz por el otro lado del rbol.
Por esta razn, el enfoque de LIFO se llama frecuentemente rastreo hacia atrs.
El segundo mtodo que se usa comnmente para determinar qu subproblema se tiene que resolver
despus, se llama rastreo por brincos.
Cuando se ramifica respecto a un nodo, el procedimiento del rastreo por brincos resuelve todos los
problemas creados mediante la ramificacin.
Despus ramifica nuevamente respecto al nodo con el mejor valor de z
El rastreo por brincos pasa frecuentemente de un lado del rbol al otro.
Normalmente genera ms subproblemas y requiere ms memoria en la computadora que el rastreo hacia
atrs.
La base del rastreo por brincos es que el movimiento hacia los subproblemas con buenos valores de z,
nos debera llevar ms rpidamente al mejor valor de z
Si dos o ms variables son fraccionarias en la solucin ptima de un subproblema, con respecto a qu
variable tendramos que ramificar?
Realizar la ramificacin con respecto a la variable fraccionaria que tiene mayor importancia econmica
es muchas veces la mejor estrategia.
Cuando ms de una variable es fraccionaria en la solucin de un subproblema, muchos programas de
cmputo ramificarn con respecto a la variable fraccionaria con la ms baja numeracin.
As, si un programa de cmputo requiere la numeracin de las variables, se tienen que numerar en el
orden de su importancia econmica (1 = ms importante, etc.).

La teora del Profesor Michael Trick para ramificar es:


Elegiremos un subproblema activo, o sea que no lo hemos elegido antes;
Elegiremos el subproblema con el valor de solucin mayor (si maximizamos).

Actualizado al 29/11/2.00
D:\INVESTIGACIN OPERATIVA\FRBA PL ENTERA Impreso el 29/11/2015

296719651.doc

222

You might also like