+ All Categories
Home > Documents > 14 - Frba Pl Entera

14 - Frba Pl Entera

Date post: 31-Jan-2016
Category:
Upload: javier-rime-salvatierra
View: 265 times
Download: 1 times
Share this document with a friend
Description:
operativa
Popular Tags:
34
Prof. Ing. Claudio L. R. 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: Hillier, Frederick S. y Lieberman, Gerald J. Introduc ción a la Investigación de Operacio nes , 3ª edición en Castellano, McGraw Hill de México S. A. de C. V., Naucalpan de Juárez, 1.993, ISBN 968-422- 993-3. Munier, Nolberto J., Aplicaciones de la Programación Lineal , Editorial Astrea, Buenos Aires. Taha, Amdy A., Investigación de Operaciones, una Introducción , Sexta Edición, Prentice Hall, México, 1.998, ISBN 970-17-0166-6. Winston, Wayne L., Investigación de Operaciones , Grupo Editorial Iberoamérica S. A. de C. V., México, ISBN 970-625-029-8, 1.994. 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: Egresos (millones de de UM anuales) Proyecto 1 2 3 Utilidades (millones de document.doc 196
Transcript
Page 1: 14 - Frba Pl Entera

Prof. Ing. Claudio L. R. Sturla

REPÚBLICA ARGENTINA

PROGRAMACIÓN LINEAL ENTERASe 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:

Hillier, Frederick S. y Lieberman, Gerald J. Introduc ción a la Investigación de Operacio nes , 3ª edición en Castellano, McGraw Hill de México S. A. de C. V., Naucalpan de Juárez, 1.993, ISBN 968-422-993-3.

Munier, Nolberto J., Aplicaciones de la Programación Lineal, Editorial Astrea, Buenos Aires. Taha, Amdy A., Investigación de Operaciones, una Introducción, Sexta Edición, Prentice Hall,

México, 1.998, ISBN 970-17-0166-6. Winston, Wayne L., Investigación de Operaciones, Grupo Editorial Iberoamérica S. A. de C. V.,

México, ISBN 970-625-029-8, 1.994.

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:

Egresos (millones de de UM anuales)

Proyecto 1 2 3Utilidades

(millones de UM)1 5 1 8 202 4 7 10 403 3 9 2 204 7 4 1 155 8 6 10 30

Fondos disponibles (millones de UM)

25 25 25

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 como:

document.doc 196

Page 2: 14 - Frba Pl Entera

Prof. Ing. Claudio L. R. Sturla

Por lo tanto nuestro problema de programación lineal entera es:

Maximizar Sujeto a:

con

La solución entera óptima con WinQSB® es:

Ejemplo N° 1

Supóngase que deseamos invertir 14.000 UMHemos 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?

document.doc 197

Page 3: 14 - Frba Pl Entera

Prof. Ing. Claudio L. R. Sturla

La resolución de la relajación programación lineal de este problema es:

8 11 6 4 0 0 0 0 0Base

0 14 5 7 4 3 1 0 0 0 0 20 1 1 0 0 0 0 1 0 0 00 1 0 1 0 0 0 0 1 0 0 10 1 0 0 1 0 0 0 0 1 00 1 0 0 0 0 0 0 0 0 1

0 -8 -11 -6 -4 0 0 0 0 0

0 7 5 0 4 3 1 0 0 0 0 7/50 1 1 0 0 0 0 1 0 0 0 111 1 0 1 0 0 0 0 1 0 00 1 0 0 1 0 0 0 0 1 00 1 0 0 0 1 0 0 0 0 1

11 -8 0 -6 -4 0 0 11 0 0

0 2 0 0 4 3 1 -5 0 0 0 1/28 1 1 0 0 0 0 1 0 0 011 1 0 1 0 0 0 0 1 0 00 1 0 0 1 0 0 0 0 1 0 10 1 0 0 0 1 0 0 0 0 1

19 0 0 -6 -4 0 8 11 0 0

6 1/2 0 0 1 ¾ ¼ -5/4 0 0 08 1 1 0 0 0 0 1 0 0 011 1 0 1 0 0 0 0 1 0 00 ½ 0 0 0 -3/4 -1/4 5/4 0 1 00 1 0 0 0 1 0 0 0 0 1

22 0 0 0 ½ 3/2 ½ 11 0 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.

document.doc 198

Page 4: 14 - Frba Pl Entera

Prof. Ing. Claudio L. R. Sturla

Dicho simplemente, un problema de programación entera es un problema de programación lineal en el cual algunas de las variables, o todas, tienen que ser números enteros no negativos.Veremos que encontramos que se pueden formular muchas situaciones de la vida real mediante la programación entera.Desafortunadamente, también veremos que normalmente los problemas de programación entera son más difíciles de resolver que los de programación lineal.

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,

(1)

es un problema de programación entera pura.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,

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.

Por ejemplo, la relajación programación lineal de (1) es:

Se puede considerar cualquier problema de programación entera como la relajación programación li-neal más algunas otras restricciones (las restricciones que indican cuáles variables tienen que ser ente-ras 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.

document.doc 199

Page 5: 14 - Frba Pl Entera

Prof. Ing. Claudio L. R. Sturla

Para esclarecer más las propiedades de los problemas de programación veamos el sencillo problema si-guiente:

(3)

En el gráfico se observa que la región 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 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,

Punto Valor de 0,0 00,1 110,2 220,3 331,0 211,1 32

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

document.doc 200

Page 6: 14 - Frba Pl Entera

Prof. Ing. Claudio L. R. Sturla

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

El redondeo de esta solución proporciona la solución

como una posible solución óptima para (3).Sin embargo, esta solución no es factible para (3) y, por lo tanto, no puede ser de ninguna manera una solución óptima.Aun si se redondea hacia abajo (produciendo la posible solución ), no se obtiene la solución óptima.Para algunos problemas de programación entera, incluso puede resultar que cada redondeo de la solu-ción óptima de la relajación programación lineal no es factible para el problema de la programación entera.Para ver esto, considérese el siguiente problema de programación entera:(GRAFICAR PORQUE SINÓ NO SE VE)

La solución óptima para la relajación programación lineal de esta programación entera es

La solución gráfica es:

document.doc 201

Page 7: 14 - Frba Pl Entera

Prof. Ing. Claudio L. R. Sturla

El redondeo de esta solución proporciona como solución posible

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.

Otro problema de programación enteraEn esta sección se mostrará cómo se puede formular situaciones prácticas como problemas de progra-mación entera.Este ejemplo es un problema de presupuesto de capital similar al problema de la Star Oil, que hemos visto en programación lineal genérica.

Ejemplo N° 3

Una empresa considera cuatro inversiones.

document.doc 202

Page 8: 14 - Frba Pl Entera

Prof. Ing. Claudio L. R. Sturla

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.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ÓNComo 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, x2 = 1 si se realiza la inversión 2, y x2 = 0 si no se realiza.El VAN obtenido por Stockco (en miles de UM) es

VAN total obtenido por Stockco = (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 función objetivo para Stockco es

(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

Cautidad total invertida (en miles de UM) = (6)

Ya que se pueden invertir 14.000 UM, se debe satisfacer

(7)

Al combinar (5) y (7) con las restricciones , se tiene el siguiente problema de programación entera 0-1:

(8)

Problemas de cobertura de conjuntosEl siguiente ejemplo es típico para una clase importante de problemas de programación entera, conoci-dos como problemas de cobertura de conjuntos.

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.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.

document.doc 203

Page 9: 14 - Frba Pl Entera

Prof. Ing. Claudio L. R. Sturla

En la tabla se muestran los tiempos requeridos (en minutos) para viajar entre las ciudades del munici -pio.Formule un problema de programación entera, que indique cuántas estaciones de bomberos habría que construir y en dónde.

Tiempo requerido para viajar entre ciudades en el condado de Kilroy

HACIADE Ciudad 1 Ciudad 2 Ciudad 3 Ciudad 4 Ciudad 5 Ciudad 6Ciudad 1 0 10 20 30 30 20Ciudad 2 10 0 25 35 20 10Ciudad 3 20 25 0 15 30 20Ciudad4 30 35 15 0 15 25Ciudad 5 30 20 30 15 0 14Ciudad 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 como

Entonces el número total de estaciones de bomberos que se construyen está dado por x1 + x2 + x3 + x4 + x5 + x6, y la función objetivo del municipio es minimizar

¿Cuáles son las restricciones del municipio?El Municipio de Florencio Varela tiene que asegurarse de que haya una estación 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 1, 2Ciudad 2 1, 2, 6Ciudad 3 3, 4Ciudad 4 3, 4, 5Ciudad 5 4, 5, 6Ciudad 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

(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 bombe-ros se construirá dentro de 15 minutos de la ciudad 1.De manera similar, la restricción

(Restricción de la ciudad 2)

document.doc 204

Page 10: 14 - Frba Pl Entera

Prof. Ing. Claudio L. R. Sturla

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:

Una solución óptima para este problema de programación lineal es:

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.

document.doc 205

Page 11: 14 - Frba Pl Entera

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.

Resolución de problemas de programación entera pura mediante el método de ramificar y acotar (branch and bound)En la práctica, la mayoría de los problemas de programación entera se resuelven mediante el uso de la técnica de ramificar y acotar.Los métodos de ramificar y acotar encuentran la solución óptima para un problema de programación entera mediante la enumeración eficiente de los puntos en la región factible de un subproblema.Antes de explicar cómo funciona la ramificación y el acotamiento, es necesario hacer la siguiente ob-servación elemental, pero importante: si resuelve la relajación de programación lineal de una progra-mación entera pura y obtiene una solución en la cual todas las variables son números enteros, entonces la solución óptima de la relajación de programación lineal será también la solución óptima de programación entera.Para darse cuenta de la validez de esta observación, considérese el siguiente problema de programación entera:

La solución óptima para la relajación programación lineal para esta programación entera pura es

Ya que esta solución da valores enteros a cada variable, la observación anterior implica que

también es la solución óptima para el problema de programación entera.Obsérvese que la región factible para la programación entera es un subconjunto de todos los puntos en la región factible de la relajación programación lineal.Véase el gráfico

document.doc 206

Page 12: 14 - Frba Pl Entera

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

Pero el punto es factible para la programación entera y tiene Por lo tanto debe ser óptimo para la programación enteraEjemplo N° 6La 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 programación lineal entera para maximizar la utilidad de Telfa.

Sean

x1 = número de mesas fabricadasx2 = número de sillas fabricadas

Ya que x1 y x2 deben ser enteros, Telfa quiere resolver el siguiente problema de programación lineal entera:

document.doc 207

Page 13: 14 - Frba Pl Entera

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

document.doc 208

Page 14: 14 - Frba Pl Entera

Prof. Ing. Claudio L. R. Sturla

document.doc 209

Page 15: 14 - Frba Pl Entera

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

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 ).Ahora obsérvese que cada punto en la región factible para la programación entera tiene que tener , o bien, (¿Por qué no puede tener una solución factible para la programación entera ?).Con esto en mente, "ramificamos" con respecto a la variable y creamos los siguientes dos subpro-blemas:

Subproblema 2 = Subproblema 1 + la restricción Subproblema 3 = Subproblema 1 + la restricción

document.doc 210

Page 16: 14 - Frba Pl Entera

Prof. Ing. Claudio L. R. Sturla

Obsérvese que ni el subproblema 2, ni el subproblema 3 incluyen puntos con

Esto significa que la solución óptima para la relajación programación lineal no puede volver a apare-cer 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 co-mún.

Ya que se generaron los subproblemas 2 y 3 agregando restricciones en las que interviene , decimos que se crearon los subproblemas 2 y 3 mediante la ramificación con respecto a Elegimos ahora cualquier subproblema que no se ha resuelto todavía como uno de programación lineal.Arbitrariamente elegimos resolver el subproblema 2.

En el gráfico anterior vemos que la solución óptima para el subproblema 2 es

El punto C.En el gráfico se resume lo ejecutado hasta ahora.Por ejemplo, el subproblema 3 es:

document.doc 211

Page 17: 14 - Frba Pl Entera

Prof. Ing. Claudio L. R. Sturla

Subproblema 1

Subproblema 2

Subproblema 3

La representación de todos los subproblemas que se han creado se llama árbol.Cada subproblema es un nodo del árbol, y cada línea que une dos nodos del árbol se llama arco.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.

document.doc 212

Page 18: 14 - Frba Pl Entera

Prof. Ing. Claudio L. R. Sturla

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 es la única variable fraccionaria en la solución óptima del subproblema 2, ramificamos con respecto a Dividimos la región factible para el subproblema 2 en dos partes, que corresponden a los puntos con

, respectivamente.Así se crean los siguientes dos subproblemas:

Subproblema 4 = Subproblema 1 + las restricciones = subproblema 2 + la restricción

Subproblema 5 = Subproblema 1 + las restricciones = subproblema 2 + la restricción .

Las regiones factibles para los subproblemas 4 y 5, se muestran en el gráfico 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 más adelante, seleccionamos resolver el subproblema creado más re-cientemente para resolverlo. (Esto se llama la regla LIFO, del inglés 1ast in flrst out.).La regla LIFO señala que tendríamos que resolver ahora el subproblema 4 ó 5.Elegimos arbitrariamente resolver el subproblema 4.En el gráfico observamos que el subproblema 4 no es factible.Por lo tanto, el subproblema 4 no puede proporcionar la solución óptima para el problema de progra-mación entera.

document.doc 213

Page 19: 14 - Frba Pl Entera

Prof. Ing. Claudio L. R. Sturla

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, deci-mos 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

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

document.doc 214

Page 20: 14 - Frba Pl Entera

Prof. Ing. Claudio L. R. Sturla

Esto proporciona dos nuevos subproblemas como se muestra en el gráfico:

Subproblema 6 = Subproblema 5 + la restricción Subproblema 7 = Subproblema 5 + la restricción

Juntos, los subproblemas 6 y 7 abarcan todos los puntos enteros en la región factible del subproblema 5.

También, ningún punto con puede estar en la región factible para el subproblema 6 o para el

subproblema 7.La solución óptima para el subproblema 5 no volverá a aparecer cuando resolvamos los subproblemas 6 y 7.

document.doc 215

Page 21: 14 - Frba Pl Entera

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 señala que ahora tenemos que resolver el subproblema 6 o el subproblema 7.Elegimos arbitrariamente, resolver el subproblema 7.Del gráfico observamos que solución óptima para el subproblema 7 es el punto H

Como tanto 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 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.

document.doc 216

Page 22: 14 - Frba Pl Entera

Prof. Ing. Claudio L. R. Sturla

Sabemos ahora que el subproblema 7 proporciona una solución entera factible, con z = 37También sabemos que el subproblema 7 no puede proporcionar una solución entera factible con

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:

document.doc 217

Page 23: 14 - Frba Pl Entera

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:

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.

document.doc 218

Page 24: 14 - Frba Pl Entera

Prof. Ing. Claudio L. R. Sturla

Solamente queda el subproblema 3 por resolver.Del segundo gráfico del problema, se obtiene que la solución óptima para el subproblema 3 es el punto F:

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.

Aquí insertar el problema de página 21 del tutorial de Trick

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.

document.doc 219

Page 25: 14 - Frba Pl Entera

Prof. Ing. Claudio L. R. Sturla

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.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 no es óptimo?Este punto está en la región factible para el subproblema 3, y sabemos que todos los puntos en la re-gión factible para el subproblema 3 tienen De esta manera el análisis del subproblema 3 muestra que no puede vencer a z = 40 y no puede ser óptimo.Otro ejemplo es ¿por qué no es óptimo ?Siguiendo las ramas del árbol, encontramos que corresponde al subproblema 4.Como ningún punto del subproblema 4 es factible, 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 (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 .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 siguien-tes tres situaciones llevan a un subproblema que se agota: (1) el subproblema no es facti-ble. (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 realiza-ron muchas elecciones aparentemente arbitrarias.Por ejemplo, cuando 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 algu-nas pautas para tomar las decisiones necesarias.Se usan comúnmente dos procedimientos generales para determinar qué subproblema se tiene que re-solver después.

document.doc 220

Page 26: 14 - Frba Pl Entera

Prof. Ing. Claudio L. R. Sturla

Un procedimiento que se usa muchísimo es la regla LIFO, que elige resolver el subproblema creado más recientemente.LIFO nos baja por un lado del árbol de ramificar y acotar (como en el problema de Telfa) y rápida-mente 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 zEl 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 ha-cia 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 zSi 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.).

La teoría 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 solución mayor (si maximizamos).

Actualizado al 29/11/2.00 D:\INVESTIGACIÓN OPERATIVA\FRBA PL ENTERA — Impreso el 22/04/2023

document.doc 221


Recommended