M.C. Irma Estrada Patiño
Capítulo 5 Programación Entera
Contenido:
5.1 Introducción y casos de aplicación 5.2 Definición y modelos de programación entera 5.3 Método de ramificar y acotar (Branch and Bound) 5.4 Método de planos cortantes 5.5 Algoritmo aditivo de Balas 5.6 Ejercicios
126
M.C. Irma Estrada Patiño
PROGRAMACIÓN ENTERA 5.1 Introducción y casos de aplicación Es frecuente al tener que resolver problemas en los cuales las soluciones tienen que ser valores enteros como por ejemplo: números de unidades a producir por máquina, número de máquinas necesarias, etc. Casos de la programación entera (binaria) Esto sucede cuando en el modelo lineal ponemos condiciones, entonces se deberá definir una nueva variable con resultados 0,1
Ejemplo 1. Modelo de costo fijo . En muchas de las aplicaciones, el costo de producción tiene dos componentes: un costo de puesta en marcha, que es un cargo fijo que no esta relacionado con el volumen de producción, y un costo variable, o utilidad, que esta relacionado directamente con dicho volumen. El uso de la variable 0-1 hace posible la inclusión del costo de puesta en marcha fijo en la mezcla de productos o en el problema de programación de producción. Ver el siguiente ejemplo. Un producto tiene una utilidad de $120/unidad. Sin embargo se cuenta con un costo de mantenimiento de la maquina de $2450.00 por tanda de producción. Este costo seria cero si no se produce ninguna unidad. Representación de la situación: Max Z= 120X –2450Y Y≤1 X ≤ MY X≥0; Y=0,1 Sea X el número de unidades producidas en donde Z es > 0 si X > 0, y Z = 0 si X = 0 Sea Y valor de una nueva variable que toma los valores 0 ó 1 Cuando Y = 0, la segunda restricción obliga a que X sea 0 y Z sea también 0; cuando Y = 1, no existe límite practico sobre X; además el costo del cargo fijo $2450.00 se deduce de la utilidad .Por lo tanto, el uso de cero/uno o de la variable binaria con enteros Y permite formular este tipo de problemas con restricciones lineales.
Ejemplo 2. Presupuesto de capital. Gran parte de la flexibilidad de modelos obtenida mediante la programación lineal de enteros se debe al uso de las variables 0-1. En muchas aplicaciones, las variables 0-1 aportan selecciones o elecciones con el valor de la variable igual a uno si una actividad correspondiente se efectúa e igual a cero si la actividad correspondiente no se efectúa. Ver el siguiente ejemplo. Una compañía constructora esta pensando en invertir en varios proyectos que tienen necesidades de capital a lo largo de los siguientes tres años. Los datos de entrada esperados de cada proyecto y los gastos anuales (en millones de pesos) se encuentran en la siguiente tabla. Proyecto A B C Fondos disponibles
Año 1 15 10 15 30
Año 2 10 15 10 50
Año 3 10 20 10 30
Rendimiento 60 40 35
El modelo de programación lineal de enteros 0-1, en millones de pesos esta representado de la siguiente manera:
127
M.C. Irma Estrada Patiño
X1 = 1 si se acepta efectuar el proyecto A y 0 si no se acepta X2 = 1 si se acepta efectuar el proyecto B y 0 si no se acepta X3 = 1 si se acepta efectuar el proyecto C y 0 si no se acepta La función objetivo de la empresa es maximizar el valor del rendimiento en todos los proyectos aceptados. El problema tiene 3 restricciones ya que esta sujeto a fondos disponibles para realizar los proyectos por año. Máx Z = 60 X1 + 40X2 + 35 X 3 Sujeto a 15X1 + 10X2 + 15X3 ≤ 30 10X1 + 15X2 + 10X3 ≤ 50 10X1 + 20X2 + 10X3 ≤ 30 X1, X2, X3 = 0,1 La solución para este problema usando el QSB determina lo siguiente: X 1 = 1; X2 = 1; X3 =0 y Z = 100. Esto quiere decir que se aceptan los proyecto A, y B, pero no el C con un valor máximo de Z = 100
Ejemplo 3. Restricción tipo Y/O . Algunas veces en una situación de toma de decisiones, debe mantenerse una u otra de las restricciones, pero no ambas. Ver el siguiente ejemplo. 2X1 + 3X2 ≤ 5 ó 4X1 +2X2 ≤ 7 Pero no ambas Se identifica una nueve variable llamada Y cero/uno de tal manera que quedaría la restricción 2X1 + 3X2 ≤ 5 + MY 4X1 +2X2 ≤ 7 + M (1-Y) Cuando Y = 0, la primera restricción es obligatoria; pero el lado derecho de la segunda se vuelve muy grande y por lo tanto no es obligatoria. Al contrario, cuando Y = 1, la segunda restricción obliga, pero la primera no, porque MY es muy grande.
Ejemplo 4. Ubicación de una planta. Algunas empresas se pregunta donde localizar su próxima empresa, y haciendo uso de la programación con enteros podemos solucionar este tipo de problemas. Ver el siguiente ejemplo. El servicio de estudios de una empresa pretende construir nuevas fábricas en las ciudades A y B. Desea además, construir un nuevo almacén, pero éste debe hacerse en una de las ciudades donde se construya una fábrica. La tabla siguiente muestras los datos de valor actual neto, el costo de la inversión, en millones de pesos. El problema se representa de la siguiente manera. Tabla de datos Construcción Valor actual neto Costo de inversión Fabrica en A 12 9 Fabrica en B 8 6 Almacén en A 9 8 Almacén en B 7 5 El presupuesto es de 13 millones de pesos La formulación del problema usando programación entera. X1 = 1 si se construye la fabrica en la ciudad A y 0 si no se construye X2 = 1 si se construye la fabrica en la ciudad B y 0 si no se construye X3 = 1 si se construye el almacén en la fábrica A y 0 si no se construye X4 = 1 si se construye el almacén en la fábrica B y 0 si no se construye 128
M.C. Irma Estrada Patiño
Máx Z = 12 X 1 + 8X2 + 9X3 + 7X4 (maximizar el máximo valor neto) Sujeto a 9X1 +6X2 +8X3 +5X4 ≤ 13 (presupuesto de inversión) X3 +X4 ≤ 1 (construcción de a lo sumo un almacén) X3 ≤ X1 (solo se puede construir un almacén en A (B) si se construye una fabrica en A (B)) X4 ≤ X2 (idem) X1=X2 = X3 = X4 = 0,1 La solución para este problema usando el QSB determina lo siguiente: X 1 = 0, X2 = 1, X3 = 0, X4 = 1, con un valor de Z = 15. Esto quiere decir que se va a construir la fábrica en la ciudad B y el almacén en la fábrica B.
5.2 Definición y modelos de programación entera Parte del problema de la programación entera radica en la diferencia esencial que existe la programación lineal y la entera, en la programación lineal se maximiza o minimiza una función sobre una región de factibilidad convexa, mientras que al usar los métodos de programación entera se maximiza una función sobre una región de factibilidad que generalmente no es convexa. De tal manera que la programación entera tiene más complicaciones que la programación lineal. Este tipo de problemas se pueden resolver mediante el uso de algoritmos especiales A continuación se presentaran los tres problemas con estructura entera. Problema Entero (PE) Opt Z = cX AX≤ b X≥ 0, entero Problema entero-mixto (PEM) Opt Z = AX +
cX + dY BY ≥ b < X ≥0, Y ≥ 0, entero
Problemas entero-cero-uno (PECU) o problema binario (PB) Opt Z =
cX + AX
≥b
< X = 0, 1
5.3 Método de BRANCH AND BOUND (ramificar y acotar) Este método ó algoritmo se desarrolló con el con el objeto de resolver el problema del agente viajero. El problema consiste en encontrar la ruta que debe de seguir el agente en tal forma que minimice el costo del viaje después de visitar n ciudades volviendo al punto de partida sin pasar dos veces por la misma ciudad. 129
M.C. Irma Estrada Patiño
Supongamos que se tiene 4 ciudades con los correspondientes costos de viaje entre ciudades. 1 2 3 4 ∞* 10 12 18 1 ∞ 4 2 7 10 3 11 10 ∞ 8 4 6 12 8 ∞ *costo infinito ya que no tiene sentido ir de la ciudad i a la ciudad i El problema se reduce a realizar una asignación entre ciudades obteniendo así la ruta deseada. Un ejemplo sería el indicado en la matriz de costos: De 1 2 3 4
A 2 3 4 1
1
2
4
3
Costo 23 unidades Este problema no es un caso de asignación común y corriente ya que es posible que al aplicar el algoritmo de asignación lineal se genere una solución que no cumple con el requisito de un viaje completo, como sería el caso siguiente: 1 1 2 3 4
∞*
2 3
4 6 5
∞
3 8 5
8 4
1
∞
4 7 6 2
∞
De 1 a 2 y de 2 a 1; de 4 a 3 y de 3 a 4 El algoritmo de Branch and Bound ayuda en la solución de este tipo de problemas al examinar el conjunto de soluciones factibles en busca de la solución optima. Este algoritmo se basa en subdividir el conjunto de posibles soluciones en subconjuntos mutuamente exclusivos: Ver fig. 5.1
Todos los via es i,j i.j m,n
m,n
k,l
k,l
Fig.4.1modelo general ramificar y acotar
130
M.C. Irma Estrada Patiño
El nodo i, j indica los viajes que incluyen ir de la ciudad i, a la ciudad j, en cambio el nodo i, j indica los viajes que no incluyen ir de la ciudad i a la ciudad j. Los demás nodos se pueden interpretar de manera similar. Para cada rama (nodo) se obtiene el límite inferior el cual sirve como base para el algoritmo al indicar cual es el conjunto de posibles viajes con mejores posibilidades. Este conjunto se divide en nuevos subconjuntos calculando sus límites inferiores y en cada nueva subdivisión seleccionamos como origen el nodo con mejores posibilidades hasta obtener la solución óptima. A partir del siguiente problema ilustraremos el algoritmo ver datos en la fig. 5.2 Paso I. Es necesario generar un cero en cada renglón y columna registrando el total de unidades en que se redujo la matriz ver fig. 5.3 1
2 4
1 ∞ 2 5 3 8 4 6
3 9 6
∞ 10 5
4 8 7 4
∞
1 1 ∞ 2 0 3 4 4 4
∞
2
Fig.5.2 datos del problema original
2 0
∞
3 5 1
6 3
0
∞
4 4 2 0
∞
reducción (4) (5) (4) (2) Total =15
Fig.5.3 primer calculo de reducción
Paso II. Se calculan los costos de excluir algún par de ciudades. O sea cual es el costo en el que se incurrirá al no seleccionar ese par de ciudades en la ruta. Esto se hace para los ceros ya generados (los pares de ciudades de costo menor). Por ejemplo: si de 1 nos vemos a 2 (excluir 1 → 2 de la ruta) lo menos que nos costará esta decisión es: de 1 ir a 4 cuyo costo es el menor (4) y llegar a 2 de 4 (3) en total 7 unidades, este es el costo de exclusión para (1,2) En general el mínimo costo de excluir un par de ciudades se calcula de la siguiente forma: Para el par (i, j), el costo de exclusión es la suma del elemento menor de la columna j y del elemento menor del renglón i. (se excluye la celda i, j) Aplicando la anterior se tendrá la siguiente tabla: 1 1 2 3 4
∞ 0 4 4
2 *0 5
∞
3 5 1
6 3
0
7
∞
4 4 2 06 4
∞
*costo de exclusión Paso III Se selecciona el par de ciudades con costos de exclusión mayor (para minimizar el costo del viaje) Se cancelan el renglón i y la columna j y se cambia el costo de ir de j → i ya que es imposible realizar eses viaje puesto que se volvería al punto de partida lo cual no es factible por lo que el costo de j → i será infinito para asegurar que no se seleccionará ese par como parte de la ruta.
131
M.C. Irma Estrada Patiño
LI =15 Todos los via es 1,2
+5 1,2
LI=20
LI=22 Los límites inferiores de (1,2) y de (1,2) son: El límite inferior de (1,2) es de 15+7 ya que al no incluir (1,2) lo menos que nos costará será 7 unidades más. El límite inferior de (1,2) es de 15 más las unidades que sean necesarias para que la matriz que incluye el par (1,2) tenga ceros en sus columnas y renglones.
1 2
1 ~
2
∞*
ל ל ל
4 4
▓
*de 2 a 1 no es factible. Como el segundo renglón reducir la matriz 1 2 1 2 ∞* 3 0 4 0 (4)
~ 1
~ 2 0
∞
∞
0
y la primer columna no tiene ningún cero es necesario 3
4
reducción
0
1 0
(1)
∞ 0
∞ Total=5
Por lo tanto el límite inferior para (1,2) es: LI = 15 + 5 = 20 Paso IV. Se investiga el subconjunto (rama) que tenga el límite inferior menor. En este caso será el conjunto de viajes que incluyen el par (1,2) = LI =20 Paso V. Los costos de exclusión considerando como parte de la ruta a (1,2) se calculan de la matriz en la que marcamos ese par (se eliminó) 1 1 2 3 4
3
4
∞*
01
0 00
1 01
0
0
2
∞
∞
El par con costo de exclusión mayor es: (2,3) y (3,4) con un costo de una unidad. Seleccionando el par (2,3), (arbitrariamente) se tiene:
132
M.C. Irma Estrada Patiño
Todos los viajes
15
1,2 LI=22
20 1,2 aan
2,3
2,3 LI=20
LI=21
El límite inferior de (2,3) es 21 debido a que al no incluir el par (2,3) el costo será aumentado en una unidad. El límite inferior de (2,3) dependerá de si al eliminar el segundo renglón y la tercer columna, no es necesario reducir la matriz para tener ceros en columnas y renglones. 1
2
3
4
1 2 3 00 0∞ ∞ 4 0∞ Reducción = cero El límite inferior de (2,3) será: LI= 20+0=20 Paso VI. De las ramas la que tiene el límite inferior es la rama que incluye a (2,3), LI= 20 El par con costo de exclusión mayor será: (3,4) y (4,1) con un costo infinito. ( de la matriz V) se tiene.
Todos los viajes 1,2 LI=22
15
20 1,2 aan
2,3 LI=21
LI=∞2 3,4
2,3 LI=20 3,4
LI=20
El límite inferior de (3,4) es infinito debido a que el costo de excluir (3,4) es infinito. El límite inferior de (3,4) es: 1 2 3 4 1 2 3 4 0∞ Reducción = cero De donde: LI=20+0 =20
133
M.C. Irma Estrada Patiño
VII. El l {imite inferior es el de la rama que incluye a (3,4) y la única selección posible es el par (4,1), por lo tanto se tiene que ver grafica:
Todos los viajes 1,2 LI=22
15
20 1,2 aan
2,3 LI=21
LI=∞2 3,4
2,3 LI=20 3,4 4,1
LI=∞
LI=20 4,1 LI=20
El límite inferior de (4,1) es 20, ya que con la selección ya no es necesario seguir analizando la matriz porque esta rama representa una ruta completa. Paso VIII. La rama con límite inferior menor es la que incluye a (4,1) y como representa una ruta completa por lo tanto será solución óptima. El costo del viaje es de 20 unidades. Ir de 4 a 1 de 4 a 3 , de 1 a 2 y de 2 a 3 Si solucionamos el problema por enumeración se tendrán l as siguientes rutas: ruta costo 12341 20* 12431 21 13241 33 13421 23 14231 27 14321 25 *costo optimo Se puede ver que el óptimo coincide con el encontrado. La razón por la cual en el análisis original no se desarrolló la rama (2,3) fue porque su limite inferior era de 21 unidades y el de (2,3) era de 20 unidades, y esto significa que lo mejor que se puede obtener desarrollando esa rama es una ruta con un costo de 21 unidades, en cambio si se desarrolla la de (2,3) lo mejor que se puede obtener es una ruta con un costo de 20 unidades.
134
M.C. Irma Estrada Patiño
A continuación se presentará el algoritmo de Branch and Bound aplicado a un problema de asignación y a uno de programación entera. •
Algoritmo de Branch and Bound para el problema de asignación lineal (Caso Minimizar)
I. II.
Establecer como límite superior inicial de la función objetivo (LS0 = ∞) Encontrar el límite inferior inicial de la función objetivo al examinar la matriz de costos del problema: seleccionar de cada columna el costo menor y sumar los costos seleccionados. (LI= mínimo posible, no necesariamente factible). Partir del origen o conjunto que representa todas las soluciones y descomponerlo en varios subconjuntos (ramas), al asignar el primer trabajo a diferentes trabajadores.
III.
origen A-1……..
C-1…………... X-1
“Cada asignación posible representa un nodo en el diagrama” IV.
Determinar el límite inferior de cada “rama” o subconjunto o sea el mínimo valor posible (no necesariamente factible), para lo cual se elimina de la matriz de costos la columna del trabajo asignado y el renglón del trabajador asignado y se repite lo explicado en el paso dos, obteniendo el costo mínimo posible con respecto a las columnas no asignadas; la suma de este costo y el de asignación hecha hasta el momento nos darán el límite inferior de la rama analizada. Cuando uno de los límites calculados represente una solución factible se marcará con una F. V. Determinar el nuevo límite superior, para esto es necesario examinar los límites inferiores de las soluciones factibles, seleccionando el menor de ellos como nuevo límite superior. LS= Min {LI(factible)} VI. Omitir de posterior investigación aquellas ramas cuyo límite inferior sea mayor que el nuevo límite superior “Si al terminar este paso no queda ninguna rama excepto la rama que nos indica el límite superior, entonces ésta será la solución óptima”. De lo contrario pasar al paso VII porque aún no se obtiene el óptimo. VII. Iniciar la siguiente descomposición en el nodo con menor límite inferior. Esto se logra asignando el siguiente trabajo a cada uno de los trabajadores disponibles (sin trabajo asignado). Se ilustrará el algoritmo a través del siguiente ejemplo: se quiere asignar de manera óptima 4 trabajadores a 4 tareas los costos de adaptación y preparación se indican a continuación: 135
M.C. Irma Estrada Patiño
Tareas 1 2 3 5 6 4 10 7 8 5 6 4 5 7 4
A trabajadores B C D
4 8 9 3 6
Paso I. LS0 = ∞ Paso II. LI= 5+6+4+3=18 Paso III. (asignar el trabajo 1)
origen A-1
C-1 B-1
X-1
Paso IV. Límites inferiores:
A
1 5
1 7 6 7
8 4 4
9 3 6
LI=18
B
1 6
4
8
6 7
4 4
3 6
1
10
LI=23
C
6 7
4 8
8 9
7
4
6
6 7 6
5
LI=21
D
4 8 4
8 9 3
5 LI=18
Paso V. Nuevo límite superior LS=23 Paso VI. No podemos eliminar ninguna rama. Paso VII. Iniciar siguiente ciclo comenzando en A-1
B-2 18
C-2
B-1 23(F)
D-2
A1
C-1 D-1
21
18
136
M.C. Irma Estrada Patiño
Paso IV. 1 5
A B
2
1 5
A 7 6 7
4 4
3 6
C
2
5
LI=5+7+(4+3) LI=19(F)
6 1
8
9
A 1
4
6
D
LI= 5+6+(4+6) LI=21
1 5
2 8 4
9 3
7 LI= 5+7+(4+3) LI=19
Paso V. Nuevo límite superior LS= Mín LI (F)=19 Paso VI. Eliminar las ramas que no se considerarán
B-2
19F
A-1
C-2
21
B-1 23(F)
D-2
19
C-1 D-1
21
18
Paso VII. Iniciar el siguiente ciclo en D-1 (o sea asignar trabajo 2)
A-1 B-1
B-2
19F
C-2
X
D-2
19
X C-1 X D-1
18
A-2 D-2 C-2
Paso IV. 1 A
2 6
1
5
1 4
B D
2
8 4
LI=5+6+(4+3) LI=18
9 3
D
2
8
4 8
7 5
4
LI= 5+7+(4+3) LI=19(F)
3
C D
8 9
6 5 LI= 5+6+(4+8) LI=23
137
M.C. Irma Estrada Patiño
Paso V. Nuevo límite superior
A-1 B-1
B-2
19F
C-2
X
D-2
19
X C-1 X D-1
18
A-2
18 D-2
19(F)
C-2 23 X
Paso VI. Se elimina D-1, C-2 Paso VII. Iniciar siguiente ciclo en D-1, A-2 (asignar trabajo 3) B-3
D-1
18
A-2 C-3
Paso IV. 1
2 6
A B
3
1 A
3 9
8 D
2 6
5
C D
3
5
LI=22(F)
4 LI= 24(F)
Paso V. Nuevo límite superior
A-1 B-1
B-2
19F
C-2
X
D-2
19
X
22
C-1 X D-1
18
A-2 18
X
B-3 C-3
24 X
D-2
19(F)
C-2 23 X
138
M.C. Irma Estrada Patiño
Paso VI. Se eliminarán D-1, A-2, B-3 y D-1.A-2, C-3 Paso VII. Iniciar siguiente ciclo en A-1, DA-1 D-2
19
B-3
C-3
Paso IV.
A B C D
1 5
2
3 A B C D
9 4 7
1 5
2
3 8 3
7
LI=25 (F)
LI= 23 (F)
Paso V. Nuevo límite superior
A-1 B-1
X
C-1
B-2
19F
C-2
X
23 F X
D-2 19 25F X
X
D-1
B-3 A-2 18
22 X
C-3
24 X
D-2 19(F) C-2 23 X
Paso VI. Se eliminan B-3 y C-3 Paso VII. Como las dos ramas faltantes son factibles e iguales al límite superior concluimos que tenemos la solución óptima y que es múltiple. A B C D
1 5
2
3
4
7 3 4 Costo = 19 Solución 1
1 A B C D
2
3 4
4
7 3 5 Costo =19 Solución 2
Nota: Si se trata de un problema de maximización todo sería igual excepto que se buscaría los valores mayores y los límites serían: lí mite inferior en cada ciclo y límite superior en cada rama. 139
M.C. Irma Estrada Patiño
•
Método de Ramificar y acotar también llamado ALGORITMO DE BRANCH AND BOUND para problemas de Programación Entera.
I.
Se encuentra la solución óptima del problema original sin tomar en cuenta que las variables tiene que ser enteras. Si los valores de las variables restringidas a ser enteras resultan enteros el problema se termina. En caso contrario se toma como límite superior la solución obtenida. Y se va haciendo un diagrama arbolar para llevar un seguimiento de las ramas, analizando el problema por nivel. Se introduce al sistema original la restricción de que una variable (de las que tienen que ser enteras) estará definida en un rango determinado dependiendo del valor obtenido para esa variable en el paso I. Estableciendo un partición en el rango tomando como base el valor obtenido en la solución anterior. En este caso para valores de X1, …..Xn. por lo que un conjunto será valores mayores, partiendo del entero más cercano y el otro conjunto será de valores menores que, partiendo del entero más cercano. Se resuelve por dual simplex Se obtiene la solución de ambos problemas aplicando el método simplex ya que cada rama representa un nuevo problema pues se adiciona una restricción diferente. Si en la solución obtenida el valor de X 1 es entero se incorpora la restricción de otra variable (digamos X 2) de manera similar a lo hecho en II y se repite el paso III hasta obtener una solución entera cuyo límite superior sea mayor (en cada nodo el límite superior es el valor de la función objetivo). En caso que no se obtenga una solución entera de X 1 se siguen restringiendo los valores posibles de X 1 cada vez en base a la última solución obtenida. Cuando el sistema se vuelva inconsistente, es decir que una de las restricciones sea imposible, el nodo correspondiente representa un absolución no factible y su LS tendrá que ser inconsistente ó sin solución.
II.
III.
IV.
V.
Ejercicio para ilustrar el procedimiento: Max Z =
X1 2X1 X1
+2X2 +X2 +4X2 X1, X2
≤9 ≤ 12 ≥ 0 y enteros
Paso I Se encuentra la solución óptima del problema original sin tomar en cuenta que las variables tienen que ser enteras. En este caso se usa el Método Simplex ver la tabla 5.1 siguiente Base Z X1 X2
X1 0 1 0
X2 0 0 1
S1 2/7 4/7 -1/7
S2 3/7 -1/7 2/7
Sol. (54)/7 7.71 (24)/7 3.42 (15)/7 2.14
Tabla 5.1 solución no entera usando el Método Simplex
Como se puede observar en la tabla 1 simplex la solución X 1 y X2 no es entera. Sol Z= 7.71, X1=3.42, X2 = 2.14 140
M.C. Irma Estrada Patiño
Paso II y III Restringir a valores enteros el valor de X 1 (puede tomarse cualquiera de las dos pero para seguir un orden se inicia con X 1 ver grafica 5.4 de niveles Nivel 1 Z= 7.71 X1=3.42 X2 = 2.14 Tabla 1
X1≤ 3 Z= 7.5 X1=3 ; X2=2.25 Tabla 2
X2 ≤ 2
X1 ≥ 4 Z= 6 X1= 4; X2= 1 Sol. Entera Tabla 3
X2≥3
Nivel 2 Nivel 3
Z= 7 X1=3 ; X2=2 Tabla 4
Z= 6 X1= 0; X2=3 Tabla 5
Grafica 5.4 Diagrama arbolar de niveles
Se inserta la restricción X1≤ 3; X3 + S3 = 3 en la tabla 1 Base X1 X2 S1 S2 S3 Sol. Z 0 0 2/7 3/7 0 (54)/7 X1 1(-1) 0 4/7 -1/7 0 (24)/7 X2 0 1 -1/7 2/7 0 (15)/7 S3 1+ 0 0 0 1 3 Observe que el renglón correspondiente a la nueva restricción no forma vector unitario con respecto a la variable básica X 1 , por lo que hay que hacer el vector de la columna X1 unitario, arreglando la tabla quedaría. Base Z X1 X2 S3
X1 0 1 0 0
X2 0 0 1 0
S1 2/7 4/7 -1/7 -4/7
S2 3/7 -1/7 2/7 1/7
S3 0 0 0 1
Sol. (54)/7 (24)/7 (15)/7 -3/7
Aplicando el dual simplex para encontrar la nueva solución: Sale S 3 y entra S1 iterando por Dual- Simplex se tiene como resultado la tabla 5.2 Base Z X1 X2 S1
X1 0 1 0 0
X2 0 0 1 0
S1 0 0 0 1
S2 4/7 0 1/4 -1/4
S3 1/2 1 -1/4 -7/4
Sol. (105)/14 3 (63)/(28) 3/4
Tabla 5.2 Solución óptima no entera
Como se observa en la tabla anterior la solución no es entera por lo que se analiza el otro valor de X 1 para terminar el nivel 2. Esto es se adiciona la restricción X1 ≥ 4 a la tabla 1. –X1 ≤ -4, -X1 + S 3 = -4, insertada a restricción a la tabla y haciendo arreglos básicos se tiene:
141
M.C. Irma Estrada Patiño
Base Z X1 X2 S3
X1 0 1 0 0
X2 0 0 1 0
S1 2/7 4/7 -1/7 4/7
S2 3/7 -1/7 2/7 -1/7
S3 0 0 0 1
Sol. (54)/7 (24)/7 (15)/7 -4/7
Iterando por Dual – Simplex se obtiene la tabla siguiente Base Z X1 X2 S2
X1 0 1 0 0
X2 0 0 1 0
S1 2 0 1 -4
S2 0 0 0 1
S3 3 -1 2 -7
Sol. 42/7 4 1 4
Tabla 5.3 Solución óptima entera pero con valor de Z= 6, menor para el nivel 2
Según el resultado de la tabla 5.3 la solución es óptima y entera pero si vemos en el diagrama arbolar de la figura 4. se trata del nivel 2 y Z = 7.5 tiene un valor mayor en la tabla 2 cuya solución no es entera y debido a esta situación se busca el entero para ese lado de la rama , continuando el análisis del problema pasando al nivel 2 abriendo cortes para el valores de X 2 ≤ 2 y X2 ≥ 3. Se continua haciendo iteraciones como se explicaron los pasos del nivel 2. En el desarrollo del problema se encontraron 3 soluciones enteras y se toma como la óptima aquella con un valor de Z mayor para este caso de maximización por lo tanto la solución básica, factible óptima y entera es, Z= 7 X1=3; X2=2, como se puede observar en la tabla 5.4, y esta se localiza en el nivel 3 de la grafica 5.4. En caso de tratarse de un problema de minimización se toma el valor mínimo de Z. Base Z X1 X2 S1 S2
X1 0 1 0 0 0
X2 0 0 1 0 0
S1 0 0 0 1 0
S2 0 0 0 0 1
S3 15/14 1 0 -2 -1
S4 16/7 0 1 -1 -4
Sol. 7 3 2 1 1
Tabla 5. 4 Solución final óptima entera con valor de Z= 7
5.4 ALGORITMO DE “PLANOS DE CORTES “ DE GOMORY Este método fue de los primeros que abrieron brecha en la programación entera. La ventaja del método es que ilustran de manera sencilla lo que se pretende hacer con la región de factibilidad del problema entero para lograr su solución. La desventaja es que resulta ineficiente para resolver problemas enteros de tamaño mediano. Utiliza como punto de partida la solución óptima del problema sin incluir las restricciones de que ciertas o todas las variables deben ser enteras, y por medio de “cortes” al espacio de soluciones se va reduciendo dicho espacio hasta encontrar la solución óptima del problema que cumpla con las restricciones de las variables enteras.
142
M.C. Irma Estrada Patiño
Modelo general Opt Z = cX AX= b X≥ 0, entero Pasos del algoritmo I. Encontrar la solución del problema original por algún Método conocido; si la solución es entera quiere decir que se ha encontrado la solución óptima. En caso contrario pasar al paso II II. Selecciónese el máximo (XBi – [XBi]) fraccionario. III. Generar el corte o nueva restricción del problema. Σ(aij - [aij])Xj ≥ (XBi – [XBi]) , Añádase este corte como un restricción adicional Debido a que al agregar la ecuación anterior se tiene solución básica óptima no factible es necesario hacerla factible. Para facilitar las operaciones de la tabla Simplex, se recomienda cambiar el sentido de la desigualdad y adicionar la variable de holgura correspondiente. IV. Debido a que al agregar la ecuación anterior se tiene solución básica óptima – factible es necesario hacerla factible usando el Método dual –Simplex y ver si es optima entera en caso contrario váyase al paso II. Ejemplo. resolver el siguiente problema lineal encontrando la solución básica factible entera y óptima. Max Z = X1+ 2X2 sujeto a 2X1 ≤ 7 2X2 ≤ 7 X1 + X2 ≤ 5 X1, X2 ≥ 0 y enteros Paso I. Encontrar la solución del problema original por algún Método conocido. Resolviendo por simples se puede ver en la tabla 5.5 la solución no entera al problema Base Z S1 X2 X1
X1 0 0 0 1
X2 0 0 1 0
S1 0 1 0 0
S2 1/2 1 ½ -1/2
S3 1 -2 0 1
Sol. 17/2 4 7/2 3/2
Tabla 5.5. Simplex óptima no entera
Como se puede observar en la tabla la solución es básica factible óptima pero no entera. X1= 3/2; X2 = 7/2; S1 = 4 con Z = 17/2 Paso II. Selecciónese el máximo (XBi – [XBi]) fraccionario 7/2 = 3(1/2) 3/2 = 1(1/2) Se selecciona cualquiera de las dos fracciones ya que hay empate. Para este problema seleccionamos la correspondiente a X 2 Paso III. Generar el corte o nueva restricción del problema. Σ(aij - [aij])Xj ≥ (XBi – [XBi]) (1-1)X2 + (1/2-0)S2 ≥ (17/2- 16/2) ; 1/2S2 ≥ ½ ... -1/2 S2 ≤ -1/2, cambiando a igualdad -1/2S2 + S4 = - 1/2 y se adiciona al sistema, ver tabla 5.6
143
M.C. Irma Estrada Patiño
Base Z S1 X2 X1 S4
X1 0 0 0 1 0
X2 0 0 1 0 0
S1 0 1 0 0 0
S2 1/2 1 ½ -1/2 -1/2
S3 1 -2 0 1 0
S4 0 0 0 0 1
Sol. 17/2 4 7/2 3/2 -1/2
Tabla 5.6. Aplicando dual-simplex, para encontrar factibilidad
En la tabla 5.6 debido a que al agregar la ecuación anterior se tiene solución básica óptima no factible es necesario hacerla factible. Aplicando dual-simplex. Sale de la base S4 y entra S2 Base Z S1 X2 X1 S2
X1 0 0 0 1 0
X2 0 0 1 0 0
S1 0 1 0 0 0
S2 0 0 0 0 1
S3 1 -2 0 1 0
S4 -1 2 1 -1 2
Sol. 8 3 3 2 1
Tabla 5.7 Solución Simplex óptima y entera
En la tabla 5.7 se puede observar la solución básica factible óptima y entera. Con valores X1=2; X2 = 3 y Z= 8 Gráficamente el problema se representa con las ecuaciones 1/2X4 ≥ ½ se puede transformar mediante la ecuación 2X 2 + S2 = 7 en donde S2 = 7-2X2; sustituyendo: ½(7-2X2) ≥ ½ ó 7-2X 2 ≥ 1 de donde 2X2 ≤ 6, el alumno deberá hacer la gráfica y explicar su contenido con el profesor.
5.5 Algoritmo Aditivo de Balas Este método sirve para resolver problemas binarios (cero-uno) por enumeración implícita. El modelo matemático esta representado de la siguiente manera (tomado del voumen 1 de Juan Prawda):
Mín Z = ∑ cjXj Sujeto a ∑aijXj ≤ bi , i = 1,…..,m Xj = 0 ó 1 , j = 1,…..,n Supuestos para trabajar con el algoritmo: a) La función objetivo debe ser de maximización en caso contrario usar reglas de equivalencia para cambiarla. b) Se requiere que todas las cj ≥ 0 . en caso contrario entonces la variable Xj se sutituye por otra Xj, donde Xj = 1-Xj. Es decir Xj es el complemento de Xj Con estas dos suposiciones se puede garantizar la existencia de una solución inicial que sea básica factible y dual. Los coeficientes Cj y aij no necesitan ser números enteros. Sea para j = 1,2,…,n
144
M.C. Irma Estrada Patiño
Xj, si Xj>0,
+
Xj = 0
si Xj≤0,
0 si Xj>0
-
X =
Xj si Xj≤0,
A un conjunto específico de variables que describen un problema se le denominará solución parcial, ya que de aquellas se generarán las soluciones completas del problema. Se denota a una solución parcial cualquiera por ( j1++, j2--, j3-, j4-, j5+, j6-, j7++,…, j p- ) Cuyo significado es el siguiente: Jk ++ significa que X jk ha sido seleccionada con valor uno. -Jk significa que X jk ha sido seleccionada con valor cero. + Jk significa que X jk , es igual a uno, como consecuencia de la continuación de una solución parcial previa. Jk significa que X jk es igual a cero, como consecuencia de la continuación de una solución parcial previa. + Jk también puede significar qye X jk , es uno, debido a que todas las posibles continuaciones de (j1, j2, …, jk --) han sido implícitamente analizadas. Jk también puede significar que X jk , es cero, debido a que todas las posibles continuaciones de (j1, j2, …, jk ++) han sido implícitamente analizadas. Cuando en una solución parcial aparece un elemento sin s igno entonces este representa a cualquiera de los siguientes: j k ++, jk - -, jk +, jk -. El método generalizado de Balas requiere que todos los costos c j ≥ 0. las restricciones de igualdaa se trabajan como igualdad, las demás restricciones deben plantearse como ≤ de la siguiente forma.
∑aijXj ≤ bi
1 = 1,2,...,m. Se supone que exite uma solución parcial sin signos asociados. Inicialmente se hace Z* igual a ∞ ó a M. Pasos. Paso 1.a) Si la solución parcial actual satisface las restricciones del problema, complete la solución parcial asignando cero a todas las variables libres. Haga Z* igual al valor de la función objetivo correspondiente a la solución parcial. Vaya al paso 5. b) Si la solución parcial actual no satisface las restricciones del problema, haga Z igual al valor de la función objetivo correspondiente a la solución parcial y vaya al paso 2. Paso 2. Para las variables libres Xj tal que a) Z + Cj < Z* y b) Aij < 0 por lo menos parta una restricción, bi - ∑aijk Xjk < 0 examinar las relaciones ∑aij < bi - ∑aijk Xjk j€N
Donde N es el conjunto de variables libres que satisfacen (a) y (b) y aij-
aij, si aij<0, = 0,
si aij≥0,
+
aij =
aij, si aij>0 0, si aij≤0,
145
M.C. Irma Estrada Patiño
Si ninguna de estas restricciones se viola, entonces no existe una continuación factible y vaya al paso 5. De otra manera vaya al paso 3. Paso 3. a) Si todas las relaciones las relaciones se satisfacen como una estricta desigualdad, determine cuál variable libre del conjunto N, al tener valor igual a uno, reduce considerablemente la infactibilidad total. Por infactibilidad total se entiende la suma, en valor absoluto de las cantidades en las cuales se viola cada restricción. Sea esta variable la Xj p+1ε N. Entonces Xj p+1=1. Se ha maximizado la siguiente expresión: m
p+1
i=1
K=1
∑(bi - ∑aijk Xjk )-
la nueva solución parcial es (j 1, j2, …, j p, j p+1++ ,). Vaya al paso 1.
c) Si para alguna restricción esta se comporta como una igualdad, denote F al conjunto de variables libres de esa restricción que tengan aij < 0. Examine la relación ∑C j < Z*-Z y vaya al paso 4
jεF
Paso 4. a) Si la relación ∑C j < Z*-Z se satisface, entonces Xj = 1, jεF es la única continuación factible que es posible (dada la solución parcial actual). La siguiente solución parcial que se debe analizar es: (j1, …, j p, j p+1+,…,j p+q+), en que j p+1,…, j p+qεF Regrese al paso 1 b) Si la relación ∑C j < Z*-Z no se satisface, entonces no existe una posible continuación de la solución parcial. Vaya al paso 5 Paso 5 a) Dada la solución parcial actual encuentre el elemento jk++ a la extrema derecha y elimine a todos los elementos que se encuentran a la derecha. Reemplace este elemento (el jk++) por jk-. Esta es la nueva solución parcia. Regrese al paso 1. c) Si no existe un elemento jk++ en la solución parcial actual, la enumeración implícita se ha completado y la solución que se tiene en el paso 1 (a) es óptima. Si Z* = ∞, o M, el problema original es inconsistente y por lo tanto no tiene solución. Ejemplo. Resolver por el método aditivo de Balas el siguiente problema binario. Mín Z = 5X1 +7X2 +10X3 +3X4 +X5 -X1 +3X2 -5X3 -X4 +4X5 ≤ -2 2X1 -6X2 +3X3 +2X4 -2X5 ≤ 0 X2 -2X3 +X4 +X5 ≤ -1 X 1, X2, X3, X4, X5 =0 ó 1 Se cumple con las condiciones Cj ≥ 0 para toda j, y las restricciones son ≤ , Expresando a las restricciones en la forma gi ≥ 0, i = 1,2,3 se tiene: g1 = -2 + X 1 – 3X 2 + 5X3 + X4 -4X5 ≥ 0 g2 = -2X1 + 6X2 -3X3 -2X4 + 2X5 ≥ 0 g3 = -1 -X2 + 2X3 - X4 – X5 ≥ 0 Supóngase arbitrariamente una solución (X 1 = 0, X2 = 0, X3 = 0, X4 = 0, X5 = 0). Esto implica que Z* = ∞ y g1 = -2 ≥ 0 g2 = 0 ≥ 0 g3 = -1 ≥ 0 Por lo que la infactibilidad total es de 3. Para que esta infactibilidad se reduzca es necesario aumentar al valor de ciertas variables libres a uno.
146
M.C. Irma Estrada Patiño
Con X = 1 y todas las demás igual a cero, se tiene. g1 = -1 ≥ 0 g2 = -2 ≥ 0 g3 = -1 ≥ 0 Por lo que la infactibilidad total es de 4 , por lo que hay que reducirla. La variable X 2 no tiene caso aumentarla a 1, porque perjudicaría aún más a g1 y g 2, que ya de hecho son violadas cuando X 2 = 0. Si se hace X 3 = 1 y las demás variables se mantienen en cero, se tiene g1 = 3 ≥ 0 g2 = -3 ≥ 0 g2 = 1 ≥ 0, para una infactibilidad total de 3. Con X4 = 1 y las demás variables igual a cero se obtiene g1 = -1 ≥ 0 g2 = -2 ≥ 0 g3 = -2 ≥ 0 Para una infactibilidad total de 5. La variable X 5 no tiene caso aumentarla. Por lo tanto, lo que más conviene es hacer X 3 = 1, y se tiene la primera solución parcial (3++). Con X3 = 1 las tres restricciones se convierten en g1 = 3 + X 1 – 3X2 + X4 -4X5 g2 = -3 -2X1 + 6X2 -2X4 + 2X5 g3 = 1 - X 2 - X4 - X 5 . La solución parcial (3++), no es factible, puesto que g 2 = -3 ≥ 0. para eliminar la violación de la segunda restricción g 2 es necesario analizar las posibles continuaciones de (3++). Observando a g2, se concluye que se puede corregir esta violación analizando lo que sucede si aumenta a uno el valor de las variables libres que tengan a +2j, en este caso X2 y X5. Con X2 = 1, (3++) y el resto de las variables libres igual a cero se tiene: g1 = 0 ≥ 0 g2 = 3 ≥ 0 g3 = 0 ≥ 0 Con X5 = 1, (3++) y el resto de las variables libres igual a cero se tiene: g1 = -1 ≥ 0 g2 = -1 ≥ 0 g3 = 0 ≥ 0 Por lo tanto, hacer X2 = 1, después de haber hecho X 3 = 1 dá una solución parcial (3++, 2++), que es factible. El valor de Z asociadda a esta solución parcial factible es Z* = 17. cualquier continuación de ( 3++, 2++) que quiere decir (X 3 = 1, X2 =1) aumentaría el valor de Z y por lo tanto se les puede eliminar. Es decir que implícitamente se eliminan las siguientes combinaciones. (X3 = 1, X2 = 1, X1 = 1, X4 = 0, X5 = 0) (X3 = 1, X2 = 1, X 1 = 0, X4 = 1, X5 = 0) (X3 = 1, X2 = 1, X1 = 0, X4 = 0, X5 = 1) (X3 = 1, X2 = 1, X 1 = 1, X4 = 0, X5 = 1) (X3 = 1, X2 = 1, X 1 = 0, X4 = 1, X5 = 1) (X3 = 1, X2 = 1, X1 = 1, X4 = 1, X5 = 0) (X3 = 1, X2 = 1, X 1 = 1, X4 = 1, X5 = 1) 147
M.C. Irma Estrada Patiño
Se analiza ahora la solución parcial (3++, 2-) que significa (X 3 = 1, X2 = 0), y que genera g1 = 3 ≥ 0 g2 = -3 ≥ 0 g3 = 1 ≥ 0 Como esta es una solución parcial no factible, se puede rechazar implícitamente las siguientes continuaciones de (3++, 2-). (X3 = 1, X2 = 0, X1 = 0, X4 = 0, X5 = 0) (X3 = 1, X2 = 0, X 1 = 1, X4 = 0, X5 = 0) (X3 = 1, X2 = 0, X1 = 0, X4 = 1, X5 = 0) (X3 = 1, X2 = 0, X 1 = 0, X4 = 0, X5 = 1) (X3 = 1, X2 = 0, X1 = 1, X4 = 1, X5 = 0) (X3 = 1, X2 = 0, X1 = 1, X4 = 0, X5 = 1) (X3 = 1, X2 = 0, X1 = 0, X4 = 1, X5 = 1) (X3 = 1, X2 = 0, X 1 = 1, X4 = 1, X5 = 1) La solución parcial que se tiene es (3++, 2-). Se analiza por lo tanto la solución (3-), es decir X3=0 con el resto de las variables cero, lo que origina que g1 = -2 ≥ 0 g2 = 0 ≥ 0 g3 = -1 ≥ 0 Como esta solución no es factible se pueden eliminar implícitamente todas las soluciones que contengan X 3 = 0, es decir (X3 = 0, X1 = 0, X2 = 0, X4 = 0, X5 = 0) (X3 = 0, X1 = 1, X2 = 0, X4 = 0, X5 = 0) (X3 = 0, X1 = 0, X 2 = 1, X4 = 0, X5 = 0) (X3 = 0, X1 = 0, X 2 = 0, X4 = 1, X5 = 0) (X3 = 0, X1 = 0, X2 = 0, X4 = 0, X5 = 1) (X3 = 0, X1 = 1, X 2 = 1, X4 = 0, X5 = 1) (X3 = 0, X1 = 1, X 2 = 0, X4 = 1, X5 = 0) (X3 = 0, X1 = 1, X2 = 0, X4 = 0, X5 = 1) (X3 = 0, X1 = 0, X2 = 1, X4 = 1, X5 = 0) (X3 = 0, X1 = 0, X 2 = 1, X4 = 0, X5 = 1) (X3 = 0, X1 = 0, X2 = 0, X4 = 1, X5 = 1) (X3 = 0, X1 = 1, X2 = 1, X4 = 1, X5 = 0) (X3 = 0, X1 = 1, X 2 = 1, X4 = 0, X5 = 1) (X3 = 0, X1 = 1, X2 = 0, X4 = 1, X5 = 1) (X3 = 0, X1 = 1, X2 = 1, X4 = 1, X5 = 1) (X3 = 0, X1 = 0, X 2 = 1, X4 = 1, X5 = 1) Como ya se han eliminado implícitamente 31 soluciones, y la trigésima segunda (X3 =1, X2 = 1, X1 = 0, X4 = 0, X5 = 0) es factible y solo hay 2 n ( 2 5 = 32 en este caso) posibles soluciones, se concluye que (X 3 =1, X2 = 1, X 1 = 0, X4 = 0, X 5 = 0) es óptima.
148
M.C. Irma Estrada Patiño
5.6 Ejercicios Problema 1. Considere el siguiente programa lineal de todos enteros. Max. Z = 5X1 + 8X2 Sujeto a 6X1 + 5X2 ≤ 30 9X1 + 4X2 ≤ 36 X1 + 2X2 ≤ 10 X1, X2 ≥ 0 y enteros a) Haga una gráfica de las restricciones de este problema. Utilice puntos para indicar todas las soluciones de enteros factibles b) Encuentre la solución óptima a la relajación de programación lineal. Redondee hacia abajo para encontrar una solución de enteros factible. Problema 2. Resuelva el siguiente problema Max. Z = 2X1 + 3X2 Sujeto a 5X1 + 7X2 ≤ 35 4X1 + 9X2 ≤ 36 X1, X2 ≥ 0 y enteros a) Usando el algoritmo de ramificar y acotar (Brach and Bound) b) Usando el algoritmo de Gomory c) Hacer la representación gráfica y explicar la respuesta. Problema 3. Resuelva el siguiente problema Min Z = 4X1 + 3X2 Sujeto a 4X1 + 2X2 ≥ 6 2X1 + 3X2 ≥ 8 X1, X2 ≥ 0 y entero a) Usando el algoritmo de ramificar y acotar. b) Usando el algoritmo de Gomory c) Hacer la representación gráfica Problema 4. Utilizando el algoritmo aditivo de Balas, resuelva Min. Z = 10X1 -5X2 + 3X3 Sujeto a X1 + 2X2 - X3 ≥ 2 2X1 + X2 + X3 ≤ 3 X1, X2 = 0,1 Problema 5. Sea el problema Min. Z= 2X1 - 4X2 S. A. 2X1 + X2 ≤ 5 -4X1 + 4X2 ≤ 5 X1, X2 ≥ 0 u enteros Cuya tabla óptima es: Base Z Z 1 X1 0 X2 0
X1 0 1 0
X2 0 0 1
S1 -2/5 1/3 1/3
S2 -5/6 -1/12 1/6
Sol. (-15/2) 5/4 5/2 149
M.C. Irma Estrada Patiño
a) Determinar por cualquiera de los dos métodos siguientes : Método de planos cortante ó ramificación y acotamiento la solución entera al problema b) Graficar el problema con los nuevos cortes ó ecuaciones encontradas. Problema 6.- Suponga que X1, X2 y X3. són variables cuyos valores son 1, si se va a abrir una planta en particular y 0 en cualquier otro caso. Escriba una restricción lineal separada para cada una de las siguientes restricciones de palabra. ( Solamente una restricción lineal para cada inciso ) a) Si se abre la planta 1, entonces la planta 2 no debería abrirse. b) Si se abre la planta1, entonces la planta 2 debería abrirse c) Al menos una de las tres plantas debería abrirse Problema 7.- Representar gráficamente el problema y encontrar la sol. entera en forma gráfica. Haciendo cortes. Max. Z=2X1 + 3X2 5X1 + 7X2 ≤ 35 4X1 + 9X2 ≤ 36 X1, X2 ≥ 0 y enteros Problema 8. Dado el siguiente problema cuya tabla óptima esta dada en la tabla siguiente. a) Hacer dos cortes usando el método de Planos cortantes (si es posible) y encontrar las ecuaciones originales de dichos cortes. Sin graficar Max. Z= X1 – 7X2 + 3X3 2X1 + X2 - X3 ≤ 4 ≤2 4X1 – 3X2 -3X1 + 2X2 +X3 ≤ 3 X1, X2., X3 ≥ 0 Tabla óptima pero no entera. Base X1 X2 Z 0 5..5 X4 0 2.25 X1 1 -0.75 X3 0 -0.25
X3 0 0 0 1
X4 0 1.0 0 0.0
X5 2.5 0.25 0.25 0.75
X6 3.0 1.0 0.0 1.0
SOL 14.0 7.50 0.50 4.50
150
M.C. Irma Estrada Patiño
Bibliografía. 1. Anderson, D.R.-Sweeny, D.J.-William, T.A. "Introducción a los modelos cuantitativos para administracción". Ed. Iberoamericana. 2. Bazaraa, M.-Jarvis, J. "Programación lineal y flujo en redes". Ed. Limusa. 3. Bronson, R. (1983) "Investigación de operaciones. Teoría y 310 problemas resueltos". Mcgraw-Hill,serie Schaum. 4. Chang, Y.-Sullivan, R. (1990) "QSB+. Quantitative Systems for Business Aplications Plus". Prentince Hall. 5. Fernandez Lechon, R.-Castrodeza Chamorro, C. (1989) "Programación lineal". Ariel. 6. Garcia, J.-Fernandez, L.-Tejera, P. (1990) "Técnicas de Investigación Operativa". Ed. Paraninfo. 7. Gass, S.I. (1966) "Programación lineal". CECSA. 8. Hillier, F.-Lieberman, G. (1991) "Introducción a la investigación de operaciones". Mcgraw-Hill. 9. Infante Macias, R. (1977) "Métodos de Programación matemática". UNED. 10. Luenberger, D.E. (1989) "Programación lineal y no lineal". Addison-Wesley Iberoamericana. 11. Martín, Q. (2003) "Investigación Operativa". Prentice Hall. 12. Mora, J.L. (1980) "Investigación de operaciones e informática". Ed. Trillas. 13. Prawda Witemberg, J. (1980) "Métodos y modelos de investigación de operaciones". Limusa. 14. Ravindran, A.-Phillips, D.-Solberg, J. (1987) "Operations research. Principles and Practice". Willey. 15. Rios Insua, S. (1988) "Investigación Operativa. Optimizaciòn". Ed. Centro de Estudios Ramon Areces. 16. Shamblin, J.E.-Stevens, G.T. (1975) "Investigación de operaciones: un enfoque fundamental". Mcgraw-Hill. 17. Simonnard, M. (1972) "Programación lineal". Paraninfo. 18. Taha, H. (1991) "Investigación de operaciones". Alfaomega. 19. Thierauf, R.J. (1978) "Introdución a la investigación de operaciones". Ed. Limusa.. 20. Schrage, L. (1984) "Linear,Integer, and Quadratic Programming with LINDO". The Scientific Press, Palo Alto, California. 21. Wayne L. Winston ”Investigación de Operaciones Aplicaciones y algoritmos” Editorial Iberoamerica
151