Académique Documents
Professionnel Documents
Culture Documents
Sturla
REPÚBLICA ARGENTINA
PROGRAMACIÓN 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
Bibliografía:
Sitios Internet
http://mat.gsia.cmu.edu/orclass/integer/integer.html
Aplicación Ilustrativa
Se están evaluando cinco proyectos a lo largo de un horizonte de planificación de tres años.
La tabla proporciona las utilidades esperadas para cada proyecto y los egresos anuales asociados:
Determinar los proyectos que se van a realizar a lo largo de un horizonte de tres años.
El problema se reduce a una decisión “sí-no” para cada proyecto.
Definamos la variable binaria x j como:
399106110.doc 196
Prof. Ing. Claudio L. R. Sturla
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
1 2 3 4 5
con
0
xj j
1
La solución entera óptima con WinQSB® es:
399106110.doc 197
Prof. Ing. Claudio L. R. Sturla
Ejemplo N° 1
Supóngase que deseamos invertir 14.000 UM
Hemos identificado cuatro oportunidades de inversión.
La 1 requiere un inversión 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
¿Dónde deberíamos 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 resolución de la relajación programación lineal de este problema es:
8 11 6 4 0 0 0 0 0
ck Base P0 P1 P2 P3 P4 P5 P6 P7 P8 P9
0 P5 14 5 7 4 3 1 0 0 0 0 2
0 P6 1 1 0 0 0 0 1 0 0 0
0 P7 1 0 1 0 0 0 0 1 0 0 1
0 P8 1 0 0 1 0 0 0 0 1 0
399106110.doc 198
Prof. Ing. Claudio L. R. Sturla
0 P9 1 0 0 0 0 0 0 0 0 1
0 -8 -11 -6 -4 0 0 0 0 0
0 P5 7 5 0 4 3 1 0 0 0 0 7/5
0 P6 1 1 0 0 0 0 1 0 0 0 1
11 P2 1 0 1 0 0 0 0 1 0 0
0 P8 1 0 0 1 0 0 0 0 1 0
0 P9 1 0 0 0 1 0 0 0 0 1
11 -8 0 -6 -4 0 0 11 0 0
0 P5 2 0 0 4 3 1 -5 0 0 0 1/2
8 P1 1 1 0 0 0 0 1 0 0 0
11 P2 1 0 1 0 0 0 0 1 0 0
0 P8 1 0 0 1 0 0 0 0 1 0 1
0 P9 1 0 0 0 1 0 0 0 0 1
19 0 0 -6 -4 0 8 11 0 0
6 P3 1/2 0 0 1 ¾ ¼ -5/4 0 0 0
8 P1 1 1 0 0 0 0 1 0 0 0
11 P2 1 0 1 0 0 0 0 1 0 0
0 P8 ½ 0 0 0 -3/4 -1/4 5/4 0 1 0
0 P9 1 0 0 0 1 0 0 0 0 1
22 0 0 0 ½ 3/2 ½ 11 0 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 tamaño 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.
Un problema de programación entera en el cual todas las variables tienen que ser números enteros, se
llama un problema de programación entera pura. Por ejemplo,
max z 3 x1 2 x 2
(1)
s.a. x1 x 2 6
x1 , x 2 0 ; x1 , x 2 entero
Un problema de programación entera en el cual solamente algunas de las variables tienen que ser nú-
meros enteros, se llama un problema de programación 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 programación entera mixta (x2 no tiene que ser un número entero).
Un problema de programación entera en el cual todas las variables deben ser iguales a 0 ó a 1, se llama
un problema de programación entera 0—1 (algunos le llaman programación lineal binaria).
DEFINICIÓN: El problema de programación lineal que se obtiene al omitir todas las res-
tricciones enteras o 0-1 para las variables, se llama la relajación programación lineal para
la programación entera.
max z 3 x1 2 x2
s.a. x1 x2 6
x1 , x2 0
Se puede considerar cualquier problema de programación entera como la relajación programación lineal
más algunas otras restricciones (las restricciones que indican cuáles variables tienen que ser enteras o
iguales a 0 ó a 1).
Por lo tanto, la relajación programación lineal es una versión menos restringida, o más relajada, de la
programación entera.
Esto significa que la región factible para cualquier programación entera tiene que estar incluida en la
región factible de la relajación programación lineal correspondiente.
Para cualquier programación entera que es un problema de maximización, esto implica que:
El valor óptimo de z para la relajación programación lineal >= al valor óptimo de z para el problema de
programación entera (2)
Este resultado será de importancia cuando se analice la solución de problemas de programación entera.
Para esclarecer más las propiedades de los problemas de programación veamos el sencillo problema si-
guiente:
max z 21 x1 11 x2
s.a. 7 x1 4 x2 13 (3)
x1 , x2 0 ; x1 , x2 entero
En el gráfico se observa que la región factible para este problema está formada por el conjunto de
puntos:
A diferencia de la región factible para cualquier problema de programación lineal, la región factible para
(3) no es un conjunto convexo.
Mediante un simple cálculo y la comparación de los valores de z para cada uno de los seis puntos de la
región factible,
399106110.doc 200
Prof. Ing. Claudio L. R. Sturla
Punto Valor de z 21 x1 11 x 2
0,0 0
0,1 11
0,2 22
0,3 33
1,0 21
1,1 32
Si la región factible para la relajación programación lineal de un problema de programación entera pura
es acotada, como en (3), la región factible de la programación entera estará formada por un número
finito de puntos.
En teoría, se podría resolver este problema enumerando los valores de z para cada punto factible, como
se describió en el párrafo anterior, y determinar el punto factible que tiene el mayor valor de z.
El problema con este método (como podría haber dicho el Dr. Carl Sagan) es que mayoría de los pro -
blemas de programación entera reales tienen regiones factibles que consisten en billones y billones de
puntos factibles.
En tales casos, una enumeración completa de todos los puntos factibles consumiría mucho tiempo de
computadora.
Pero a menudo se resuelven los problemas de programación entera mediante una enumeración inteli-
gente de todos los puntos en la región factible.
Un estudio complementario de (3) esclarece algunas otras propiedades interesantes de los problemas de
programación entera.
Supóngase que un analista ingenuo sugiere el método siguiente para resolver un problema de progra-
mación entera: Primero resuelva la relajación programación lineal; después redondee (hasta el entero
399106110.doc 201
Prof. Ing. Claudio L. R. Sturla
más cercano) cada variable que debe ser un número entero y que tiene un valor fraccionario en la solu-
ción óptima de la relajación programación lineal.
Cuando se aplica este método a (3), se obtiene primero la solución óptima de la relajación de progra -
mación lineal
x1 1,8571 ; x2 0
x1 2 ; x 2 0
z 10 ; x1 2,5 ; x 2 0
399106110.doc 202
Prof. Ing. Claudio L. R. Sturla
x1 2 ; x 2 0 ó x1 3 ; x2 0
Ninguno de los dos candidatos es una solución factible para la programación entera.
Recuérdese que el algoritmo simplex permitía resolver los problemas de programación lineal yendo de
una solución básica factible a una mejor.
También recuérdese que, en la mayoría de los casos, el algoritmo simplex examina solamente una pe-
queña fracción de todas las soluciones básicas antes de encontrar la solución óptima.
Esta propiedad del algoritmo simplex permite resolver un problema de programación lineal relativa-
mente grande mediante una cantidad pequeña de cálculos.
De manera análoga al algoritmo simplex, se podría esperar resolver uno de programación entera me-
diante un algoritmo que pasara de una solución entera factible a una solución entera mejor.
Por desgracia no se conoce tal algoritmo.
Ejemplo N° 3
Una empresa considera cuatro inversiones.
La inversión 1 proporcionará un valor actual neto (VAN) de 16.000 UM; la inversión 2 un VAN de
22.000 UM; la inversión 3 un VAN de 12.000 UM; y la inversión 4 un VAN de 8.000 UM.
399106110.doc 203
Prof. Ing. Claudio L. R. Sturla
Cada inversión requiere la del momento actual: la inversión 1, 5.000 UM; la inversión 2, 7.000 UM; la
inversión 3, 4.000 UM; y la inversión 4, 3.000 UM respectivamente.
Se dispone de 14 000 UM para la inversión.
Formule un problema de programación lineal entera cuya solución nos dirá cómo maximizar el VAN
obtenido de las inversiones 1, 2, 3 y 4.
SOLUCIÓN
Como en las formulaciones de los problemas de programación lineal, comenzamos con la definición de
una variable para cada decisión que se debe tomar.
Esto lleva a definir una variable 0-1:
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 función objetivo para Stockco es
max z 16 x1 22 x 2 12 x3 8 x 4 (5)
La empresa se enfrenta a la restricción de que se puede invertir como máximo 14.000 UM.
Es posible mostrar, mediante el mismo razonamiento utilizado para desarrollar (4), que
5 x1 7 x2 4 x3 3 x4 14 (7)
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 (8)
x j 0 ó 1 j 1, 2, 3, 4
Ejemplo N° 4
Hay seis ciudades (ciudades 1–6) en el Municipio de Florencio Varela.
El municipio debe determinar en qué lugar construir cuarteles de bomberos.
399106110.doc 204
Prof. Ing. Claudio L. R. Sturla
El municipio quiere construir una cantidad mínima 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 programación entera, que indique cuántas estaciones de bomberos habría que
construir y en dónde.
HACIA
DE Ciudad 1 Ciudad 2 Ciudad 3 Ciudad 4 Ciudad 5 Ciudad 6
Ciudad 1 0 10 20 30 30 20
Ciudad 2 10 0 25 35 20 10
Ciudad 3 20 25 0 15 30 20
Ciudad4 30 35 15 0 15 25
Ciudad 5 30 20 30 15 0 14
Ciudad 6 20 10 20 25 14 0
Solución
Para cada ciudad, el municipio debe determinar si se construye una estación de bomberos en esa ciudad
o no. Se definen las variables 0-1 x1 , x 2 , x3 , x 4 , x5 y x6 como
z x1 x 2 x3 x4 x5 x6
Ciudad 1 1, 2
Ciudad 2 1, 2, 6
Ciudad 3 3, 4
Ciudad 4 3, 4, 5
Ciudad 5 4, 5, 6
Ciudad 6 2, 5, 6
Para asegurarse de que por lo menos una estación de bomberos esté dentro de 15 minutos de la ciudad
1, añadimos la restricción
x1 x 2 1 (Restricción de la ciudad 1)
Esta restricción asegura que es imposible que x1 = x2 = 0, así que por lo menos una estación de bomberos
se construirá dentro de 15 minutos de la ciudad 1.
De manera similar, la restricción
399106110.doc 205
Prof. Ing. Claudio L. R. Sturla
x1 x 2 x6 1 (Restricción de la ciudad 2)
asegura que por lo menos una estación 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 función objetivo (y con el hecho de que cada variable debe ser
igual a 0 ó 1), se obtiene el siguiente problema de programación entera 0-1:
min z x1 x2 x3 x 4 x5 x6
s.a. x1 x 2 1
x1 x2 x6 1
x3 x 4 1
x3 x 4 x5 1
x 4 x5 x 6 1
x2 x5 x 6 1
x j 0 ó 1 j 1, 2, 3, 4, 5, 6
z 2 ; x 2 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
Considérese el siguiente problema de ubicación.
Una ciudad está revisando la ubicación de sus comisarías.
La ciudad está constituida por una serie de barrios, como muestra la figura.
399106110.doc 206
Prof. Ing. Claudio L. R. Sturla
Los ejemplos representan una clase de problemas de la programación entera conocidos como problemas
de cobertura de conjuntos.
En un problema de cobertura de conjuntos, se debe "cubrir" cada miembro de un conjunto dado (llámelo
Conjunto 1) mediante un miembro aceptable de algún conjunto (llámelo Conjunto 2).
El objetivo en un problema de cobertura de conjuntos es minimizar el número de elementos del Con-
junto 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 estación en la ciudad 2 cubre las ciudades 1, 2, y 6; la estación 4 cubre las ciudades 3, 4, y 5.
Los problemas de cobertura de conjuntos tienen muchas aplicaciones en áreas como la programación de
las tripulaciones de aerolíneas, la división en distritos políticos, la programación de aerolíneas y la
programación de rutas de camiones.
máx z 3 x1 2 x 2
s.a. 2 x1 x 2 6
x1 , x 2 0 ; x1 , x 2 entero
La solución óptima para la relajación programación lineal para esta programación entera pura es
x1 0 ; x 2 6 ; z 12
Ya que esta solución da valores enteros a cada variable, la observación anterior implica que
x1 0 ; x 2 6 ; z 12
399106110.doc 207
Prof. Ing. Claudio L. R. Sturla
Así, el valor óptimo de z para la programación entera no puede ser mayor que el valor óptimo de z para
la relajación programación lineal.
Esto significa que el valor óptimo de z para la programación entera debe ser
z 12
Sean
Ya que x1 y x2 deben ser enteros, Telfa quiere resolver el siguiente problema de programación lineal
entera:
máx z 8 x1 5 x 2
s.a. x1 x 2 6 (restricción de trabajo)
9 x1 5 x 2 45 (restricción de madera)
x1 , x2 0 ; x1 , x2 enteros
399106110.doc 208
Prof. Ing. Claudio L. R. Sturla
El método de ramificar y acotar empieza por resolver la relajación programación lineal de la progra-
mación entera.
Si todas las variables de decisión toman valores enteros en la solución óptima de la relajación progra -
mación lineal, entonces la solución óptima para la relajación programación lineal será también la solu-
ción óptima para la programación entera.
Llamamos a la relajación programación lineal, subproblema 1.
Desafortunadamente, la solución óptima para la relajación programación lineal es
399106110.doc 209
Prof. Ing. Claudio L. R. Sturla
165 15 9
z ; x1 3,75 ; x 2 2,25
4 4 4
399106110.doc 210
Prof. Ing. Claudio L. R. Sturla
Sabemos que
valor óptimo de z para el problema de programación entera <= valor óptimo de z para la relajación
programación lineal
Esto significa que el valor óptimo de z para la programación entera no puede ser mayor que
165
41,25
4
O sea que el valor óptimo para la relajación programación lineal es una cota superior para las utilidades
de Telfa.
El siguiente paso es dividir la región factible de la relajación programación lineal en un intento por
obtener más información acerca de la ubicación de la solución óptima para la programación entera.
Elegimos arbitrariamente una variable que es una fracción en la solución óptima para la relajación pro-
gramación lineal (por ejemplo x1 ).
Ahora obsérvese que cada punto en la región factible para la programación entera tiene que tener
x1 3 , o bien, x1 4 (¿Por qué no puede tener una solución factible para la programación entera
3 x1 4 ?).
Con esto en mente, "ramificamos" con respecto a la variable x1 y creamos los siguientes dos subpro-
blemas:
399106110.doc 211
Prof. Ing. Claudio L. R. Sturla
15
Obsérvese que ni el subproblema 2, ni el subproblema 3 incluyen puntos con x1
4
Esto significa que la solución óptima para la relajación programación lineal no puede volver a aparecer
cuando resolvemos el subproblema 2 o el subproblema 3.
En el gráfico se observa que se incluyen todos los puntos en la región factible para la programación
entera de Telfa, en la región factible para el subproblema 2 o para el subproblema 3.
También observamos que las regiones factibles para los subproblemas 2 y 3 no tienen puntos en común.
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 ramificación con respecto a x1
Elegimos ahora cualquier subproblema que no se ha resuelto todavía como uno de programación lineal.
Arbitrariamente elegimos resolver el subproblema 2.
9
z 41 ; x1 4 , x 2 1,8
5
El punto C.
399106110.doc 212
Prof. Ing. Claudio L. R. Sturla
Subproblema 1
165
z
4
t1 15
x1
4
9
x2
4
x1 4 x1 3
Subproblema 2
z 41
x1 4 Subproblema 3
9
x2
5
399106110.doc 213
Prof. Ing. Claudio L. R. Sturla
Las restricciones asociadas a cualquier nodo del árbol son las restricciones para la relajación progra-
mación lineal más las restricciones asociadas a los arcos que llevan del subproblema 1 al nodo.
Como la solución óptima para el subproblema 2 no proporcionó una solución con enteros puros, elegi-
mos utilizar el subproblema 2 para crear dos nuevos subproblemas.
Elegimos una variable con un valor fraccionario en la solución óptima para el subproblema 2 y después
ramificamos respecto a esta variable.
Como x 2 es la única variable fraccionaria en la solución óptima del subproblema 2, ramificamos con
respecto a x 2
Dividimos la región 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:
399106110.doc 214
Prof. Ing. Claudio L. R. Sturla
Por lo tanto, el subproblema 4 no puede proporcionar la solución óptima para el problema de progra-
mación entera.
Para indicar este hecho, colocamos una x junto al subproblema 4 (Ver árbol).
Como cualquiera rama que sale del subproblema 4 no proporcionará información útil, es inútil crear
cualquier rama que salga del subproblema 4.
Cuando una ramificación adicional respecto a un subproblema no proporciona información ú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 señala que habría que resolver ahora el subproblema 5.
En el gráfico de ejes cartesianos ortogonales observamos que la solución óptima para el subproblema 5
es el punto I
365 40
z ; x1 ; x2 1
9 9
Esta solución no proporciona inmediatamente información útil; por lo tanto, elegimos dividir la región
factible del subproblema 5 mediante la ramificación respecto a la variable fraccionaria x1
399106110.doc 215
Prof. Ing. Claudio L. R. Sturla
Juntos, los subproblemas 6 y 7 abarcan todos los puntos enteros en la región factible del subproblema 5.
40
También, ningún punto con x1 puede estar en la región factible para el subproblema 6 o para el
9
subproblema 7.
La solución óptima para el subproblema 5 no volverá a aparecer cuando resolvamos los subproblemas 6
y 7.
399106110.doc 216
Prof. Ing. Claudio L. R. Sturla
z 37 ; x1 4 ; x 2 1
Como tanto x1 como x 2 toman valores enteros, esta solución es factible para el problema original de
programación entera.
Una solución que se obtiene resolviendo un subproblema en el cual todas las variables tienen valores
enteros, es una solución candidato.
Como la solución candidato puede ser óptima, tenemos que conservar una solución candidato hasta en-
contrar una mejor solución factible para la programación entera (si la hay).
Tenemos una solución factible para la programación entera original, con z = 37; por lo tanto, se puede
concluir que el valor óptimo de z para la programación entera es 37
Así, el valor de z para la solución candidato es una cota inferior para el valor óptimo de z en la progra-
mación entera original.
Indicamos esto colocando la notación LB = 37 (LB = lower bound) en el cuadrito correspondiente al
siguiente subproblema por resolver.
Vea el árbol.
399106110.doc 217
Prof. Ing. Claudio L. R. Sturla
Sabemos ahora que el subproblema 7 proporciona una solución entera factible, con z = 37
También sabemos que el subproblema 7 no puede proporcionar una solución entera factible con z 37
Así, otra ramificación con respecto al subproblema 7 no proporcionará información nueva acerca de la
solución óptima para la programación entera, y subproblema se ha agotado.
El árbol hasta ahora es:
399106110.doc 218
Prof. Ing. Claudio L. R. Sturla
Los únicos subproblemas que quedan por resolver, son los subproblemas 6 y 3.
Según la regla LIFO, tenemos que resolver ahora el subproblema 6.
En el último gráfico vemos que la solución óptima para el subproblema 6 es el punto A:
z 40 ; x1 5 ; x 2 0
Como todas las variables de decisión tienen valores enteros, la solución del subproblema 6 es una solu-
ción candidato.
Dicha solución candidato tiene un valor de z de 40, que es mayor que el valor de z de la mejor solución
candidato anterior (el candidato 7, con z = 37).
O sea, el subproblema 7 no puede proporcionar la solución óptima para la programación entera (seña-
lamos este hecho colocando una X al lado del subproblema 7).
También actualizamos nuestra LB hasta 40.
Se indica el árbol.
399106110.doc 219
Prof. Ing. Claudio L. R. Sturla
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 solución óptima para la programación 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 sólo el subproblema 6
puede proporcionar la solución óptima para la programación entera.
Así, la solución óptima para la programación entera Telfa es fabricar 5 mesas y 0 sillas.
Esta solución contribuirá con 40 UM a las utilidades.
Al utilizar el método de ramificar y acotar para resolver el problema de Telfa, hemos enumerado im-
plícitamente todos los puntos en la región factible de la programación entera.
Finalmente, se eliminan todos estos puntos (menos el punto correspondiente a la solución óptima) de la
consideración, y se termina el procedimiento de ramificar y acotar.
399106110.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 región factible de la programación entera, examinamos varias soluciones posibles para el problema de
Telfa y mostramos cómo el procedimiento de ramificar y acotar consideró estos puntos como no
óptimos.
Por ejemplo, ¿cómo sabemos que x1 2 y x 2 3 no es óptimo?
Este punto está en la región factible para el subproblema 3, y sabemos que todos los puntos en la región
factible para el subproblema 3 tienen z 39
De esta manera el análisis 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 ningún punto del subproblema 4 es factible, x1 4 ; x 2 2 no puede satisfacer las restricciones
de la programación entera original y, por lo tanto, no puede ser óptimo para el problema de Telfa.
De una manera similar, el análisis de ramificar y acotar ha eliminado todos los puntos x1 ; x 2 (menos
el punto que corresponde a la solución óptima) de la consideración.
Para el problema sencillo de Telfa, usar el método de ramificar y acotar puede parecer como si se utili-
zara un cañón para matar una mosca, pero para una programación entera en la cual la región factible
contiene un gran número de puntos enteros, el método de ramificar y acotar puede ser un método eficaz
para eliminar puntos no óptimos de la consideración.
Por ejemplo, suponga que aplicamos el método de ramificar y acotar y que el LB actual 42 .
Supóngase que resolvemos un subproblema que contiene 1 millón de puntos factibles para la progra-
mación entera.
Si la solución óptima para este subproblema tiene z < 42, ¡habremos eliminado 1 millón de puntos no
óptimos mediante la solución de uno sólo!
Los aspectos clave del método de ramificar y acotar para resolver problemas de programación 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 solución ó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 maximización) que la LB actual.
Paso 2: Se puede eliminar un subproblema de la consideración en las situaciones siguientes: (1)
el subproblema no es factible. En el problema de Telfa, el subproblema 4 se eliminó de la
consideración por esta razón. (2) La LB (que representa el valor de z para el mejor candi-
dato 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 razón.
Recuérdese que al resolver el problema de Telfa mediante el método de ramificar y acotar, se realizaron
muchas elecciones aparentemente arbitrarias.
Por ejemplo, cuando x1 y x 2 resultaron ser valores fraccionarios en la solución óptima subproblema 1,
¿cómo determinamos la variable para la ramificación?
O bien, ¿cómo determinamos qué subproblema resolver después?
La manera en la cual se contestan estas preguntas, puede proporcionar árboles que difieren mucho en
tamaño y en tiempo requerido por la computadora para obtener una solución óptima.
Mediante la experiencia y del ingenio, los usuarios del método de ramificar y acotar han ideado algunas
pautas para tomar las decisiones necesarias.
Se usan comúnmente dos procedimientos generales para determinar qué subproblema se tiene que re-
solver después.
Un procedimiento que se usa muchísimo es la regla LIFO, que elige resolver el subproblema creado más
recientemente.
399106110.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 rápidamente
encuentra una solución candidato.
Después regresamos subiendo hacia la raíz por el otro lado del árbol.
Por esta razón, el enfoque de LIFO se llama frecuentemente rastreo hacia atrás.
El segundo método que se usa comúnmente para determinar qué subproblema se tiene que resolver
después, 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 ramificación.
Después 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 más subproblemas y requiere más memoria en la computadora que el rastreo hacia
atrás.
La base del rastreo por brincos es que el movimiento hacia los subproblemas con buenos valores de z,
nos debería llevar más rápidamente al mejor valor de z
Si dos o más variables son fraccionarias en la solución óptima de un subproblema, ¿con respecto a qué
variable tendríamos que ramificar?
Realizar la ramificación con respecto a la variable fraccionaria que tiene mayor importancia económica
es muchas veces la mejor estrategia.
Cuando más de una variable es fraccionaria en la solución de un subproblema, muchos programas de
cómputo ramificarán con respecto a la variable fraccionaria con la más baja numeración.
Así, si un programa de cómputo requiere la numeración de las variables, se tienen que numerar en el
orden de su importancia económica (1 = más importante, etc.).
Actualizado al 29/11/2.00
D:\INVESTIGACIÓN OPERATIVA\FRBA PL ENTERA — Impreso el 9/10/2018
399106110.doc 222