[go: up one dir, main page]

0% encontró este documento útil (0 votos)
70 vistas249 páginas

Programación Lineal

Curso programación lineal

Cargado por

Luis
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
70 vistas249 páginas

Programación Lineal

Curso programación lineal

Cargado por

Luis
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 249

A PUNTES DE

P ROGRAMACI ÓN
L INEAL
Mayo 2021

Universidad Politécnica de Madrid

Alvaro Garcı́a Sánchez


Miguel Ortega Mier
Copyright c Alvaro Garcı́a Sánchez y Miguel Ortega Mier
Todos los derechos reservados.

Universidad Politécnica de Madrid


ETSII c/ José Gutiérrez Abascal, 2
28006 Madrid
España

Email: alvaro.garcia@upm.es y miguel.ortega.mier@upm.es


www: www.iol.etsii.upm.es ISBN xx–xxxxxx–x–x

Este texto está basado en el documento original:

Programación Lineal
Copyright 
c 2011–2020 Alvaro Garcı́a Sánchez y Miguel Ortega Mier

TEX, LATEX, and AMS-LATEX son marcas registradas de la American Mathematical Society. Lucida es una
marca registrada por Bigelow & Holmes Inc. Acrobat es marca registrada por Adobe Systems Inc.

Esta documentación ha sido impresa usando LATEX y la familia de fuentes Lucida.

La información de este documento está sujeta a cambio sin ningún aviso y no representa una obligación
por parte de los autores.

Los autores no garantizan la idoneidad de este documento o de los programas descritos en él para ningún
propósito en particular o su idoneidad para obtener ningún resultado en particular. En ningún caso los au-
tores serán responsables de los daños, pérdidas, costes, cargos, reclamaciones, demandas o reclamaciones
por perjuicios, honoarios o gastos de ninguna naturaleza, ya sean directos, indirectos, de carácter especial
o derivados del uso del mismo.

Además de lo anterior, los lectores deben saber que cualquier documentación contiene errores y/o omi-
siones. Los autores no tienen el compromiso bajo ninguna circunstancia de proporcionar información o
correcciones a los errores y omisiones de este documento, tanto si son conocedores de dichos errores y
omisiones como si no.

Los autores quieren agradecer el trabajo de Irene Gómez Sánchez por la colaboración para la mejora del
contenido y maquetación de este documento.

También quieren agradecer a tantos alumnos que en estos años han ido indicando a los autores erratas
detectadas; de entre todos ellos destacar el trabajo intenso de revisión de Marta Navarro Alberti, Marta
Mañá Sánchez, Cristina Conde González de Uriarte y Eduardo López González.

Para informar de erratas o conceptos que no han quedado bien explicados, por favor, escribid a mi-
guel.ortega.mier@upm.es
Índice general

Índice general iii

1. INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL. TEOREMA FUN-


DAMENTAL 1
1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1. Caracterización de soluciones . . . . . . . . . . . . . . . 2
1.2. Teorema Fundamental . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1. Enunciado . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.2. Demostración . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Implicaciones del Teorema Fundamental . . . . . . . . . . . . . 5
1.4. Ejemplo de aplicación del Teorema Fundamental . . . . . . . . 7
1.5. Interpretación geométrica . . . . . . . . . . . . . . . . . . . . . . 10
1.5.1. Representación gráfica del problema . . . . . . . . . . 10
1.5.2. Soluciones linealmente dependientes e independien-
tes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.6. Otro ejemplo de aplicación del Teorema Fundamental . . . . 12

2. FUNDAMENTOS DEL MÉTODO DEL SIMPLEX 16


2.1. Definiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.2. Ejemplo introductorio . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3. Formalización del método del Simplex . . . . . . . . . . . . . . 26
2.4. Método del Simplex . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.4.1. Regla de entrada . . . . . . . . . . . . . . . . . . . . . . . 29
2.4.2. Regla de salida . . . . . . . . . . . . . . . . . . . . . . . . 29
2.4.3. Criterio de optimalidad . . . . . . . . . . . . . . . . . . . 30
2.4.4. Ejemplo del método del Simplex . . . . . . . . . . . . . 30
2.4.5. El término Simplex . . . . . . . . . . . . . . . . . . . . . 32

3. MÉTODOS DE LA M GRANDE Y DE LAS DOS FASES 33


3.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2. Método de las 2 fases . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3. Método de la M grande . . . . . . . . . . . . . . . . . . . . . . . . 37
3.4. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.4.1. Ejercicio 1. Método de las dos fases . . . . . . . . . . . 38
3.4.2. Ejercicio 1. Método de la M grande . . . . . . . . . . . . 40
3.4.3. Ejercicio 2. Método de las dos fases . . . . . . . . . . . 42
Índice general iv

4. INTERPRETACIÓN TÉCNICO-ECONÓMICA 43
4.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.1.1. Ejemplo de aplicación . . . . . . . . . . . . . . . . . . . . 44
4.2. Tasas de sustitución . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.2.1. Discusión teórica . . . . . . . . . . . . . . . . . . . . . . . 46
4.2.2. Ejemplo de aplicación . . . . . . . . . . . . . . . . . . . . 47
4.3. Multiplicadores del Simplex . . . . . . . . . . . . . . . . . . . . . 47
4.3.1. Discusión teórica . . . . . . . . . . . . . . . . . . . . . . . 48
4.3.2. Ejemplo de aplicación . . . . . . . . . . . . . . . . . . . . 49
4.3.3. Precio sombra de las restricciones de tipo “=” . . . . . 50
4.4. Criterios del Simplex . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.4.1. Discusión teórica . . . . . . . . . . . . . . . . . . . . . . . 52
4.4.2. Ejemplo de aplicación . . . . . . . . . . . . . . . . . . . . 54

5. MÉTODO DEL LEMKE 56


5.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.2. Cuándo es interesante el método de Lemke . . . . . . . . . . . 57
5.2.1. Problemas de mı́nimos con c ≥ 0 . . . . . . . . . . . . . 57
5.2.2. Al introducir un cambio en b, una vez obtenida la so-
lución óptima . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.3. Al añadir una restricción adicional a un programa, una
vez obtenida la solución óptima . . . . . . . . . . . . . 60
5.3. Reglas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.3.1. Criterio de factibilidad . . . . . . . . . . . . . . . . . . . 61
5.3.2. Regla de salida . . . . . . . . . . . . . . . . . . . . . . . . 61
5.3.3. Regla de entrada . . . . . . . . . . . . . . . . . . . . . . . 62
5.4. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

6. POSTOPTIMIZACIÓN 65
6.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.2. Cambio en b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.3. Cambio en c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.4. Nueva actividad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.5. Nueva restricción . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.6. Cambio en aij . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
6.6.1. Cambio en aij con xj no básica . . . . . . . . . . . . . 68
6.6.2. Cambio en aij con xj básica . . . . . . . . . . . . . . . 69
6.7. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.7.1. Cambio de b . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.7.2. Cambio de c . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.7.3. Nueva actividad . . . . . . . . . . . . . . . . . . . . . . . 72
6.7.4. Nueva restricción . . . . . . . . . . . . . . . . . . . . . . 72
Índice general v

7. ANÁLISIS DE SENSIBILIDAD 74
7.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.2. Análisis de b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
7.3. Análisis de c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
7.4. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
7.4.1. Análisis de cx2 . . . . . . . . . . . . . . . . . . . . . . . . 76
7.4.2. Análisis de cx3 . . . . . . . . . . . . . . . . . . . . . . . . 78
7.4.3. Análisis de b2 . . . . . . . . . . . . . . . . . . . . . . . . . 79
7.5. La aparente paradoja de b . . . . . . . . . . . . . . . . . . . . . . 79

8. CASOS ESPECIALES 81
8.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
8.2. Óptimo múltiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
8.3. Solución degenerada . . . . . . . . . . . . . . . . . . . . . . . . . 83
8.4. Problema no factible . . . . . . . . . . . . . . . . . . . . . . . . . 86
8.5. Región de factibilidad no acotada . . . . . . . . . . . . . . . . . 88

9. INTERPRETACIÓN GRÁFICA 91
9.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
9.2. Conceptos generales . . . . . . . . . . . . . . . . . . . . . . . . . 91
9.3. Método del Simplex . . . . . . . . . . . . . . . . . . . . . . . . . . 98

10. PROGRAMACIÓN PARAMÉTRICA 102


10.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
10.2. Programación con c(λ) . . . . . . . . . . . . . . . . . . . . . . . . 102
10.2.1. Método general . . . . . . . . . . . . . . . . . . . . . . . . 102
10.2.2. Ejemplo c(λ) . . . . . . . . . . . . . . . . . . . . . . . . . 103
10.3. Programación con b(λ) . . . . . . . . . . . . . . . . . . . . . . . . 107
10.3.1. Método general . . . . . . . . . . . . . . . . . . . . . . . . 107
10.3.2. Ejemplo b(λ) . . . . . . . . . . . . . . . . . . . . . . . . . 107
10.4. Ejemplo c(λ) y b(λ) . . . . . . . . . . . . . . . . . . . . . . . . . . 110

11. DUALIDAD 116


11.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
11.2. Aspectos clave sobre la dualidad . . . . . . . . . . . . . . . . . . 119
11.2.1. El problema dual . . . . . . . . . . . . . . . . . . . . . . . 119
11.2.2. El dual del dual es el primal . . . . . . . . . . . . . . . . 120
11.2.3. Relaciones entre el problema primal y el problema
dual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
11.3. La función objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . 123
11.4. Teorema fundamental de la dualidad . . . . . . . . . . . . . . . 125
11.4.1. Ejemplos de relaciones entre dos problemas duales . 126
11.4.2. Teorema de las holguras complementarias . . . . . . . 128
11.5. Interpretación económica de las variables duales en el óptimo 131
11.6. Algoritmo del Simplex dual . . . . . . . . . . . . . . . . . . . . . 132
11.7. El problema dual del problema de transporte . . . . . . . . . . 133
11.8. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Índice general vi

11.8.1. Ejercicio 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 134


11.8.2. Ejercicio 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

12. PROGRAMACIÓN ENTERA. FUNDAMENTOS 137


12.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
12.2. Nuevas técnicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
12.3. Optimalidad y relajación . . . . . . . . . . . . . . . . . . . . . . . 140
12.3.1. Optimalidad . . . . . . . . . . . . . . . . . . . . . . . . . . 140
12.3.2. Cotas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
12.4. Dos tipos de enfoques de resolución de problemas PLE . . . . 144

13. PROGRAMACIÓN ENTERA. BRANCH AND BOUND 146


13.1. Descomposición en subproblemas. Divide y vencerás . . . . . 146
13.2. Enumeración explı́cita . . . . . . . . . . . . . . . . . . . . . . . . 146
13.3. Enumeración implı́cita . . . . . . . . . . . . . . . . . . . . . . . . 149
13.4. Branch and Bound: un ejemplo . . . . . . . . . . . . . . . . . . . 153
13.5. Aspectos del algoritmo a tener en cuenta . . . . . . . . . . . . 158
13.6. Pseudocódigo del algoritmo Branch and Bound . . . . . . . . . 159
13.7. Otro ejemplo de Branch and Bound . . . . . . . . . . . . . . . . 160
13.8. GAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

14. PROGRAMACIÓN ENTERA. PLANOS DE CORTE 169


14.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
14.2. Fundamentos de los planos de corte . . . . . . . . . . . . . . . 170
14.3. Expresión de las variables básicas en función de las no básicas 172
14.4. Algoritmo de Gomory de las formas enteras . . . . . . . . . . . 174
14.5. Aprovechamiento de la solución del problema continuo aso-
ciado P0 para hallar la solución del problema continuo asocia-
do P1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
14.6. Desventajas de los planos de corte . . . . . . . . . . . . . . . . 177
14.7. ¿Cuántas iteraciones se debe mantener un corte en la tabla? 177
14.8. Distintas formulaciones de un problema entero . . . . . . . . 178
14.8.1. Ejemplo de distintas formulaciones . . . . . . . . . . . 178
14.8.2. Definiciones . . . . . . . . . . . . . . . . . . . . . . . . . . 179
14.8.3. Ejemplo de la utilidad de los cortes especı́ficos . . . . 180
14.9. Ejercicio hecho a mano . . . . . . . . . . . . . . . . . . . . . . . . 181
14.10. Otro ejercicio de corte de Gomory . . . . . . . . . . . . . . . . . 184

15. OPTIMIZACIÓN EN RED 189


15.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
15.2. Terminologı́a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
15.2.1. Conceptos básicos . . . . . . . . . . . . . . . . . . . . . . 190
15.2.2. Representación de un grafo . . . . . . . . . . . . . . . . 190
15.3. Problema del camino mı́nimo . . . . . . . . . . . . . . . . . . . . 193
15.3.1. Algoritmo de Dijsktra . . . . . . . . . . . . . . . . . . . . 193
15.4. Problema del árbol generador de peso mı́nimo . . . . . . . . . 197
15.4.1. Algoritmo de Prim . . . . . . . . . . . . . . . . . . . . . . 198
Índice general vii

15.4.2. Algoritmo de Kurskal . . . . . . . . . . . . . . . . . . . . 200


15.5. Problema del flujo máximo . . . . . . . . . . . . . . . . . . . . . 200
15.5.1. Flujo compatible . . . . . . . . . . . . . . . . . . . . . . . 201
15.5.2. Método del camino de aumento . . . . . . . . . . . . . 201
15.6. Problema de coste mı́nimo . . . . . . . . . . . . . . . . . . . . . . 206
15.6.1. Casos particulares . . . . . . . . . . . . . . . . . . . . . . 207
15.7. Ciclo y camino euleriano . . . . . . . . . . . . . . . . . . . . . . . 208
15.7.1. Problema del cartero chino . . . . . . . . . . . . . . . . 208
15.8. Ciclo y camino hamiltoniano . . . . . . . . . . . . . . . . . . . . 211
15.8.1. Problema del viajante . . . . . . . . . . . . . . . . . . . . 211

16. TRANSPORTE Y ASIGNACIÓN 212


16.1. Presentación del problema de transporte . . . . . . . . . . . . . 212
16.1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . 212
16.1.2. Formulación matemática . . . . . . . . . . . . . . . . . . 212
16.1.3. Presentación matricial . . . . . . . . . . . . . . . . . . . 213
16.2. Peculiaridades de la restricciones funcionales en el problema
de transporte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
16.2.1. Representación del problema . . . . . . . . . . . . . . . 216
16.2.2. Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . 216
16.3. Métodos de resolución . . . . . . . . . . . . . . . . . . . . . . . . 217
16.4. El procedimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
16.4.1. Solución inicial de partida. Diferentes métodos . . . . 218
16.4.2. Criterio de optimalidad . . . . . . . . . . . . . . . . . . . 220
16.4.3. Regla de entrada . . . . . . . . . . . . . . . . . . . . . . . 223
16.4.4. Regla de salida . . . . . . . . . . . . . . . . . . . . . . . . 223
16.5. Problemas desequilibrados . . . . . . . . . . . . . . . . . . . . . 223
16.5.1. Oferta superior a demanda . . . . . . . . . . . . . . . . 224
16.5.2. Demanda superior a oferta . . . . . . . . . . . . . . . . 225
16.6. Soluciones degeneradas . . . . . . . . . . . . . . . . . . . . . . . 226
16.7. Transporte y dualidad . . . . . . . . . . . . . . . . . . . . . . . . 227
16.8. El problema de asignación . . . . . . . . . . . . . . . . . . . . . . 228
16.8.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . 228
16.8.2. Representación . . . . . . . . . . . . . . . . . . . . . . . . 229
16.8.3. Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . 230
16.8.4. Método Húngaro . . . . . . . . . . . . . . . . . . . . . . . 231
16.8.5. Ejemplo a mano del problema de transporte . . . . . 232
Capı́tulo 1

INTRODUCCIÓN A LA PROGRAMACIÓN
LINEAL. TEOREMA FUNDAMENTAL

1.1. Introducción

Un problema de Programación Lineal tiene dos posibles formas: estándar o Formas de un


canónica. En la forma estándar, las restricciones son de igualdad (=) y las problema
variables son no negativas. Por su parte, en la forma canónica, las variables
también son no negativas, pero las restricciones son de desigualdad (≤ o ≥).

Un problema de Programación Lineal, expresado en la forma estándar, es el Forma estándar


siguiente: de un problema

max. z = cx (función objetivo)


s.a:
(1.1)
Ax = b (restricciones funcionales)
x≥0 (restricciones de no negatividad)

Un problema de Programación Lineal tiene dos posibles enfoques: de máximos Enfoques de un


o de mı́nimos. En adelante, se toma como referencia el enfoque de máximos problema
en las explicaciones.

Matriz de coeficientes técnicos: A Dimensiones de


• matriz m × n A, b, c y x
• m filas - restricciones
• n columnas - variables
Vector de disponibilidad de recursos: b
• matriz m × 1
• tantos elementos como restricciones
Vector de contribuciones unitarias al beneficio: c
• matriz 1 × n
• tantos elementos como variables
Solución del problema x
• matriz n × 1
Capı́tulo 1. INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL. TEOREMA FUNDAMENTAL 2

n
1 c

n 1 1

m A n x m b

Figura 1.1: Representación de un problema de Programación Lineal

Podrı́a haber tres casos para la relación entre y m y n: Relación entre


myn
1. m > n, tı́picamente, solución no factible. Sistema incompatible.
O el modelo está mal (por ejemplo, si se trata de un modelo de un
sistema que existe y que está en funcionamiento).
O no existe solución factible.
2. m = n, tı́picamente, solución factible única. Sistema compatible deter-
minado. Existe una única solución, con lo que no hay un problema de
decisión.
3. n > m, tı́picamente, infinitas soluciones factibles. Sistema compatible
indeterminado. Infinitas soluciones, el problema consiste en obtener la
mejor.

1.1.1. Caracterización de soluciones

Un conjunto de valores x es una solución del problema si cumple el sistema Solución


de ecuaciones Ax = b.

Un conjunto de valores x es una solución factible del problema si cumple el Solución factible
sistema de ecuaciones Ax = b (es solución) y cumple que x ≥ 0, es decir todos
los valores son no negativos.

Una solución x es linealmente independiente si las columnas de la matriz A Solución


correspondientes a las variables con valor no nulo son linealmente indepen- linealmente
dientes. independiente

Una solución x es linealmente dependiente si las columnas de la matriz A co- Solución


rrespondientes a las variables con valor no nulo son linealmente dependientes. linealmente
dependiente
Capı́tulo 1. INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL. TEOREMA FUNDAMENTAL 3

Dado que en un problema de Programación Lineal n > m, si el rango de la Caracterı́sticas


matriz A es m: de las soluciones
linealmente
el número máximo de componentes no nulas de una solución linealmen-
independientes
te independiente es m y
el número mı́nimo de componentes no nulas de una solución linealmen-
te dependiente tı́picamente es m + 1 1

1.2. Teorema Fundamental

1.2.1. Enunciado

Dado un problema de Programación Lineal: Enunciado

Si existe una solución factible, existe una solución linealmente indepen-


diente factible y
si la solución óptima es única, esta es una solución linealmente indepen-
diente; si la solución óptima es múltiple, al menos existe una solución
linealmente independiente óptima.

1.2.2. Demostración

Si se demuestra que dada una solución linealmente dependiente y factible x 0


de un problema de Programación Lineal, basta con que el problema esté acota-
do para que exista una solución linealmente independiente y factible x tal que
cx ≥ cx 0 , queda demostrado el teorema, ya que:

1. se demostrarı́a que existe una solución linealmente independiente y fac-


tible y
2. si para cualquier solución linealmente dependiente, siempre es posible
encontrar otra linealmente independiente no peor, de haber una única
óptima es linealmente independiente y, si hay varias, al menos una es
linealmente independiente. En este segundo caso, si se conoce que al-
guna de las soluciones óptimas es linealmente independiente, quedarı́a
demostrado. Si no, alguna de las soluciones óptimas serı́a linealmente
dependiente, por aplicación del enunciado, serı́a posible encontrar otra
linealmente independiente no peor, y como la solución linealmente de-
pendiente es óptima existirı́a al menos una solución linealmente inde-
pendiente también óptima.

1 Esto es ası́ siempre cuando el rango de todas las matrices de m columnas de A es m. Si exis-

tiera una submatriz dentro de A con menos de m columnas linealmente dependientes, podrı́a
existir una solución linealmente dependiente con menos de m componentes.
Capı́tulo 1. INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL. TEOREMA FUNDAMENTAL 4

En el primer enunciado del Teorema Fundamental, se entiende implı́citamente


que el problema considerado está acotado. En efecto, si el problema no está
acotado, entonces no existe una solución óptima. Al contrario, si el problema
sı́ está acotado, existe al menos una solución óptima.

Se trata de una demostración constructiva, partiendo de la solución x 0 . Como Propiedades de


x 0 es una solución linealmente dependiente se puede encontrar un vector y, x0
con las siguientes propiedades:
(1.2)

Ay = 0 y
yi = 0 si xi = 0
cy ≥ 0 (si no es ası́, basta con cambiar de signo a y).

A partir de x 0 se puede construir una nueva solución x 1 : Una nueva


solución x 1
x 1 = x 0 + ty (con t ≥ 0) (1.3)

Efectivamente, es solución:

Ax 1 = A(x 0 + ty) = Ax 0 + tAy = b + t0 = b (1.4)

x 1 no es peor
z1 = cx 1 = c(x 0 + ty) = cx 0 + tcy = z0 + tcy (1.5) que x 0

Dado que cy ≥ 0, siempre se cumple z1 ≥ z0 .

Los valores de las variables de la nueva solución son: Una


componente
nula más
xi1 = xi0 + tyi (1.6)

Se puede dar un valor a t de manera que ninguna variable tenga valor negativo x 1 no es peor
y que tenga una componente nula más que x 0 . que x 0

xi0
t = min{i/yi ≤0}  
yi  (1.7)

Examinando de forma exhaustiva los casos que se pueden dar, la discusión Discusión
completa es la siguiente. completa

Si cy = 0 siempre se puede encontrar t ∈ (−∞, ∞) tal que x 1 tenga una


componente nula más que x 0 . En este caso:
• x 1 es factible
• cx 1 = cx 0
• x 1 tiene una componente nula más
Capı́tulo 1. INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL. TEOREMA FUNDAMENTAL 5

Si cy > 0
x1
• Si ∃yi < 0, con t = min{i/yi ≤0}i
se obtiene una solución no peor
|yi |
con una componente nula más.
• Si yi > 0 ∀i el problema no está acotado, el valor de la función
objetivo pude ser tan grande como se desee.

En términos de Ingenierı́a de Organización, los problemas no acotados no tie- Problemas no


nen sentido. acotados

Al llegar a una solución linealmente independiente, ya no se puede iterar, por- Iterando


que no existe y que cumpla 1.2. Por supuesto, por otro lado, se habrı́a encon-
trado la solución linealmente independiente deseada.

1.3. Implicaciones del Teorema Fundamental

De acuerdo con lo que se sigue del teorema fundamental, siempre existe una Dónde buscar
solución óptima dentro del conjunto de todas las soluciones linealmente inde-
pendientes.

Una forma de resolver un problema de Programación Lineal es la siguiente: Enumeración


explı́cita
1. Resolver todos los sistemas de ecuaciones correspondientes a todas las
soluciones linealmente independientes.
2. Descartar las no factibles.
3. Escoger la que tenga mayor valor de la función objetivo.

Se trata de un método eficaz (está garantizado que se encuentra la solución El problema


óptima), pero poco eficiente porque puede exigir un elevadı́simo tiempo de
cálculo.
 
n n!
Con m restricciones y n variables, existen = m!(n−m)! soluciones.
m

Si el problema crece, suponiendo que cada sistema se resuelve en 10−6 segun- Ejemplo
dos, se pueden tener tiempos de resolución de años: numérico

Nº variables 10 100 1000


Nº restricciones 4 40 400
Nº sol. básicas 210 1.37 E+28 4.97 E+290
Tiempo res. (años) 4.35 E+14 1.57 E+277
Capı́tulo 1. INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL. TEOREMA FUNDAMENTAL 6

Por ejemplo, se quiere hallar la solución óptima de el siguiente problema de Ejemplo


Programación Lineal: numérico
concreto
max. z =x1 + 2x2 + x3 + 3x4
s.a. :
(1.8)
2x1 + x2 − x3 + 2x4 + x5 = 10
x1 + 3x2 + x3 + 3x4 + x6 = 12

Se trata de un problema con dos restricciones y seis variables. Existen 15 solu-


ciones linealmente independientes.
 
6 6!
= 2!(6−2)! = 15
2

Sol.
Solución
Nº lineal. Restricción 1 Restricción 2 z
(x1 , x2 , x3 , x4 , x5 , x6 )
indep.

1 x1 , x2 2x1 + x2 = 10 x1 + 3x2 = 12 (14/5, 18/5, 0, 0, 0, 0) 46/5


2 x1 , x3 2x1 − x3 = 10 x1 + x3 = 12 (22/3, 0, 14/3, 0, 0, 0) 12
3 x1 , x4 2x1 + 2x4 = 10 x1 + 3x4 = 12 (7/2, 0, 0, 3/2, 0, 0) 8
4 x1 , x5 2x1 + x5 = 10 x1 = 12 (12, 0, 0, 0, -14, 0) No factible
5 x1 , x6 2x1 = 10 x1 + x6 = 12 (5, 0, 0, 0, 0, 7) 5
6 x2 , x3 x2 − x3 = 10 3x2 + x3 = 12 (0, 11/2, -9/2, 0, 0, 0) No factible
7 x2 , x4 x2 + 2x4 = 10 3x2 + 3x4 = 12 (0, -2, 0, 6, 0, 0) No factible
8 x2 , x5 x2 + x5 = 10 3x2 = 12 (0, 4, 0, 0, 6, 0) 8
9 x2 , x6 x2 = 10 3x2 + x6 = 12 (0, 10, 0, 0, 0, -18) No factible
10 x3 , x4 −x3 + 2x4 = 10 x3 + 3x4 = 12 (0, 0, -6/5, 22/5, 0, 0) No factible
11 x3 , x5 −x3 + x5 = 10 x3 = 12 (0, 0, 12, 0, 22, 0) 12
12 x3 , x6 −x3 = 10 x3 + x6 = 12 (0, 0, -10, 0, 0, 22) No factible
13 x4 , x5 2x4 + x5 = 10 3x4 = 12 (0, 0, 0, 4, 2, 0) 8
14 x4 , x6 2x4 = 10 3x4 + x6 = 12 (0, 0, 0, 5, 0, -3) No factible
15 x5 , x6 x5 = 10 x6 = 12 (0, 0, 0, 0, 10, 12) 0

Tabla 1.1: Caracterización de las soluciones linealmente independientes.

Al reorganizar la tabla 1.1, podemos distinguir las soluciones factibles de las


no factibles. A su vez, ordenamos las soluciones factibles según su valor de la
función objetivo, z.
Capı́tulo 1. INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL. TEOREMA FUNDAMENTAL 7

Sol.
Solución
Nº lineal. Restricción 1 Restricción 2 z
(x1 , x2 , x3 , x4 , x5 , x6 )
indep.

2 x1 , x3 2x1 − x3 = 10 x1 + x3 = 12 (22/3, 0, 14/3, 0, 0, 0) 12


11 x3 , x5 −x3 + x5 = 10 x3 = 12 (0, 0, 12, 0, 22, 0) 12
1 x1 , x2 2x1 + x2 = 10 x1 + 3x2 = 12 (14/5, 18/5, 0, 0, 0, 0) 46/5
3 x1 , x4 2x1 + 2x4 = 10 x1 + 3x4 = 12 (7/2, 0, 0, 3/2, 0, 0) 8
13 x4 , x5 2x4 + x5 = 10 3x4 = 12 (0, 0, 0, 4, 2, 0) 8
8 x2 , x5 x2 + x5 = 10 3x2 = 12 (0, 4, 0, 0, 6, 0) 8
5 x1 , x6 2x1 = 10 x1 + x6 = 12 (5, 0, 0, 0, 0, 7) 5
15 x5 , x6 x5 = 10 x6 = 12 (0, 0, 0, 0, 10, 12) 0
4 x1 , x5 2x1 + x5 = 10 x1 = 12 (12, 0, 0, 0, -14, 0) No factible
6 x2 , x3 x2 − x3 = 10 3x2 + x3 = 12 (0, 11/2, -9/2, 0, 0, 0) No factible
7 x2 , x4 x2 + 2x4 = 10 3x2 + 3x4 = 12 (0, -2, 0, 6, 0, 0) No factible
9 x2 , x6 x2 = 10 3x2 + x6 = 12 (0, 10, 0, 0, 0, -18) No factible
10 x3 , x4 −x3 + 2x4 = 10 x3 + 3x4 = 12 (0, 0, -6/5, 22/5, 0, 0) No factible
12 x3 , x6 −x3 = 10 x3 + x6 = 12 (0, 0, -10, 0, 0, 22) No factible
14 x4 , x6 2x4 = 10 3x4 + x6 = 12 (0, 0, 0, 5, 0, -3) No factible

Tabla 1.2: Reorganización de las soluciones linealmente independientes.

En la tabla 1.2 se observa que existen dos soluciones cuyo valor z es mayor que
para el resto de soluciones linealmente independientes. Estas dos soluciones
son las soluciones óptimas; casualmente, en este caso hay soluciones óptimas
múltiples. Además, existe un conjunto de soluciones no factibles, cuyo valor
de z no es relevante, dado que no cumplen las restricciones de dominio.

1.4. Ejemplo de aplicación del Teorema Fundamental

max. z =x1 + 2x2


s.a. :
− 3x1 + x2 ≤ 2
(1.9)
x2 ≤ 11
x1 − x2 ≤ 3
x1 , x2 ≥ 0

Problema equivalente al siguiente, en el que se han introducido las variables


de holgura:
Capı́tulo 1. INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL. TEOREMA FUNDAMENTAL 8

max. z =x1 + 2x2


s.a. :
− 3x1 + x2 + h1 = 2
(1.10)
x2 + h2 = 11
x1 − x2 + h3 = 3
x1 , x2 , h1 , h2 , h3 ≥ 0

 T
La solución 6,37 7,58 13,53 3,42 4,21 es una solución porque Solución inicial:
cumple Ax = b. Efectivamente, se puede comprobar que:
⎛ ⎞
6,37
⎛ ⎞⎜ ⎟ ⎛ ⎞
−3 1 1 0 0 ⎜ 7,58 ⎟ 2
⎜ ⎟⎜ ⎟ ⎜
⎟ = ⎝ 11 ⎟
Ax 0 = ⎝ 0 1 0 1 0 ⎠⎜
⎜ 13,53 ⎟ ⎠ (1.11)
⎜ ⎟
1 −1 0 0 1 ⎝ 3,42 ⎠ 3
4,21

Como las columnas correspondientes a componentes no nulas de x son lineal-


mente dependientes, se pueden encontrar valores de y1 , y2 , y3 , y4 y y5 no
todos ellos nulos que cumplan:
⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞
−3 1 1 0 0
⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟
y1 ⎝ 0 ⎠ + y2 ⎝ 1 ⎠ + y3 ⎝ 0 ⎠ + y4 ⎝ 1 ⎠ + y5 ⎝ 0 ⎠ =
1 −1 0 0 1
⎛ ⎞ (1.12)
0
⎜ ⎟
=⎝ 0 ⎠
0

Es decir, es posible encontrar y que cumple Ay = 0, con yi = 0 si xi = 0. En


este caso, no existe ningún xi = 0 y tampoco, por lo tanto, es necesario que
sea el correspondiente yi = 0.

 T
Un posible vector y es 12 4 32 −4 −8 , aunque hay infinitos posi- Primera
1 iteración
bles. Con este vector y es posible construir una nueva solución x :

⎞⎛ ⎛ ⎞ La nueva
6,37 12
⎜ ⎟ ⎜ ⎟ solución
⎜ 7,58 ⎟ ⎜ 4 ⎟
⎜ ⎟ ⎜ ⎟
x 1 = x 0 + ty = ⎜ ⎟ ⎜
⎜ 13,53 ⎟ + t ⎜ 32

⎟ (1.13)
⎜ ⎟ ⎜ ⎟
⎝ 3,42 ⎠ ⎝ −4 ⎠
4,21 −8
Capı́tulo 1. INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL. TEOREMA FUNDAMENTAL 9

Se puede comprobar que Ax 1 = b. En efecto: x 1 es solución


⎛ ⎞
  −3 1 1 0 0
⎜ ⎟
Ax 1 = A x 0 + ty = ⎝ 0 1 0 1 0 ⎠ x1 =
1 −1 0 0 1
⎛ ⎞
−3 1 1 0 0
⎜ ⎟
⎝ 0 1 0 1 0 ⎠ (x 0 + ty) =
1 −1 0 0 1
⎛ ⎞ ⎛ ⎞
6,37 12
⎛ ⎞⎜ ⎟ ⎛ ⎞⎜ ⎟
−3 1 1 0 0 ⎜ 7,58 ⎟ −3 1 1 0 0 ⎜ 4 ⎟
⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟
⎝ 0 1 0 1 0 ⎠⎜ ⎟
⎜ 13,53 ⎟ + t ⎝ 0 1 0 1 0 ⎠⎜ ⎟
⎜ 32 ⎟ =
⎜ ⎟ ⎜ ⎟
1 −1 0 0 1 ⎝ 3,42 ⎠ 1 −1 0 0 1 ⎝ −4 ⎠
4,21 −8
⎛ ⎞ ⎛ ⎞ ⎛ ⎞
2 0 2
⎜ ⎟ ⎜ ⎟ ⎜ ⎟
⎝ 11 ⎠ + ⎝ 0 ⎠ = ⎝ 11 ⎠
13 0 3
(1.14)

Se puede comprobar que cy ≥ 0: x 1 no peor que


⎛ ⎞ x0
12
⎜ ⎟
 ⎜

4 ⎟

cy = 1 2 0 0 0 ⎜ ⎟
⎜ 32 ⎟ = 20 (1.15)
⎜ ⎟
⎝ −4 ⎠
−8

De no ser ası́, bastarı́a con cambiar el signo a y, de forma que todo lo anterior x 1 no peor que
serı́a cierto. x0

Dado que cy > 0, el valor de la función de objetivo de x 1 es mayor que la de


x 0 en una cantidad igual a cy.

cx 1 = c(x 0 + tcy) =
⎛ ⎞ ⎛ ⎞
6,37 12
⎜ ⎟ ⎜ ⎟
  ⎜ 7,58 ⎟

⎟  ⎜⎜
4 ⎟

1 2 0 0 0 ⎜ ⎟
⎜ 13,53 ⎟ + t 1 2 0 0 0 ⎜ ⎟
⎜ 32 ⎟ = (1.16)
⎜ ⎟ ⎜ ⎟
⎝ 3,42 ⎠ ⎝ −4 ⎠
4,21 −8
21,53 + t × 20
Capı́tulo 1. INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL. TEOREMA FUNDAMENTAL 10

Dado que sólo y4 e y5 son negativas, sólo es posible que las componentes x4
y x5 se hagan nulas con t > 0. En particular, los valores que hacen respectiva-
mente 0 cada una de esas componentes de x 1 son 3,42 4,21
4 y 8 .

En menor valor de los anteriores hace que una componente, x5 , se haga nula y
no se haga negativa ninguna de las otras dos.

3,42 4,21
t = min , = 0,52625 (1.17)
4 8

La nueva solución es:


⎛ ⎞ ⎛ ⎞ ⎛ ⎞
6,37 12 12,69
⎜ ⎟ ⎜ ⎟ ⎜ ⎟
⎜ 7,58 ⎟ ⎜ 1 ⎟ ⎜ 9,69 ⎟
⎜ ⎟ ⎜ ⎟ ⎜ ⎟
x =⎜
1
⎜ 13,53 ⎟ + 0,52625 ⎜
⎟ ⎜ 32 ⎟=⎜
⎟ ⎜ 30,37 ⎟
⎟ (1.18)
⎜ ⎟ ⎜ ⎟ ⎜ ⎟
⎝ 3,42 ⎠ ⎝ −4 ⎠ ⎝ 1,32 ⎠
4,21 −8 0

z1 = 32,07

 T
x 1 = 12,69 9,69 30,37 1,32 0 Segunda
 T iteración
y = 1 1 2 −1 0
Ay = 0

 
t = min 1,32
1 = 1,32
 T
x 2 = 14 11 33 0 0

z2 = 36

1.5. Interpretación geométrica

1.5.1. Representación gráfica del problema

Como el problema es en dos dimensiones, se puede representar gráficamente.


Cada restricción divide el plano en dos semiplanos (semiespacios, con carácter
general).

Para cada restricción, los puntos de un semiespacio cumplen la solución y los


del otro no. En la propia recta sı́ se cumple la restricción.
Capı́tulo 1. INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL. TEOREMA FUNDAMENTAL 11

z= z=
x2 32 36
,07
13

12

(2, 11) x2 = 11 (14, 11)


11 z=
21 x2
,53
10
x1

8
=2

x0
2
+x

7
1
−3x

6 3

5
=
2
x

1
x

(0,2)
2
x1 = 0

(0, 0) x2 = 0 (3, 0)
1 4 5 7 11 14 15 x1
z 2= 3 6 8 9 10 12 13
0

La región de factibilidad es el conjunto de todos los puntos que están en la Región de


intersección de todos los semiespacios de soluciones factibles de todas las factibilidad
restricciones. Se trata de un polı́gono (un poliedro, en general). En el ejemplo,
se trata de un poliedro de cinco vértices y cinco lados.

En el gráfico, además, hay cuatro rectas representadas: x1 +2x2 = 0, x1 +2x2 = Función objetivo
21,53, x1 + 2x2 = 32,07 y x1 + 2x2 = 36. Cada una de estas rectas (se podrı́an
representar otras), contiene al conjunto de puntos que tienen la misma función
objetivo (0 , 21,53 , 32,07 y 36, según el caso).

De todas las soluciones de la recta z = k, aquellas que están dentro de la región


de factibilidad son, naturalmente, factibles y el resto no.

Dada la forma de la función objetivo de este problema, cuanto más desplazada


hacia la derecha esté la recta del haz z = k que contiene a un punto, mayor es
su función objetivo.

1.5.2. Soluciones linealmente dependientes e independientes

En este ejemplo, las soluciones linealmente independientes tienen como máxi- Soluciones
mo tres (m) componentes no nulas y, por lo tanto, al menos 3 (n − m = 6 − 3) linealmente
independientes
Capı́tulo 1. INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL. TEOREMA FUNDAMENTAL 12

nulas.
Una variable nula significa una de las dos siguientes cosas:

o que el punto correspondiente está en un eje (x1 = 0 o x2 = 0)


o que el punto correspondiente está sobre una restricción (h1 = 0, h2 = 0
o h3 = 0).

Es decir, si hay tres componentes nulas debe estar la intersección de tres res-
tricciones o ejes. Las soluciones linealmente independientes factibles son los
vértices del poliedro.

Soluciones linealmente dependientes son el resto, es decir, las que están sobre Soluciones
los lados (no en los vértices) o en el interior del poliedro. linealmente
dependientes
La interpretación gráfica del Teorema Fundamental en dos dimensiones es la Significado de
siguiente: dado un punto en el interior o en el lado del polı́gono que define la las iteraciones
región de factibilidad, siempre es posible moverse hasta un vértice que tiene
una mayor función objetivo, no necesariamente el óptimo del problema pero
sı́ al menos tan buena como la solución de partida.

En la demostración constructiva del ejemplo hemos pasado de x 0 a x 1 , de


forma que de un punto interior hemos alcanzado un lado del polı́gono, con
una z no peor (mejor, en este caso). Después, en una segunda iteración hemos
pasado de x 1 a x 2 , que ya es una solución básica mejor que x 1 (y que x 0 ). Esto
lo podemos hacer para cualquier solución básica.

Por ello, si limitásemos la búsqueda de la solución óptima entre los vértices


del polı́gono, en alguno de ellos encontrarı́amos la solución óptima.

1.6. Otro ejemplo de aplicación del Teorema Fundamental

max. z =4x1 + 4x2 + 6x3 + 8x4


2x1 + 3x2 + 3x3 + 6x4 + x5 = 400
(1.19)
1x1 + 2x2 + 6x3 + 3x4 + x6 = 200
5x1 + 5x2 + 5x3 + 5x4 + x7 = 10000

Solución inicial: x 0 = (0 4 14 36 130 0 9730)T , z0 = 388. Se trata de una


solución porque se cumple Ax = b. Efectivamente, se puede comprobar que:
Capı́tulo 1. INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL. TEOREMA FUNDAMENTAL 13

⎛ ⎞
0
⎜ ⎟
⎜ 4 ⎟
⎛ ⎞⎜ ⎟ ⎛ ⎞
2 3 3 6 1 0 0 ⎜⎜ 14 ⎟
⎟ 400
0 ⎜ ⎟⎜ ⎟ ⎜ ⎟
Ax = ⎝ 1 2 6 3 0 1 0 ⎠⎜ 36 ⎟ = ⎝ 200 ⎠ (1.20)
⎜ ⎟
5 5 5 5 0 0 1 ⎜⎜ 130 ⎟
⎟ 10000
⎜ ⎟
⎝ 0 ⎠
9730

Como las columnas correspondientes a componentes no nulas de x son lineal-


mente dependientes, se pueden encontrar valores de y2 , y3 , y4 , y5 y y7 no
todos ellos nulos que cumplan:
⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞
3 3 6 1 0
⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟
y2 ⎝ 2 ⎠ + y3 ⎝ 6 ⎠ + y4 ⎝ 3 ⎠ + y5 ⎝ 0 ⎠ + y7 ⎝ 0 ⎠ =
5 5 5 0 1
⎛ ⎞ (1.21)
0
⎜ ⎟
=⎝ 0 ⎠
0

O lo que es equivalente:
⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞
2 3 3 6 1 0 0
⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟
0 ⎝ 1 ⎠ + y2 ⎝ 2 ⎠ + y3 ⎝ 6 ⎠ + y4 ⎝ 3 ⎠ + y5 ⎝ 0 ⎠ + 0 ⎝ 1 ⎠ + y7 ⎝ 0 ⎠ =
5 5 5 5 0 0 1
⎛ ⎞
0
⎜ ⎟
=⎝ 0 ⎠
0
(1.22)

Es decir, es posible encontrar y que cumple Ay = 0, con yi = 0 si xi = 0.

Un posible vector y = (0 0,1 − 0,567 1,067 − 5 0 − 3)T , con el que es Primera


posible construir una nueva solución x 1 . iteración

⎛ ⎞ ⎛ ⎞ La nueva
0 0
⎜ ⎟ ⎜ ⎟ solución
⎜ 4 ⎟ ⎜ 0,1 ⎟
⎜ ⎟ ⎜ ⎟
⎜ 14 ⎟ ⎜ −0,567 ⎟
⎜ ⎟ ⎜ ⎟
1 0 ⎜ ⎟ ⎜ ⎟
x = x + ty = ⎜ 36 ⎟+t⎜ 1,067 ⎟ (1.23)
⎜ ⎟ ⎜ ⎟
⎜ 130 ⎟ ⎜ −5 ⎟
⎜ ⎟ ⎜ ⎟
⎜ ⎟ ⎜ ⎟
⎝ 0 ⎠ ⎝ 0 ⎠
9730 −3
Capı́tulo 1. INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL. TEOREMA FUNDAMENTAL 14

Se puede comprobar que AX 1 = b. En efecto: x 1 es solución


⎛ ⎞
0
⎜ ⎟
⎜ 4 ⎟
⎛ ⎞⎜ ⎟
2 3 3 6 1 0 0 ⎜ ⎜ 14 ⎟

⎜ ⎟⎜ ⎟
Ax 1 = A(x 0 + ty) = ⎝ 1 2 6 3 0 1 0 ⎠ ⎜ 36 ⎟
⎜ ⎟
5 5 5 5 0 0 1 ⎜ 130 ⎟


⎜ ⎟
⎝ 0 ⎠
9730
⎛ ⎞
0
⎜ ⎟
⎜ 0,1 ⎟
⎛ ⎞⎜ ⎟ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞
2 3 3 6 1 0 0 ⎜ −0,567 ⎟

⎟ 400 0 400
⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟
+t ⎝ 1 2 6 3 0 1 0 ⎠ ⎜ 1,067 ⎟ = ⎝ 200 ⎠ + ⎝ 0 ⎠ = ⎝ 200 ⎠
⎜ ⎟
5 5 5 5 0 0 1 ⎜ ⎜ −5 ⎟ 10000 0 10000

⎜ ⎟
⎝ 0 ⎠
−3
(1.24)

Se puede comprobar que cy ≥ 0. x 1 no peor que


⎛ ⎞ x0
0
⎜ ⎟
⎜ 0,1 ⎟
⎜ ⎟
⎜ −0,567 ⎟
 ⎜ ⎟
⎜ ⎟
cy = 4 4 6 8 0 0 0 ⎜ 1,067 ⎟ = 5,534 (1.25)
⎜ ⎟
⎜ −5 ⎟
⎜ ⎟
⎜ ⎟
⎝ 0 ⎠
−3

De no ser ası́, bastarı́a con cambiar el signo a y y todo lo anterior serı́a cierto. x 1 no peor que
Dado que cy > 0, el valor de la función de objetivo de x 1 es mayor que la de x0
x 0 en una cantidad igual a tcy.

cx 1 = c(x 0 + tcy) =
⎛ ⎞ ⎛ ⎞
0 0
⎜ ⎟ ⎜ ⎟
⎜ 4 ⎟ ⎜ 0,1 ⎟
⎜ ⎟ ⎜ ⎟
⎜ ⎟ ⎜ −0,567 ⎟
  ⎜ 14 ⎟  ⎜ ⎟
⎜ ⎟ ⎜ ⎟
4 4 6 8 0 0 0 ⎜ 36 ⎟ + t 4 4 6 8 0 0 0 ⎜ 1,067 ⎟ =
⎜ ⎟ ⎜ ⎟
⎜ 130 ⎟ ⎜ −5 ⎟
⎜ ⎟ ⎜ ⎟
⎜ ⎟ ⎜ ⎟
⎝ 0 ⎠ ⎝ 0 ⎠
9730 −3
388 + 24,56 × 5,534
(1.26)
Capı́tulo 1. INTRODUCCIÓN A LA PROGRAMACIÓN LINEAL. TEOREMA FUNDAMENTAL 15

Dado que sólo y3 , y5 e y7 son negativas, solo es posible que las componentes
x3 , x5 y x7 se hagan nulas con t > 0. En particular, los valores que hacen
14
respectivamente 0 cada una de esas componentes de x 1 son 0,57 , 130
5 y
9730
3 .

El menor valor de los anteriores hace que una componente, x3 , se haga nula y
no se haga negativa ninguna de las otras dos.

14 130 9730
t = min , , = 24,56 (1.27)
0,57 5 3

La nueva solución es:


⎛ ⎞ ⎛ ⎞ ⎛ ⎞
0 0 0
⎜ ⎟ ⎜ ⎟ ⎜ ⎟
⎜ 4 ⎟ ⎜ 0,1 ⎟ ⎜ 6,47 ⎟
⎜ ⎟ ⎜ ⎟ ⎜ ⎟
⎜ 14 ⎟ ⎜ −0,567 ⎟ ⎜ 0 ⎟
⎜ ⎟ ⎜ ⎟ ⎜ ⎟
1 ⎜ ⎟ ⎜ ⎟ ⎜ ⎟
x =⎜ 36 ⎟ + 24,56 ⎜ 1,067 ⎟=⎜ 62,25 ⎟ (1.28)
⎜ ⎟ ⎜ ⎟ ⎜ ⎟
⎜ 130 ⎟ ⎜ −5 ⎟ ⎜ 7,25 ⎟
⎜ ⎟ ⎜ ⎟ ⎜ ⎟
⎜ ⎟ ⎜ ⎟ ⎜ ⎟
⎝ 0 ⎠ ⎝ 0 ⎠ ⎝ 0 ⎠
9730 −3 9656,32

z1 = 523,48

y = (0 − 4,2 0 2,8 − 4,2 0 7)T Segunda


iteración
t = min{ 6,47
4,2
7,25
4,2 }=1,54

x 2 = (0 0 0 66,56 0,08 0 9576,1)T

z2 = 532,50
Capı́tulo 2

FUNDAMENTOS DEL MÉTODO DEL SIMPLEX

2.1. Definiciones

Dado un problema de Programación Lineal: Solución básica

max. z =cx
s.a.:
(2.1)
Ax = b
x≥0

donde A es una matriz m × n, con n > m y rang(A) = m:


Se define:

Base B como un conjunto de m columnas de A linealmente independien-


tes.
Solución básica correspondiente a la base B, valores de x resultantes de
resolver el sistema de ecuaciones Ax = b anulando todas las variables
correspondientes a columnas diferentes de las de B. Una solución básica:
• es linealmente independiente y
• como máximo, tiene m componentes no nulas, tantas como res-
tricciones.

En lo que sigue identificaremos:

solución básica con solución linealmente independiente 1 .


solución no básica con solución linealmente dependiente.

Además:

una solución básica tiene como máximo m componentes no nulas y


1 En efecto, por la propia definición, una solución básica es linealmente independiente. Por

otro lado, cualquier solución linealmente independiente con m componentes no nulas es bási-
ca. Y cualquier solución linealmente independiente con menos de p < m componentes no nulas
también es básica por la siguiente razón. Si tomamos la matriz con las p columnas de las varia-
bles no nulas, siempre podemos añadir otras m − p columnas de variables para que formen una
base (el rango de A es m y esto siempre es posible. Haciendo eso obtendrı́amos una solución
básica con p variables básicas no nulas y m − p variables básicas nulas, lo que se conoce como
solución degenerada.
Capı́tulo 2. FUNDAMENTOS DEL MÉTODO DEL SIMPLEX 17

una solución no básica tiene, al menos m + 1 componentes no nulas.

Dada una solución básica, con base B, hay dos tipos de variables:

Variable básica: cada una de las variables correspondientes a las colum-


nas de B, que son potencialmente no nulas.
Variable no básica: cada una de las variables correspondientes a las co-
lumnas de A no incluidas en B, que son siempre nulas.

2.2. Ejemplo introductorio

Dado el siguiente problema Problema con


desigualdades

max. z =1x1 + 2x2 + 3x3


s.a. :
1x1 + 2x2 + 1x3 ≤ 16
(2.2)
3x1 − 2x2 + 2x3 ≤ 26
1x1 + 0x2 + 2x3 ≤ 24
xi ≥ 0, i = 1, ... , 3

Se puede reformular en términos de igualdades como en 2.3, introduciendo Problema con


variables de holgura (h1 , h2 y h3 ) no negativas. igualdades

max.z = 1x1 + 2x2 + 3x3


s.a. :
1x1 + 2x2 + 1x3 + h1 = 16
(2.3)
3x1 − 2x2 + 2x3 + h2 = 26
1x1 + 0x2 + 2x3 + h3 = 24
x1 , x2 , x3 , h1 , h2 , h3 ≥ 0

Según el Teorema Fundamental de la Programación Lineal, si el problema tie- Solución básica


ne solución óptima, al menos una es básica, por lo que vamos a evaluar una inicial
primera solución básica sencilla de obtener.

 
Elegimos como base: B0 = Ah1 Ah2 Ah3 . Las tres variables básicas son las tres
variables de holgura. Dado que se deben cumplir las restricciones, el valor de
las variables de esta solución serán:
Capı́tulo 2. FUNDAMENTOS DEL MÉTODO DEL SIMPLEX 18

Variables básicas
h1 = 16
h2 = 26
h3 = 24
(2.4)
Variables no básicas
x1 = 0
x2 = 0
x3 = 0

Podemos convertir las cuatro filas del problema (función objetivo y tres res-
tricciones y representarlas de la siguiente manera):

0 = − 1z + 1x1 + 2x2 + 3x3 + 0h1 + 0h2 + 0h3 Fila F0


16 =0z + 1x1 + 2x2 + 1x3 + 1h1 + 0h2 + 0h3 Fila F1
(2.5)
26 =0z + 3x1 − 2x2 + 2x3 + 0h1 + 1h2 + 0h3 Fila F2
24 =0z + 1x1 + 0x2 + 2x3 + 0h1 + 0h2 + 1h3 Fila F3

Incluso lo podemos escribir en forma tabular, donde cada columna representa Representación
una variable o los términos independientes (columna de la izquierda) y ası́ no tabular
explicitar la variable de cada término.

z x1 x2 x3 h1 h2 h3
0 -1 1 2 3 0 0 0 F0
16 0 1 2 1 1 0 0 F1
26 0 3 -2 2 0 1 0 F2
24 0 1 0 2 0 0 1 F3

Tabla 2.1: Tabla correspondiente a la primera base B0

En la tabla 2.1 podemos leer lo siguiente, dado que las variables no básicas son Interpretación
0 y que las demás variables básicas tienen valor 0. de la tabla

En la fila F1 : 16 = h1 .
En la fila F2 : 26 = h2 .
En la fila F3 : 24 = h3 .
En la fila F0 : aparece la expresión de la función objetivo, con todas las
variables en el término de la derecha. En este caso esa fila es equivalente
a 0 = −z ⇒ z = 0, es decir, esta fila contiene la información de la función
objetivo para esta base.
Capı́tulo 2. FUNDAMENTOS DEL MÉTODO DEL SIMPLEX 19

En la tabla 2.1 podemos leer lo mismo que en las ecuaciones 2.5. En la tabla o Efecto de xj = t
en las ecuaciones, podemos observar lo siguiente.

Si x1 = t:
• De la fila F0 , se sigue que la función objetivo aumentarı́a en t. En
efecto, obviando los términos nulos de F0 :

0 = −z + t ⇒ z = 0 + t

• De la fila F1 , se sigue que h1 disminuirı́a en t. En efecto, obviando


los términos nulos de F1 :

16 = 1x1 + h1 ⇒ 16 = t + h1 ⇒ h1 = 16 − t

• De la fila F2 , se sigue que h2 disminuirı́a en 3t. En efecto, obviando


los términos nulos de F2 :

26 = 3x1 + h2 ⇒ 26 = 3t + h2 ⇒ h2 = 26 − 3t

• De la fila F3 , se sigue que h3 disminuirı́a en t. En efecto, obviando


los términos nulos de F3 :

24 = 1x1 + h3 ⇒ 24 = t + h3 ⇒ h3 = 24 − t

si x2 = t, de forma análoga se puede observar que Δz = 2t, Δh1 = −2t,


Δh2 = 2t, Δh3 = 0.
si x3 = t, de forma análoga se puede observar que Δz = 3t, Δh1 = −t,
Δh2 = −2t, Δh3 = −2t.

En resumen, hacer que una variable no básica tome un valor diferente de cero
modifica la función objetivo y modifica el valor de las variables básicas. En este
caso, la entrada en la base de cualquiera de las tres variables no básicas harı́a
que la función objetivo aumentase.

En particular, vamos a elegir la variable x3 . Dado que interesa que x3 aumen- Valor máximo
te porque ası́ aumenta la función objetivo, ¿cuál es el mayor valor que puede de x3
tomar? A la vista de las tres restricciones (2.5), se puede observar el valor
máximo que puede tomar sin que se haga negativa la variable básica corres-
pondiente.

16
16 =1t + 1h1 ⇒ t ≤ = 16
1
26
26 =2t1 + h2 ⇒ t ≤ = 13 (2.6)
2
24
24 =2t + 1h3 ⇒ t ≤ = 12
2
Capı́tulo 2. FUNDAMENTOS DEL MÉTODO DEL SIMPLEX 20

uB

40

30
h2

20 h3

h1
10

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 x3

−10

−20

Figura 2.1: Efecto de x3 en el nivel de realización de las variables no básicas

Si t = 12, no se hace ninguna variable negativa y h3 = 0. Esto darı́a lugar a


una nueva solución básica, con las siguientes variables básicas: h1 , h2 y x3 . Es
decir, sale la columna Ah3 de la base y, en su lugar, entra la columna Ax3 .

De la fila F3 de las ecuaciones de 2.5, podemos despejar x3 en función de h3 .

24 =1x1 + 0x2 + 2x3 + 0h1 + 0h2 + 1h3 ⇒


1 1
12 = x1 + 0x2 + x3 + 0h1 + 0h2 + h3 ⇒ (2.7)
2 2
1 1
x3 =12 − x1 − h3
2 2

Y podemos sustituir esa expresión en el resto de filas y sustituir la tercera fila Modificación de
por la modificación de la misma: las restricciones

 
1 1
0 = − z + 1x1 + 2x2 + 3 12 − x1 − h3 + 0h1 + 0h2 + 0h3 Fila F0

2 2
 
1 1
16 =0z + 1x1 + 2x2 + 12 − x1 − h3 + 1h1 + 0h2 + 0h3 Fila F1

2 2
 
1 1
26 =0z + 3x1 − 2x2 + 2 12 − x1 − h3 + 0h1 + 1h2 + 0h3 Fila F2

2 2
1 1
12 =0z + x1 + 0x2 + 1x3 + 0h1 + 0h2 + h3 Fila F3

2 2
(2.8)
Capı́tulo 2. FUNDAMENTOS DEL MÉTODO DEL SIMPLEX 21

Al operar, se obtienen las siguientes ecuaciones:

1 3
−36 = − z − x1 + 2x2 + 0x3 + 0h1 + 0h2 − h3 Fila F0

2 2
1 1
4 =0z + x1 + 2x2 + 0x3 + 1h1 + 0h2 − h3 Fila F1

2 2 (2.9)
2 =0z + 2x1 − 2x2 + 0x3 + 0h1 + 1h2 − 1h3 Fila F2

1 1
12 =0z + x1 + 0x2 + 1x3 + 0h1 + 0h2 + h3 Fila F3

2 2

A continuación, se muestra la tabla correspondiente a las ecuaciones iniciales Representación


y la tabla correspondiente a las nuevas ecuaciones: tabular

z x1 x2 x3 h1 h2 h3
0 -1 1 2 3 0 0 0 F0
h1 16 0 1 2 1 1 0 0 F1
h2 26 0 3 -2 2 0 1 0 F2
h3 24 0 1 0 2 0 0 1 F3

-36 -1 − 12 2 0 0 0 − 23 F0
= F0 − 3F3

h1 4 0 1
2 2 0 1 0 − 21 F1
= F1 − F3

h2 2 0 2 -2 0 0 1 -1 F2
= F2 − 2F3

F3

1 1
x3 12 0 2 0 1 0 0 2 = F3 /2

Tabla 2.2: Tablas correspondientes a las bases B0 y B1

De esta forma, las variables básicas (h1 , h2 , x3 ) quedan expresadas en función


de las variables no básicas (x1 , x2 , h3 ).

Esta segunda tabla 2.2 (y este segundo conjunto de ecuaciones, 2.9) correspon- Nuevas
 
de a una nueva solución básica, donde la base es B1 = Ah1 Ah2 Ax3 , con lo que variables
las nuevas variables básicas y no básicas son las siguientes: básicas y no
básicas

Variables básicas
h1
h2
x3
(2.10)
Variables no básicas
x1 = 0
x2 = 0
h3 = 0
Capı́tulo 2. FUNDAMENTOS DEL MÉTODO DEL SIMPLEX 22

Con respecto a las filas F1


, F2
y F3
, dado que las variables no básicas (y, por lo
tanto nulas) y, como se deben cumplir las restricciones, dado que las variables
no básicas son 0 y que las demás variables básicas tienen coeficiente 0:

En la fila F0
: −36 = −z. Segunda
En la fila F1
: 4 = h1 . solución básica
En la fila F2
: 2 = h2 .
En la fila F3
: 12 = x3 .

Todo lo anterior es consistente. Si sustituimos h1 = 4, h2 = 2 y x3 = 12


en las ecuaciones 2.9 (también en 2.5), éstas se cumplen. Y, por otro lado, si
computamos la función objetivo z = x1 + 2x2 + 3x3 = 36, tal y como indica la
fila F0
.

En la tabla 2.2 podemos leer lo mismo que en las ecuaciones 2.9, de forma
análoga a como razonamos con la tabla 2.1.

1 1 1
si x1 = t, Δz = − 2 t, Δh1 = − 2 t, Δh2 = −2t, Δx3 = − 2 t.
si x2 = t, Δz = 2t, Δh1 = −2t, Δh2 = 2t, Δx3 = 0.
si h3 = t, Δz = − 32 t, Δh1 = 12 t, Δh2 = 1t, Δx3 = − 12 t.

De nuevo, hacer que una variable no básica tome un valor diferente de cero
modifica la función objetivo y modifica el valor de las variables no básicas. En
este caso:

hacer que x2 > 0 hace que aumente el valor de la función objetivo y


hacer que x1 > 0 o que h3 > 0 hace que disminuya.

La única variable candidata a ser variable básica es x2 , porque es la única cuyo


aumento hace que aumente la función objetivo.

De nuevo, cuanto mayor sea el valor de x2 mayor será el aumento de z. El


mayor valor que puede tomar viene dado por las restricciones. En este caso,
vamos a usar las ecuaciones 2.9, sin explicitar los términos que sabemos que
son nulos, y sustituir x2 por el nuevo valor t, para que todas las variables sigan
siendo no negativas se debe cumplir los siguiente:

4
4 =2x2 + 1h1 ⇒ 4 = 2t + 1h1 ⇒ t ≤ =2
2
2 = − 2x2 + 1h2 ⇒ 2 = 2t + 1h2 ⇒ t ≤ ∞ (2.11)

12 =0x2 + 1x3 ⇒ 12 = 0t + 1x3 ⇒ t ≤ ∞


Capı́tulo 2. FUNDAMENTOS DEL MÉTODO DEL SIMPLEX 23

Si t = 2, no se hace ninguna variable negativa y h1 = 0. En este caso particular,


cuando x2 aumenta de valor, h2 también aumenta (nunca se puede hacer ne-
gativa) y x3 no se modifica (tampoco se puede hacer negativa). Esto darı́a lugar
a una nueva solución básica, con las siguientes variables básicas: x2 , h2 y x3 .
Es decir, sale la columna Ah1 de la base y, en su lugar, entra la columna Ax2 .

De la fila F1
de las ecuaciones de 2.9, podemos despejar x2 en función de h1 .

1 1
4 =0z + x1 + 2x2 + 0x3 + 1h1 + 0h2 − h3 ⇒
2 2
1 1 1
2 =0z + x1 + 1x2 + 0x3 + h1 + 0h2 − h3 ⇒ (2.12)
4 2 4
1 1 1
x2 =2 − x1 − h1 + h3
4 2 4

Y podemos sustituir esa expresión en el resto de filas y sustituir la fila 1 por la


ecuación anterior:

 
1 1 1 1 3
−36 = − z − x1 + 2 2 − x1 − h1 + h3 + 0x3 + 0h1 + 0h2 − h3 Fila F0

2 4 2 4 2
1 1 1
2 =0z + x1 + 1x2 + 0x3 + h1 + 0h2 − h3 Fila F1

4 2 4
 
1 1 1
2 =0z + 2x1 − 2 2 − x1 − h1 + h3 + 0x3 + 0h1 + 1h2 − 1h3 Fila F2

4 2 4
 
1 1 1 1 1
12 =0z + x1 + 0 2 − x1 − h1 + h3 + 1x3 + 0h1 + 0h2 + h3 Fila F3

2 4 2 4 2
(2.13)

Al operar, se obtienen las siguientes ecuaciones:

−40 = − z − 1x1 + 0x2 + 0x3 − 1h1 + 0h2 − 1h3 Fila F0

1 1 1
2 =0z + x1 + 1x2 + 0x3 + h1 + 0h2 − h3 Fila F1

4 2 4
5 3 (2.14)
6 =0z + x1 − 0x2 + 0x3 + 1h1 + 1h2 − h3 Fila F2

2 2
1 1
12 =0z + x1 + 0x2 + 1x3 + 0h1 + 0h2 + h3 Fila F3

2 2

A continuación, se muestra la tabla correspondiente a las ecuaciones iniciales


y la tabla correspondiente a las nuevas ecuaciones.
Capı́tulo 2. FUNDAMENTOS DEL MÉTODO DEL SIMPLEX 24

z x1 x2 x3 h1 h2 h3
0 -1 1 2 3 0 0 0 F0 = F0
h1 16 0 1 2 1 1 0 0 F1 = F1
h2 26 0 3 -2 2 0 1 0 F2 = F2
h3 24 0 1 0 2 0 0 1 F3 = F3

-36 -1 − 12 2 0 0 0 − 32 F0
= F0 − 3F3

h1 4 0 1
2 2 0 1 0 − 12 F1
= F1 − F3

h2 2 0 2 -2 0 0 1 -1 F2
= F2 − 2F3

x3 12 0 1
2 0 1 0 0 1
2 F3
= F3 /2

-40 -1 -1 0 0 -1 0 -1 F0

= F0
− 2F1

x2 2 0 1
4 1 0 1
2 0 − 14 F1

= F1
/2
h2 6 0 5
2 0 0 1 1 − 32 F2

= F2
+ 2F1

x3 12 0 1
2 0 1 0 0 1
2 F3

= F3

Tabla 2.3: Tablas correspondientes a las bases B0 , B1 y B2

Esta tercera tabla 2.3 (y este segundo conjunto de ecuaciones, 2.14) correspon-
 
de a una nueva solución básica, donde la base es B2 = Ax2 Ah2 Ax3 , con lo que
las nuevas variables básicas y no básicas son las siguientes:

Variables básicas
x2
h2
x3
(2.15)
Variables no básicas
x1 = 0
h1 = 0
h3 = 0

Con respecto a las filas F1

, F2

y F3

, dado que las variables no básicas (y, por lo


tanto nulas) y, como se deben cumplir las restricciones, dado que las variables
no básicas son 0 y que las demás variables básicas tienen coeficiente 0:

En la fila F0

: −40 = −z.
En la fila F1

: 2 = x2 .
En la fila F2

: 6 = h2 .
En la fila F3

: 12 = x3 .
Capı́tulo 2. FUNDAMENTOS DEL MÉTODO DEL SIMPLEX 25

Todo lo anterior es consistente. Si sustituimos x2 = 2, h2 = 6 y x3 = 12 en las


ecuaciones 2.14 (también en 2.5 y en 2.9), éstas se cumplen. Y, por otro lado,
si computamos la función objetivo z = x1 + x2 + x3 = 40, tal y como indica la
fila F0

En la tabla 2.3 podemos leer lo mismo que en las ecuaciones 2.14, de forma
análoga a como razonamos en los casos anteriores.

si x1 = t, Δz = −t.
si h1 = t, Δz = −t.
si h3 = t, Δz = −t.

Es decir, aumentar el valor de cualquier variable no básica harı́a que disminu-


yera el valor de la función objetivo, con lo que no hay posibilidad de mejorar
y hemos encontrado la solución óptima.

Por último, y antes de formalizar lo anterior, podemos observar que en las


tablas 2.1, 2.2 y 2.3, la columna de la z no cambia en ninguna iteración, por
lo que podemos obviarla, pero sin dejar de entender la fila 0 como la modifi-
cación de la ecuación de la función objetivo donde podemos leer el valor que
toma para cada base. Ası́, podemos reescribir todas las tablas anteriores sin la
columna correspondiente a z.

Se ha añadido una primera columna que incluye, para cada una de las filas co-
rrespondientes a las restricciones (1 a 3), los coeficientes en la función objetivo
de las variables básicas correspondientes.

x1 x2 x3 h1 h2 h3
0 1 2 3 0 0 0 F0
0 h1 16 1 2 1 1 0 0 F1
0 h2 26 3 -2 2 0 1 0 F2
0 h3 24 1 0 2 0 0 1 F3

-36 − 12 2 0 0 0 − 32 F0
= F0 − 3F3

0 h1 4 1
2 2 0 1 0 − 12 F1
= F1 − F3

0 h2 2 2 -2 0 0 1 -1 F2
= F2 − 2F3

3 x3 12 1
2 0 1 0 0 1
2 F3
= F3 /2

-40 -1 0 0 -1 0 -1 F0

= F0
− 2F1

2 x2 2 1
4 1 0 1
2 0 − 14 F1

= F1
/2
0 h2 6 5
2 0 0 1 1 − 32 F2

= F2
+ 2F1

3 x3 12 1
2 0 1 0 0 1
2 F3

= F3

Tabla 2.4: Tablas correspondiente a todas las bases


Capı́tulo 2. FUNDAMENTOS DEL MÉTODO DEL SIMPLEX 26

A partir de la tabla 2.4, se puede observar que las filas 1-3 de cada tabla se Operaciones
pueden obtener mediante operaciones elementales por filas haciendo que en para las filas
las columnas de las variables básicas aparezcan las columnas de la matriz 1-3
identidad.

Igualmente, se puede observar que, para la tabla, la fila 0 de la solución básica Operaciones
(n)
n-ésima, F0 , se puede obtener realizando las siguientes operaciones: para la fila 0
(n) (n) (n) (n) (n) (n) (n)
F0 =F0 − c1 × F1 − c2 × F2 − c3 × F3

(n)
donde ci es el coeficiente en la función objetivo de la variable i-ésima varia-
ble básica.

2.3. Formalización del método del Simplex

El método del Simplex opera de forma iterativa, partiendo de una solución Planteamiento
básica factible inicial y transitando, después, de solución básica factible a so- general
lución básica factible hasta llegar a una que además es óptima.

Solución
Solución Solución básica
básica Entra variable básica factible
factible factible óptima
0 1 2 ... n-1 n

Sale variable

Figura 2.2: Lógica del método del Simplex

En el problema de ejemplo, partı́amos de las ecuaciones que representábamos


en forma tabular. Para cualquier problema, la tabla tendrı́a la forma siguiente:

0 c
b A

Tabla 2.5: Tabla inicial del método del Simplex


Capı́tulo 2. FUNDAMENTOS DEL MÉTODO DEL SIMPLEX 27

En el ejemplo introductorio realizábamos la sustitución de una variable que


se hacı́a diferente de cero en función de la que se hacı́a cero en todas las
ecuaciones. Alternativamente, vimos al final que esto era equivalente a operar
por filas:

en las filas de las restricciones: conseguir la matriz identidad en las co-


lumnas de las variables básicas y
en la fila de la función objetivo: hacer nulos los términos de las variables
básicas.

Por tanto, hacer operaciones elementales por filas equivale a premultiplicar


por matrices. En este caso, la matriz por la que premultiplicamos las filas de
la tabla correspondientes a la restricción es la inversa de la base, ya que obte-
nemos la matriz identidad en su lugar.

  Ejemplo
1 2
Siendo A la matriz original, A = →
3 5
haciendo la operación elemental, F 2
= F 2 + 2F 1

 
1 2
se obtiene el resultado final, .
5 9

Esto equivale a lo siguiente:


 
1 0
Siendo E la matriz por la que premultiplicamos, E = →
2 1
    
1 0 1 2 1 2
premultiplicar la matriz E por A, EA = =
2 1 3 5 5 9

Se comprueba que se obtiene el mismo resultado final.

Ası́, elegida una base B, las transformaciones del ejemplo, en realidad, se co-
rresponden con las siguientes:

−c B B −1 b c − c B B −1 A
B −1 b B −1 A

Tabla 2.6: Tabla correspondiente a una base B aplicando el método del Simplex
Capı́tulo 2. FUNDAMENTOS DEL MÉTODO DEL SIMPLEX 28

Los elementos de la tabla son los siguientes: Definiciones

uB = B −1 b. Nivel de realización de las variables básicas.


V B = c−c B B −1 A. Vector de criterios del Simplex de las variables (también
llamado coste reducido).
p B = B −1 A. Tasas de sustitución.
zB = c B uB . Valor de la función objetivo.
π B = c B B −1 . Multiplicadores del Simplex o precios sombra de las restric-
ciones.

Podemos reescribir las tablas anteriores:

0 c
b A

−zB VB
uB pB

Tabla 2.7: Tabla correspondiente a una base B al aplicar el método del Simplex

Podemos separar en c los elementos que corresponden a variables básicas y los


que no corresponden c B y c I : c = (c B , c I ). Y podemos separar en A los que son
la base, B, del resto de columnas AI : A = (B, AI ) y escribir la tabla de acuerdo
con esta separación e identificar la transformación de forma consistente.

0 cB cI
b B AI

−c B B −1 b 0 c I − c B B −1 A
B −1 b I B −1 (AI )

Tabla 2.8: Tabla correspondiente a una base B aplicando el método del Simplex

2.4. Método del Simplex

Por último, dada una solución básica factible de un problema de Programa-


ción Lineal (de la cual podemos obtener su tabla correspondiente), podemos
formalizar las reglas que, de hecho, hemos aplicado en el ejemplo.
Capı́tulo 2. FUNDAMENTOS DEL MÉTODO DEL SIMPLEX 29

2.4.1. Regla de entrada

Una variable no básica es potencial candidata a entrar si cumple que VxBj ≥ 0. Regla de
En particular: entrada

xj = 1 ⇒ Δzxj =1 = VxBj (2.16)

Dada una base, se puede expresar la función objetivo de la siguiente manera: Justificación


−zB = −c B uB = −z + VxBj xj
(2.17)
j

Donde:

VxBj = 0 si la variable j es básica.


xj = 0 si la variable j es no básica.

Por lo tanto, de la expresión anterior se deduce la expresión de la ecuación


2.16, es decir, que el criterio del Simplex de una variable representa el in-
cremento de la función objetivo cuando el incremento del valor de dicha
variable es una unidad.

2.4.2. Regla de salida

Dada una variable de entrada xj , la variable de salida es aquella que se anula Regla de salida
sin que el resto de variables básicas se hagan negativas. Es decir, sale la básica
variable i-ésima, que cumple lo siguiente:

B
pij >0
y
(2.18)
uBi uBk B
B ≤ B ∀k/pkj >0
pij pkj

uBi
Para ello, el valor t con el que entra la nueva variable básica xi es: t = B
pij

Esto es ası́ porque, dada una base B, cuando una variable no básica (xj ) toma Justificación
valor t, el valor de las variables básicas en función de t es:
Capı́tulo 2. FUNDAMENTOS DEL MÉTODO DEL SIMPLEX 30

uBi (t) = uBi − tpik


B
(2.19)

2.4.3. Criterio de optimalidad

Una solución básica es óptima si V B ≤ 0, ya que la entrada en la base de Criterio de


cualquier variable no básica no permite mejorar el valor de la función objetivo. optimalidad

Si una solución, x ∗ , básica (con base B) cumple que V B ≤ 0, se cumple que, Justificación
para cualquier otra solución factible del problema, x:

V B ≤ 0 ⇒ c − c B B −1 A ≤ 0 ⇒
−1 −1
B
cx − c B B
Ax ≤ 0 ⇒ cx ≤ c B Ax = c B B −1 b = c B uB = zB ⇒ (2.20)
z ≤ zB

Es decir, el valor de su función objetivo es mayor o igual que el de la de cual-


quier otra solución.

2.4.4. Ejemplo del método del Simplex

max. z = 2x1 + 1x2 + 3x3


s.a. :
4x1 + 2x2 + 1x3 ≤ 60
(2.21)
2x1 + 6x2 − 1x3 ≤ 20
1x1 + 2x3 ≤ 10
x1 , x2 , x3 ≥ 0
Capı́tulo 2. FUNDAMENTOS DEL MÉTODO DEL SIMPLEX 31

x1 x2 x3 h1 h2 h3
0 2 1 3 0 0 0 F0
h1 60 4 2 1 1 0 0 F1
h2 20 2 6 -1 0 1 0 F2
h3 10 1 0 2 0 0 1 F3

-15 1/2 1 0 0 0 -3/2 F 0


= F 0 − 3F 3

h1 55 7/2 2 0 1 0 -1/2 F 1
= F 1 − F 3

h2 25 5/2 6 0 0 1 1/2 F 2
= F 2 + F 3

x3 5 1/2 0 1 0 0 1/2 F 3
= F 3/2

-115/6 1/12 0 0 0 -1/6 -19/12 F 0

= F 0
− F 2

h1 140/3 8/3 0 0 1 -1/3 -2/3 F 1

= F 1
− F 2

x2 25/6 5/12 1 0 0 1/6 1/12 F 2

= F 2/6
x3 5 1/2 0 1 0 0 1/2 F 3

= F 3

-20 0 -1/5 0 0 -1/5 -8/5 F 0

= F 0

− 1/12F 2

h1 20 0 -32/5 0 1 -7/5 -6/5 F 1

= F 1

− 8/3F 2

x1 10 1 12/5 0 0 2/5 1/5 F 2

= 12/5F 2

x3 0 0 -6/5 1 0 -1/5 2/5 F 3

= F 3

− 1/2F 2

En la figura 2.3 se representa el poliedro de la región factible del problema


anterior. Se indica con flechas la secuencia de soluciones básicas factibles visi-
tadas hasta alcanzar la solución que además es óptima.

Figura 2.3: Representación gráfica del método del Simplex aplicado al proble-
ma del apartado 2.4.4
Capı́tulo 2. FUNDAMENTOS DEL MÉTODO DEL SIMPLEX 32

2.4.5. El término Simplex

Se define “Simplex” como la envoltura convexa de un conjunto de puntos


(soluciones) linealmente independientes. En dos dimensiones el Simplex (la
envoltura) es un polı́gono, en tres dimensiones es un poliedro tridimensional;
en general, un politopo.

El Simplex, además de ser un polı́gono o un poliedro, es siempre convexo.


Se puede representar como la intersección de semiplanos o semiespacios:
Ax ≤ b.

Figura 2.4: Politopo regular [Wikipedia]

Todo Simplex asociado a un problema de Programación Lineal tiene esquinas,


que se identifican como las soluciones básicas y factibles, y del Teorema
Fundamental se deduce que en estas esquinas está la solución óptima.

El método del Simplex nos ayuda de forma eficaz y eficiente a alcanzar la


solución óptima sin estudiar todas las esquinas.
Capı́tulo 3

MÉTODOS DE LA M GRANDE Y DE LAS DOS


FASES

3.1. Introducción

Para aplicar el método del Simplex es necesario disponer de una solución Por qué estos
básica factible de partida del sistema Ax = b a partir de la cual iterar. métodos

Cuando todas las restricciones son ≤ con término independiente no negativo, Solución inicial
es decir, de la forma: sencilla


aij xj ≤ bi bi ≥ 0 (3.1)
j

todas se pueden expresar como:


aij xj + hi = bi bi ≥ 0 (3.2)
j

En este caso existe una solución de partida básica factible inicial trivial, con las Solución inicial
variables de holgura como variables básicas. Para esta solución: trivial

La base es igual a la matriz identidad, B = I.


uB = b, es decir, el valor de cada variable básica, correspondiente a una
variable de holgura, es igual al valor de la disponibilidad del recurso
correspondiente.
z = 0.
V B = c.
p B = A.
c B = 0.
π B = 0.
Capı́tulo 3. MÉTODOS DE LA M GRANDE Y DE LAS DOS FASES 34

Si existe alguna restricción de tipo ≥, se puede convertir en una igualdad Restricciones ≥


añadiendo una variable de holgura con coeficiente −1:


aij xj ≥ bi bi ≥ 0
j
 (3.3)
aij xj − hi = bi bi ≥ 0
j

Si existe alguna restricción de tipo =, no es necesario introducir ninguna va- Restricciones =


riable de holgura:


aij xj = bi
(3.4)
j

Si existen restricciones de tipo ≥ o =, al convertirlas en restricciones en térmi-


nos de igualdad, no es tan sencillo obtener una solución de partida trivial. Para
obtenerla, se plantean dos métodos que tienen una gran parte en común, aun-
que cada uno también tiene sus particularidades: el método de las dos fases y
el método de la M grande.

3.2. Método de las 2 fases

Dado un problema de Programación Lineal P : Problema


original, P , y
 problema
aij xj ≤ bi auxiliar, P

j

ai
j xj ≥ bi

j (3.5)

ai

j xj = bi

xj ≥ 0

Es posible convertirlo en un problema en donde las restricciones respondan a


la forma de Ax = b:
Capı́tulo 3. MÉTODOS DE LA M GRANDE Y DE LAS DOS FASES 35

max. z = cx
s.a. :

aij xj + hi = bi
j

ai
j xj − hi
= bi
(3.6)
j

ai

j xj = bi

xj , hi , hi
≥ 0

Se puede definir un problema P


de la forma:

 
max. z
= − ai
− ai

i
i

s.a. :

aij xj + hi = bi
j
 (3.7)
ai
j xj − hi
+ ai
= bi

j

ai

j xj + ai

= bi

xj , hi , hi
, ai
, ai

≥ 0

Donde las variables ai


y ai

se denominan variables artificiales.

Las propiedades del problema P


son las siguientes: propiedades de
P

Cualquier solución factible de P es solución factible de P


.
Una solución factible de P
lo es también de P si todas las variables arti-
ficiales son simultáneamente cero.
Si no existe ninguna solución factible de P
con todas las variables artifi-
ciales simultáneamente nulas, no existe solución factible de P .
Si para cualquier solución óptima de P
, siempre una variable artificial
toma un valor no nulo, P no tiene solución factible.
Siempre es posible encontrar una solución básica factible de partida de
P
.

1. Dado P construir P
. Método de
2. Resolver P
: resolución
a) Si al resolver P
mediante el método del Simplex se obtiene una
solución básica factible de P
en la que todas la variables artificiales
son nulas, esa es una solución básica de partida del problema P ,
Capı́tulo 3. MÉTODOS DE LA M GRANDE Y DE LAS DOS FASES 36

que puede servir de solución de partida para aplicar el método del


Simplex en la resolución de P .
b) Si para cualquier solución óptima de P
, siempre al menos una va-
riable artificial toma un valor no nulo, P no tiene solución factible.

Los problemas P y P
se diferencian en lo siguiente: Diferencias
entre P y P

que P
tiene un conjunto de actividades adicionales (las ficticias) y
que las contribuciones unitarias al beneficio, c y c
son diferentes.

Los problemas P y P
comparten: Analogı́as entre
P y P

el vector de disponibilidad de los recursos b = b


y
la matriz de coeficientes técnicos de las variables no artificiales Ai = A
i
si xi no es una variable artificial.

Dada una solución básica factible de P


en la que ninguna variables artificiales Relación entre
es una variable básica, la base de dicha solución es común para P y P
. bases

Cuando se obtiene una solución básica de P


en la que las variables artificiales
no están en la base, los siguientes elementos son coincidentes:

B = B
.
B −1 = B
−1 .

uB = u
B , ya que B −1 b = B
−1 b
.

p B = p
B .

Pero los siguientes elementos son diferentes:


c B ≠ c
B

zB ≠ z
B

V B ≠ V
B

Es decir, de la tabla obtenida en la resolución de P


de pueden reutilizar todas
las filas menos la que contienen −z y V B , que hay que recalcular.

Las columnas auxiliares correspondientes a las variables artificiales permiten Las columnas
disponer, en todo momento, de parte de las columnas de la inversa de la base. de las variables
artificiales
En relación con la columna auxiliar correspondiente a la variable artificial que
proviene de una restricción =, se comprueba que el criterio del Simplex y las
tasas de sustitución tienen el mismo valor y signo contrario que los de la va-
riable de holgura asociada a esa misma restricción.
Capı́tulo 3. MÉTODOS DE LA M GRANDE Y DE LAS DOS FASES 37

3.3. Método de la M grande

El método de la M grande se apoya, igualmente, en un problema auxiliar P


,
que es igual que el de las dos fases salvo en la función objetivo. Esta función es
la diferencia entre el beneficio generado por la realización de las actividades y
la suma de las variables artificiales con coeficiente −1 multiplicadas por una
M, es decir, un valor ”suficientemente grande”. En este caso, P
tiene la forma:

 
max. z
= cx − M ai
− M ai

i
i


aij xj + hi = bi
j

ai
j xj − hi
+ ai
= bi
(3.8)
j

ai

j xj + ai

= bi

xj , hi , hi
, ai
, ai

≥ 0

Cualquier solución factible de P es solución factible de P


. propiedades de
Una solución factible de P
lo es también de P si todas las variables arti- P

ficiales son simultáneamente cero.


Si no existe ninguna solución factible de P
con todas las variables artifi-
ciales simultáneamente nulas, no existe solución factible de P .
Si para cualquier solución óptima de P
, siempre una variable artificial
toma un valor no nulo, P no tiene solución factible.
Siempre es posible encontrar una solución básica factible de partida de
P
.

1. Dado P construir P
. Método de
2. Resolver P
: resolución
a) Si al resolver P
mediante el método del Simplex se obtiene una
solución básica factible de P
en la que todas la variables artificiales
son nulas, esa es una solución básica de partida del problema P ,
que puede servir de solución de partida para aplicar el método del
Simplex en la resolución de P .
b) Si para cualquier solución óptima de P
, siempre al menos una va-
riable artificial toma un valor no nulo, P no tiene solución factible.

P y P
solo se diferencian en que P
tiene un conjunto de actividades adiciona- Relación entre P
les (las ficticias), lo cual se traduce en: y P

tantas componentes de c adicionales como variables artificiales (con va-


lor nulo) y
Capı́tulo 3. MÉTODOS DE LA M GRANDE Y DE LAS DOS FASES 38

tantas columnas en A adicionales como variables artificiales (columnas


de la matriz identidad).
Salvo por esas columnas c, A, b y x son idénticos para los dos problemas.

Cuando se obtiene una solución básica de P


en la que las variables artificiales
no están en la base:

B = B
, c B = c B , uB = uB , por lo que:

VB = VB .

pB = pB .
B

u =u .
B

zB = zB .

Es decir, la tabla obtenida en la resolución de P


es completamente idéntica a la
correspondiente a P , salvo por las columnas correspondientes a las variables
artificiales.

Las columnas auxiliares correspondientes a las variables artificiales permiten Las columnas
disponer, en todo momento, de parte de las columnas de la inversa de la base. de las variables
artificiales

3.4. Ejemplos

3.4.1. Ejercicio 1. Método de las dos fases

Problema P
max. z = x1 + 2x2 + 3x3
s.a. :
x1 + x2 + x3 ≤ 16
(3.9)
3x1 + 2x2 + 2x3 = 26
x1 + x3 ≥ 10
x1 , x2 , x3 ≥ 0

Problema P
max. z = x1 + 2x2 + 3x3
reformulado
s.a. :
x1 + x2 + x3 + h1 = 16
(3.10)
3x1 + 2x2 + 2x3 = 26
x1 + x3 − h3 = 10
x1 , x2 , x3 , h1 , h3 ≥ 0
Capı́tulo 3. MÉTODOS DE LA M GRANDE Y DE LAS DOS FASES 39

Problema P’
max. z
= −a2 − a3
s.a. :
x1 + x2 + x3 + h1 = 16
(3.11)
3x1 + 2x2 + 2x3 + a2 = 26
x1 + x3 − h3 + a3 = 10
x1 , x2 , x3 , h1 , h3 , a2 , a3 ≥ 0

x1 x2 x3 h3 h1 a2 a3
fase 1 0 0 0 0 0 0 -1 -1 F 01
fase 2 0 1 2 3 0 0 0 0 F 02
16 1 1 1 0 1 0 0 F1
26 3 2 2 0 0 1 0 F2
10 1 0 1 -1 0 0 1 F3

fase 1 36 4 2 3 -1 0 0 0 F 0
1 = F 01 + F 2
+ F 3

fase 2 0 1 2 3 0 0 0 0 F 0
2 = F 02
h1 16 1 1 1 0 1 0 0 F 1
= F 1
a2 26 3 2 2 0 0 1 0 F 2
= F 2
a3 10 1 0 1 -1 0 0 1 F 3
= F 3

fase 1 4/3 0 -2/3 1/3 -1 0 -4/3 0 F 0

1 = F 01 − 4F 2

fase 2 -26/3 0 4/3 7/3 0 0 -1/3 0 F 0

2 = F 02 − F 2

h1 22/3 0 1/3 1/3 0 1 -1/3 0 F 1

= F 1
− F 2

x1 26/3 1 2/3 2/3 0 0 1/3 0 F 2

= F 2
/3
a3 4/3 0 -2/3 1/3 -1 0 -1/3 1 F 3

= F 3
− F 2

fase 1 0 0 0 0 0 0 -1 -1 F 0

1 = F 01 − 1/3F 3

fase 2 -18 0 6 0 7 0 2 -7 F 0

2 = F 02 − 7/3F 3

h1 6 0 1 0 1 1 0 -1 F 1

= F 1

− 1/3F 3

x1 6 1 2 0 2 0 1 -2 F 2

= F 2

− 2/3F 3

x3 4 0 -2 1 -3 0 -1 3 F 3

= 3F 3

fase 1 0 0 0 0 0 0 -1 -1 F 0

1 = F 01
fase 2 -39 -7/2 -1 0 0 0 -3/2 0 F 0

2 = F 02 − 7F 2

h1 3 -1/2 0 0 0 1 -1/2 0 F 1

= F 1

− F 2

h3 3 1/2 1 0 1 0 1/2 -1 F 2

= F 2

/2
x3 13 3/2 1 1 0 0 1/2 0 F 3

= F 3

+ 3F 2

Capı́tulo 3. MÉTODOS DE LA M GRANDE Y DE LAS DOS FASES 40

3.4.2. Ejercicio 1. Método de la M grande

Problema P
max. z = x1 + 2x2 + 3x3
s.a. :
x1 + x2 + x3 ≤ 16
(3.12)
3x1 + 2x2 + 2x3 = 26
x1 + x3 ≥ 10
x1 , x2 , x3 ≥ 0

Problema P
max. z = x1 + 2x2 + 3x3
reformulado
s.a. :
x1 + x2 + x3 + h1 = 16
(3.13)
3x1 + 2x2 + 2x3 = 26
x1 + x3 − h3 = 10
x1 , x2 , x3 , h1 , h3 ≥ 0

Problema P’
max. z
= x1 + 2x2 + 3x3 − Ma2 − Ma3
s.a. :
x1 + x2 + x3 + h1 = 16
(3.14)
3x1 + 2x2 + 2x3 + a2 = 26
x1 + x3 − h3 + a3 = 10
x1 , x2 , x3 , h1 , h3 , a2 , a3 ≥ 0
Capı́tulo 3. MÉTODOS DE LA M GRANDE Y DE LAS DOS FASES 41

x1 x2 x3 h3 h1 a2 a3
0 1 2 3 0 0 -M -M F0

16 1 1 1 0 1 0 0 F1

26 3 2 2 0 0 1 0 F2

10 1 0 1 -1 0 0 1 F3

36M 1+4M 2+2M 3+3M -M 0 0 0 F 0


= F 0 + MF 2 + MF 3

h1 16 1 1 1 0 1 0 0 F 1
= F 1

a2 26 3 2 2 0 0 1 0 F 2
= F 2

a3 10 1 0 1 -1 0 0 1 F 3
= F 3

4M−26 4−2M 7+M −1−4M


3 0 3 3 -M 0 3 0 F 0

= F 0
− (1 + 4M)F 2

h1 22/3 0 1/3 1/3 0 1 -1/3 0 F 1

= F 1
− F 2

x1 26/3 1 2/3 2/3 0 0 2/3 0 F 2

= 1
3 F2

a3 4/3 0 -2/3 1/3 -1 0 -1/3 1 F 3

= F 3
− F 2

-18 0 6 0 7 0 2-M -7-M F 0

= F 0

− 3 F 3

7+M

h1 6 0 1 0 1 1 0 -1 F 1

= F 1

− 1
3 F3

x1 6 1 2 0 2 0 1 -2 F 2

= F 2

− 2
3 F3

x3 4 0 -2 1 -3 0 -1 3 F 3

= 3F 3

La solución anterior es una solución básica factible de P y también una solu-


ción básica factible de P
(ya que las actividades artificiales son simultánea-
mente nulas).

x1 x2 x3 h3 h1 a2 a3
-18 0 6 0 7 0 2 -7
h1 6 0 1 0 1 1 0 -1
x1 6 1 2 0 2 0 1 -2
x3 4 0 -2 1 -3 0 -1 3

-39 -7/2 -1 0 0 0 -3/2 0 F 0

= F 0

− 7F 2

h1 3 -1/2 0 0 0 1 -1/2 0 F 1

= F 1

− F 2

h3 3 1/2 1 0 1 0 1/2 -1 F 2

= F 2

/2
x3 13 3/2 1 1 0 0 1/2 0 F 3

= F 3

+ 3F 2

Capı́tulo 3. MÉTODOS DE LA M GRANDE Y DE LAS DOS FASES 42

3.4.3. Ejercicio 2. Método de las dos fases

Problema P
max. z = 2x1 + 1x2 + 3x3
s.a. :
1x1 + 2x2 + 1x3 ≤ 20
(3.15)
2x1 + 6x2 − 1x3 ≥ 100
x1 + 2x3 = 10
x1 , x2 , x3 ≥ 0

x1 x2 x3 h2 h1 a2 a3
fase 1 0 0 0 0 0 0 -1 -1 F 01
fase 2 0 2 1 3 0 0 0 0 F 02
20 1 2 1 0 1 0 0 F1
100 2 6 -1 -1 0 1 0 F2
10 1 0 2 0 0 0 1 F3

fase 1 110 3 6 1 -1 0 0 0 F 0
1 = F 01 + F 2 + F 3
fase 2 0 2 1 3 0 0 0 0 F 0
2 = F 02
h1 20 1 2 1 0 1 0 0 F 1
= F 1
a2 100 2 6 -1 -1 0 1 0 F 2
= F 2
a3 10 1 0 2 0 0 0 1 F 3
= F 3

fase 1 50 0 0 -2 -1 -3 0 0 F 0

1 = F 0
1 − 6F 1

fase 2 -10 3/2 0 5/2 0 -1/2 0 0 F 0

2 = F 0
2 − F 1

x2 10 1/2 1 1/2 0 1/2 0 0 F 1

= F 1/2
a2 40 -1 0 -4 -1 -3 1 0 F 2

= F 2 − 6F 1

a3 10 1 0 2 0 0 0 1 F 3

= F 3

Como las variables artificiales a2 y a3 tienen valor no nulo, el problema es no


factible.
Capı́tulo 4

INTERPRETACIÓN TÉCNICO-ECONÓMICA

4.1. Introducción

Dado un problema de Programación Lineal, {P : max. z = cx, s.a.: Ax = b, x ≥ Elementos


0}, existen varios elementos caracterı́sticos del problema que no dependen caracterı́sticos
de la solución: de un problema

c
b
A

Para un problema y una base B (que caracteriza a la solución básica corres- Elementos
pondiente), existen varios elementos caracterı́sticos de esa solución para ese caracterı́sticos
problema de una solución

uB
cB
pB
πB

Este capı́tulo se ocupa de la interpretación de estos elementos que dependen Un ejemplo


de la base. Por ejemplo, más adelante, se habla sobre el valor de los recursos en
un problema y para una solución (una base). Pues bien, el valor de los recursos
depende de dicha solución. Por ejemplo, el valor que tiene para un centro
de cálculo depende de la forma en la que operar de dicho centro. Un servidor
adicional no tiene ningún valor si en dicho centro de cálculo existen servidores
desocupados. Esto no significa que el servidor adicional no tenga valor, no
tiene valor para dicha forma de operar del centro de cálculo.

En otro contexto, el valor que tiene un vaso de agua cuando alguien lleva varios Un ejemplo más
dı́as sin suministro en el desierto es muy diferente del valor que tiene ese vaso doméstico
de agua en el domicilio de una ciudad con un buen suministro de agua potable
corriente. El vaso de agua es el mismo pero el valor depende de la situación.
Aquı́ diremos que los recursos tienen diferente valor según la solución, es
decir, según la base elegida.
Capı́tulo 4. INTERPRETACIÓN TÉCNICO-ECONÓMICA 44

Tı́picamente, la interpretación económica se realiza para la solución óptima,


porque es la solución que maximiza (o minimiza, según el enfoque del proble-
ma) el valor de la función objetivo, pero se podrı́a realizar el mismo análisis
para cada cualquier solución del problema considerado.

4.1.1. Ejemplo de aplicación

Para ilustrar la interpretación, en lo que sigue del capı́tulo emplearemos el Presentación del
siguiente ejemplo. Una empresa monta dos tipos de palés. Los palés de tipo problema
1 contienen un producto P1 y los palés de tipo 2 contienen, a su vez, dos
productos P2 .

Con la venta de cada palé de tipo 1, la empresa tiene un beneficio neto de 2 El beneficio
unidades monetarias (u.m.). Igualmente, la empresa tiene un beneficio neto de
1 u.m. con cada palé de tipo 2.

Los palés deben ser preparados en dos talleres, T1 y T2 , de los que se dispone Los talleres
de un total de 30 y 16 horas semanales, respectivamente, para realizar las
operaciones correspondientes a cada uno de ellos. Cada palé 1 requiere 3 horas
de preparación en T1 y 4 horas de preparación en T2 . Cada palé 2 requiere 1
hora de preparación en T1 y 3 horas de preparación en T2 .

Además, existe un compromiso comercial de entregar al menos 4 productos Compromiso


semanales, donde estos productos pueden ser cualquier combinación de pro- comercial
ductos P1 y P2 .

Por último, existe un colectivo al respecto del cual la empresa tiene un compro-
miso consistente en emplear un número mı́nimo de horas de dicho colectivo.
Con cada palé de tipo 1 se emplea una hora de este colectivo y con cada palé
2 se ocupan 3 horas del mismo. La empresa debe ocupar al menos 5 horas de
mano de obra del colectivo citado.

Si xi representa el número de unidades de palés de tipo Pi , i = 1, 2, se puede


construir el siguiente modelo de Programación Lineal para obtener la produc-
ción que reporte un mayor beneficio.

Formulación
Capı́tulo 4. INTERPRETACIÓN TÉCNICO-ECONÓMICA 45

max. z = 2x1 + x2
s.a. :
3x1 + 1x2 ≤ 30
4x1 + 3x2 ≤ 16 (4.1)
x1 + 2x2 ≥ 4
x1 + 3x2 ≥ 5
x1 , x2 ≥ 0

Este problema se puede reformular introduciendo variables de holgura, h1 , h2 ,


h3 y h4 que representan, respectivamente:

h1 : el número de horas del taller T1 que no se llegan a utilizar.


h2 : el número de horas del taller T2 que no se llegan a utilizar.
h3 : el número de productos entregados a los clientes por encima de la
cantidad mı́nima pactada.
h4 : el número de horas en la que el colectivo citado trabaja por encima
del mı́nimo pactado con la administración.

Formulación
max. z = 2x1 + x2
equivalente
s.a:
3x1 + x2 + h1 = 30
(4.2)
4x1 + 3x2 + h2 = 16
x1 + 2x2 − h3 = 4
x1 + 3x2 − h4 = 5

La solución óptima de este problema queda descrita en la siguiente tabla: La solución


óptima
x1 x2 h1 h2 h3 h4
-70/9 0 0 0 -5/9 0 -2/9
h1 167/9 0 0 1 -8/9 0 -5/9
h3 1/9 0 0 0 2/9 1 -1/9
x1 11/3 1 0 0 1/3 0 1/3
x2 4/9 0 1 0 -1/9 0 -4/9

El plan óptimo consiste en lo siguiente: Interpretación

Se montan, por término medio, 11 palés de tipo 1 cada tres semanas


(x1 = 11/3) y
se montan, por término medio, 4 palés de tipo 2 cada nueve semanas
(x2 = 4/9),

con lo que se obtiene un beneficio semanal de 7.78 u.m.


Capı́tulo 4. INTERPRETACIÓN TÉCNICO-ECONÓMICA 46

h1 = 167/9, es decir, el taller T1 no está ocupado todo el tiempo. De las Uso de los
30 horas, está ocioso un total de 18.56 horas. recursos
h2 = 0, es decir, el taller T2 está ocupado las 16 horas en las que está
disponible cada semana.
h3 = 1/9, es decir, se producen 0.11 palés más del mı́nimo comprometi-
do. En total, se entregan 4.11 por término medio cada semana.
h4 = 0, es decir, el nivel de ocupación del colectivo al que se refiere el
compromiso está ocupado un número de horas igual al mı́nimo.

La solución óptima se alcanza cuando las variables básicas son h1 , h3 , x1 y x2 . Caracterización


Es decir la base, B es la siguiente:
⎛ ⎞
1 0 3 1
⎜ ⎟
  ⎜ 0 0 4 3 ⎟
B = Ah1 , Ah3 , Ax1 , Ax2 = ⎜
⎜ 0 −1 1 1 ⎟
⎟ (4.3)
⎝ ⎠
0 0 1 3

En consecuencia, la matriz inversa de la base, B −1 , es la siguiente:


⎛ ⎞
1 −8/9 0 5/9
  ⎜
⎜ 0 2/9 −1 1/9 ⎟

B −1 = pi3B B
, pi4 B
, pi5 B
, pi6 =⎜
⎜ 0
⎟ (4.4)
⎝ 1/3 0 −1/3 ⎟⎠
0 −1/9 0 4/9

Se comprueba que B −1 está formada por las columnas correspondientes a las


tasas de sustitución de las variables ficticias asociadas a cada restricción.

4.2. Tasas de sustitución

4.2.1. Discusión teórica

Las tasas de sustitución se definen como p B = B −1 A. Definición

B
El elemento pij relaciona la variable básica que ocupa la posición i-ésima y la
B
variable j-ésima del problema. En particular, pij representa en qué medida dis-
minuye el nivel de realización de la actividad básica i-ésima cuando se realiza
la actividad j-ésima con valor unitario. De otra manera:

B
pij = −ΔuBi |xj =1 (4.5)
Capı́tulo 4. INTERPRETACIÓN TÉCNICO-ECONÓMICA 47

4.2.2. Ejemplo de aplicación

En el ejemplo de aplicación, para la solución óptima, p B es la siguiente matriz:

⎛ ⎞
0 0 1 −8/9 0 −5/9
⎜ ⎟
⎜ 0 0 0 2/9 1 1/9 ⎟
pB = ⎜
⎜ 1

⎟ (4.6)
⎝ 0 0 1/3 0 1/3 ⎠
0 1 0 −1/9 0 −4/9

Por ejemplo, las tasas de sustitución de la variable h2 con respecto a las varia-
bles básicas se discuten a continuación.

Antes, conviene notar que h2 es una variable no básica. Hacer que h2 = 1


significa que el taller T2 , que en la solución óptima está ocupado al completo,
tuviera una hora desocupada. En este caso, los valores de las variables básicas
se modificarı́an de la siguiente manera.
B
p14 = −8/9
• Cuando h2 = 1, Δh1 = 8/9.
• Es decir, al desocupar una hora de taller T2 , se dejan de utilizar 8/9
de hora más con respecto a la cantidad que no se estaba utilizando
de T1 .
B
p24 = 2/9
• Cuando h2 = 1, Δh3 = −2/9.
• Es decir, al desocupar una hora de taller T2 , el número de productos
que se entregan por encima del compromiso comercial disminuye
en 2/9.
B
p34 = 1/3
• Cuando h2 = 1, Δx1 = −1/3.
• Es decir, al desocupar una hora de taller T2 , se produce 1/3 de palés
de tipo 1 menos.
B
p44 = −1/9
• Cuando h2 = 1, Δx2 = 1/9.
• Es decir, al desocupar una hora de taller T2 , se produce 1/9 de palés
de tipo 2 más.

4.3. Multiplicadores del Simplex


Capı́tulo 4. INTERPRETACIÓN TÉCNICO-ECONÓMICA 48

4.3.1. Discusión teórica

El vector de multiplicadores del Simplex (o precios sombra), π B se define como: Definición

π B = c B B −1 (4.7)

El vector de multiplicadores del Simplex representa, para una solución deter-


minada (es decir, para una base B determinada), el valor de los recursos. De
otra manera: πiB representa el valor que tiene una unidad adicional de recurso
Ri (es decir, un incremento unitario de bi ). En efecto, como se cumple que:

z = c B uB = c B B −1 b = π B b (4.8)

Si Δbi = 1, es decir, si se incrementa la disponibilidad del recurso Ri en una


unidad:
⎛ ⎛ ⎞⎞
0
⎜ ⎜ ⎟⎟
⎜ ⎜ 0 ⎟⎟
⎜ ⎜ ⎟⎟
⎜ ⎜ ... ⎟⎟
z = c u = c B b = π ⎜b + ⎜

B B B −1
B⎜

⎟⎟ =
⎟⎟
⎜ ⎜ 1 ⎟⎟
⎜ ⎜ ⎟⎟
⎝ ⎝ ... ⎠⎠
0
⎛ ⎞ (4.9)
0
⎜ ⎟
⎜ 0 ⎟
⎜ ⎟

B⎜ ... ⎟
B
=π b+π ⎜ ⎟ = z + π B ⇒ Δz = π B
⎟ i i
⎜ 1 ⎟
⎜ ⎟
⎝ ... ⎠
0

La relación que existe entre los multiplicadores del Simplex y los valores de los
criterios del Simplex es la siguiente.

El criterio del Simplex de una variable de holgura, hi , correspondiente a


una restricción de tipo ≤ es:

VhBi = chi − c B B −1 Ahi = chi − π B Ahi =


⎛ ⎞
0
⎜ 0 ⎟
⎜ ⎟
 ⎜
⎜ ...

⎟ (4.10)
B ⎜ ⎟
= 0 − π1B , π2B , ..., πiB , ..., πm B
⎜ 1 ⎟ = −πi
⎜ ⎟
⎜ ⎟
⎝ ... ⎠
0
Capı́tulo 4. INTERPRETACIÓN TÉCNICO-ECONÓMICA 49

El criterio del Simplex de una variable de holgura, hi , correspondiente a


una restricción de tipo ≥ es:

VhBi = chi − c B B −1 Ahi = chi − π B Ahi =


⎛ ⎞
0
⎜ 0 ⎟
⎜ ⎟
 ⎜
⎜ ...

⎟ (4.11)
B B B B ⎜ ⎟ = πB
= 0 − π1 , π2 , ..., πi , ..., πm ⎜ ⎟
⎜ −1 ⎟
i
⎜ ⎟
⎝ ... ⎠
0

En el caso de la solución óptima, V B ≤ 0 y, en particular, VhBi ≤ 0.

En el caso de los recursos correspondientes a las restricciones de tipo ≤:


• Si hi no es una variable básica, la restricción se cumple en términos
de igualdad: hi = 0 ⇒ πiB = −VhBi ≥ 0.
En este caso, un aumento de unitario positivo de bi (relajar la res-
tricción) reporta un incremento del beneficio positivo Δz = π B y
un incremento unitario negativo de bi (hacer más restrictiva la res-
tricción) reporta un incremento del beneficio negativo Δz = −π B .
• Si hi es una variable básica (salvo en casos especiales) la restricción
no se cumple en términos de igualdad: hi ≥ 0 ⇒ πiB = −VhBi = 0.
En este caso, el incremento unitario positivo o negativo de la dis-
ponibilidad del recurso Ri no afecta a la función objetivo (Δz = 0).
En el caso de los recursos correspondientes a las restricciones de tipo ≥:
• Si hi no es una variable básica, la restricción se cumple en términos
de igualdad: hi = 0 ⇒ πiB = VhBi ≤ 0.
En este caso, un aumento de unitario negativo de bi (hacer me-
nos restrictiva la restricción) reporta un incremento del beneficio
postivo Δz = π B y un incremento unitario positivo de bi (hacer
más restrictiva la restricción) reporta un incremento del beneficio
negativo Δz = −π B .
• Si hi es una variable básica (salvo en casos especiales) la restricción
no se cumple en términos de igualdad: hi ≥ 0 ⇒ πiB = −VhBi = 0.
En este caso, el incremento unitario positivo o negativo de la dis-
ponibilidad del recurso Ri no afecta a la función objetivo (Δz = 0).

4.3.2. Ejemplo de aplicación

El vector de multiplicadores del Simplex (precios sombra) correspondiente a


esta solución es:
Capı́tulo 4. INTERPRETACIÓN TÉCNICO-ECONÓMICA 50

   5 2

π B = π1B , π2B , π3B , π4B = 0, , 0, − (4.12)
9 9

Restricción 1. El recurso R1 no se está utilizando completamente. Como


sobran horas de taller T1 , no estamos dispuestos a pagar nada por dispo-
ner de una hora adicional del mismo y cederı́amos una hora del mismo
si nos dieran cualquier cantidad (positiva) por esa hora.
Restricción 2. El taller T2 se está utilizando completamente. Estamos
dispuestos a pagar un máximo de 5/9 unidades monetarias por disponer
de una hora adicional del mismo y cederı́amos una hora del mismo si
nos dieran cualquier cantidad mayor que 5/9.
Restricción 3. Estamos cumpliendo el compromiso comercial por encima
del mı́nimo pactado. No estamos dispuestos a pagar nada por tener que
cumplir un compromiso menos exigente (y pasar de b3 = 4 a b3 = 3).
Con cualquier cantidad que recibiéramos estarı́amos dispuestos a hacer
más exigente el compromiso comercial.
Restricción 4. Estamos cumpliendo el compromiso de la ocupación de la
mano de obra de un colectivo con el menor valor posible. Estamos dis-
2
puestos a pagar 9 por tener que cumplir un compromiso menos exigente
(y pasar de b4 = 5 a b4 = 4). También estamos dispuestos a recibir una
cantidad de dinero mayor 29 que para hacer más exigente el compromiso
comercial y pasar de b4 = 5 a b4 = 6.

4.3.3. Precio sombra de las restricciones de tipo “=”

Cuando una restricción es de igualdad no existe ninguna variable de holgura,


con lo que no es posible evaluar el precio sombra de dicha restricción en
función del valor del criterio del Simplex de una variable de holgura.

Sin embargo, al resolver el problema mediante el método de las dos fases


(3.2), una restricción de igualdad tiene, en el problema auxiliar, una variable
artificial. Por ejemplo, retomemos el problema 3.9 del capı́tulo de las dos fases.

max. z = x1 + 2x2 + 3x3


s.a. :
x1 + x2 + x3 ≤ 16
3x1 + 2x2 + 2x3 = 26
x1 + x3 ≥ 10
x1 , x2 , x3 ≥ 0
El problema se resolvı́a con el método de las dos fases: comienza por la prime-
ra de las siguientes tablas y llega a la tabla de la solución óptima del problema
original, que se muestra a continuación:
Capı́tulo 4. INTERPRETACIÓN TÉCNICO-ECONÓMICA 51

x1 x2 x3 h3 h1 a2 a3
fase 1 0 0 0 0 0 0 -1 -1 F 01
fase 2 0 1 2 3 0 0 0 0 F 02
16 1 1 1 0 1 0 0 F1
26 3 2 2 0 0 1 0 F2
10 1 0 1 -1 0 0 1 F3
...

fase 1 0 0 0 0 0 0 -1 -1 F 0

1 = F 0

1
fase 2 -39 -7/2 -1 0 0 0 -3/2 0 F 0

2 = F 0

2 − 7F 2

h1 3 -1/2 0 0 0 1 -1/2 0 F 1

= F1 − F2

h3 3 1/2 1 0 1 0 1/2 -1 F 2

= F 2

/2
x3 13 3/2 1 1 0 0 1/2 0 F 3

= F 3

+ 3F 2

En este caso la columna de la variable artificial a2 era la segunda columna de


la inversa de la base en la tabla inicial y se convierte en sucesivas tablas en
la segunda columna de la inversa de la base (ambas en negrita en las tablas
anteriores).

Igualmente, encima de las columnas de la matriz identidad de la primera


tabla, tenemos un 0 que se convierte en las las sucesivas tablas posteriores en
la segunda componente del multiplicador del Simplex cambiado de signo.

En general, πiB = −VaBi cuando la restricción es de igualdad. La variable


artificial tiene un comportamiento análogo al de las variables de holgura de
restricciones de tipo “ ≤ “ y es que, en efecto, las columnas en A tienen la
misma estructura.

El significado de los precios sombra de una restricción de tipo “=”dependerá


de su signo, que puede ser positivo o negativo, ya que el criterio del Simplex
VaBi , en la segunda fase del método de las dos fases, puede tomar tanto valor
positivo como valor negativo. En particular:

Si VaBi ≥ 0, entonces πiB ≤ 0: un incremento unitario del término indepen-


diente disminuirı́a el valor de la función objetivo, con lo que estaremos
dispuestos a que se produzca este incremento unitario del término inde-
pendiente si recibimos a cambio del mismo una cantidad no menor a VaBi
en valor absoluto. La restricción de igualdad actúa como una obligación.
Si VaBi ≤ 0, entonces πiB ≥ 0: un incremento unitario del término indepen-
diente aumentarı́a el valor de la función objetivo, con lo que estaremos
dispuestos a pagar hasta una cantidad por valor de VaBi en valor absoluto
por cada incremento unitario del término independiente. La restricción
de igualdad actúa como una limitación.
Capı́tulo 4. INTERPRETACIÓN TÉCNICO-ECONÓMICA 52

4.4. Criterios del Simplex

4.4.1. Discusión teórica

El criterio del Simplex se define como Definición

V B = c − c B B −1 A (4.13)

En particular, el criterio del Simplex de la variable xk es:

VxBk = cxk − c B B −1 Axk (4.14)

El criterio del Simplex, ya se vio en el capı́tulo 2, representa el incremento de Primera


la función objetivo cuando Δxk = 1. Es decir: aproximación

VxBk = Δz|xk =1 (4.15)

El primer término cxk representa el beneficio unitario que reporta la actividad cxk
xk . Existen dos formas de interpretar VxBk :

VxBk = cxk − c B pkB


VxBk = cxk − π B Axk

En ambos casos, se obtiene con la diferencia entre cxk (beneficio unitario) y un


término que puede interpretarse de dos maneras.

El término −c B pkB es el producto de: VxBk = cxk −c B pkB

c B : que es el beneficio unitario correspondiente a las variables básicas y


−p B : el incremento de los valores de dichas variables básicas.

De forma que c B pkB representa lo que se deja de ganar por la cantidad en la


que se modifican las variables básicas.

Ası́ que VxBk es el resultado de:

aumentar el valor de la función objetivo por el beneficio derivado de


hacer una unidad de la actividad k (xk = 1), es decir, por ingresar cxk y
disminuir la función objetivo por la variación del ingreso debido a la
modificación del valor de las variables básicas −c B pkB .
Capı́tulo 4. INTERPRETACIÓN TÉCNICO-ECONÓMICA 53

Por lo tanto, se puede concluir lo siguiente:

Si V B > 0, el aumento de la función objetivo a consecuencia de la reali-


zación de la nueva actividad supera a la reducción de la función objetivo
debida a la disminución de beneficios causada por la modificación del ni-
vel de realización de las variables básicas. La realización de la actividad
k mejora netamente el valor de la función objetivo.
Si V B < 0, el aumento de la función objetivo a consecuencia de la rea-
lización de la nueva actividad no compensa la reducción de la función
objetivo debida a la disminución de beneficios causada por la modifica-
ción del nivel de realización de las variables básicas. La realización de la
actividad k empeora netamente el valor de la función objetivo.
Si V B = 0, la realización de la actividad k no modifica el valor de la
función objetivo.

El término π B Axk es el producto de: VxBk =


cxk − π B Axk
π B : que es valor de cada uno de los recursos y
Axk : que es el consumo de cada uno de esos recursos en los que se incu-
rre al realizar la actividad k, cuando xk = 1.

De forma que π B Axk es el valor de los recursos correspondientes a la realiza-


ción de una unidad de la actividad k. Es decir, hacer una unidad de la actividad
k, significa consumir recursos que están dedicados a otra actividades. El valor
de esos recursos empleados en esas actividades es π B Axk , con lo que si se
emplean en la actividad k y no en las correspondientes a las variables básicas,
la función objetivo se reducirı́a en ese valor.

Ası́ que VxBk es el resultado de:

aumentar el valor de la función objetivo por el beneficio cxk , derivado de


hacer una unidad de la actividad k (xk = 1) y
disminuir la función objetivo por el hecho de que se detraen recursos
que antes estaban dedicados a realizar las actividades básicas y cuyo
valor es π B Axk .

Por lo tanto, se puede concluir lo siguiente:

Si V B > 0, el aumento de la función objetivo debido a la realización


de la nueva actividad supera a la reducción del beneficio debida a la
detracción de recursos que ya no se destinan a las actividades básicas y
que se destinan a realizar la actividad k. La realización de la actividad k
mejora netamente el valor de la función objetivo.
Si V B < 0, el aumento de la función objetivo debido a la realización de
la nueva actividad no compensa la reducción del beneficio debida a la
detracción de recursos que ya no se destinan a las actividades básicas y
Capı́tulo 4. INTERPRETACIÓN TÉCNICO-ECONÓMICA 54

que se destinan a realizar la actividad k. La realización de la actividad k


empeora netamente el valor de la función objetivo.
Si V B = 0, la realización de la actividad k no modifica el valor de la
función objetivo.

4.4.2. Ejemplo de aplicación

Como se ha dicho al principio del capı́tulo, la interpretación de los elemen- Presentación


tos que se han comentado es válida para cualquier solución y, en particular,
para la solución óptima. A tı́tulo de ilustración, a continuación se discute la
interpretación del criterio del Simplex de una variable para una solución dife-
rente de la óptima. La discusión, insistimos, podrı́a realizarse igualmente para
la solución óptima.

x1 x2 h1 h2 h3 h4 Otra solución
-2 3/2 0 0 0 1/2 0
h1 28 5/2 0 1 0 1/2 0
h2 10 5/2 0 0 1 3/2 0
h4 1 1/2 0 0 0 -3/2 1
x2 2 1/2 1 0 0 -1/2 0

El criterio del Simplex de la variable x1 se puede entender como la diferencia V1B


entre el beneficio unitario por realizar la actividad correspondiente y c B p1B =
π B Ax1 .

Con cualquiera de las dos posibles interpretaciones, cx1 = 2, representa el be- cx1
neficio unitario por realizar una unidad de la actividad 1, es decir, por montar
y vender un palé de tipo 1.

c B p1B
c B = (0, 0, 0, 1)
  (4.16)
5 5 1 1 T
pB = , , ,
2 2 2 2

Al hacer una unidad de x1 :

h1 disminuye en 52 unidades, cada una de las cuales reportaba un bene-


ficio de ch1 = 0, con lo que dejamos de ganar 52 × 0.
h2 disminuye en 52 unidades, cada una de las cuales reportaba un bene-
ficio de ch2 = 0, con lo que dejamos de ganar 52 × 0.
1
h4 disminuye en 2 unidades, cada una de las cuales reportaba un bene-
ficio de ch4 = 0, con lo que dejamos de ganar 12 × 0.
x2 disminuye en 12 unidades, cada una de las cuales reportaba un bene-
ficio de cx1 = 1, con lo que dejamos de ganar 12 × 1.
Capı́tulo 4. INTERPRETACIÓN TÉCNICO-ECONÓMICA 55

1
Es decir, dejamos de ganar 2.

Netamente: VxB1 = cx1 −c B p1B

El beneficio aumenta, por un lado, en 2 y


disminuye, por otro, en 12 ,

por lo que, globalmente, si hacemos un palé de tipo 1, aumentamos el beneficio


en VxB1 = 2 − 12 = 32 .

Se puede interpretar el valor de VxB1 en términos de π B . π B Ax1

1
π B = (0, 0, , 0)
2 (4.17)
Ax1 = (3, 4, 1, 1)T

Al hacer una unidad de x1 :

Se consumen 3 unidades del recurso 1, es decir, se emplean 3 horas de


taller T1 , cuyo valor es π1 = 0 (sobran horas).
Se consumen 4 unidades del recurso 2, es decir, se emplean 4 horas de
taller T2 , cuyo valor es π2 = 0 (sobran horas).
Se “consume” 1 unidad del recurso 3. En este caso, esto significa contri-
buir con 1 unidad adicional al cumplimiento del compromiso comercial.
Cada unidad en la que el cumplimiento comercial se hace más restrictivo
deteriora la función objetivo en − 21 (esta solución se cumple exactamente
al lı́mite (h3 = 0)). Fabricar un palé de tipo 1 provoca superar el compro-
miso comercial y eso deteriora la función objetivo en − 12 .
El razonamiento es análogo para la cuarta restricción, pero en este caso,
ya se está en π4 = 0.

1
Es decir, dejamos de ganar 2.

Netamente: VxB1 =
cx1 − π B Ax1
El beneficio aumenta, por un lado, en 2 y
disminuye, por otro, en 12 ,

por lo que, globalmente, si hacemos un palé de tipo 1, aumentamos el beneficio


3
en VxB1 = 2 .
Capı́tulo 5

MÉTODO DEL LEMKE

5.1. Introducción

En el capı́tulo 2 se presentó el método del Simplex para resolver problemas de Introducción


Programación Lineal. Este método consistı́a en, a partir de una solución básica
factible inicial, de forma iterativa, transitar por diferentes soluciones básicas
factibles hasta alcanzar una que también fuera óptima.

Lógica del
Soluciónmétodo del
Solución Solución básicaSimplex
básica Entra variable básica factible
factible factible óptima
0 1 2 ... n-1 n

Sale variable

Figura 5.1: Lógica del método del Simplex

En este capı́tulo se va a presentar el método de Lemke, o dual del Simplex, que Lógica del
también permite resolver problemas de Programación Lineal. En este método método de
consistı́a en, a partir de una solución básica que cumple el criterio de optimali- Lemke
dad (V B ≤ 0) de partida, de forma iterativa, se transita por diferentes solución
básicas que también cumplen el criterio de optimalidad hasta alcanzar una que
también es factible.

Al respecto de las diferencias y las analogı́as entre los dos métodos:

En ambos métodos siempre se transita de solución básica en solución


básica.
Las soluciones por las que transita el método del Simplex siempre son
factibles.
Capı́tulo 5. MÉTODO DEL LEMKE 57

Las soluciones por las que transita el método del Lemke siempre cum-
plen el criterio de optimalidad.
En el método del Simplex, con las diferentes iteraciones, se mejora el
criterio de optimalidad hasta alcanzar una solución óptima (que también
es factible).
En el método del Lemke, con las diferentes iteraciones, se mejora el cri-
terio de factiblidad hasta alcanzar una solución factible (que también es
óptima).

Solución
Solución Solución básica
básica Entra variable básica óptima
óptima óptima factible
0 1 2 ... n-1 n

Sale variable

Figura 5.2: Lógica del método de Lemke

Para aplicar el método de Lemke, de acuerdo con la lógica anterior, es necesa- Qué
rio: necesitamos

1. una solución básica que cumpla el criterio de optimalidad de partida,


2. un criterio de factiblidad,
3. una regla de salida y
4. una regla de entrada.

5.2. Cuándo es interesante el método de Lemke

El método de Lemke es potencialmente interesante cuando existe una solu-


ción básica que cumple el criterio de optimalidad, pero que no es factible. A
continuación se discuten tres casos habituales.

5.2.1. Problemas de mı́nimos con c ≥ 0

Los problemas que cumplen con las siguientes caracterı́sticas:

La función objetivo es de la forma min. z = cx con c ≥ 0.


Todas las restricciones son de tipo ≤ o ≥.
Capı́tulo 5. MÉTODO DEL LEMKE 58

Por ejemplo, un problema como el siguiente. Ejemplo

min. z =1x1 + 2x2 + 3x3


s.a. :
1x1 + 2x2 + 1x3 ≥ 10
(5.1)
4x1 + 2x2 + 3x3 ≥ 20
1x1 + 1x2 + 1x3 ≤ 40
xi ≥ 0

En efecto:

Si un problema es del tipo min. z = cx con c ≥ 0, se puede transformar


en uno equivalente del tipo max. (−z) = −cx con c ≤ 0.
Al añadir las variables de holgura a todas y cada una de las restricciones
(ninguna es originalmente de tipo =), existe una solución básica en la que
hi = bi .  
Para dicha solución c B = 0 0 ... 0 y, por lo tanto: V B = c −
 
c B B −1 A = c − 0 0 ... 0 B −1 A = c ≤ 0

Es decir, la solución en la que las variables básicas son las variables de holgura
es una solución que cumple el criterio de optimalidad y es básica (no factible),
con lo cual es una solución a partir de la cual se puede aplicar el método del
ejemplo.

El problema de 5.1 se puede formular como: Ejemplo

max. z = − 1x1 − 2x2 − 3x3


s.a. :
− 1x1 − 2x2 − 1x3 + h1 = −10
(5.2)
− 4x1 − 2x2 − 3x3 + h2 = −20
1x1 + x2 + x3 + h3 = 40
xi , hi ≥ 0

Si las variables básicas son h1 , h2 y h3 :


 
cB = 0 0 0 .
   
V B = c − c B B −1 A = −1 −2 −3 0 0 0 − 0 0 0 B −1 A =
 
−1 −2 −3 0 0 0 . Es decir, V B ≤ 0.
Por lo tanto, esta solución es básica, cumple el criterio de optimalidad y
no es factible: es una solución de partida válida para aplicar el método
de Lemke.
Capı́tulo 5. MÉTODO DEL LEMKE 59

La tabla inicial a partir de la cual se podrı́a comenzar a iterar, tal y como se La tabla inicial
describe más adelante, serı́a la siguiente:
x1 x2 x3 h1 h2 h3
0 -1 -2 -3 0 0 0
h1 -10 -1 -2 -1 1 0 0
h2 -20 -4 -2 -3 0 1 0
h3 40 1 1 1 0 0 1

5.2.2. Al introducir un cambio en b, una vez obtenida la solución


óptima

Dado un problema P del que se ha obtenido la solución óptima, si cambia el


vector de disponibilidad de recursos b, se modificarı́an:

uB = B −1 b
zB = c B uB

Y no se modfiicarı́a:
VB
pB

Si el cambio de b hace que algún uBi sea negativo, la solución que era óptima
y factible deja de ser factible y sigue cumpliendo V B ≤ 0, por lo que es una
solución a partir de la cual se puede aplicar el método de Lemke.

Para el problema de ejemplo del capı́tulo 2, en el epı́grafe 2.2. Ejemplo


max. z =1x1 + 2x2 + 3x3
s.a. :
1x1 + 2x2 + 1x3 + h1 = 16
(5.3)
3x1 − 2x2 + 2x3 + h2 = 26
1x1 + 0x2 + 2x3 + h3 = 24
xi ≤ 0, i = 1 · · · 6

Se conoce la solución óptima:

x1 x2 x3 h1 h2 h3
-40 -1 0 0 -1 0 -1
x2 2 1/4 1 0 1/2 0 -1/4
h2 6 5/2 0 0 1 1 -3/2
x3 12 1/2 0 1 0 0 1/2
Capı́tulo 5. MÉTODO DEL LEMKE 60

 T
Si el nuevo vector fuera b
= 10 26 24 , el nuevo valor de uB serı́a el
siguiente.

⎛ ⎞⎛ ⎞ ⎛ ⎞
1
0 − 14 10 −1
⎜ 2 ⎟ ⎜ ⎟ ⎜ ⎟
uB = B −1 b
= ⎜
⎝ 1 1 − 32 ⎟
⎠ ⎝ 26 ⎠ = ⎝ 0 ⎠ (5.4)
1
0 0 2
24 12

  T
El nuevo valor de z serı́a c B uB = 2 0 3 −1 0 12 = 34.

La nueva tabla cuando las variables básicas son x2 , h2 y x3 es la siguiente:

x1 x2 x3 h1 h2 h3
-34 -1 0 0 -1 0 -1
x2 -1 1/4 1 0 1/2 0 -1/4
h2 0 5/2 0 0 1 1 -3/2
x3 12 1/2 0 1 0 0 1/2

A partir de esa tabla se podrı́a iterar aplicando el método de Lemke, tal y como
se comenta más adelante en el capı́tulo.

5.2.3. Al añadir una restricción adicional a un programa, una vez


obtenida la solución óptima

Para el siguiente problema de Programación Lineal:

max. z = 4x1 + 12x2 + 2x3


s.a. :
3x1 + 6x2 + 2x3 + h1 = 6 (5.5)
x1 + x2 + x3 − h2 = 2
x1 , x2 , x3 , h1 , h2 ≥ 0

se conoce la solución óptima:

x1 x2 x3 h2 h1
-8 0 2 0 -2 -2
x1 2 1 4 0 2 1
x3 0 0 -3 1 -3 -1

-9 -1/2 0 0 -3 -5/2
x2 1/2 1/4 1 0 1/2 1/4
x3 3/2 3/4 0 1 -3 /2 -1/4
Capı́tulo 5. MÉTODO DEL LEMKE 61

Si aparece una nueva restricción, x2 + x3 ≤ 1, equivalente a x2 + x3 + h3 = 1, la


tabla tiene una fila nueva asociada a esta restricción, pero no está expresada
en la base de la solución óptima. Por lo tanto, hay que operar para que las
tasas de sustitución de las columnas correspondientes a las variables básicas
constituyan la matriz identidad de nuevo.

x1 x2 x3 h2 h1 h3
-9 -1/2 0 0 -3 -5/2 0
x2 1/2 1/4 1 0 1/2 1/4 0
x3 3/2 3/4 0 1 -3 /2 -1/4 0
1 0 1 1 0 0 1 (fila en la tabla original)
h3 -1 -1 0 0 1 0 1 (nueva fila)

Si se hubieran seleccionado como variables básicas las variables x2 , x3 y h3 , la


tabla correspondiente a dicha base serı́a la siguiente:

x1 x2 x3 h2 h1 h3
-9 -1/2 0 0 -3 -5/2 0
x2 1/2 1/4 1 0 1/2 1/4 0
x3 3/2 3/4 0 1 -3 /2 -1/4 0
h3 -1 -1 0 0 1 0 1

En esta base h3 = −1, como habrı́amos obtenido al sustituir los valores de


las variables de la solución óptima en la nueva restricción: x2 + x3 + h3 =
1 ⇒ 1 + 1 + h3 = 1 ⇒ h3 = −1. Es decir, la solución básica de la solución del
problema original, al añadir la nueva restricción, deja de ser factible pero sigue
cumpliendo el criterio de optimalidad. Se trata de una solución básica a partir
de la cual aplicar el método de Lemke.

5.3. Reglas

5.3.1. Criterio de factibilidad

Una solución básica (base B) es factible si uB ≥ 0.

5.3.2. Regla de salida

Dada una solución básica no factible interesa que salga de la base cualquier
variable con valor negativo. En particular, saldrá la variable i-ésima que cum-
ple:
Capı́tulo 5. MÉTODO DEL LEMKE 62

 
 
uBi = maxuB <0 uBk  (5.6)
k

5.3.3. Regla de entrada

Dado que la variable i-ésima de la base es la que debe salir, la variable que
entra en su lugar es la variable j-ésima del problema que cumple lo siguiente:

VxBj VxBk
= minpB <0 B (5.7)
pij ik pik

Si, en general, entra la variable j-ésima del problema, los nuevos criterios del
Simplex son:


pik B
VxBk = VxBk − B Vxj (5.8)
pij

Para garantizar que con la nueva base se sigue cumpliendo el criterio de opti-
malidad se debe cumplir 5.7.

B
pik B
pik VxBk VxBj
B
VxBk = VxBk − B VxBj ≤ 0 ⇒ VxBk ≤ B VxBj ⇒ B ≥ B dado que pik ≤ 0 (5.9)
pij pij pik pij

5.4. Ejemplo

El problema
min. z =300x1 + 400x2 + 100x3 + 50x4
s.a. :
4x1 + 5x2 + 2x3 + x4 ≥ 800
(5.10)
2x1 + 4x2 + 1x3 ≥ 600
1x1 + 1x2 + 4x4 ≤ 2000
xi ≥ 0
Capı́tulo 5. MÉTODO DEL LEMKE 63

Problema equivalente

max. (−z) = − 300x1 − 400x2 − 100x3 − 50x4


s.a. :
− 4x1 − 5x2 − 2x3 − x4 ≤ −800
(5.11)
− 2x1 − 4x2 − x3 ≤ −600
1x1 + x2 + 4x4 ≤ 2000
xi , hi ≥ 0

Problema equivalente

max. (−z) = − 300x1 − 400x2 − 100x3 − 50x4


s.a. :
− 4x1 − 5x2 − 2x3 − x4 + h1 = −800
(5.12)
− 2x1 − 4x2 − x3 + h2 = −600
1x1 + x2 + 4x4 + h3 = 2000
xi , hi ≥ 0

x1 x2 x3 x4 h1 h2 h3
0 -300 -400 -100 -50 0 0 0 F0
h1 -800 -4 -5 -2 -1 1 0 0 F1
h2 -600 -2 -4 -1 0 0 1 0 F2
h3 2000 1 1 0 4 0 0 1 F3

40000 -100 -150 0 0 -50 0 0 F0


= F0 + 100F1

x3 400 2 5/2 1 1/2 -1/2 0 0 F1


= −F1
/2
h2 -200 0 -3/2 0 1/2 -1/2 1 0 F2 = F2 + F1

h3 2000 1 1 0 0 0 0 1 F3
= F3

60000 -100 0 0 -50 0 -100 0 F0

= F0
+ 150F2

x3 200/3 2 0 1 4/3 -4/3 5/3 0 F1

= F1
− 5/2F2

x2 400/3 0 1 0 -1/3 -1/3 -2/3 0 F2

= −2/3F2

h3 5600/3 1 0 0 13/3 -1/3 2/3 1 F3

= F3
− F2

A partir de la tabla inicial, se conoce que la variable básica que saldrá de la


base, por el método del Lemke, es h1 , por tener un valor negativo de mayor
valor absoluto.

En la figura 5.3 se muestra el efecto que tiene aumentar la variable h1 en los


criterios del Simplex de las variables no básicas, x1 , x2 y x3 . La primera varia-
ble cuyo V B se hace cero es x3 , por lo que x3 será la variable que entre en la
base.
Capı́tulo 5. MÉTODO DEL LEMKE 64

100

10 20 30 40 50 60 70 80 90 100 110 VB

VxB3
−100

−200

VxB1
−300

VxB2

−400

VB

Figura 5.3: Efecto de h1 en los criterios del Simplex de las variables no básicas
Capı́tulo 6

POSTOPTIMIZACIÓN

6.1. Introducción

Dado un problema de PL:

max z = cx
s.a. :
(6.1)
Ax = b
x≥0

Una vez obtenida la solución óptima x ∗ , podrı́an producirse cambios en el


problema, que pueden hacer que la x ∗ deje de ser la solución óptima. En par-
ticular, puede cambiar:

1. b
2. c
3. Aparición de una nueva actividad (una nueva columna en A y una nueva
componente en c)
4. Aparición de una nueva restricción (una nueva fila en A y una nueva
componente en b)
5. Cambio en aij

6.2. Cambio en b

Si el vector de disponibilidad de recursos cambia, b


, también cambia:

1. u
B = B −1 b

2. z
= c B u
B
Capı́tulo 6. POSTOPTIMIZACIÓN 66

No cambia:

1. B
2. B −1
3. p B = B −1 A
4. V B = c − c B B −1 A. En particular, al tratarse de la solución óptima V B ≤ 0.

La solución puede dejar de ser factible si algún u


i < 0. El análisis consiste en
recalcular u
B :

1. Si u
B
i ≥ 0 ∀i, la solución sigue siendo factible y, como V ≤ 0, las varia-
B

bles básicas son las mismas, con un nuevo nivel de realización u


B y un
nuevo valor de la función objetivo z
.
2. Si ∃ u
B
i < 0, la solución deja de ser factible pero cumple el criterio de op-
timalidad, V B ≤ 0. Se debe aplicar el método de Lemke hasta obtener una
solución que además de cumplir el criterio de optimalidad sea factible,
la nueva solución óptima, que tendrá un conjunto de variables básicas
de las de la solución original.

6.3. Cambio en c

Si el vector de contribuciones unitarias al beneficio, c


, también cambia:

1. z
= c
B uB
2. V B = c
− c
B B −1 A

No cambia:

1. B
2. B −1
3. p B = B −1 A
4. uB = B −1 b. En particular, como la solución era factible uB ≥ 0.

La solución puede dejar de ser óptima, si algún Vx


Bi > 0. El análisis consiste en
recalcular V
B :

1. Si Vx
Bj ≤ 0 ∀j, la solución sigue siendo óptima y, como uB ≥ 0, las varia-
bles básicas son las mismas, con el mismo nivel de realización uB y un
nuevo valor de la función objetivo z
.
2. Si ∃Vx
Bj > 0, la solución deja de ser óptima pero sigue siendo factible,
uB ≥ 0. Se debe aplicar el método de Simplex hasta obtener una solución
que además de ser factible cumpla el criterio de optimalidad, la nueva so-
lución óptima, que tendrá algunas variables básicas de las de la solución
original.
Capı́tulo 6. POSTOPTIMIZACIÓN 67

Si solo cambia una componente de c, se pueden dar dos situaciones:

1. Cambia cxk y xk no es variable básica. Solo cambia VxBk , con lo que esta
actividad, que no era básica, al cambiar VxBk podrı́a ocurrir que VxBk ≥ 0,
en cuyo caso la solución original no serı́a óptima.
2. Cambia cxk y xk es variable básica, con lo que cambiarı́a todo V B .

6.4. Nueva actividad

Una actividad k queda caracterizada por:

1. cxk : la contribución unitaria al beneficio de dicha actividad y


2. Axk : el consumo que hace dicha actividad de cada uno de los recursos.

Con la aparición de una nueva actividad, la solución óptima del problema pue-
de ser la misma o puede ser otra mejor.

Es decir, si resulta beneficioso realizar dicha actividad, entonces la variable xk


será básica y la solución a la que se llegará será mejor. Si no resulta beneficioso,
entonces la variable xk será no básica y la mejor solución será la obtenida para
el problema antes de realizar dicha actividad.

En efecto, con la introducción de una nueva actividad, se debe calcular el cri-


terio del Simplex VxBk de la variable correspondiente xk :

Si VxBk ≤ 0, la solución sigue siendo óptima y no resulta beneficioso rea-


lizar dicha actividad, ya que realizarla disminuye el valor de la función
objetivo.
Si VxBk ≥ 0, la solución deja de ser óptima porque la introducción de la
nueva actividad representa una oportunidad de mejora. Se debe aplicar
el método del Simplex hasta alcanzar la solución óptima.

6.5. Nueva restricción

Una restricción l queda caracterizada por:

1. bl : la disponibilidad del recurso (el término independiente) y


2. alj : el consumo que hacen todas las actividades del nuevo recurso y
3. el signo de la desigualdad.

En el caso de una restricción de desigualdad se convierte en una de igualdad


con la variable de holgura correspondiente:
Capı́tulo 6. POSTOPTIMIZACIÓN 68

 
a x ≤ bl ⇒ j alj xj + hl = bl
j lj j  (6.2)
j alj xj ≥ bl ⇒ j alj xj − hl = bl

En el caso de una restricción de tipo igual, es equivalente a dos: una con ≤ y


otra con ≥:


 j alj xj ≤ bl
alxj xj = bl equivalente a:  (6.3)
j j alj xj ≥ bl

Con la aparición de una nueva restricción, la solución óptima del problema


puede ser la misma o puede ser otra peor. Es decir:

si la solución óptima original cumple la nueva restricción, la solución


óptima seguirá siendo factible y también óptima, es decir, la solución
óptima no cambiará;
si la solución óptima obtenida no cumple la nueva restricción, la solución
dejará de ser factible y habrá que obtener una nueva solución factible y
óptima, peor que la original.

Cuando aparece una nueva restricción, la forma de obtener la nueva solución


factible sin resolver el problema desde el principio consiste en:

1. Introducir en la tabla de la solución óptima final la nueva restricción tal


y como habrı́a aparecido en la primera tabla y
2. operar con las filas para conseguir ceros en la matriz p B donde deberı́a
haberlos (esto se explica en el ejemplo final, 6.7.4).

6.6. Cambio en aij

Se pueden dar dos situaciones, que la variable xj sea básica o que no.

6.6.1. Cambio en aij con xj no básica

Si cambia aij y xj es una variable no básica, cambia:

1. Vx
Bj = cxj − c B B −1 Axj
2. pj
B = B −1 Axj
Capı́tulo 6. POSTOPTIMIZACIÓN 69

No cambia:

1. B
2. B −1
3. z = c B uB
4. VxBk , k ≠ j (no cambia el criterio del Simplex del resto de variables)
5. pk
B = B
−1 A
xk k ≠ j
6. u
B = B
−1 b

Solo cambia VxBj , con lo que:

si VxBj > 0, el valor de la función objetivo aumentará al realizar dicha


actividad, en cuyo caso habrı́a que aplicar el método del Simplex y xj en-
trarı́a en la base en la primera iteración. Se deberı́a iterar hasta alcanzar
la nueva solución óptima;
si VxBj ≤ 0, el valor de la función objetivo disminuirá si la variable xj
entra en la base y la solución óptima no varı́a.

6.6.2. Cambio en aij con xj básica

Si cambia aij y xj es una variable básica, cambia:

1. B

2. B
−1
3. u
B = B
−1 b
4. z
= c
B u
B
5. V
B = c − c
B B
−1 A

6. p
B = B
−1 A

Se pueden dar cuatro situaciones, ligadas a la pérdida o no de las condiciones


de solución factible y de solución óptima. La tabla siguiente resume los casos
que se pueden dar:

V
B ≤ 0 ∃V B ≥ 0
u
B ≥ 0 Solución óptima Simplex
∃uB ≤ 0 Lemke -

6.7. Ejemplo

max. z = x1 + 2x2 + 3x3


sujeto a:
x1 + x2 + x3 ≤ 16 (6.4)
3x1 + 2x2 + 2x3 = 26
x1 + x3 ≥ 10
Capı́tulo 6. POSTOPTIMIZACIÓN 70

Tabla correspondiente a la solución óptima:

x1 x2 x3 h3 h1 a2 a3
-39 -7/2 -1 0 0 0 -3/2 0
h1 3 -1/2 0 0 0 1 -1/2 0
h3 3 1/2 1 0 1 0 1/2 -1
x3 13 3/2 1 1 0 0 1/2 0

6.7.1. Cambio de b
 T
Supongamos que b
= 14 22 11 . El nuevo valor de las variables bási-
cas, u
B serı́a:

⎛ ⎞⎛ ⎞ ⎛ ⎞
1 −1/2 0 14 3
⎜ ⎟⎜ ⎟ ⎜ ⎟
u
B = B −1 b
= ⎝ 0 1/2 −1 ⎠ ⎝ 22 ⎠ = ⎝ 0 ⎠ (6.5)
0 1/2 0 11 11

La solución sigue siendo factible y óptima.

 T
Supongamos que b
= 12 26 11 . El nuevo valor de las variables bási-
cas, u
B serı́a:

⎛ ⎞⎛ ⎞ ⎛ ⎞
1 −1/2 0 12 −1
⎜ ⎟⎜ ⎟ ⎜ ⎟
u
B = B −1 b
= ⎝ 0 1/2 −1 ⎠ ⎝ 26 ⎠ = ⎝ 2 ⎠ (6.6)
0 1/2 0 11 13

La solución ya no es factible y es necesario aplicar Lemke.

x1 x2 x3 h3 h1 a2 a3
-39 -7/2 -1 0 0 0 -3/2 0
h1 -1 -1/2 0 0 0 1 -1/2 0
h3 2 1/2 1 0 1 0 1/2 -1
x3 13 3/2 1 1 0 0 1/2 0

-32 0 -1 0 0 -7 2 0
x1 2 1 0 0 0 -2 1 0
h3 1 0 1 0 1 1 0 -1
x3 10 0 1 1 0 3 -1 0
Capı́tulo 6. POSTOPTIMIZACIÓN 71

6.7.2. Cambio de c
 
Supongamos que c
= 2 2 4 0 0 .

El nuevo valor del vector de criterios del Simplex, V


B serı́a:

V ‘B = c
− c
B B −1 A =
⎛ ⎞
    −1/2 0 0 0 1  
⎜ ⎟
2 2 4 0 0 − 0 0 4 ⎝ 1/2 1 0 1 0 ⎠ = −4 −2 0 0 0
3/2 1 1 0 0
(6.7)

La solución sigue siendo factible y óptima.

 
Supongamos que c
= 6 1 3 0 0 .

El nuevo valor del vector de criterios del Simplex, V


B serı́a:

V ‘B = c
− c
B B −1 A =
⎛ ⎞
    −1/2 0 0 0 1  
⎜ ⎟
6 1 3 0 0 − 0 0 3 ⎝ 1/2 1 0 1 0 ⎠ = 3/2 −2 0 0 0
3/2 1 1 0 0
(6.8)

La solución ya no es óptima y es necesario aplicar el método del Simplex.

x1 x2 x3 h3 h1 a2 a3
-39 3/2 -2 0 0 0 -3/2 0
h1 3 -1/2 0 0 0 1 -1/2 0
h3 3 1/2 1 0 1 0 1/2 -1
x3 13 3/2 1 1 0 0 1/2 0

-48 0 -5 0 -3 0 -3 3
h1 6 0 1 0 1 1 0 -1
x1 6 1 2 0 2 0 1 -2
x3 4 0 -2 1 -3 0 -1 3
Capı́tulo 6. POSTOPTIMIZACIÓN 72

6.7.3. Nueva actividad

Existe la posibilidad de realizar una nueva actividad, x4 y se sabe que:

cx4 = 5
 T
Ax4 = 1 1 1

El criterio del Simplex de la nueva actividad es:

VxB4 = cx
4 − c B B −1 Ax4 = cx
4 − π B Ax4
⎛ ⎞
  1 (6.9)
⎜ ⎟
5 − 0 3/2 0 ⎝ 1 ⎠ = 7/2
1

La solución ya no es óptima y es necesario aplicar el método del Simplex. Para


reutilizar la tabla, es necesario calcular p4B :

p4B = B −1 Ax4 =
⎛ ⎞⎛ ⎞ ⎛ ⎞
1 −1/2 0 1 1/2
⎜ ⎟⎜ ⎟ ⎜ ⎟ (6.10)
⎝ 0 1/2 −1 ⎠ ⎝ 1 ⎠ = ⎝ −1/2 ⎠
0 1/2 0 1 1/2

x1 x2 x3 x4 h3 h1 a2 a3
-39 -7/2 -1 0 7/2 0 0 -3/2 0
h1 3 -1/2 0 0 1/2 0 1 -1/2 0
h3 3 1/2 1 0 -1/2 1 0 1/2 -1
x3 13 3/2 1 1 1/2 0 0 1/2 0

-60 0 -1 0 0 0 -7 2 0
x4 6 -1 0 0 1 0 2 -1 0
h3 6 0 1 0 0 1 1 0 -1
x3 10 2 1 1 0 0 -1 1 0

6.7.4. Nueva restricción

Supongamos que aparece la siguiente nueva restricción:


Capı́tulo 6. POSTOPTIMIZACIÓN 73

x2 + x3 ≤ 15 (6.11)

Como x2 + x3 = 0 + 13 ≤ 15, la solución sigue siendo factible y óptima.

Supongamos que aparece la siguiente nueva restricción:

x2 + x3 ≤ 10 (6.12)

Como x2 + x3 = 0 + 13  10, la solución óptima ya no cumple esta nueva


restricción, con lo que ya no es solución factible del nuevo problema.

La restricción se puede formular como:

x2 + x3 + h4 = 10 (6.13)

Como se indicó en el apartado 5.2.3, al añadir una restricción, la tabla tiene


una fila nueva asociada a esta restricción, pero no está expresada en la base
de la solución óptima. Por lo tanto, hay que operar para que las tasas de sus-
titución de las columnas correspondientes a las variables básicas constituyan
la matriz identidad de nuevo.

x1 x2 x3 h3 h1 h4 a2 a3
-39 -7/2 -1 0 0 0 0 -3/2 0
h1 3 -1/2 0 0 0 1 0 -1/2 0
h3 3 1/2 1 0 1 0 0 1/2 -1
x3 13 3/2 1 1 0 0 0 1/2 0
10 0 1 1 0 0 1 0 0 (fila en la tabla original)
h4 -3 -3/2 0 0 0 0 1 -1/2 0 (nueva fila)

-32 0 -1 0 0 0 -7/3 -1/3 0


h1 4 0 0 0 0 1 -1/3 -1/3 0
h3 2 0 1 0 1 0 1/3 1/3 -1
x3 10 0 1 1 0 0 1 0 0
x1 2 1 0 0 0 0 -2/3 1/3 0
Capı́tulo 7

ANÁLISIS DE SENSIBILIDAD

7.1. Introducción

Dado un problema de PL:

max. z = cx
s.a. :
(7.1)
Ax = b
x≥0

Se conoce una solución óptima básica caracterizada por su base B y, por lo


tanto, podrı́amos conocer toda la información relativa a dicha solución óptima
(tabla 7.1).

−zB VB
uB pB

Puede ser interesante estudiar el rango de valores de cada componente de b


dentro del cual la base B sigue correspondiendo a una solución óptima básica y
factible del problema. Es decir, que las actividades básicas son las mismas, con
el nivel de realización que corresponda y la función objetivo que, igualmente,
corresponda. A esto se dedica la sección 7.2.

También puede ser interesante estudiar el rango de valores de cada compo-


nente de c dentro del cual la base B sigue correspondiendo a una solución
óptima básica y factible del problema. Es decir, que las actividades básicas son
las mismas, con el criterio del Simplex que corresponda y la función objetivo
que, igualmente, corresponda. A esto se dedica la sección 7.3.
Capı́tulo 7. ANÁLISIS DE SENSIBILIDAD 75

7.2. Análisis de b

Si se modifica bi se modifica b y, por lo tanto, también se modifica: Rango para bi

uB = B −1 b
zB = c B uB = c B B −1 b

El rango de valores dentro de los cuales la solución básica correspondiente a


la base B sigue siendo solución óptima básica y factible es aquel para el que la
solución sigue siendo factible, es decir, uB ≥ 0.

Para ello, basta con resolver el sistema de inecuaciones dado por:

B −1 b ≥ 0 (7.2)

Donde la componente i-ésima de b es una incógnita y el resto de componentes


son los valores correspondientes al vector b del problema analizado.

7.3. Análisis de c

Si se modifica cj se modifica c y, por lo tanto, también se modifica: Rango para ci

V B = c − c B B −1 A
zB = c B uB , si la variable xi es básica.

El rango de valores dentro de los cuales la solución básica correspondiente a


la base B sigue siendo solución óptima básica y factible es aquel para el que la
solución sigue siendo óptima, es decir, V B ≤ 0.

Para ello, basta con resolver el sistema de inecuaciones dado por:

c − c B B −1 A ≤ 0 (7.3)

Donde la componente j-ésima de c es una incógnita y el resto de componentes


son los valores correspondientes al vector c del problema analizado.
Capı́tulo 7. ANÁLISIS DE SENSIBILIDAD 76

7.4. Ejemplo

Un fabricante de refrescos F R produce tres modalidades (A, B y C), cada una


en su propio formato: de 3 litros, 2 litros y 1 litro, respectivamente. Este fa-
bricante está comprometido a entregar a un gran distribuidor GD (su único
cliente) exactamente 20000 litros diarios de refrescos. Dispone de 25000 gra-
mos diarios de un saborizante del que cada modalidad consume por botella:
la botella de 3 litros, 2 gramos; la de 2 litros, 3 g; y la de un litro, 4 g. Cono-
cidos los datos económicos de A, B y C, y siendo xj los miles de botellas de
la modalidad j a envasar diariamente, F R ha planteado el siguiente modelo de
Programación Lineal (c y b están expresados en miles):

max. z = 5x1 + 6x2 + 8x3


s.a.:
2x1 + 3x2 + 4x3 ≤ 25 (7.4)
3x1 + 2x2 + 1x3 = 20
x1 , x2 , x3 ≥ 0

Se conoce el plan de producción óptimo, correspondiente a la solución óptima


del problema anterior que se ofrece a continuación:

x1 x2 x3 h1 a2
-111/2 0 -1/2 0 -19/10 -2/5
x3 7/2 0 1/2 1 3/10 -1/5
x1 11/2 1 1/2 0 -1/10 2/5

1. Mediante el correspondiente análisis de sensibilidad, determinar la re-


percusión en el mix de envasado de posibles cambios en los precios de
venta de las dos modalidades de menor capacidad, B y C (x2 y x3 ).
2. Determinar la validez del mix de producción ante posibles variaciones en
la demanda total de refrescos, que se traducirı́an en un mayor o menor
volumen a entregar diariamente a GD, utilizando el análisis de sensibili-
dad.

7.4.1. Análisis de cx2

El rango de valores para cx2 dentro del cual la composición del mix de produc-
ción se mantiene igual se obtiene calculando los nuevos criterios del Simplex
en función de dichos valores.
Capı́tulo 7. ANÁLISIS DE SENSIBILIDAD 77

En el caso de cx2 , como x2 no es una variable básica, si cx2 se modifica, sólo se


modifica VxB2 . En particular:

    
3   3/10 −1/5 3
−1
VxB2 B
= cx2 −c B Ax2 = cx2 −π B
= cx2 − 8 5 = cx2 −13/2
2 −1/10 2/5 2
(7.5)

13 13
El mix sigue siendo el mismo si cx2 − 2 ≤ 0, es decir, si cx2 ≤ 2 .

13
En el caso de que cx2 = 2 la tabla correspondiente a la solución óptima serı́a
la siguiente:

x1 x2 x3 h1 a2
-111/2 0 0 0 -19/10 -2/5
x3 7/2 0 1/2 1 3/10 -1/5
x1 11/2 1 1/2 0 -1/10 2/5

De forma que serı́a posible aplicar el método del Simplex y que la variable x2 Nueva base
entrara en la base, para obtener una nueva solución básica con la misma fun-
ción objetivo. Igualmente, si cx2 fuera ligeramente superior a 13
2 , el criterio del
Simplex de x2 serı́a positivo y la entrada de x2 en la base darı́a lugar a una
mejora de la función objetivo. En cualquiera de los dos casos, tras iterar se ob-
tendrı́a una nueva base para la solución óptima, caracterizada por la siguiente
tabla. El valor de la función objetivo dependerı́a del valor de c2 (como se ha
dicho serı́a el mismo si cx2 = 13 13
2 y serı́a mayor si cx2 > 2 .

x1 x2 x3 h1 a2
0 0 VxB3 VhB1
x2 7 0 1 2 3/5 -2/5
x1 2 1 0 -1 -2/5 3/5

Los criterios del Simplex dependerı́an del valor de cx2 cuando la base es B =
 
Ax2 Ax1 . En efecto, V B serı́a:

 
    0 1 2 3/5
B B B
V =c−c p = 5 cx2 8 0 − cx2 5 =
1 0 −1 −2/5
 
10−3cx2
= 0 0 13 − 2cx2 5
(7.6)
Capı́tulo 7. ANÁLISIS DE SENSIBILIDAD 78

7.4.2. Análisis de cx3

El el caso de que cambie cx3 , como x3 es una variable básica, cambian los
criterios del Simplex de todas las variables (menos los de las básicas, que son
0). En particular:

 
    0 1/2 1 3/10
B B −1 B
V =c−c B A=c−c p = 5 6 cx3 0 − cx3 5 =
1 1/2 0 −1/10
     
cx3 +5 3cx3 −5 7−cx3 5−3cx3
= 5 6 cx3 0 − 5 2 cx3 10
= 0 2 0 10
(7.7)

Es decir, el mix es el mismo si se cumple simultáneamente:

7 − cx3 ≤ 0 cx3 ≥ 7
⇒ ⇒ cx3 ≥ 7 (7.8)
5 − 3cx3 ≤ 0 cx3 ≥ 53

El mix es el mismo, siempre y cuando la contribución unitaria al beneficio de


cada botella de litro sea igual o superior a 7 unidades monetarias.

Como en el caso anterior, podrı́amos evaluar cuál serı́a la nueva base para el
caso en el que cx3 fuera igual o ligeramente inferior a 7. En el caso de que fuera
igual, el criterio del Simplex de x2 serı́a nulo, con lo cual dicha variable podrı́a
entrar en la base y se podrı́a encontrar una nueva base correspondiente a una
solución óptima pero con el mismo valor de la función objetivo. Si cx3 fuera
ligeramente inferior a 7, la entrada de x2 en la base darı́a lugar a una función
objetivo mayor. Al introducir x2 , tendrı́amos la solución correspondiente a la
siguiente tabla:

x1 x2 x3 h1 a2
0 0 -3 -14/5 1/5
x2 7 0 1 2 3/5 -2/5
x1 2 1 0 -1 -2/5 3/5

En este caso, el criterio del Simplex en función de cx3 serı́a:


 
    0 1 2 3/5
B B B
V =c−c p = 5 6 cx3 0 − 6 5 =
1 0 −1 −2/5
 
= 0 0 cx3 − 7 − 85
(7.9)
Capı́tulo 7. ANÁLISIS DE SENSIBILIDAD 79

7.4.3. Análisis de b2

La demanda de refrescos queda reflejada en la segunda restricción. Si cambia


b2 , la solución podrı́a dejar de ser factible y, por lo tanto, dejar de ser óptima.

    
B −1 3/10 −1/5 25
75−2b2 b2 ≤ 75/2
u =B b= = 10
≥0⇒
−1/10 2/5 b2 −25+4b2 b2 ≥ 25/4
10
(7.10)

Es decir, el mix es el mismo si 25


4 ≤ b2 ≤
75
2 , es decir, si la demanda supera los
6250 litros y si no supera los 37500.

Análogamente a como se ha hecho con c, se podrı́a identificar cuál serı́a la


nueva base de la solución óptima para valores ligeramente superiores a 75
2 , por
un lado, y para valores ligeramente inferiores a 25
2 , por otro. En ambos casos,
serı́a necesario aplicar el método de Lemke y se obtendrı́a una nueva base. En
ambos casos uB serı́a función del valor de b2 .

7.5. La aparente paradoja de b

Dado el problema:

max. z = 1x1 + 3x2


s.a. :
1x1 + 2x2 ≤ 20 (7.11)
2x1 + x2 ≥ 20
x1, x2 ≥ 0

La tabla del Simplex correspondiente a la solución óptima es:

x1 x2 h1 h2
-80/3 0 0 -5/3 -1/3
x2 20/3 0 1 2/3 1/3
x1 20/3 1 0 -1/3 -2/3

Si realizamos en análisis de sensibilidad con respecto a b1 , el resultado es el


siguiente:
    
2/3 −1/3 b1 1 2b1 − 20
uB = B −1 b = = ≥ 0 ⇒ 10 ≤ b1 ≤ 40
−1/3 2/3 20 3 −b1 + 40
(7.12)
Capı́tulo 7. ANÁLISIS DE SENSIBILIDAD 80

Es decir, si la disponibilidad el recurso R1 (b1 ) es superior a 40, la solución


no es factible. ¿Cómo puede ser que si aumentamos la disponibilidad de un
recurso de una restricción de tipo ≤ la solución se haga no factible?
Capı́tulo 8

CASOS ESPECIALES

8.1. Introducción

Si entendemos que, al resolver un problema de Programación Lineal, lo normal Objetivo


es hallar una solución óptima única, en este capı́tulo se estudian los cuatro
posibles casos especiales que nos podemos encontrar en la resolución de un
problema: soluciones óptimas múltiples, soluciones degeneradas, infactibili-
dad y, por último, no acotación de la región factible. Todos ellos se pueden
detectar a partir de la matriz completa de la solución óptima obtenida por
aplicación del método del Simplex.

8.2. Óptimo múltiple

Dado un problema de Programación Lineal, P , se conoce una solución óptima Caracterización


básica y factible, x B , asociada a una base B. Si una variable no básica, xk , es tal analı́tica
que VxBk = 0, existe la posibilidad de que dicha variable entre en la base1 y:

se obtiene una solución básica, x B diferente de la anterior (con otra base


B
) y
con el mismo valor de la función objetivo.

Las dos soluciones básicas anteriores x B y x B son soluciones básicas y ópti-


mas del problema P .

Además, todas las soluciones del tipo x = λx B + (1 − λ)x B con λ ∈ (0, 1) son Soluciones no
soluciones no básicas y óptimas del problema. básicas óptimas

En general, pueden existir r soluciones básicas factibles (x B1 , x B2 ...x Br ) y ópti- Generalización


r r
mas y todas las soluciones tienen la forma s=1 λs x Bs , con s=1 λs = 1.

1 Esto es ası́ siempre. Si existen variables básicas con tasas de sustitución positiva con respecto

a xk , una de ellas será la que abandone la base. Si todas las tasas de sustitución son negativas
se trata de un caso que se describe en la sección 8.5.
Capı́tulo 8. CASOS ESPECIALES 82

En relación con la interpretación gráfica, en el plano existen soluciones óptimas Interpretación


múltiples cuando la función objetivo es paralela a la restricción que contiene gráfica
dos soluciones básicas factibles y óptimas.

x2 z

Solución óptima básica


2
Soluciones óptimas no básicas

1 Solución óptima básica

1 2 3 4 5 6 7 8 x1

Figura 8.1: Soluciones óptimas múltiples

Ejemplo
max. z = 3x1 + 4x2
s.a. :
3x1 + 4x2 ≤ 12
(8.1)
x2 ≤ 2
x1 − x2 ≤ 1
x1 , x2 ≥ 0

x1 x2 h1 h2 h3 Soluciones
-12 0 0 -1 0 0 óptima básicas
x1 4/3 1 0 1/3 -4/3 0
x2 2 0 1 0 1 0
h3 5/3 0 0 -1/3 7/3 1

-12 0 0 -1 0 0
x1 16/7 1 0 1/7 0 4/7
x2 9/7 0 1 1/7 0 -3/7
h2 5/7 0 0 -1/7 1 3/7
Capı́tulo 8. CASOS ESPECIALES 83

z
x2

Solución óptima básica degenerada


2 h1 = h2 = x1 = 0
Restricciones redundantes
1

1 2 3 4 5 6 7 x1

Figura 8.2: Solución degenerada (caso 1)

Existen dos soluciones óptimas que son básicas: Soluciones


 T óptimas
x 1 = 43 , 2, 0, 0, 0, 53
 T
x 2 = 16 9 5
7 , 7 , 0, 7 , 0
 
4 5 T
Y todas las siguientes que son no básicas: x NB = λ 3 , 2, 0, 0, 0, 3 +
 T
16 9 5
(1 − λ) 7 , 7 , 0, 7 , 0 , con λ ∈ (0, 1).

Para todas ellas, z = 12.

8.3. Solución degenerada

Se dice que una solución básica es degenerada si alguna de las variables básicas Caracterización
toma valor 0, es decir, algún uBi = 0. analı́tica

Ejemplo
max. z = x1 + 4x2
s.a. :
2x1 + 3x2 ≤ 6 (8.2)
x1 + 2x2 ≤ 4
x1 , x2 ≥ 0
Capı́tulo 8. CASOS ESPECIALES 84

x1 x2 h1 h2 Solución del
-8 -5/3 0 -4/3 0 problema
x2 2 2/3 1 1/3 0
h2 0 -1/3 0 -2/3 1

-8 -1 0 0 -2
x2 2 1/2 1 0 1/2
h1 0 1/2 0 1 -3/2

-8 0 0 2 -5
x2 2 0 1 -1 2
x1 0 1 0 2 -3

Las tres soluciones básicas son la misma: todas corresponden a x =


(0, 2, 0, 0)T . Se trata de tres bases que conducen a la misma solución.

Las soluciones degeneradas llevan asociados precios sombra múltiples. A con- Precios sombra
tinuación, esto se ilustra con otro ejemplo: múltiples

Ejemplo
max. z = x1 + 2x2
s.a. :
x1 + 3x2 ≤ 15
(8.3)
x1 + x2 ≤ 10
2x1 ≤ 15
x1 , x2 ≥ 0

x1 x2 h1 h2 h3 Interpretación
Solución del
-25/2 0 0 0 -2 1/2 gráfica
problema
x1 15/2 1 0 0 0 1/2
x2 5/2 0 1 0 1 -1/2
h1 0 0 0 1 -3 1

-25/2 0 0 -2/3 0 -1/6


x1 15/2 1 0 0 0 1/2
x2 5/2 0 1 1/3 0 -1/6
h2 0 0 0 -1/3 1 -1/3

-25/2 0 0 -1/2 -1/2 0


x1 15/2 1 0 -1/2 3/2 0
x2 5/2 0 1 1/2 -1/2 0
h3 0 0 0 1 -3 1
Capı́tulo 8. CASOS ESPECIALES 85

x2
9

6
z
5

4 Restricciones redundantes

3
Solución óptima básica degenerada
h1 = h2 = h3 = 0
2

1 2 3 4 5 6 7 8 9 10 11 12 x1

Figura 8.3: Solución degenerada (caso 2)

Existen tres bases que conducen a la misma solución: Tres bases


 
B1 = Ax1 Ax2 Ah1
 
B2 = Ax1 Ax2 Ah2
 
B3 = Ax1 Ax2 Ah3

 T
15 5
Las tres conducen a una misma solución: x = 2 2 0 0 0 . La solución

Los precios sombra de cada base son los siguientes: Los precios
  sombra
1
π B1 = 0 2 2
 
2
π B2 = 0 16
 3 
1 1
π B3 = 2 2 0

Al relajar cualquiera de las tres restricciones, es decir, al hacer Δbi > 0, las Análisis de
otras dos siguen activas y la solución no cambia. Naturalmente, en consecuen- Δi > 0
cia, tampoco cambia el valor de la función objetivo.

Sin embargo, al hacer Δbi < 0, la modificación tiene lugar de forma diferente, Análisis de
porque la modificación de la restricción correspondiente hace que las tres ba- Δi < 0
ses no conduzcan a la misma solución y, además, en cada caso se modifican
de una manera diferente.
Capı́tulo 8. CASOS ESPECIALES 86

z
x2

B3
3
B2

2
B1

1 2 3 4 5 6 7 8 9 10 11 12 x1

Figura 8.4: Solución degenerada (caso 3)

Si se modifica b2 , de forma que Δb2 = −1, la función objetivo de cada una Ejemplo con R2
de las tres bases son las siguientes, consistente con los valores de los precios
sombra:
B
zB1 = 12, es decir, Δz = −2 = −π2 1
B
zB2 , es decir, Δz = 0 = −π2 2
1 B
zB3 , es decir, Δz = − 2 = −π2 3

Es decir:

Cuando se modifica R2 y evaluamos la z correspondiente a la base B1


quien ofrece la información al respecto de la modificación de la z es el la
segunda componente de π B1 = 2.
Cuando se modifica R2 y evaluamos la z correspondiente a la base B2
quien ofrece la información al respecto de la modificación de la z es el la
segunda componente de π B2 = 0, que se convierte en no factible.
Cuando se modifica R2 y evaluamos la z correspondiente a la base B3
quien ofrece la información al respecto de la modificación de la z es el la
segunda componente de π B3 = 12 .

8.4. Problema no factible

Cuando se aplica el método del Simplex para resolver el problema auxiliar Caracterización
correspondiente al método de las dos fases (o de la M grande), el problema analı́tica.
Simplex
Capı́tulo 8. CASOS ESPECIALES 87

original no tiene solución factible si para todas las soluciones óptimas del
problema auxiliar existe al menos una variable artificial diferente de 0.

Cuando se aplica el método de Lemke, se puede concluir que el problema no Caracterización


tiene solución factible si se llega a una solución en la que para todas las va- analı́tica. Lemke
riables básicas negativas, todas las tasas de sustituciones de las variables no
básicas con respecto a dichas variables básicas son positivas.

x2 z

No existe ninguna solución factible


2

1 2 3 4 5 6 7 8 9 x1

Figura 8.5: Problema sin solución factible

Ejemplo
min. z = 2x1 + 3x2 = max. (−z) = −2x1 − 3x2
s.a. :
x1 + 2x2 ≤ 1 (8.4)
x1 + x2 ≥ 3
x1 , x2 ≥ 0

Esta serı́a la tabla a la que se llegarı́a aplicando el método de las dos fases. Aplicando las
dos fases
x1 x2 h2 h1 a2
2 0 -1 -1 -1 0
x1 1 1 2 0 1 0
a2 2 0 -1 -1 -1 1
Capı́tulo 8. CASOS ESPECIALES 88

Al aplicar Lemke se iterarı́a de la siguiente manera: Aplicando


Lemke
x1 x2 h1 h2
0 -2 -3 0 0
h1 1 1 2 1 0
h2 -3 -1 -1 0 1

0 0 -1 0 -2
h1 -2 0 1 1 1
x1 3 1 1 0 -1

8.5. Región de factibilidad no acotada

B
Si en la solución óptima existe una variable, xk , no básica, y pik ≤ 0 para todas Caracterización
las variables básicas (i = 1...m), entonces, al aumentar el valor de xk aumen- analı́tica
ta el valor de todas las variables básicas, con lo que la región de soluciones
factibles no está acotada.

Para cualquier variable no básica, xk , si VxBk < 0, a pesar de que es posible Solución óptima
que esta variable entre en la base con el consiguiente incremento de todas las única
variables básicas, la entrada de xk no aumenta el valor de la función objetivo,
con lo que la solución óptima es única.

x2
z
10

6
Solución óptima básica (única)

1 2 3 4 5 6 7 8 9 10 11 12 x1

Figura 8.6: Región de factibilidad no acotada con solución óptima y única


Capı́tulo 8. CASOS ESPECIALES 89

Ejemplo
max. z = −2x1 + 3x2
s.a. :
−x1 + 2x2 ≤ 6 (8.5)
−2x1 + 2x2 ≤ 0
x1 , x2 ≥ 0

x1 x2 h1 h2 Solución del
-6 0 0 -1 -1/2 problema
x1 6 1 0 1 -1
x2 6 0 1 1 -1/2

Si VxBk = 0, aunque es posible que esta variable entre en la base con el consi- Soluciones
guiente incremento de todas las variables básicas, la entrada de xk no altera el óptimas
valor de la función objetivo, con lo que existen soluciones óptimas múltiples. múltiples

x2
10

Soluciones óptimas
9 no básicas

8
z
7

6
Solución óptima básica

1 2 3 4 5 6 7 8 9 10 11 12 13 14 x1

Figura 8.7: Región de factibilidad no acotada con solución óptimas múltiples

Ejemplo
max. z = −2x1 + 4x2
s.a. :
−x1 + 2x2 ≤ 6 (8.6)
−2x1 + 2x2 ≤ 0
x1 , x2 ≥ 0
Capı́tulo 8. CASOS ESPECIALES 90

z
x2

No existe solución óptima


4

x1
1 2 3 4 5 6 7 8 9 10 11 12 13 14

Figura 8.8: Región de factibilidad no acotada con función objetivo no acotada

x1 x2 h1 h2 Solución del
-12 0 0 -2 0 problema
x1 6 1 0 1 -1
x2 6 0 1 1 -1/2

Si VxBk ≥ 0, es posible que esta variable entre en la base con el consiguiente z no acotada
incremento de todas las variables básicas y de z, con lo que el problema no
está acotado y no se puede hablar de solución óptima.

Ejemplo
max. z = 3x1 + x2
s.a. :
−x1 + 2x2 ≤ 6 (8.7)
−2x1 + 2x2 ≤ 0
x1 , x2 ≥ 0

x1 x2 h1 h2 Solución del
0 3 1 0 0 problema
h1 6 -1 2 1 0
h2 0 -2 2 0 1
Capı́tulo 9

INTERPRETACIÓN GRÁFICA

9.1. Introducción

En este capı́tulo se presenta la interpretación gráfica en el plano de muchos Dos


de los conceptos presentados hasta ahora. Este capı́tulo no pretende ser un dimensiones
tratado exhaustivo de la geometrı́a de los problemas de Programación Lineal.

El objetivo es ilustrar dichos conceptos pero no ofrecer herramientas para el Objetivo


tratamiento de problemas de Programación Lineal.

Existe una forma de abordar lo que aquı́ se presenta de forma muy somera Teorı́a de
conocida como Teorı́a de poliedros, que resulta útil para el tratamiento y la poliedros
resolución de problemas de Programación Lineal, pero que queda fuera del
alcance de este texto.

9.2. Conceptos generales

Dado un problema de Programación Lineal en el plano:

max. z = cx
s.a:
(9.1)
Ax = b
x≥0

x ∈ R+
2×1 Dimensiones
A ∈ Rm×2
c ∈ R1×2
b ∈ Rm×1

donde m es el número de restricciones.


Capı́tulo 9. INTERPRETACIÓN GRÁFICA 92

En el ejemplo que sigue m = 2 Ejemplo

max. z = x1 + 2x2
s.a.:
−2x1 + x2 ≤ 2 Restricción R1
(9.2)
x1 + x2 ≤ 6 Restricción R2
2x1 + x2 ≤ 10 Restricción R3
x1 , x2 ≥ 0

En la figura 9.1, aparecen representadas las tres restricciones. Cada restricción Restricciones
de tipo ≤ o ≥ divide al plano en dos semiplanos, de tal manera que uno de
ellos corresponde a soluciones factibles con respecto a dicha restricción y el
otro semiplano a soluciones no factibles con respecto a la misma restricción.

El problema del ejemplo anterior se puede formular en términos de igualdad


añadiendo las variables de holgura necesarias:

max. z = x1 + 2x2
s.a.:
−2x1 + x2 + h1 = 2
(9.3)
x1 + x2 + h2 = 6
2x1 + x2 + h3 = 10
x1 , x2 , h1 , h2 , h3 ≥ 0

Dado un punto cualquiera en el plano, P (x1 , x2 ) y una restricción Ri :

Si este punto está situado en el semimplano de soluciones factibles con


respecto a Ri , entonces el P cumple la restricción Ri y hi ≥ 0.
En particular, puede estar sobre la propia recta, en cuyo caso, se cumple
la restricción con hi = 0.
Si este punto está situado en el semimplano de soluciones no factibles
con respecto a Ri , entonces el P no cumple la restricción Ri y hi < 0.

Por ejemplo:

El punto (4, 2)
• Está a la derecha de la recta R1 , el su semiplano factible, con lo que
h1 > 0.
• Está sobre la recta R2 , con lo que h2 = 0.
• Está sobre la recta R3 , con lo que h3 = 0.
El punto (1, 6)
Capı́tulo 9. INTERPRETACIÓN GRÁFICA 93

• Está a la izquierda de la recta R1 , en su semiplano no factible, con


lo que h1 < 0.
• Está a la derecha de la recta R2 , en su semiplano no factible, con lo
que h2 < 0.
• Está a la izquierda de la recta R3 , en su semiplano factible, con lo
que h3 > 0.

x2

10

−1 1 2 3 4 5 6 7 x1

Figura 9.1: Restricciones de un problema de Programación Lineal

Las restricciones funcionales junto con las restricciones de no negatividad de- Región de
finen la región de factibilidad (sombreada en la figura 9.2). Cualquier punto soluciones
perteneciente a la región de soluciones factibles cumple con todas las restric- factibles
ciones, incluidas las de no negatividad.

La región de soluciones factibles siempre es un polı́gono y es una región conve-


xa, es decir, para cualesquiera dos puntos de la solución de regiones factibles,
todos los puntos pertenecientes al segmento que uno aquellos dos puntos
también está dentro de la región de soluciones factibles.

La función objetivo de un problema de Programación lineal en el plano tiene Función objetivo


la forma de z = cx1 x1 + cx2 x2 . Para cada valor de z tenemos una recta en
particular, donde todos los puntos de dicha recta proporcionan el mismo valor
de la función objetivo.
Capı́tulo 9. INTERPRETACIÓN GRÁFICA 94

x2

10

−1 1 2 3 4 5 6 7 x1

Figura 9.2: Región factible de un problema de Programación Lineal

La función objetivo se puede entender como un haz de rectas paralelas cx1 x1 + Haz de rectas
cx2 x2 = k.

En el ejemplo del problema, como se observa en la figura 9.3, la recta x1 + Función objetivo
2x2 = 14 es el conjunto de todas las soluciones que proporcionan un valor
de la función objetivo de 14. Ninguno de los puntos de dicha recta están en la
región de soluciones factibles, por lo que no existe ninguna solución factible
que proporcione un valor de z = 14. Lo mismo ocurre con z = 12.

Sin embargo, la recta x1 + 2x2 = 6 sı́ tiene un segmento dentro de la región de


factibilidad. Existe un conjunto de soluciones factibles que reportan un valor
de z = 6, correspondiente a todos los puntos del segmento en el que la recta
anterior intersecta con la región de soluciones factibles.

Un problema en el plano tiene n variables (x1 , x2 y todas las variables de Soluciones


holgura correspondiente a restricciones ≤ o ≥) y una solución básica tiene m básicas
variables básicas. En particular, en el caso de que todas las restricciones tengan
variables de holgura, una solución básica tiene:

m variables básicas y
2 variables no básicas.

Es decir, en una solución básica, como mı́nimo, debe haber dos variables nulas:

x1 y x2 (la solución es el origen de coordenadas);


Capı́tulo 9. INTERPRETACIÓN GRÁFICA 95

x2

10

6
x1
+2
5 x2
=1
x1 4
+2
4 x2
=1
2

3
x1
+2
x2
2 =6

−1 1 2 3 4 5 6 7 x1

Figura 9.3: Haz de rectas sobre la región de soluciones factibles de un problema


de Programación Lineal

x2
x 10
10

x9 x8
6

5 x7

5
2 x x6

x 2
x1 x3 x4
−1 1 2 3 4 5 6 7 x1

Figura 9.4: Soluciones básicas de un problema de Programación Lineal

x1 o x2 y una variable de holgura (la solución es la intersección la res-


tricción correspondiente con uno de los ejes);
Capı́tulo 9. INTERPRETACIÓN GRÁFICA 96

dos variables de holgura (la solución es la intersección de dos restriccio-


nes).

Es decir, las soluciones básicas de un problema de Programación Lineal son:

el eje de coordenadas,
cada una de las intersecciones de una restricción con cada uno de los
ejes y
cada una de las intersecciones de los difernetes pares de restricciones.

Por otro lado, en el caso de que todas las retricciones tengan variables de hol- Número de
gura, el problema tiene un número de soluciones básicas que se puede calcular soluciones
de dos maneras: básicas

Como en número de restricciones (m) más dos (los ejes de coordenadas),


tomados  de dos en
 dos, cada uno de los cuales representa una solución
m+2
básica, .
2
Como en número de variables, que son 2 (x1 y x2 ) más las m variables
de holgura tomadas de m en  m (tal 
y como se presentó en la definición
m+2
inicial de solución básica), .
m

Se puede comprobar de forma sencilla que los dos números combinatorios


anteriores tienen el mismo valor, para lo cual basta con emplear la definición
de número aleatorio.

En el ejemplo, existen tres restricciones (m = 3), por lo que el número de


5
soluciones básicas es = 10, que aparecen indicadas en 9.4.
2

De las soluciones básicas anteriores, algunas son factibles (en azul) y otras
son no factibles (en rojo), 9.5. Y de las factibles, aquella que tiene una función
objetivo mayor es la solución óptima del problema, 9.6.

La interpretación gráfica del Teorema Fundamental es la siguiente. Dada cual- Teorema


quier solución no básica (un punto interior del polı́gono de soluciones facti- fundamental
bles), es posible desplazarse hacia una solución en una restricción (con una
componente con un cero más que la de partida) y, desde ella, a una solución
básica (con dos componentes nulas adicionales), siendo esta solución no peor
que la de partida.
Capı́tulo 9. INTERPRETACIÓN GRÁFICA 97

x2
x 10
10

x9 x8
6

5 x7

5
2 x x6

x 2
x1 x3 x4
−1 1 2 3 4 5 6 7 x1

Figura 9.5: Factibilidad de las soluciones básicas de un problema de Programa-


ción Lineal

x2

10

5
Solución óptima

4
2x
1 +2
x2
3

−1 1 2 3 4 5 6 7 x1

Figura 9.6: Solución óptima de un problema de Programación Lineal

En la figura 9.7 se muestra una solución no básica x NB . Desde ella es posible


desplazarse por múltiples caminos hasta llegar a una solución básica no peor
Capı́tulo 9. INTERPRETACIÓN GRÁFICA 98

que x NB .

x NB , no está sobre ninguna restricción, ni sobre ningún eje, con lo que tiene
cinco componentes no nulas (es decir, todas). Siguiendo el camino verde, nos
desplazamos primero a una solución no básica sobre el eje x1 (con una com-
ponente nula adicional: x2 ). Y, desde ella es posible llegar a x 3 , en la que hay
dos componentes nulas: x2 y h3 y tres no nulas: es una solución básica y mejor
que la de partida.

Igualmente, siguiendo el camino naranja, nos desplazamos primero a una so-


lución no básica sobre la restricción R1 (con una componente nula adicional:
h1 ). Y, desde ella es posible llegar a x 7 , en la que hay dos componentes nulas:
h1 y h2 y tres no nulas: es una solución básica y mejor que la de partida.

x2
x 10
10

x9 x8
6

5 x7

5
2 x x6

1 X NB

x2 x1 x3 x4
−1 1 2 3 4 5 6 7 x1

Figura 9.7: Interpretación gráfica del Teorema Fundamental en un problema de


Programación Lineal

9.3. Método del Simplex

El método del Simplex, al cual se dedicó el capı́tulo 2, opera transitando de Lógica general
solución básica factible en solución básica factible hasta llegar a una que es
óptima. En la figura 9.8, en particular, se muestran dos posibles transiciones,
la primera entre las soluciones x 1 y x 5 y la segunda entre x 5 y x 7 , que es la
Capı́tulo 9. INTERPRETACIÓN GRÁFICA 99

solución óptima. Como se ha comentado antes, las solución básicas son los
vértices del polı́gono de la región de factibilidad.

x2
x 10
10

x9 x8
6

5 x7

4
2x
1 +2
x2
3

5
2 x x6

x 2
x1 x3 x4
−1 1 2 3 4 5 6 7 x1

Figura 9.8: Lógica general del método del Simplex en un problema de Progra-
mación Lineal

El criterio del Simplex de la variable básica xi , VxBi representa el incremento de Regla de


la función objetivo si xi aumenta una unidad. En la figura 9.9, considerando la entrada V B
solución básica x 1 , las variables no básicas de esa solución son x1 y x2 .

Si partiendo de x 1 , hacemos que x1 = 1, serı́a equivalente a desplazarse por el


eje de abscisas, hasta llegar al punto (1, 0). La función objetivo de este punto
es z = 1. Igualmente, si partiendo de x 1 ahora hacemos que x2 = 1, serı́a
equivalente a desplazarse por el eje de abscisas, hasta llegar al punto (0, 1). La
función objetivo de este punto es z = 2. Es decir, VxB1 = 1 y VxB2 = 2.

En efecto, tanto la entrada de x1 como la de x2 en la base, a partir de x 1 , dan


lugar a un incremento de la función objetivo, por lo que, según la regla de
entrada, ambas son potenciales candidatas para obtener una nueva solución
básica factible, mejor que x 1 .
Capı́tulo 9. INTERPRETACIÓN GRÁFICA 100

x2
x 10
10

x9 x8
6

5 x7

5
z= 2 x x6
2
z=
1 Δx2 = 1
z= 1
0
Δx1 = 1
x2 x3 x4
1
−1 x 1 2 3 4 5 6 7 x1

Figura 9.9: Interpretación gráfica de la regla de entrada en un problema de


Programación Lineal

El cada iteración del método del Simplex, entra una variable nueva en la base Regla de salida
con un valor que hace que una de las que era básica, se haga cero. Por ejem- pB
plo, si a partir de x 1 , decidimos que la variable x2 deje de ser cero, podemos
acceder a tres nuevas soluciones básicas:

si x1 = 2, las variables básicas son: x2 , h2 y h3 (solución básica x 5 ),


si x1 = 6, las variables básicas son: x2 , h1 y h3 (solución básica x 9 ) o,
si x1 = 10, las variables básicas son: x2 , h1 y h2 (solución básica x 10 ).

Lo anterior es lo esperado. Para el ejemplo anterior, en cada solución básica


existen tres variables básicas y dos no básicas, con lo que desde cada solución
básica, una vez decidida la variable de entrada, podemos acceder a otras tres
soluciones básicas si alguna de las tres las variables básicas sale de la base.

En el ejemplo anterior, las tres soluciones a las que se puede acceder desde
x1 son básicas, pero solo una es factible. La regla de salida del método del
Simplex garantiza que al entrar una nueva variable, el valor con el que esta
entra no hace ninguna de las variables negativas, por lo que siempre se accede
a una nueva solución básica factible.

Sabemos que una solución básica es óptima si V B ≤ 0, es decir, si al entrar Criterio de


cualquier variable no básica la función objetivo disminuye. En el ejemplo, po- optimalidad
demos apreciar en la figura 9.10 que la solución x 7 es óptima.
Capı́tulo 9. INTERPRETACIÓN GRÁFICA 101

x2
x 10
10

x9 x8
6

5 x7

5
2 x x6

x 2
x1 x3 x4
−1 1 2 3 4 5 6 7 x1

Figura 9.10: Interpretación gráfica del criterio de optimalidad en un problema


de Programación Lineal

En efecto, las variables no básicas de x 7 son h1 y h2 . La entrada en la base de


cada una de ellas supone desplazarse por las restricciones R2 y R1 , respectiva-
mente, tal y como aparece en la figura 9.10 según las fechas rojas. Los valores
de z para esas soluciones son peores que la de x 7 .
Capı́tulo 10

PROGRAMACIÓN PARAMÉTRICA

10.1. Introducción

Al modificar algunos elementos de un problema de Programación Lineal, co-


mo b o c (o ambos simultáneamente), es común que la solución óptima del
problema varı́e, ası́ como el valor de la función objetivo.

En este capı́tulo se estudia el impacto que tienen estas variaciones, que tı́pica- Objetivo
mente dependen de un parámetro λ (aunque puede haber otros), y se estudian
la solución y la ecuación de la función objetivo para cada rango de λ en el que
las variables básicas son las mismas.

10.2. Programación con c(λ)

10.2.1. Método general

Procedimiento general:

1. Resolución para un valor de λ0 .


2. Cálculo de V B (λ0 ).
3. Cálculo del λ1 y λ2 , tal que V B ≤ 0 si λ1 ≤ λ ≤ λ2 .
4. Para λ1 (ı́dem para λ2 ):
a) si λ1 es −∞ (si λ2 es ∞), no hay valores menores (mayores) de λ
que analizar.
b) en caso contrario: obtener la solución óptima múltiple para λ = λ1 :
1) Si es posible aplicar el método del Simplex, obtener una solu-
ción óptima básica alternativa y volver al punto 2.
2) Si no es posible aplicar el método del Simplex, es que no hay
solución factible fuera del valor de λ extremo estudiado.
Capı́tulo 10. PROGRAMACIÓN PARAMÉTRICA 103

10.2.2. Ejemplo c(λ)

max. z = 5x1 + 6x2 + 8x3


s.a.:
2x1 + 3x2 + 4x3 ≤ 25 (10.1)
3x1 + 2x2 + 1x3 = 20
x1 , x2 , x3 ≥ 0

x1 x2 x3 h1 a
-111/2 0 -1/2 0 -19/10 -2/5
x3 7/2 0 1/2 1 3/10 -1/5
x1 11/2 1 1/2 0 -1/10 2/5

Sea c1 = λ, si λ = 5, T0 es la tabla correspondiente a la solución óptima.

 
A continuación vamos a realizar el análisis para c(λ) = λ 6 8 , con
0 ≤ λ ≤ ∞.

Si λ modifica su valor, se modificará el vector de criterios del Simplex V B (λ).


Siempre y cuando V B (λ) ≤ 0 las actividades básicas serán x1 y x3 , con los
niveles de realización de la tabla T0 . El criterio del Simplex V B (λ) es:

V B (λ) = c − c B B −1 A = c − c B p =
 
    0 1/2 1 3/10
λ 6 8 0 − 8 λ = (10.2)
1 1/2 0 −1/10
 
0 4−λ 2 0 λ−2410

Las variables básicas son x1 y x3 siempre y cuando V B (λ). Es decir:

4−λ≤0
⇒ 4 ≤ λ ≤ 24 (10.3)
λ − 24 ≤ 0

Si 4 ≤ λ ≤ 24, la tabla correspondiente a la solución óptima es T0 (λ):


Capı́tulo 10. PROGRAMACIÓN PARAMÉTRICA 104

T0 (λ) x1 x2 x3 h1
11λ 4−λ λ−24
−28 − 2 0 2 0 10
x3 7/2 0 1/2 1 3/10
x1 11/2 1 1/2 0 -1/10

Si λ = 4, la tabla se convierte en TA , correspondiente a un óptimo múltiple. Si


x2 entra en la base y x3 sale de la misma, se obtiene una nueva solución a la
que le corresponde la tabla TB .

TA = T0 (λ = 4) x1 x2 x3 h1
-50 0 0 0 -2
x3 7/2 0 1/2 1 3/10
x1 11/2 1 1/2 0 -1/10

TB = T1 (λ = 4) x1 x2 x3 h1
-50 0 0 0 -2
x2 7 0 1 2 3/5
x1 2 1 0 -1 -2/5

Si λ modifica su valor, se modificará el vector de criterios del Simplex V B (λ).


Siempre y cuando V B (λ) ≤ 0 las actividades básicas serán x1 y x2 , con los
niveles de realización de la tabla T2 . El criterio del Simplex V B (λ) es:

V B (λ) = c − c B B −1 A = c − c B p =
 
    0 1 2 3/5
λ 6 8 0 − 6 λ = (10.4)
1 0 −1 −2/5
 
0 0 λ − 4 2λ−18 5

El criterio del Simplex de la tabla T2 nunca se anula para valores de λ tales que
λ ≤ 4.

Es decir, para cualquier valor de λ menor que 4, las variables básicas son x1
y x2 . Existe aquı́ una aparente contradicción por el hecho de que si c1 es muy
grande en valor absoluto y negativo, parece sensato pensar que x1 deberı́a
no ser una variable básica porque deteriora notablemente la función objetivo.
Por ejemplo, parace razonable pensar que si c1 = −1000, si z representa el
beneficio de un sistema real, estarı́amos perdiendo 1000 unidades monetarias,
con lo que parece intuitivo pensar que esta variable no deberı́a estar en la
solución final.
Capı́tulo 10. PROGRAMACIÓN PARAMÉTRICA 105

La explicación es la siguiente. Si las variables básicas son x1 y x2 (aún cuando


c1 = λ 0), podemos tratar que entre en la base:

x3 . Para cualquier valor positivo de x3 , x1 aumenta, de forma que la so-


lución es aún peor en términos de la función objetivo (por eso, el criterio
del Simplex de x3 siempre es negativo).
h1 . Para cualquier valor positivo de h1 , x1 aumenta, de forma que la so-
lución es aún peor en términos de la función objetivo (por eso, el criterio
del Simplex de h1 siempre es negativo).

Es decir, el criterio del Simplex nos dice cómo se modifica la z cuando una
variable no básica entra en la base con valor 1. Dada la estructura de las res-
tricciones, hacer que cualquiera de las variables no básicas crezca hace que x1
crezca también, con lo que la solución a la que se llega es peor, ası́ que para
cualquier λ ≤ 4, las variables básicas de la solución óptima son x1 y x2 .

Alternativamente, se puede explicar la aparente paradoja por el hecho de que


cualquier solución para la cual x1 = 0, la solución correspondiente es no facti-
ble.

Volviendo a la tabla T0 (λ), si λ = 24, la tabla se convierte en la tabla TC ,


correspondiente a un óptimo múltiple. Al entrar h1 en la base y salir x3 de la
misma, se obtiene la tabla TD correspondiente a la solución óptima alternativa:

TC = T0 (λ = 24) x1 x2 x3 h1
−160 0 -10 0 0
x3 7/2 0 1/2 1 3/10
x1 11/2 1 1/2 0 -1/10

TD = T2 (λ = 24) x1 x2 x3 h1
−160 0 -10 0 0
h1 35/3 0 5/3 10/3 1
x1 20/3 1 2/3 1/3 0

De nuevo, si λ modifica su valor, se modificará el vector de criterios del Simplex


V B (λ). Siempre y cuando V B (λ) ≤ 0 las actividades básicas serán x1 y h1 , con
los niveles de realización de la tabla T4 . El criterio del Simplex V B (λ) es:

V B (λ) = c − c B B −1 A = c − c B p =
 
    0 5/3 10/3 1
λ 6 8 0 − 0 λ = (10.5)
1 2/3 1/3 0
 
0 6−2λ 3
24−λ
3 0
Capı́tulo 10. PROGRAMACIÓN PARAMÉTRICA 106

El criterio del Simplex no se hace positivo para ningún valor de λ tal que λ >
24.

En resumen:

Variables básicas: x1 = 2 y x2 = 7 si λ ≤ 4 con z = 42 + 2λ


Variables básicas: x1 = 11/2 y x3 = 7/2 si 4 ≤ λ ≤ 24 con z = 28 + 11λ/2
Variables básicas: x1 = 20/3 y h1 = 35/3 si 24 ≥ λ con z = 20λ/3

T1 T0 T2

{x1 , x2 } {x1 , x3 } {x1 , h1 }

V B ≤ 0, V B ≤ 0,
B2 B
u (λ) u (λ) uB4 (λ)

λ
4 24
{x1 = 2, x2 = 7} {x1 = 11
, x3 = 7
} {x1 = 20
, h1 = 35
}
2 2 3 3

z = 42 + 2λ z = 28 + 11
λ z = 20
λ
2 3

Figura 10.1: Programación paramétrica con c(λ)

z
300

250

20 λ
3
200 =
z

150

11 λ
+ 2
100 28
z=

50
z = 42 + 2λ

5 10 15 20 25 30 35 λ

Figura 10.2: Programación paramétrica con c(λ): evolución de z frente a λ


Capı́tulo 10. PROGRAMACIÓN PARAMÉTRICA 107

10.3. Programación con b(λ)

10.3.1. Método general

Procedimiento general:

1. Resolución para un valor de λ0 .


2. Cálculo de uB (λ0 ).
3. Cálculo del λ1 y λ2 , tal que uB ≤ 0 si λ1 ≤ λ ≤ λ2 .
4. Para λ1 (ı́dem para λ2 ):
a) Si λ1 es −∞ (si λ2 es ∞), no hay valores menores (mayores) de λ
que analizar.
b) En caso contrario, obtener la degenerada para λ = λ1 :
1) Si es posible aplicar el método del Lemke, iterar para obtener
otra base de la misma solución degenerada y volver al punto 1.
2) Si no es posible aplicar el método del Lemke, entonces no hay
solución factible fuera del valor de λ extremo estudiado.

10.3.2. Ejemplo b(λ)

max. z = 3x1 + 4x2 + 2x3 + 3x4


s.a.:
30x1 + 10x2 + 10x3 + 15x4 ≤ 120 (10.6)
50x1 + 50x2 + 30x3 + 30x4 ≤ 150
x1 , x2 , x3 , x4 ≥ 0

T0 x1 x2 x3 x4 h1 h2
-15 -2 -1 -1 0 0 -1/10
h1 45 5 -15 -5 0 1 -1/2
x4 5 5/3 5/3 1 1 0 1/30

 T
b(λ) = 120 − λ 150 + λ

    
B −1 1 −1/2 120 − λ 45 − 3λ/2
u (λ) = B b(λ) = = (10.7)
0 1/30 150 + λ 5 + λ/30
Capı́tulo 10. PROGRAMACIÓN PARAMÉTRICA 108

La siguiente tabla es válida si uB ≥ 0. Es decir, si −150 ≤ λ ≤ 30

T0 (λ) x1 x2 x3 x4 h1 h2
-15 -2 -1 -1 0 0 -1/10
h1 45 − 3λ/2 5 -15 -5 0 1 -1/2
x4 5 + λ/30 5/3 5/3 1 1 0 -1/30

Si λ = 30:

T0 (λ = 30) x1 x2 x3 x4 h1 h2
-18 -2 -1 -1 0 0 -1/10
h1 0 5 -15 -5 0 1 -1/2
x4 6 5/3 5/3 1 1 0 -1/30

T1 (λ = 30)
-18 -7/3 0 -2/3 0 -1/60 -1/60
x2 0 -1/3 1 1/3 0 -2/30 1/30
x4 6 20/9 0 4/9 1 1/9 -2/90

  
−1/60 1/30 120 − λ
uB (λ) = B −1 b(λ) = =
1/9 −2/90 150 + λ
  (10.8)
(−30 + λ)/10
(900 − 12λ)/90

La siguiente tabla es válida si uB ≥ 0. Es decir, si 30 ≤ λ ≤ 75.

T1 (λ) x1 x2 x3 x4 h1 h2
-18 -7/3 0 -2/3 0 -1/60 -1/60
x2 (−30 + λ)/10 -1/3 1 1/3 0 -2/30 1/30
x4 (900 − 12λ)/90 20/9 0 4/9 1 1/9 -2/90

Si λ = 75:

T1 (λ = 75) x1 x2 x3 x4 h1 h2
-18 -7/3 0 -2/3 0 -1/60 -1/60
x2 9/2 -1/3 1 1/3 0 -2/30 1/30
x4 0 20/9 0 4/9 1 1/9 -2/90

T2 (λ = 75)
-18 -9 0 -2 -3 -2/5 0
x2 9/2 3 1 1 3/2 1/10 0
h2 0 -100 0 20 -45 -5 1
Capı́tulo 10. PROGRAMACIÓN PARAMÉTRICA 109

    
1/10 0 120 − λ (120 − λ)/10
uB (λ) = B −1 b(λ) = = (10.9)
−5 1 150 + λ 6λ − 450

La siguiente tabla es válida si uB ≥ 0. Es decir, si 75 ≤ λ ≤ 120.

T2 (λ) x1 x2 x3 x4 h1 h2
-18 -9 0 -2 -3 -2/5 0
x2 (120 − λ)/10 3 1 1 3/2 1/10 0
h2 6λ − 450 -100 0 20 -45 -5 1

Para λ > 120 no existe solución factible del problema.

En resumen:

No existe solución factible para λ < −150


Variables básicas: h1 = 45 − 3λ
2 y x4 = 5 +
λ
30 si −150 ≤ λ ≤ 30
−30+λ 900−12λ
Variables básicas: x2 = 10 y x4 = 90 si 30 ≤ λ ≤ 75
120−λ
Variables básicas: x2 = y h2 = 6λ − 450 si 75 ≤ λ ≤ 120
10
No existe solución factible para λ > 120

T0 T1 T2

No {h1 , x4 } {x2 , x4 } {x2 , h2 } No


f actible f actible
B B1 B2
V f ijo, V f ijo, V f ijo,
uB (λ) uB1 (λ) uB2 (λ)

λ
-150 30 75 120
3 λ λ
{h1 = 45 − 2 λ, {x2 = −3 + 10 , {x2 = 12 − 10 ,

x4 = 5 +
λ
x4 = 10 −
2 h2 = −450 + 6λ}
30 } 15 λ}

z = 15 +
λ z = 18 z = 48 −
2
10 5λ

Figura 10.3: Programación paramétrica con b(λ)


Capı́tulo 10. PROGRAMACIÓN PARAMÉTRICA 110

100z

80

60

40

20 z = 18 z=
1 λ 48
+ −
z = 15
10 2
5 λ

−150 −100 −50 50 100 150 λ

−20

Figura 10.4: Programación paramétrica con b(λ): evolución de z frente a λ

10.4. Ejemplo c(λ) y b(λ)

max. z = 2x1 + 4x2 + x3


s.a.:
2x1 + 5x2 + 1x3 ≤ 40 (10.10)
x1 + 4x2 + 2x3 ≤ 24
x1 , x2 , x3 ≥ 0
 T  
b(λ) = 40 24 − 3λ y c(λ) = 2 4+λ 1 0 0 , con λ ≥ 0.

Solución óptima para λ = 0:

x1 x2 x3 h1 h2
-40 0 -1 0 -1 0
x1 56/3 1 2 0 2/3 -1/3
x3 8/3 0 1 1 -1/3 2/3

V B (λ) = c − c B B −1 A = c − c B p B =
 
    1 2 0 2/3 −1/3
2 4+λ 1 0 0 − 2 1 = (10.11)
0 1 1 −1/3 2/3
 
0 λ − 1 0 −1 0

    
B −1 2/3 −1/3 40 1 56 + 3λ
u (λ) = B b(λ) = = (10.12)
−1/3 2/3 24 − 3λ 3 8 − 6λ
Capı́tulo 10. PROGRAMACIÓN PARAMÉTRICA 111

VB ≤ 0 ⇒ λ ≤ 1 (10.13)

4
uB ≥ 0 ⇒ λ ≤ (10.14)
3

La condición más restrictiva es λ ≤ 1, ya que cuando esto ocurre, el problema


tiene dos soluciones básicas óptimas factibles. Con λ > 1, las soluciones en las
que x1 y x3 son variables básicas son no factibles. A continuación figuran tres
tablas, correspondientes, respectivamente a la solución básica con x1 y x3 en
función de λ, la tabla para λ = 1 y la solución básica óptima alternativa para
ese valor de λ.

T0 (λ) x1 x2 x3 h1 h2
0 λ−1 0 -1 0
x1 (56 + 3λ)/3 1 2 0 2/3 -1/3
x3 (8 − 6λ)/3 0 1 1 -1/3 2/3

T0 (λ = 1)
-40 0 0 0 -1 0
x1 59/3 1 2 0 2/3 -1/3
x3 2/3 0 1 1 -1/3 2/3

T1 (λ = 1)
-40 0 0 0 -1 0
x1 55/3 1 0 -2 4/3 -5/3
x2 2/3 0 1 1 -1/3 2/3

V B (λ) = c − c B B −1 A = c − c B p B =
 
    1 0 −2 4/3 −5/3
2 4+λ 1 0 0 − 2 4+λ =
0 1 1 −1/3 2/3
 
0 0 1 − λ (λ − 4)/3 (2 − 2λ)/3)
(10.15)

    
B −1 4/3 −5/3 40 1 40 + 15λ
u (λ) = B b(λ) = =
−1/3 2/3 24 − 3λ 3 8 − 6λ
(10.16)
Capı́tulo 10. PROGRAMACIÓN PARAMÉTRICA 112

VB ≤ 0 ⇒ 1 ≤ λ ≤ 4 (10.17)

4
uB ≥ 0 ⇒ −3/8λ ≤ (10.18)
3

Por lo tanto, para que las variables básicas x1 y x2 conduzcan a una solución
óptima y factible 1 ≤ λ ≤ 43 . El extremo inferior de este intervalo coincide, na-
turalmente, con el extremo superior del intervalo obtenido para las soluciones
básicas con x1 y x3 .

Con λ = 43 se obtiene una solución degenerada. Con λ > 43 se obtiene una solu-
ción básica no factible, por lo que deja de ser la solución óptima y factible del
problema. A continuación figuran las siguientes tres tablas: la correspondiente
a x1 y x2 como variables básicas, en función de λ, la anterior con λ = 43 y la
solución obtenida al aplicar Lemke a partir de la anterior.

T1 (λ) x1 x2 x3 h1 h2
0 0 1−λ (λ − 4)/3 (2 − 2λ)/3
x1 (40 + 15λ)/3 1 0 -2 4/3 -5/3
x2 (8 − 6λ)/3 0 1 1 -1/3 2/3

T1 (λ = 43 )
0 0 -1/3 -8/9 -2/9
x1 20 1 0 -2 4/3 -5/3
x2 0 0 1 1 -1/3 2/3

T2 (λ = 43 )
0 -8/3 -3 0 -2
x1 20 1 4 2 0 1
h1 0 0 -3 -3 1 -2

V B (λ) = c − c B B −1 A = c − c B p B =
 
    1 4 2 0 1
2 4+λ 1 0 0 − 2 0 = (10.19)
0 −3 −3 1 −2
 
0 −4 + λ −3 0 −2

    
B −1 0 1 40 24 − 3λ
u (λ) = B b(λ) = = (10.20)
1 −2 24 − 3λ −8 + 6λ
Capı́tulo 10. PROGRAMACIÓN PARAMÉTRICA 113

VB ≤ 0 ⇒ λ ≤ 4 (10.21)

4
uB ≥ 0 ⇒ ≤λ≤8 (10.22)
3

Por lo tanto, para que las variables básicas x1 y h2 conduzcan a una solución
óptima y factible 43 ≤ λ ≤ 4. El extremo inferior de este intervalo coincide, na-
turalmente, con el extremo superior del intervalo obtenido para las soluciones
básicas con x1 y x2 .

Con λ = 4 se obtiene una solución degenerada. Con λ > 4 se obtiene una solu-
ción básica no óptima, por lo que deja de ser la solución óptima y factible del
problema. A continuación figuran las siguientes tres tablas: la correspondiente
a x1 y h1 como variables básicas, en función de λ, la anterior con λ = 4 y la
solución obtenida al aplicar el método del Simplex a patir de la anterior.

T2 (λ) x1 x2 x3 h1 h2
0 −4 + λ -3 0 -2
x1 24 − 3λ 1 4 2 0 1
h1 −8 + 6λ 0 -3 -3 1 -2

T2 (λ = 4)
0 0 -3 0 -2
x1 12 1 4 2 0 1
h1 16 0 -3 -3 1 -2

T3 (λ = 8)
0 0 -3 0 -2
x2 3 1/4 1 1/2 0 1/4
h1 25 3/4 0 -3/2 1 -5/4

V B (λ) = c − c B B −1 A = c − c B p B =
 
    1/4 1 1/2 0 1/4
2 4+λ 1 0 0 − 4+λ 0 =
3/4 0 −3/2 1 −5/4
 
1 − λ4 0 −1 − λ2 0 −1 − λ4
(10.23)
Capı́tulo 10. PROGRAMACIÓN PARAMÉTRICA 114

    
0 1/4 40 1 24 − 3λ
uB (λ) = B −1 b(λ) = = (10.24)
1 −5/4 24 − 3λ 4 40 + 15λ

VB ≤ 0 ⇒ λ ≥ 4 (10.25)

uB ≥ 0 ⇒ λ ≤ 8 (10.26)

Por lo tanto, para que las variables básicas x2 y h1 conduzcan a una solución
óptima y factible 4 ≤ λ ≤ 8. El extremo inferior de este intervalo coincide, na-
turalmente, con el extremo superior del intervalo obtenido para las soluciones
básicas con x1 y x2 .

Con λ = 8 se obtiene una solución degenerada. Con λ > 8 se obtiene una solu-
ción básica no óptima, por lo que deja de ser la solución óptima y factible del
problema. A continuación figuran las siguientes dos tablas: la correspondiente
a x2 y h1 como variables básicas, en función de λ, la anterior con λ = 8. Se
observa que para la variable x2 no existen tasas de sustitución negativas, con
lo que si λ > 4 no existe solución factible, porque no es posible que x2 salga
de la base.

T3 (λ) x1 x2 x3 h1 h2
1 − λ4 0 −1 − λ2 0 −1 − λ4
x2 (24 − 3λ)/4 1/4 1 1/2 0 1/4
h1 (40 + 15λ/4 3/4 0 -3/2 1 -5/4

T3 (λ = 8)
-1 0 -5 0 -3
x2 0 1/4 1 1/2 0 1/4
h1 40 3/4 0 -3/2 1 -5/4

En resumen:

Variables básicas: x1 = (56 + 3λ)/3 y x3 = (8 − 6λ)/3 si 0 ≤ λ ≤ 1


Variables básicas: x1 = (45 + 15λ)/3 y x2 = (8 − 6λ)/3 si 1 ≤ λ ≤ 4/3
Variables básicas: x1 = 24 − 3λ y h1 = −8 + 6λ si 4/3 ≤ λ ≤ 4
Variables básicas: x1 = (24 − 3λ)/4 y h2 = (40 + 15λ)/4 si 4 ≤ λ ≤ 8
No existe solución factible para λ > 8
Capı́tulo 10. PROGRAMACIÓN PARAMÉTRICA 115

T0 T1 T2 T3

{x1 , x3 } {x1 , x2 } {x1 , h1 } {x2 , h1 } No


f actible
V B (λ), V B1 (λ), V B2 (λ), V B3 (λ),
uB (λ) uB1 (λ) uB2 (λ) uB3 (λ)

λ
0 1 4 4 8
3
{x1 = 56+3λ
, {x1 = 40+15λ
, {x1 = 24 − 3λ, {x1 = 6 − 3λ
3 3 4 ,
x3 = 8−6λ
} x2 = 8−6λ
} h1 = −8 + 6λ} h2 = 40+15λ
}
3 3 4

Figura 10.5: Programación paramétrica con c(λ) y b(λ)


Capı́tulo 11

DUALIDAD

11.1. Introducción

Existen dos problemas de optimización lineal asociados cada uno de los cuales
proporciona información sobre el otro, de tal manera que la solución óptima de
uno de los problemas nos permite conocer una solución óptima del problema
asociado. A los dos problemas asociados se les denomina problemas duales y
su relación se va a tratar en este capı́tulo.

La dualidad es una parte clave en la Programación Lineal que permite que tenga ¿Por qué?
sentido toda la teorı́a correspondiente previa. ¿Por qué estudiar la dualidad?
Hay varias razones:

Por un lado, aporta elementos clave que van a ayudar a comprender la


Programación Lineal.
Es una herramienta útil para resolver problemas de Programación Lineal;
cuando hay mucha diferencia entre filas y columnas (hay distinto coste
computacional) puede ser interesante resolver el problema dual en lugar
del problema primal.
El problema dual ayuda a conocer la factibilidad y la no acotación del
problema primal y viceversa.
Los conceptos de dualidad son fundamentales para el desarrollo de técni-
cas más avanzadas (descomposición de Benders, etc.).
La dualidad ofrece otra forma de ver el significado de los precios sombra.
La dualidad ofrece otra visión del método de Lemke (o dual del Simplex).

Para introducir el tema vamos a ver un ejemplo sencillo en el se pueden obser-


var de forma rápida las relaciones entre un problema y su dual (aunque aún
no se haya descrito cómo construir el problema dual de uno dado).

Una empresa internacional produce y vende estos dos tipos de supercompu- Ejemplo de
tadores: el modelo 1 y el modelo 2. En la elaboración de ambos tipos de equi- problema
pos hay que destacar dos procesos, el de ensamblado final y el de empaque- primal
tado (procesos P1 y P2). Esta empresa dispone mensualmente de 2000 horas
dedicadas al proceso de ensamblado y 1000 horas dedicadas al proceso de
empaquetado, además se sabe que los tiempos requeridos para realizar dichas
Capı́tulo 11. DUALIDAD 117

operaciones para cada uno de los tipos de supercomputadores son los que se
muestran en la tabla siguiente:

Horas requeridas
Proceso Modelo 1 Modelo 2 Horas disponibles
Montaje 6 4 2000
Embalaje 2 4 1000

El beneficio neto obtenido tras la venta de un supercomputador del modelo


1 es de 400 u.m. y tras la venta de una unidad tipo 2 es de 600 u.m. Con
esta información se plantea y resuelve inicialmente un problema que permita
determinar el número de unidades de cada tipo de ordenador con objeto de
maximizar el beneficio total.

Se definen las variables x1 y x2 como el número de ordenadores elaborados


de tipo 1 y 2 respectivamente, con estas variables el problema queda:

max. z = 400x1 + 600x2


s.a.:
6x1 + 4x2 ≤ 2000 (11.1)
2x1 + 4x2 ≤ 1000
x1 ≥ 0, x2 ≥ 0

La solución óptima de dicho problema es elaborar 250 unidades del tipo 1 y Solución óptima
125 unidades del modelo 2 con un beneficio de 175000 u.m. En la figura 11.1 del primal
se pueden ver las soluciones por las que se pasa hasta x ∗ = (250, 125). La
tabla correspondiente a la solución óptima es la siguiente:

-175000 0 0 -25 -125


x1 250 1 0 1/4 -1/4
x2 125 0 1 -1/8 3/8

Ahora podemos cambiar el enfoque sobre el problema planteado, nuestro Problema dual
propósito va a ser determinar los precios a los cuales esta empresa deberı́a asociado
valorar sus recursos (horas de trabajo de los dos procesos) de tal manera que
puedan determinar el mı́nimo valor total al cual estarı́a dispuesta a arrendar o
vender los recursos.
Capı́tulo 11. DUALIDAD 118

600
x2
z
500

400

300

200

(250, 125)
100

x1
100 200 300 400 500 600

Figura 11.1: Solución gráfica del problema primal

Sean y1 e y2 , la renta percibida por hora de los procesos P1 y P2 respectiva-


mente (precios de los recursos). La renta total obtenida serı́a: 2000y1 +1000y2 .
Se desea como objetivo encontrar el mı́nimo valor de 2000y1 + 1000y2 de
modo que la empresa pueda, de una manera inteligente, analizar algunas pro-
puestas de alquiler o compra de todos los recursos como un paquete total.

Se consideran algunas condiciones. Por una parte, los precios pagados por el Restricciones del
alquiler serı́an no negativos, es decir, y1 ≥ 0 e y2 ≥ 0. Por otra parte, los pre- problema dual
cios y1 e y2 deben ser competitivos con las alternativas disponibles, es decir,
el beneficio que la empresa debe obtener por los recursos necesarios para ela-
borar un supercomputador al menos deben ser iguales a los que obtendrı́a al
utilizar dichos recursos en la elaboración del computador, esto es, para el mo-
delo 1 tendremos 6y1 + 2y2 ≥ 400 y para el modelo 2 queda 4y1 + 4y2 ≥ 600.
Con esto se garantiza la obtención de precios con los que al menos iguala el
beneficio obtenido al producir el mismo los equipos. El problema planteado
queda:

min. s = 2000y1 + 1000y2


s.a.:
6y1 + 2y2 ≥ 400 (11.2)
4y1 + 4y2 ≥ 600
y1 ≥ 0, y2 ≥ 0
Capı́tulo 11. DUALIDAD 119

y2
s
500

400

300

200

(25, 125)
100

100 200 y1

Figura 11.2: Solución gráfica del problema dual

La resolución de este problema proporciona un valor de 25 u.m. para cada Solución óptima
unidad del primer recurso (montaje) y un valor de 125 u.m. para cada unidad del problema
del segundo (embalaje), con un beneficio de 175000 u.m., igual al obtenido en dual
el planteamiento del primer problema. Este nuevo problema es el problema
dual del problema planteado originalmente.

En la siguiente tabla se puede ver la tabla correspondiente a la solución óptima


de este segundo subproblema:

175000 0 0 -250 -125


y1 25 1 0 -1/4 1/8
y2 125 0 1 1/4 -3/8

11.2. Aspectos clave sobre la dualidad

11.2.1. El problema dual

Dado el problema de Programación Lineal:


Capı́tulo 11. DUALIDAD 120

max. z = cx
Ax ≤ b (11.3)
x≥0

se le define otro problema:

min. s = yb min. s = bT y T
yA ≥ c (11.4) AT y T ≥ c T (11.5)
y ≥0 y ≥0

Al problema (11.3) se le denomina primal y a (11.7) se le denomina dual.

El problema dual se puede expresar también como (11.8). Esta formulación


tiene una forma más similar a la del primal con la salvedad de que incluye
elementos traspuestos.

11.2.2. El dual del dual es el primal

En efecto, dado el problema primal:

max. z = cx
Ax ≤ b (11.6)
x≥0

tiene como problema dual asociado:

min. s = yb
yA ≥ c (11.7)
y ≥0

El problema dual puede expresarse como:

max (−s) = −bT y T


− AT y T ≤ −c T (11.8)
y ≥0

El problema (11.8), considerado como un problema primal, tiene como proble-


ma dual asociado el siguiente problema de Programación Lineal:

min u = t(−c T )
t(−AT ) ≥ −bT (11.9)
t≥0
Capı́tulo 11. DUALIDAD 121

El problema dual (11.9) puede expresarse como:

max (−u) = ct T
At T ≤ b (11.10)
T
t ≥0

Al comparar el problema (11.6) y el problema (11.10) se observa que:

el vector c es el mismo en los dos problemas,


la matriz A es la misma en los dos problemas,
el vector b es el mismo en los dos problemas.

Con lo cual, los vectores x y t T y los valores de z y u son iguales. Se comprueba El dual del dual
que, en efecto, el problema dual asociado a un problema dual coincide con el es el primal
problema primal inicial.

11.2.3. Relaciones entre el problema primal y el problema dual

De la propia definición de problema primal y problema dual asociado se dedu- Relaciones entre
cen unas primeras relaciones entre ambos problemas: ambos
problemas
una variable del problema primal genera una restricción en el problema
dual;
una restricción del problema primal genera una variable en el problema
dual;
una restricción de desigualdad en el problema primal genera una variable
no negativa en el problema dual.

Existen otras relaciones no evidentes entre ambos problemas:

una restricción de igualdad en el problema primal genera una variable


libre de signo en el problema dual;
una variable libre de signo en el problema primal genera una restricción
de igualdad en el problema dual.

En efecto, la restricción del problema primal

a31 x1 + a32 x2 + a33 x3 + a34 x4 = b3

es equivalente a :

a31 x1 + a32 x2 + a33 x3 + a34 x4 ≤ b3

a31 x1 + a32 x2 + a33 x3 + a34 x4 ≥ b3


Capı́tulo 11. DUALIDAD 122

La segunda restricción se puede expresarse como:

−a31 x1 − a32 x2 − a33 x3 − a34 x4 = −b3

La primera inecuación corresponde a una restricción en el problema primal y


genera en el problema dual una variable que se denominará y3+ . Por lo tanto,
se obtiene en dicho problema:

un término en la función objetivo: b3 y3+


una columna en el sistema de restricciones técnicas:
• +a31 y3+
• +a32 y3+
• +a33 y3+
• +a34 y3+

La otra inecuación, vista de una forma u otra, genera a su vez en el problema


dual la variable y3− y, por lo tanto:

un término en la función objetivo: -b3 y3−


una columna en el sistema de restricciones técnicas:
• −a31 y3−
• −a32 y3−
• −a33 y3−
• −a34 y3−

Por lo que, la restricción a nivel de igualdad del problema primal genera en el


problema dual:

dos términos en la función objetivo: b3 (y3+ − y3− )


dos columnas en el sistema de restricciones técnicas:
• +a31 y3− − a31 y3−
• +a32 y3− − a32 y3−
• +a33 y3− − a33 y3−
• +a34 y3− − a34 y3−

Efectuando un cambio de variable:

y3 = y3+ − y3−

y3 será libre de signo siempre que y3+ y y3− sean no negativas y, además, no
puedan estar ambas en la solución del problema. En dicho caso:

1. si y3+ ≥ 0 y y3− = 0 entonces y 3 = y3+ ≥ 0


2. si y3− ≥ 0 y y3+ = 0 entonces y 3 = −y3− ≤ 0
Capı́tulo 11. DUALIDAD 123

Las dos condiciones anteriores se cumplen ya que:

se parte de un problema primal con restricciones técnicas de desigual-


dad, lo que genera en el problema dual variables no negativas, es decir
y3+ ≥ 0 y y3− ≥ 0.
el criterio del Simplex de la variable y3+ respecto a cualquier solución
básica es:

−1
VyB+ = b3 − bB Bdual (a31 , a32 , a33 , a34 )T
3

y el criterio del Simplex de la variable y3− respecto a cualquier solución


básica es:

−1
VyB− = −b3 + bB Bdual (−a31 , −a32 , −a33 , −a34 )T
3

es decir, VyB+ = V B y3− lo que implica que si VyB+ > 0 ⇒ VyB− < 0 y que si
3 3 3
VyB+ < 0 ⇒ V B y3− > 0.
3

Por lo cual, si interesa introducir en la solución y3+ no interesa introducir


y3− , y si no interesa introducir y3+ en la solución sı́ interesa introducir y3− .

Cuando una de las variables pertenece a la solución, por ejemplo y3∗ , el crite-
rio del Simplex de ambas variables tiene un valor de V B y3+ = 0 y V B y3− = 0
pero al analizar el vector de tasas de sustitución se comprueba que Py3+ =
(0, ..., 1, ..., 0)T y P y3− = (0, ..., −1, ..., 0)T por lo cual no es posible sustituir y3+
por y3− sin que la solución deje de ser factible.

Con esto se comprueba que una restricción de igualdad en el problema primal


genera en el problema dual una variable libre de signo.

Además, en el epı́grafe anterior (11.2.2) se comprobaba que el problema dual


de un problema dual es el problema primal, por lo cual ya se puede afirmar
que una variable libre de signo en el problema primal genera una restricción
de igualdad en el problema dual.

11.3. La función objetivo

El valor de la función objetivo para cualquier solución factible del problema pri-
mal es una cota inferior del valor de la función objetivo para cualquier solución
factible del problema dual.
Capı́tulo 11. DUALIDAD 124

Es decir: z0 ≤ s 0

En efecto, se parte de las dos soluciones factibles de los dos problemas aso-
ciados primal y dual x 0 e y 0 para las cuales el valor de cada función objetivo
es:
z0 = cx 0 s0 = y 0b

Además, al ser x 0 solución del problema primal, se cumple que Ax 0 ≤ b. Al


premultiplicar por y 0 esta expresión anterior, como y 0 es factible, se cumple
que:
y 0 Ax 0 ≤ y 0 b

Por otra parte, al ser y 0 solución del problema dual, se cumple que y 0 AT ≥ c.
Al postmultiplicar por x 0 la expresión anterior, como x 0 es factible, se cumple
que:
y 0 Ax 0 ≥ cx 0

De ambas expresiones se obtiene que:

cx 0 ≤ y 0 Ax 0 ≤ y 0 b

es decir:
z0 = cx 0 ≤ y 0 b = s 0

luego:
z0 ≤ s 0

s 0 dual

z0 ≤ s 0

z0 primal

Figura 11.3: z0 ≤ s 0

Corolario 1. El valor de la función objetivo del problema primal de máximo


para cualquier solución factible es una cota inferior del mı́nimo valor de la
función objetivo del dual, y recı́procamente, el valor de la función objetivo del
problema dual de mı́nimo para cualquier solución factible dual es una cota
superior del máximo valor de la función objetivo del primal (figura 11.3).
Capı́tulo 11. DUALIDAD 125

Corolario 2. Si el problema primal es factible y su solución es no acotada,


(z → ∞), entonces el problema dual no tiene solución. Análogamente, si el
problema dual es factible pero con solución no acotada, (s → −∞), entonces el
problema primal no tiene solución factible.

11.4. Teorema fundamental de la dualidad

Dada una solución básica factible óptima, x ∗ , de un problema primal a la que le


corresponde una base B y un vector de multiplicadores del Simplex, π B = c B B −1 ,
la solución básica factible óptima del problema dual es y ∗ = π B .

En efecto:

1. y* es la solución del problema dual.


Como x* es solución óptima del problema primal se cumple:

VxB = c − c B B −1 A ≤ 0

identificando los términos correspondientes a las variables iniciales del


problema primal, c y A, y los términos correspondientes a las variables
de holgura del problema primal, cx h e I, la expresión anterior se trans-
forma en:
VxB = [(c, cx h ) − c B B −1 (A, I)] ≤ 0

por lo que:
c − c B B −1 A ≤ 0

cx h − c B B −1 I ≤ 0

En la expresión primera al sustituir c B B −1 = y ∗ se obtiene c −


y ∗ A ≤ 0, es decir, y ∗ A ≥ c, luego y ∗ = π B cumple las restriccio-
nes técnicas del problema dual.
Al sustituir y ∗ por su valor en la segunda expresión y cx h por su
valor se obtiene 0 − y ∗ I ≤ 0, es decir, y ∗ ≥ 0, luego el vector y ∗
es una solución factible del problema dual.

2. y ∗ = π B es solución óptima del problema dual.


En el epı́grafe anterior se comprobaba que el valor de la función objeti-
vo para una solución factible del problema primal es siempre una cota
inferior del valor de la función objetivo para una solución factible del
problema dual, es decir, z0 ≤ s 0 .
Por otra parte,
z∗ es el valor de la función objetivo correspondiente a la solución
óptima del problema primal, se cumple que z0 ≤ z∗ = cx ∗ .
s ∗ es el valor de la función objetivo correspondiente a la solución
óptima del problema dual, luego y ∗ b = s ∗ ≤ s 0 .
Capı́tulo 11. DUALIDAD 126

Además, z∗ = cx ∗ = c B B −1 b = π B b = y ∗ b = s ∗ .
Por lo tanto, podemos afirmar que z no puede tener un valor mayor y s
no puede tener un valor menor y ambos coinciden.

Corolario 3. Si el problema primal tiene solución óptima finita entonces el


problema dual también y, recı́procamente, si el problema dual tiene solución
óptima finita entonces el primal también.

Corolario 4. Si el problema primal es no factible entonces su dual o no tiene


solución o tiene solución no acotada y, recı́procamente, si el dual es no factible
entonces el primal o es no factible o tiene solución no acotada.

Dado un problema primal y su dual, sólo una de las siguientes afirmaciones es


cierta:

El primal tiene solución óptima (finita)  el dual tiene solución óptima


(finita).
Si el primal es no factible ⇒ el dual es no factible o tiene solución no
acotada.
Si el dual es no factible ⇒ el primal es no factible o tiene solución no
acotada.
Si el primal tiene solución no acotada ⇒ el dual es no factible.
Si el dual tiene solución no acotada ⇒ el primal es no factible.

11.4.1. Ejemplos de relaciones entre dos problemas duales

En este apartado se van a presentar cuatro ejemplos en los que se pueden


apreciar las posibles relaciones entre dos problemas duales.

En el primero de ellos se cumple que: el primal tiene solución óptima (finita) 


el dual tiene solución óptima (finita).

En los otros tres ejemplos se pueden observar las relaciones entre ambos en
las situaciones de no acotación y no factibilidad.

Ejemplo 1 - Primal con óptimo finito, dual con óptimo finito

max. z = 2x1 + x2 min. s = 4y1 + 2y2


s.a. : s.a. :
x1 + x2 ≤ 4 y1 + y2 ≥ 2
x1 − x2 ≤ 2 y1 − y2 ≥ 1
xi ≥ 0, ∀i yi ≥ 0, ∀i
Capı́tulo 11. DUALIDAD 127

x2 y2
z s

4 4

3 3

2 2

1 Solución 1
óptima Solución óptima

1 2 3 4 x1 1 2 3 4 y1

Primal con óptimo finito Dual con óptimo finito

Ejemplo 2 - Primal factible no acotado, dual no factible

max. z = 2x1 + x2 min. s = 4y1 + 2y2


s.a. : s.a. :
x1 − x2 ≤ 4 y1 + y2 ≥ 2
x1 − x2 ≤ 2 −y1 − y2 ≥ 1
xi ≥ 0, ∀i yi ≥ 0, ∀i

x2 y2
z 5 s
5

4
4
3
3
2
2
1
1

−1 1 2 3 4 5 y1

1 2 3 4 5 x1 −1

Primal factible no acotado Dual no factible

Ejemplo 3 - Primal no factible, dual factible no acotado

max. z = 2x1 + x2 min. s = −4y1 + 2y2


s.a. : s.a. :
−x1 − x2 ≤ −4 −y1 + y2 ≥ 2
x1 + x2 ≤ 2 −y1 + y2 ≥ 1
xi ≥ 0, ∀i yi ≥ 0, ∀i
Capı́tulo 11. DUALIDAD 128

x2 y2
z s
5 5

4 4

3 3

2 2

1 1

1 2 3 4 5 x1 1 2 3 4 5 y1

Primal no factible Dual factible no acotado

Ejemplo 4 - Primal no factible, dual no factible

max. z = 2x1 + x2 min. s = −4y1 + 2y2


s.a. : s.a. :
−x1 + x2 ≤ −4 −y1 + y2 ≥ 2
x1 − x2 ≤ 2 y1 − y2 ≥ 1
xi ≥ 0, ∀i yi ≥ 0, ∀i

x2 z y2 s
5 5

4 4

3 3

2 2

1 1

1 2 3 4 5 x1 1 2 3 4 5 y1

Primal no factible Dual no factible

11.4.2. Teorema de las holguras complementarias

El teorema fundamental de la dualidad permite, cuando se conoce la solución


óptima de uno de los problemas asociados, conocer cual es el valor de las
variables iniciales de su problema dual que son componentes de la solución
óptima de dicho problema. El teorema de las holguras complementarias per-
mite conocer el valor del resto de las componentes de la solución del problema
dual.
Capı́tulo 11. DUALIDAD 129

La demostración del teorema de las holguras complementarias se realizará


para las soluciones óptimas de los problemas duales asociados aunque se
cumple para todas las soluciones intermedias.

Se parte del conocimiento de las dos soluciones óptimas de los problemas


duales correspondientes, x ∗ e y ∗ .

El teorema fundamental de la dualidad dice que:

cx ∗ = y ∗ b

a la expresión anterior le restamos a ambos miembros −y ∗ Ax ∗ ,

cx ∗ − y ∗ Ax ∗ = y ∗ b − y ∗ Ax ∗

o lo que es lo mismo:

(c − y ∗ A)x ∗ = y ∗ (b − Ax ∗ )

En la igualdad anterior el primer miembro es un número negativo y el segundo


miembro es un número positivo, por lo cual, sólo es posible cuando ambos
términos son iguales a cero.

En efecto:

1. (c ∗ − y ∗ A)x ∗ = 0
- como x ∗ es la solución óptima del problema primal x ∗ ≥ 0
- como y ∗ es la solución óptima del problema dual

y ∗ A ≥ c ⇒ c − y ∗ A ≤ 0

y el producto de un número positivo por un número negativo es un


número negativo.
2. y ∗ (b − Ax ∗ )
- como y ∗ es la solución óptima del problema primal y ∗ ≥ 0
- como x ∗ es la solución óptima del problema dual

Ax ∗ ≤ b ⇒ b − Ax ∗ ≥ 0

y el producto de un número positivo por un número positivo es un número


positivo.

Por lo cual:

1. (c − y ∗ A)x ∗ = 0
2. y ∗ (b − Ax ∗ ) = 0
Capı́tulo 11. DUALIDAD 130

Veamos ambas expresiones:

(1) (c − y ∗ A)x ∗ = 0 . Para analizar esta expresión vectorial se identifica uno


de sus términos:
(cj − y ∗ Aj )xj∗ = 0

Si cj − y ∗ Aj < 0, la restricción del dual no se cumple como igualdad y,


por lo tanto, la holgura , yjh , de la restricción forma parte de la solución
óptima; es necesario que xj∗ = 0, lo que genera que la holgura de dicha
variable no forma parte de la solución óptima del primal.

Además ,
cj − y ∗ Aj ≤ 0
transformado en igualdad,

cj − y ∗ Aj + yjh = 0

luego
yjh = −(cj − y ∗ Aj ) = −(cj − π B Aj ) = −VxB∗
j

que es mayor que cero ya que el criterio del Simplex de una variable no
básica en la solución óptima del problema es negativo.
Si xj∗ > 0, es decir xj pertenece a la solución óptima del problema primal,
entonces cj − y ∗ Aj = 0, es decir la restricción que genera la variable
xj en el problema dual se cumple como una igualdad y, por lo tanto,
la variable de holgura correspondiente no forma parte de la solución
óptima del problema, ya que:

cj − y ∗ Aj ≤ 0 ⇒ cj − y ∗ Aj + yjh = 0

y como:
cj − y ∗ Aj = 0 ⇒ yjh = 0

Además, como yjh = −VxB∗ se comprueba que yjh = 0 ya que el criterio


j
del Simplex de una variable básica, xj∗ , es cero.

(2) y ∗ (b − Ax ∗ ) = 0.

Se puede obtener el mismo resultado anterior con las variables del dual y las
restricciones (por lo tanto las variables de holgura) del primal.

Como conclusión, la aplicación del teorema de las holguras complementarias


a dos problemas duales asociados permite saber que:

si una variable inicial de un problema pertenece a la solución óptima,


la restricción que genera dicha variable en el problema dual se cumple
como igualdad, es decir, la variable de holgura de dicha restricción no
pertenece a la solución óptima;
Capı́tulo 11. DUALIDAD 131

si una restricción de un problema de optimización lineal se cumple como


desigualdad, es decir, la variable de holgura correspondiente pertenece a
la solución óptima, la variable que genera dicha restricción es el proble-
ma dual no forma parte de la solución óptima de dicho problema dual;
finalmente, el valor del criterio del Simplex cambiado de signo de una
variable inicial del problema primal es el valor de la variable de holgura
de la restricción que genera dicha variable en el problema dual.

11.5. Interpretación económica de las variables duales en el


óptimo

Por el teorema fundamental de la dualidad los valores óptimos de las funcio-


nes objetivo de un problema primal [P] y su dual [D] son iguales, si x es una
solución básica factible y óptima no degenerada de [P] e y (calculada como
y = π B = c B B −1 ) podemos escribir:

z(x) = cx 1 x 1 + cx 2 x 2 + · · · + cx n x n = y 1 b1 + y 2 + · · · + y m bm = s(y)

Vamos a suponer ahora que se modifica un recurso, por ejemplo b1 , en una


cantidad “pequeña” Δb1 , de manera que la solución óptima del problema pri-
mal siga siendo factible, y en consecuencia óptima (c − c B B −1 A no varı́a). Es
decir, de manera tal que:
⎛ ⎞
Δb1
⎜ ⎟
⎜ 0 ⎟
−1 ⎜ ⎟
B (b + ⎜ . ⎟) ≥ 0
⎜ .. ⎟
⎝ ⎠
0
Consideremos ahora los problemas [P1] y [D1], donde [P1] es el problema
primal en el que se ha cambiado b por b + (Δb1 , 0, . . . , 0)T y [D1] es su
dual. La solución óptima de [P1], x̃, tiene la mismas variables básicas que x
(por la elección de Δb1 ) y el valor que toma la parte básica de dicha solu-
ción es ũB = B −1 [b + (Δb1, 0, · · · , 0)T ]. Por otro lado la solución de [D1] es
ỹ = π B = c B B −1 , las variables básicas de x̃ no han cambiado, entonces B sigue
siendo la misma que antes y ỹ = y, teniendo en cuenta estos hechos tenemos
que:

z(x̃) = cx̃1 x̃1 + cx̃2 x̃2 + · · · + cx̃n x̃n = ỹ1 (b1 + Δb1 ) + ỹ2 + · · · + ỹm bm =

= (y 1 b1 + y 2 + · · · + y m bm ) + yΔb1 = S(y) + yΔb1 = Z((x)) + yΔb1

De esta expresión se desprende que el valor óptimo de la variable dual y 1


asociada a la primera restricción del problema primal representa la cantidad
en la que se modifica el valor de la función objetivo de [P] por cada unidad
adicional de recurso 1 (siempre que la modificación mantenga la base óptima).
Esto puede hacerse en general para cualquier recurso bi del problema primal.
Capı́tulo 11. DUALIDAD 132

Teniendo en cuenta esto, si nos situamos, por ejemplo, en un problema primal


de máximo con restricciones de tipo ≤, lo resolvemos y calculamos la solución
del problema dual, entonces los valores óptimos de las variables duales (que
son ≥ 0) representan la variación unitaria de la función objetivo del primal por
cada unidad adicional del recurso correspondiente que pudiéramos conseguir.
Esto nos permite también interpretar dichos valores como la mayor cantidad
que estarı́amos dispuestos a pagar por una unidad adicional de recurso.

11.6. Algoritmo del Simplex dual

Vamos a pensar en este apartado en un algoritmo “análogo” al del Simplex,


pero pensando en el problema dual en lugar de en el primal.

Dado un primal (de máximos) diremos que una base del problema primal (no
necesariamente factible):

c − c B B −1 A ≤ 0

Se puede apreciar que dicha definición es equivalente a decir que una base
es factible dual si c B B −1 constituye una solución factible para el problema
dual. Por ejemplo, si llamamos y = c B B −1 (Teorema fundamental) tenemos
que c − c B B −1 A = c − yA ≤ 0, que es equivalente a la expresión que define las
restricciones funcionales del problema dual.

Alternativamente, la definición de base factible dual sólo implica que la co-


rrespondiente base primal verifica las condiciones de optimalidad. Si diera la
casualidad de que, además, fuera factible entonces dicha solución serı́a una
solución óptima.

El algoritmo Simplex dual trabaja con soluciones básicas factibles duales que,
por medio de operaciones apropiadas, finalizarán (si es posible) en una solu-
ción que además serı́a factible primal. Mientras el Simplex trabaja con solu-
ciones que no cumplen el criterio de optimalidad y poco a poco se mejoraban
hasta conseguir la optimalidad, en el Simplex dual se trabaja con soluciones
primales no factibles en las que poco a poco se “mejorará” la factibilidad has-
ta alcanzarla (realmente lo que se irá mejorando serı́a las soluciones del dual
y = c B B −1 ).

El algoritmo del Simplex dual va a utilizar herramientas análogas a las utiliza-


das en el Simplex. Los pasos son los siguientes:

1. Construcción de una solución básica primal que sea básica factible dual
(óptimo del primal).
2. Si una solución es factible primal entonces dicha solución serı́a óptima.
Capı́tulo 11. DUALIDAD 133

3. En caso de que la solución no sea factible primal, entonces habrı́a que


construir una solución básica primal que sea básica factible dual y que
sea adyacente a la anterior, para lo cual deberemos determinar qué varia-
ble sale de la base actual, qué variable entra en la nueva base y deberemos
realizar la operación de cambio de base.

Ese algoritmo lo hemos estudiado como Método de Lemke (desarrollado por


por C. E. Lemke en 1954) [?].

11.7. El problema dual del problema de transporte

En esta sección se quiere introducir el problema de transporte - de gran im-


portancia en el ámbito matemático y económico - como problema primal, y
su problema dual asociado. Posteriormente, en el capı́tulo 16, se estudiará en
detalle.

El problema primal es:



min. z = Cij xij
ij

s.a.:

xij = Oi ∀i ∈ O (11.11)
j∈D

xij = Dj ∀j ∈ D
i∈

xij ≥ 0 ∀j ∈ D, ∀i ∈ O

Y su problema dual asociado es:


 
max. z = = Oi ui + Dj vj
i j

s.a.:
(11.12)
ui + vj ≤ cij ∀i ∈ O, ∀j ∈ D
ui libre de signo ∀i ∈ O
vj libre de signo ∀j ∈ D
Capı́tulo 11. DUALIDAD 134

11.8. Ejercicios

En esta sección se incluyen dos ejercicios sobre dualidad, en los que princi-
palmente se obtiene el problema dual a partir del primal, se halla su solución
óptima y se analiza la información obtenida.

11.8.1. Ejercicio 1

Se considera el siguiente problema de Programación Lineal:

max. z = −x1 + 7x2 − 5x3 + 14x4


s.a. :
3x1 + 4x2 + 5x3 + 6x4 ≤ 24 (11.13)
−1x1 + x2 − 2x3 + 2x4 ≤ 4
xj ≥ 0, ∀j

Se pide:

1. Escribir el problema dual y comprobar que y1 = 1, y2 = 4 es solución


factible del dual.
2. Sabiendo que, además, es la solución óptima del dual, utilizar la infor-
mación obtenida para hallar la solución óptima del primal.

Solución El problema dual se formula de la siguiente forma:

min. s = 24y1 + 4y2


min. s = 24y1 + 4y2 min. s = 24y1 + 4y2
s.a. :
s.a. : s.a. :
3y1 − y2 ≥ −1 −3y1 + y2 ≤ 1 −3y1 + y2 + y1h =1

4y1 + y2 ≥ 7 4y1 + y2 ≥ 7 4y1 + y2 − y2h =7

5y1 − 2y2 ≥ −5 −5y1 + 2y2 ≤ 5 −5y1 + 2y2 + y3h = 5


6y1 + 2y2 ≥ 14 6y1 + 2y2 ≥ 14 6y1 + 2y2 − y4h = 14
yi ≥ 0, ∀i yi ≥ 0, ∀i yi ≥ 0, ∀i
Se puede comprobar que y1 = 1; y2 = 4 es solución del problema dual.
-3 + 4 + y1h = 1 y1h = 0
h
4 + 4 - y2 = 7 y2h = 1
h
-5 + 8 + y3 = 5 y3h = 2
h
6 + 8 - y4 = 14 y4h = 0
Aplicando el teorema de las holguras complementarias se puede ver que:

1. Como y1 ≠ 0, x1h = 0.
2. Como y2 ≠ 0, x2h = 0.
3. Como y2h ≠ 0, x2 = 0.
4. Como y3h ≠ 0, x3 = 0.
Capı́tulo 11. DUALIDAD 135

Luego la solución del problema primal serı́a la solución de un sistema de dos


ecuaciones con dos incógnitas.

La solución es: x1 = 2, x4 = 3. En el óptimo la función objetivo de ambos


problemas es igual (s ∗ = z∗ = 40).

11.8.2. Ejercicio 2

Conocido el siguiente problema de Programación Lineal:

max. z = −10x1 + 24x2 + 20x3 + 20x4 + 25x5


s.a. :
−x1 + x2 + 2x3 + 3x4 + 5x5 = 19 (11.14)
−x1 + 4x2 + 3x3 + 2x4 + x5 ≤ 57
xj ≥ 0, ∀j

Se pide:

1. Escribir el problema dual y obtener la solución óptima de ambos proble-


mas.

Solución El problema dual es el siguiente:

min. s = 19y1 + 57y2


s.a. :
−y1 − y2 ≥ −10
y1 + 4y2 ≥ 24
(11.15)
2y1 + 3y2 ≥ 20
3y1 + 2y2 ≥ 20
5y1 + y2 ≥ 25
y1 libre de signo, y2 ≥ 0

Se puede resolver el problema primal mediante el método de las dos fases. La


tabla correspondiente a la solución óptima es la siguiente:
x1 x2 x3 x4 x5 x1a x2h
fase 1 0 0 0 0 0 0 -1 0
fase 2 -361 -1 0 -3 -2 0 -4 -5
x5 1 -3/19 0 5/19 10/19 1 4/19 -1/19
x2 14 -4/19 1 13/19 7/19 0 -1/19 5/19
Capı́tulo 11. DUALIDAD 136

A partir de esta tabla se puede obtener toda la información correspondiente a


la solución óptima del problema dual.

El valor de ala función objetivo es el mismo que el de la función objetivo del


primal: z∗ = s ∗ = 361.

Por el teorema fundamental de la dualidad, se sabe que y ∗ = π B ; luego se


pueden calcular los niveles de realización de las variables de decisión del pro-
blema dual a partir del vector de criterios del Simplex del primal: y1 = 4, y2 = 5.

Por el teorema de las holguras complementarias se pueden calcular el resto de


valores de la solución óptima del dual: y1h = - VxB1 = 1, y2h = - VxB2 = 0, y3h = -
VxB3 = 3, y4h = - VxB4 = 2, y5h = - VxB5 = 0.
Capı́tulo 12

PROGRAMACIÓN ENTERA. FUNDAMENTOS

12.1. Introducción

Una vez conocida la teorı́a detrás de la Programación Lineal (continua) ahora


entramos en otro bloque que va a permitir modelar muchos más problemas
pero que, a cambio, en general, va a ser más complicado de resolver.

Existe una gran variedad de problemas reales que se tienen que formular y
resolver utilizando variables enteras, por ejemplo: programación de horarios
de trenes o de tripulaciones en una compañı́a aérea, problemas de programa-
ción de la producción, de cálculo de rutas, etc. El número de aviones que una
empresa produce en un año no puede ser 20,12, al igual que el número de
vagones de un convoy del metro no puede ser 2,5 (o van 2 o van 3). De igual
forma, una planta se construye (1) o no (0). Es decir, en ocasiones las variables
enteras aparecen por la propia naturaleza de la decisión.

En otras ocasiones, las variables enteras son necesarias para poder modelar
ciertas situaciones que surgen de forma “natural”. Por ejemplo, imaginemos
tres restricciones:

R1 : 3x1 + x2 + x3 ≤ 10
R2 : 2x1 + 3x2 ≤ 8
R3 : x1 + 4x2 + x3 ≤ 12

Si queremos conseguir que sólo una de las tres se tenga que cumplir no actuan-
do las otras dos; una manera de hacerlo serı́a creando tres variables binarias
(α1 , α2 y α3 ), modificando las tres restricciones anteriores y creando una nue-
va restricción:

R1 : 3x1 + x2 + x3 ≤ 10 + M(1 − α1 )
R2 : 2x1 + 3x2 ≤ 8 + M(1 − α2 )
R3 : x1 + 4x2 + x3 ≤ 12 + M(1 − α3 )
Rnueva : α1 + α2 + α3 = 1
Capı́tulo 12. PROGRAMACIÓN ENTERA. FUNDAMENTOS 138

Supongamos que tenemos un problema de Programación Lineal:

max.{cx : Ax ≤ b, x ≥ 0}

donde A es una matriz m por n, c es un vector fila de dimensión n, b es un


vector columna de dimensión m y x es un vector columna de dimensión n.
A este problema le añadimos la restricción de que ciertas variables tienen que
ser enteras positivas.

Si sólo alguna (no todas) de las variables tienen que ser enteras, entonces tene-
mos un problema de Programación Lineal Entera Mixto (Mixed Integer Problem,
MIP).

Si todas las variables tienen que ser enteras, entonces tenemos un problema de
Programación Lineal Puro (Integer Programming, IP). Por ejemplo, xi ∈ Z+ ∀i,
siendo Z+ el conjunto de enteros no negativos.

Y, si todas la variables están restringidas a los valores 0 − 1, entonces tenemos


un problema de Programación Entera Binaria (Binary Integer Problem, BIP). En
este caso xi ∈ {0, 1}∀i.

Dado que los problemas enteros se parecen bastante a los lineales, no sorpren-
de que tanto la teorı́a como la práctica de la Programación Lineal sea funda-
mental para comprender y resolver problemas enteros.

12.2. Nuevas técnicas

Primero, las soluciones obtenidas con los métodos aprendidos para resolver
problemas de Programación Lineal (Simplex, etc.) no sirven, por la necesidad
de que determinadas variables sean siempre enteras (nº de vagones, abrir o no
una planta, etc.).

Una de las primeras ideas que nos viene a la mente es la del redondeo: resolver El redondeo
el problema como si fuera lineal y luego redondear el valor de las variables.
Pero el redondeo no es aplicable. La solución entera obtenida al redondear una
solución con valores reales puede que sea:

no factible, al dejar de cumplir alguna de las restricciones.


no óptima, porque la solución redondeada se aleje de la solución óptima
entera.
Capı́tulo 12. PROGRAMACIÓN ENTERA. FUNDAMENTOS 139

Se puede ver fácilmente con el siguiente ejemplo sencillo (figura 12.1). Dado
este problema:

max. z = 21x1 + 11x2


s.a.:
(12.1)
7x1 + 4x2 ≤ 13
x1 , x2 ∈ Z+

La solución óptima continua es ( 13


7 , 0), que no es entera. Si se redondea:

vamos a la solución (1, 0) que no es la solución óptima del problema


entero, o
vamos a la solución (2, 0) que no es factible en para el problema entero.

x2
z
4

3 Solución óptima PLE

1
Solución óptima PL

1 2 3 4 x1

Figura 12.1: Contraejemplo redondeo

Luego hay que buscar otros métodos distintos a los aprendidos hasta ahora.

Sı́ es importante darse cuenta de que, a diferencia de la Programación Lineal Enumeración


continua (PL), el conjunto de soluciones factible en Programación Lineal Ente- explı́cita
ra (PLE) es finito. El problema surge cuando ese número finito es muy grande,
situación bastante habitual en la realidad. Con lo cual, quitando ejemplos sen-
cillos, la enumeración explı́cita no es un camino aconsejable.

Otro contraejemplo puede verse con el siguiente ejemplo: Otro ejemplo


Capı́tulo 12. PROGRAMACIÓN ENTERA. FUNDAMENTOS 140

x2 z

4 Solución óptima PL

1 Solución óptima PLE

1 2 3 4 5 x1

Figura 12.2: Otro contraejemplo redondeo

max. z = x1 + x2
s.a.:
10x1 − 8x2 ≤ 13 (12.2)
2x1 − 2x2 ≥ 1
x1 , x2 ∈ Z+

12.3. Optimalidad y relajación

Si el redondeo y la enumeración explı́cita no son alternativas factibles por di-


versas razones, es necesario buscar otros enfoques. La base de estos nuevos
enfoques se va a presentar en los siguientes apartados.

12.3.1. Optimalidad

Dado un problema entero de la forma:

z = max{c(x) : x ∈ X ⊆ Zn
+}
Capı́tulo 12. PROGRAMACIÓN ENTERA. FUNDAMENTOS 141

¿Cómo se puede probar que una solución x ∗ es óptima? O dicho de otra forma,
serı́a muy interesante encontrar algunas condiciones que nos garanticen la
optimalidad y ası́ dejar de buscar la solución óptima en un problema entero.
En la PLE no podemos utilizar el vector de criterios del Simplex como criterio
de optimalidad.

¿Cómo saber entonces cuál es el criterio de parada de los algoritmos propios


de la PLE?

Una solución a esta pregunta es utilizando las cotas, como veremos en el si-
guiente apartado.

12.3.2. Cotas

Dado un problema de PLE (de maximizar) con función objetivo de la solución


óptima z∗ es interesante conocer cotas del mismo que nos permitan conocer
si no el óptimo, sı́ cuáles pueden ser sus valores mı́nimos (seguro que se al-
canzan) y máximos (igual se alcanzan). Es decir, es muy interesante encontrar
una cota inferior (lower bound) z ≤ z y una cota superior (upper bound) z ≥ z
tal que z = z = z.

Prácticamente esto significa que cualquier algoritmo que encuentre una se-
cuencia decreciente

z1 ≥ z2 ≥ · · · ≥ zs ≥ z

de cotas superiores, y una secuencia creciente

z1 ≤ z2 ≤ · · · ≤ zt ≥ z

de cotas inferiores serı́a muy interesante y ese algoritmo se podrı́a parar cuan-
do
zs − zt ≤ 

donde  es un valor positivo elegido.

Luego, cobra vital importancia encontrar formas de obtener cotas superiores e


inferiores.

Cualquier solución factible x 0 ∈ X es una cota inferior z = c(x 0 ) ≤ z∗ . Esta es Cotas inferio-
la única forma de encontrar cotas inferiores: encontrando soluciones factibles. res/primales
En este caso las cotas factibles hablan del valor de la z que ya se tiene; es decir,
que como poco la función objetivo va a tener ese valor. Las cotas inferiores
hablan de realismo (lo que hay).
Capı́tulo 12. PROGRAMACIÓN ENTERA. FUNDAMENTOS 142

Z1

Z2 cotas superiores
Z3
z∗

Z1

Z2 cotas inferiores
Z3

Figura 12.3: Cotas de un problema entero

Para algunos problemas de PLE es sencillo encontrar una solución factible y


lo complicado es encontrar buenas cotas inferiores (cercanas al óptimo). Esto
ocurre por ejemplo en el problema del TSP (cualquier ciclo que contenga to-
das las ciudades es una solución factible que ofrece una cota inferior). Pero,
para otros problemas, encontrar una solución factible es tan complicado como
resolver el problema entero.

Para algunos problemas no es difı́cil utilizar algoritmos greedy (algoritmos


ávidos) que permiten encontrar soluciones factibles “buenas” (cotas inferio-
res). La idea central de estos algoritmos heurı́sticos es, a partir de no tener una
solución, ir construyéndola paso a paso (dando valor una a una a cada variable)
y en cada paso tomar la decisión que suponga una mayor mejora de la función
objetivo.

Se habla de cota superior cuando el problema es de maximizar. Se puede ge-


neralizar el concepto utilizando la expresión cota primal siendo válida tanto
para problemas de maximizar como de minimizar. En ambos casos las cotas
primales se obtienen mediante soluciones factibles.

La tarea de encontrar cotas superiores es muy distinta de la anterior. Una de las Cotas superio-
formas de hallar las cotas superiores es mediante “relajaciones”. La idea que res/duales
hay detrás de las relajaciones es reemplazar un problema entero “difı́cil” de
maximizar (como normalmente formulamos los problemas) por otro problema
más sencillo cuya función objetivo z es mayor o igual que la del problema
original.

Para que el problema relajado cumpla esta propiedad hay dos posibilidades:

hacer mayor el conjunto de soluciones factibles de forma que el proble-


ma se resuelva sobre un conjunto mayor, o
reemplazar la función objetivo (max.) por una función que tenga el mis-
mo o mayor valor que la original siempre.
Capı́tulo 12. PROGRAMACIÓN ENTERA. FUNDAMENTOS 143

Se dice que el problema (RP) {zR = max{f (x) : x ∈ T ⊆ Rn } es una relajación


del problema (IP) {z = max{c(x) : x ∈ X ⊆ Zn
+ } si:

X ⊆ T, y
f (x) ≥ c(x) para todo x ∈ X.

Si RP es una relajación de IP, entonces se cumple zR ≥ z.

La cuestión entonces es cómo encontrar relajaciones interesantes. Una de las


más naturales y más utilizadas es la relajación lineal.

Dado un problema entero max{c(x) : x ∈ P ⊆ Zn + } siendo P = x ∈ R+ : Ax ≤


n
Relajaciones
b}, la relajación lineal es el problema lineal z = max{cx : x ∈ P ⊆ Rn }.
LP
lineales

+ ⊆ P y la función objetivo no cambia, es claramente una relajación.


Como P ∩Zn

Por ejemplo, si consideramos el problema entero:

max. z = 4x1 − x2
s.a.:
7x1 − 2x2 ≤ 14
(12.3)
x2 ≤ 3
2x1 − 2x2 ≤ 3
2
x ∈ Z+

Como se puede ver en la figura 12.4 el punto (1, 1) es una solución factible,
luego tenemos una cota inferior z ≥ 3. Para obtener una cota superior pode-

mos recurrir a la relajación lineal. La solución óptima es xRL = ( 20
7 , 3) con
función objetivo zLP = 59
7 . Como el valor de la función objetivo del problema
entero tiene que ser entero (en este caso), podemos redondear y obtener z ≤ 8.
La solución óptima del problema entero xP∗E , que es el punto (2, 1), tiene un
valor de 7, comprendido entre 3 y 8 (cota inferior y superior respectivamente).

Las relajaciones no sólo permiten obtener cotas superiores, sino que también Relación cotas
sirven para probar la optimalidad. Si la relajación (RL) es no factible, el proble- duales -
ma original entero (IP) también. Si al resolver la relajación lineal (RP) resulta factibilidad y
que cumple las condiciones de integralidad del problema entero (IP) resulta optimalidad del
que también es su solución óptima. problema
entero
Capı́tulo 12. PROGRAMACIÓN ENTERA. FUNDAMENTOS 144

z
x2
5

4
Solución
óptima PL
3

x1
1
Solución
óptima PLE
x
1 2 3 4 5 1

Figura 12.4: Ejemplo cota primal y dual

Por ejemplo, la relajación lineal del problema entero:

max. z = 7x1 + 4x2 + 5x3 + 2x4


s.a.:
(12.4)
3x1 + 3x2 + 4x3 + 2x4 ≤ 6
x1 , x2 , x3 , x4 ∈ {0, 1}

∗ ∗
tiene como solución óptima xRL = (1, 1, 0, 0). Como xRL es entera, es también
∗ ∗
solución óptima del problema entero; xRL = xP E .

Existen más tipos de relajaciones que permiten hallar cotas superiores. Entre Otras
ellas, por ejemplo, las relajaciones combinatorias que son especı́ficas para de- relajaciones
terminados problemas (TSP, Knapsack, etc.); y las relajaciones lagrangianas, lineales
que son mucho más generales y que se basan en relajar restricciones (quitar-
las), pero su cumplimiento afecta a la función objetivo con un coste.

12.4. Dos tipos de enfoques de resolución de problemas PLE

Vista esta introducción previa, ahora viene la pregunta de qué estrategia uti-
lizar para obtener la solución óptima de un problema de PLE o, lo que es lo
mismo, cómo conseguir la mejor pasa de un bizcocho de con pasas.

En la literatura se han estudiado dos tipos de enfoques principales para resol-


ver los problemas de PLE:

Descomposición o Divide y vencerás (Branch and Bound). La idea que


hay detrás de este enfoque es estudiar todas las soluciones enteras
Capı́tulo 12. PROGRAMACIÓN ENTERA. FUNDAMENTOS 145

(finitas pero muchas) pero de una forma implı́cita (inteligente). Ese


estudio se basa en la idea de descomponer el problema (el conjunto
de soluciones enteras) en distintos subproblemas (subconjuntos de
soluciones), estudiarlos por separado y agregar la información de cada
uno para el problema original.

Si el espacio factible fuera un bizcocho y las soluciones enteras fueran


pasas (o pepitas de chocolate) que hay dentro, con este enfoque se trata
de dividir el bizcocho en partes, estudiar las distintas partes (buscando
la mejor pasa, solución entera) de cada parte y, de esa forma, obtener la
mejor pasa del bizcocho.

Si además se utilizan los conceptos relacionados con las cotas, que he-
mos estudiado recientemente, se conseguirá que el estudio de cada sub-
problema por separado no se tenga que realizar por completo (mediante
la enumeración explı́cita de todas las soluciones).
Planos de corte. En este enfoque se intenta añadir restricciones nuevas
al problema, de forma que al añadir una de ellas la solución óptima de
la relajación lineal sea entera; solución óptima del problema entero.

Es como si se fuera cortando el bizcocho con el cuchillo (sin eliminar


ninguna pasa del bizcocho) de forma que, en alguno de los cortes (res-
tricciones), el cuchillo (el plano) pasa por una pasa que es la mejor (la
óptima).
Capı́tulo 13

PROGRAMACIÓN ENTERA. BRANCH AND


BOUND

13.1. Descomposición en subproblemas. Divide y vencerás

La idea que hay detrás del enfoque divide y vencerás es aplicable a problemas
de diversa ı́ndole, en concreto también en problemas de Programación Lineal
Entera. Desde esa mirada más amplia se puede pensar en un problema:

z = max{cx : x ∈ S}

Cuando trabajamos con un problema de Programación Lineal Entera ese con-


junto S incluye a todas las soluciones factibles del problema entero y las res-
tricciones técnicas: Ax ≤ b.

Dado ese conjunto de soluciones, ¿será posible dividir este problema en un


conjunto de problemas de menor tamaño y más fáciles de resolver, resolver-
los y luego juntar toda la información para hallar la solución del problema
original?

Se dice que S = S1 ∪ · · · ∪ Sk es una descomposición de S en un conjunto


más pequeño de problemas y que si zk = max{cx : x ∈ Sk } para k = 1 . . . K,
entonces z = maxk zk .

13.2. Enumeración explı́cita

Una forma tı́pica de representar el enfoque “divide y vencerás” es mediante los


árboles de enumeración. Por ejemplo si S ⊆ {0, 1}3 , se puede construir el árbol
que se presenta en la figura 13.1.
Capı́tulo 13. PROGRAMACIÓN ENTERA. BRANCH AND BOUND 147

x1 = 0 x1 = 1

S0 (0) S1 (1)

x2 = 0 x2 = 1 x2 = 0 x2 = 1

S00 (0, 0) S01 (0,1) S10 (1, 0) S11 (1, 1)

x2 = 0 x2 = 1 x2 = 0 x2 = 1 x2 = 0 x2 = 1 x2 = 0 x2 = 1

S000 (0, 0, 0) S001 (0, 0, 1) S010 (0, 1, 0) S011 (0, 1, 1) S100 (1, 0, 0) S101 (1, 0, 1) S110 (1, 1, 0) S111 (1, 1, 1)

Figura 13.1: Árbol de enumeración

En este caso se divide el conjunto S en dos: S0 = {x ∈ S : x1 = 0} y S1 =


{x ∈ S : x1 = 1}. Después estos dos subconjuntos se dividen en dos cada
uno: S00 = {x ∈ S0 : x2 = 0} = {x ∈ S : x1 = x2 = 0}, S01 = {x ∈ S0 : x2 = 1}
y ası́ sucesivamente. Si nos fijamos, cualquier hoja final del árbol Si1,i2,i3 es no
vacı́a si y sólo si s = (i1, i2, i3) está en S. Es decir, las hojas finales (nodos) del
árbol corresponden precisamente a los puntos del conjunto B 3 que habrı́amos
examinado mediante la enumeración completa.

Por una parte, la figura 13.2 representa las soluciones enteras del problema
inicial en 3D. Se observa que las sucesivas divisiones sobre el árbol de la figura
13.1 no son más que inserciones de planos sobre el espacio de soluciones.
Por ejemplo, la primera ramificación sobre x1 dividı́a el conjunto S en dos:
S0 = {x ∈ S : x1 = 0} y S1 = {x ∈ S : x1 = 1}. Eso es igual que añadir el plano
x1 = 1 sobre el espacio de soluciones.

Por su parte, la figura 13.3 representa el problema inicial y sus subproblemas


asociados como conjuntos y subconjuntos. De nuevo, al igual que sucedı́a con
el árbol de enumeración, la primera ramificación sobre x1 divide el conjunto
S en dos: S0 = {x ∈ S : x1 = 0} (el subconjunto de mayor tamaño de la
izquierda) y S1 = {x ∈ S : x1 = 1} (el subconjunto de mayor tamaño de
Capı́tulo 13. PROGRAMACIÓN ENTERA. BRANCH AND BOUND 148

x3

x3 = 1

x2 = 1
x1 = 1
x2
x1

Figura 13.2: Representación geométrica en 3D

la derecha). Con las sucesivas ramificaciones sobre las otras variables, x2 y


x3 , se seguirán agrupando las soluciones en subconjuntos de menor tamaño,
que incluirán dos soluciones en la siguiente ramificación y una solución en la
última.

(0,0,0) (1,0,0)

(0,0,1)
(1,0,1)
(0,1,0) (1,1,0)
(0,1,1)
(1,1,1)

Figura 13.3: Representación con diagramas

Cada subconjunto de soluciones (S) proviene de la resolución de un problema


(P) de Programación Lineal. Por tanto, se puede identificar cada problema con
un conjunto de soluciones, ası́ como cada subproblema con un subconjunto
de soluciones, como ilustra la figura 13.4.
Capı́tulo 13. PROGRAMACIÓN ENTERA. BRANCH AND BOUND 149

MAX. MAX.
S P

S1 S2 P1 P2
.

Figura 13.4: Identificación: subconjuntos y subproblemas

13.3. Enumeración implı́cita

Como ya hemos visto anteriormente, la enumeración completa (o explı́cita) es


imposible de hacer para muchos problemas cuando el número de variables
enteras crece. Luego a parte de dividir indefinidamente el problema tenemos
que hacer algo más. ¿Cómo podemos usar de forma inteligente algunas cotas
de los valores de {zk }? Vamos a ello.

Si S = S1 ∪ ... ∪ Sk es una descomposición de S en un conjunto más pequeño de


problemas, zk = max{cx : x ∈ Sk } para k = 1...K, zk es una cota superior de
zk y zk es una cota inferior de zk ; entonces z = maxk zk es una cota superior
de z y z = maxk zk es una cota inferior de z.

Vamos a ver ahora tres casos hipotéticos para ver cómo podemos utilizar con
sentido la información relativa a las cotas de un problema. ¿Qué se puede
decir sobre la solución óptima con la infamación relativa a las cotas y qué
conjuntos (subproblemas) necesitan seguir examinándose para encontrar la
solución óptima?

Poda por optimalidad. En la figura 13.5 se puede ver una descomposición del Poda por
conjunto S en dos subconjuntos S1 y S2 y las cotas superiores e inferiores de optimalidad
los distintos problemas.

MAX. 27 MAX. 27

S S
13 13

20 25 20 25

S0 S1 S0 S1
20 15 . 20 15

Figura 13.5: Poda por optimalidad


Capı́tulo 13. PROGRAMACIÓN ENTERA. BRANCH AND BOUND 150

27 z
z2 z
25

20 z1 ∗
z 1 z1

15
z2 z
13
z

Figura 13.6: Cotas en la poda por optimalidad

Podemos ver que z = maxk zk = max{20, 25} = 25 y que z = maxk zk =


max{20, 15} = 20. Además las cotas inferiores y superiores de z1 con iguales
y no hace falta seguir examinando el conjunto S1 . Entonces la rama correspon-
diente al conjunto S1 del árbol puede ser podada por optimalidad.

Poda por acotamiento. En la figura 13.7 vemos de nuevo la descomposición Poda por
del conjunto S en dos subconjuntos S1 y S2 y las cotas superiores e inferiores acotamiento
de los distintos problemas.

MAX. 27 MAX. 26

S S
13 21

\
18 26 26

S1 S2 S1 S2
20 21 . 21

Figura 13.7: Poda por acotamiento


Capı́tulo 13. PROGRAMACIÓN ENTERA. BRANCH AND BOUND 151

27 z
z1 z
26

21
z2
z1 z
20
18
z2

13
z

Figura 13.8: Cotas en la poda por acotamiento

Podemos ver que z = maxk zk = max{20, 26} = 26 y que z = maxk zk =


max{18, 21} = 21. Aparte, la función objetivo del problema tiene un valor
como poco de 21 y la cota superior z1 = 20, luego la solución óptima no puede
estar en el subconjunto S1 . En este caso la rama correspondiente a S1 se poda
por acotamiento.

No poda posible. En la figura 13.9 está descompuesto de nuevo el conjunto S No poda posible
en dos subconjuntos S1 y S2 con diferentes cotas superiores e inferiores.

MAX. 40 MAX. 37

S S
13

24 37 24 37

S1 S2 S1 S2
13 . 13

Figura 13.9: No poda posible

40 z

37
z2 z

z1
24

13
z1 z

Figura 13.10: Cotas en caso de no poda posible


Capı́tulo 13. PROGRAMACIÓN ENTERA. BRANCH AND BOUND 152

Podemos ver que z = maxk zk = max{24, 37} = 37 y que z = maxk zk =


max{13, −} = 13. En este caso no podemos decir nada y hay que seguir explo-
rando los subconjuntos S1 y S2 .

Basados en estos tres ejemplos se pueden enumerar las tres razones que per- Razones para
miten podar alguna rama del árbol y con ello enumerar de forma implı́cita un podar
gran número de soluciones:

1. Poda por optimalidad: zt = {max cx : x ∈ St } se ha resuelto.


2. Poda por acotamiento: zt ≤ z.
3. Poda por infactibilidad: St = ∅.

Si nos preguntamos cómo se pueden obtener las cotas, la respuesta es la mis-


ma que lo que vimos en el capı́tulo anterior. Las cotas inferiores se calculan al
obtener soluciones factibles y las cotas superiores mediante relajaciones.

Construir un algoritmo de enumeración implı́cita basado en los visto anterior-


mente es ya una tarea sencilla, aunque quedan aún muchas preguntas por re-
solver para poder tener bien definido el algoritmo. Algunas de estas preguntas
puede ser:

Búsqueda de cotas

¿Qué relajación vamos a utilizar para hallar las cotas superiores?¿Cómo


elegir entre una sencilla cota débil fácil de obtener y una cota fuerte
cuyos cálculos llevan más tiempo?

División en subproblemas

¿Cómo generamos los distintos subconjuntos del problema principal


S = S1 ∪ · · · ∪ SK ?¿Cada conjunto se tiene que dividir en dos o más
subconjuntos?¿Tenemos que tener una regla a priori para subdividir los
problemas o es mejor que esas divisiones dependan de cómo evoluciona
el problema?

¿En qué orden vamos a examinar los problemas? Normalmente tendre-


mos un conjunto de nodos activos (ramas sin podar). ¿Tenemos que es-
tudiar el primer nodo al que hayamos llegado (FIFO), el que tenga mejor
cota superior u otro criterio?

Distintas respuestas a estas preguntas pueden llevarnos a enfoques diferentes.


Entre ellos se explicita el que fue pionero [?].
Capı́tulo 13. PROGRAMACIÓN ENTERA. BRANCH AND BOUND 153

Otro enfoque, más utilizado desde entonces, es el enfoque de Dakin, que se


presenta en este discurso [?]. Las cuestiones anteriores se resuelven, a través
de este enfoque, en el siguiente apartado.

13.4. Branch and Bound: un ejemplo

En esta sección se presenta un ejercicio resuelto con Branch and Bound, que
ha sido cogido del libro Integer Programming [?].

La forma más común de resolver problemas con números enteros es usando la


enumeración implı́cita o Branch and Bound, en donde las relajaciones lineales
se utilizan para calcular las cotas superiores.

Por ejemplo, dado este problema:

max. z = 4x1 − x2
s.a.:
7x1 − 2x2 ≤ 14
(13.1)
x2 ≤ 3
2x1 − 2x2 ≤ 3
x ∈ Z2+

Acotamiento. Para obtener una primera cota superior, añadimos las holguras
correspondientes (h1 , h2 y h3 ) y resolvemos la relajación lineal de este proble-
ma (quitando las restricciones de integrabilidad).

La tabla óptima a la que se llega es:

x1 x2 h1 h2 h3
zRL -59/7 0 0 -4/7 -1/7 0
x1 20/7 1 0 1/7 2/7 0
x2 3 0 1 0 1 0
h3 23/7 0 0 -2/7 10/7 1

59
De aquı́ obtenemos una cota superior z = 7 , y una solución que no es entera
( 20
7 , 3).
¿Hay alguna forma de encontrar una solución factible? Pues aparente-
mente, no. Luego no tenemos ninguna cota inferior aún, z = −∞.
Capı́tulo 13. PROGRAMACIÓN ENTERA. BRANCH AND BOUND 154

59
MAX. 7

x1 ≤ 2 x1 ≥ 3

S1 S2

Figura 13.11: Árbol parcial 1

Ramificación. Como z ≤ z tenemos que dividir o ramificar. ¿Cómo podemos


dividir la región factible? Una idea muy sencilla es elegir una variable que esté
en la base y que debiera de ser entera pero no lo es, y dividir el problema en
dos subproblemas en función del valor del valor que tiene la variable. Veamos,
si xj = x j ∉ Z 1 , se puede
 dividir el problema en:
S1 = S ∩ {x : xj ≤ x j }
 
S2 = S ∩ {x : xj ≥ x j }

Está claro que S = S1 ∪ S2 y que S1 ∩ S2 = ∅. Otra razón por la que se eligen


estos subproblemas es que la solución de la relajación lineal no es factible en
las relajaciones lineales de S1 ni S2 . Esto es muy importante pues evita degene-
raciones de la solución (o múltiples soluciones); con lo cual max{z1 , z2 } ≤ z
y la cota superior tendrá siempre menor valor.

Siguiendo esta idea, como x 1 = 20


7 ∉ Z , los subproblemas serán S1 = S ∩ {x :
1

x1 ≤ 2} y S2 = S ∩ {x : x1 ≥ 3}. Se puede ver en la figura 13.11. A los dos


subproblemas (nodos del árbol) que deben ser examinados se les llama nodos
activos.

Elección de un nodo. La lista de nodos activos que deben ser examinados


contiene a S1 y S2 . Arbitrariamente elegimos S1 .

Reoptimización. ¿Cómo podemos resolver las relajaciones lineales de los nue-


vos subproblemas sin necesidad de partir de cero? Como simplemente hemos
añadido una restricción que sabemos que no se cumple, al añadir la fila co-
rrespondiente a la tabla del Simplex expresada en la base actual tendremos
una solución no factible. Utilizando el método de Lemke en varios pivotes (ta-
blas) podemos llegar a la nueva solución óptima.

Al resolver la relajación lineal de S1 añadimos la restricción x1 ≤ 2 o x1 + h4 =


2, h4 ≥ 0. Y tendrı́amos la siguiente tabla que será igual que la anterior pero
con una fila más en la parte inferior:
Capı́tulo 13. PROGRAMACIÓN ENTERA. BRANCH AND BOUND 155

59
MAX. 7

x1 ≤ 2 x1 ≥ 3

15
2

S1 S2

x2 ≤ 0 x2 ≥ 1

S11 S12

Figura 13.12: Árbol parcial 2

x1 x2 h1 h2 h3 h4
z1RL 59/7 0 0 -4/7 -1/7 0 0
x1 20/7 1 0 1/7 2/7 0 0
x2 3 0 1 0 1 0 0
h3 23/7 0 0 -2/7 10/7 1 0
h4 -6/7 0 0 -1/7 -2/7 0 1

Después de pasar por dos soluciones intermedias se llega la siguiente solución


óptima:

x1 x2 h1 h2 h3 h4
z1RL 15/2 0 0 0 0 -1/2 -3
x1 2 1 0 0 0 0 1
x2 1/2 0 1 0 0 -1/2 1
h1 1 0 0 1 0 -1 -5/7
h2 5/2 0 0 0 1 1/2 6

15
con z1RL = 2 y (x 11 , x 12 ) = (2, 12 ).

Ramificación. El subproblema S1 no puede ser podado, luego hay que ramificar


como se ha hecho antes, creándose dos nuevos nodos S11 = S1 ∩ {x : x2 ≤ 0}
y S12 = S1 ∩ {x : x2 ≥ 1}, los cuales se añaden a la lista de nodos por estudiar.
El árbol actual se muestra en la figura 13.12.
Capı́tulo 13. PROGRAMACIÓN ENTERA. BRANCH AND BOUND 156

Selección de un nodo. La lista de nodos activos contiene a S2 . S11 y S12 . Arbi-


trariamente se elige S2 , el cual se elimina de la lista de nodos por estudiar.

Reoptimización. Se resuelve el nodo S2 utilizando el método de Lemke de la


misma manera que se ha hecho previamente. La restricción x1 ≥ 3 se puede
escribir como x1 − h5 = 3. Al añadir la restricción a la tabla correspondiente a
la solución óptima de la relajación lineal del nodo S se observa que el problema
resultante es no factible y ese nodo se poda por infactibilidad. La solución de la
tabla es no factible pero no hay pivotes en la fila correspondiente que permitan
salir de la infactibilidad.

x1 x2 h1 h2 h3 h5
z1RL 59/7 0 0 -4/7 -1/7 0 0
x1 20/7 1 0 1/7 2/7 0 0
x2 3 0 1 0 1 0 0
h3 23/7 0 0 -2/7 10/7 1 0
h5 -1/7 0 0 1/7 2/7 0 1

Selección de nodo. La lista de nodos activos contiene ahora a S11 y S12 . Arbi-
trariamente se elige S12 y se elimina de la lista.

Reoptimización. S12 = S1 ∩ {x : x1 ≤ 2, x2 ≥ 1}. La solución óptima de dicho



problema tiene solución x12 = (2, 1) con función objetivo 7. Como la solución
óptima de la relajación lineal es entera, además es cota inferior (primal).

Se guarda esta solución y este nodo se poda por optimalidad, ya no hace falta
seguir estudiándolo.

Selección de nodo. La lista de nodos activos sólo contiene S11 .

Reoptimización. S11 = S1 ∩ {x : x1 ≤ 2, x2 ≤ 0}. La solución óptima de



esta relajación lineal es x11 = (3/2, 0) con una función objetivo 6. Este nodo
se poda por acotamiento, pues en el nodo S11 la mejor solución posible (si
se llegara a ella) tendrı́a una función objetivo peor que la que ya se tiene del
subproblema S12 .

Selección de nodo. La lista de nodos activos está vacı́a, el algoritmo se acaba.


La solución óptima es (2, 1) con z∗ = 7.
Capı́tulo 13. PROGRAMACIÓN ENTERA. BRANCH AND BOUND 157

El árbol Branch and Bound se muestra en la figura 13.13. En la figura 13.14 se


puede ver gráficamente los distintos nodos, las ramificaciones, las relajaciones
y las soluciones encontradas.

59
MAX. 7 7

S
7

x1 ≤ 2 x1 ≥ 3
/

15
7 2

S1 S2 No factible

x2 ≤ 0 x2 ≥ 1
\ /

6 7 7
3 , 0)
S11 (2 S12 (2,1)

Figura 13.13: Árbol completo

x2 z
5
x1 ≤ 2 x1 ≥ 3

4

xRL
3

2

x2 ≥ 1 x12
1
x1∗

x2 ≤ 0 ∗ 2
1 x11 3 4 5 x1

Figura 13.14: Descomposición de la zona factible

Como resumen del ejemplo estudiado, el método de Branch and Bound, según
Dankin, implica:

Ramificación en dos nodos


Definir las restricciones de cada subproblema sobre la parte entera de
la relajación lineal del problema: por una parte, xi ≤ [xi ], y por otra
xi ≥ [xi ] + 1.
Capı́tulo 13. PROGRAMACIÓN ENTERA. BRANCH AND BOUND 158

13.5. Aspectos del algoritmo a tener en cuenta

Tras la presentación del algoritmo de Branch and Bound, quedan aspectos so-
bre los que pensar, que son los que se muestran en esta sección.

Almacenamiento del árbol:

El árbol no se guarda como tal, sólo los nodos activos (por estudiar).
¿Qué información de cada nodo se debe guardar? Poca y repetir los cálcu-
los (volver a hallar las tablas de las soluciones óptimas de algunos nodos
aún no podados o acotado; o guardar todas estas tablas a costa de nece-
sitar más memoria del ordenador.
Hay una información mı́nima que hay que guardar de un nodo; sus cotas,
cuando se conozcan, de qué nodo son hijos, etc.

Generalización del concepto de cotas El significado de la cota superior, por cotas primales y
ejemplo, es muy distinto en función de si el problema es de máximos (fun- duales
ción objetivo de la relajación lineal) o de mı́nimos (función objetivo de una
solución factible). Por eso, para generalizar el concepto de cotas es preferible
independizar el significado del tipo de problema. De esta manera, se define:

Cota primal. El valor de la función objetivo de una solución entera facti-


ble. Será cota inferior en un problema de máximos y superior en uno de
mı́nimos.
Cota dual. El valor de la función objetivo de la relajación lineal del pro-
blema entero. Será cota superior en un problema de máximos e inferior
en uno de mı́nimos.

Método para buscar cotas: la forma de acotar los nodos es utilizando las re-
lajaciones lineas. Éstas acotan por arriba (duales) siempre por ser relajación;
y por debajo (primales) cuando la solución óptima de la relajación lineal es
entera.

Selección de la variable a ramificar: ¿qué criterio se sigue para elegir la varia-


ble a ramificar?

Al azar.
La variable aún no entera con mayor parte fraccional, casi entera.
Ramificar las variables con mayor contribución al beneficio.

Selección del nodo a estudiar. De lo nodos activos, podemos escoger el si-


guiente nodo a estudiar a través de los siguientes algoritmos heurı́sticos:

Best Node First. (Jumptracking). Se trata de un algoritmo heurı́stico de


búsqueda informada. Consiste en escoger, haciendo uso de una función
Capı́tulo 13. PROGRAMACIÓN ENTERA. BRANCH AND BOUND 159

de evaluación o de costes, cuál de los nodos disponibles es el más pro-


metedor, el que tiene mejor cota dual. De esta forma, se elige el mejor
nodo como siguiente a estudiar. Se persigue minimizar el número total
de nodos a resolver (menor duración del algoritmo). Para ello, de forma
concreta, se utilizan dos listas de elementos: una primera lista “abierta”
de nodos, que almacena los siguientes nodos disponibles para estudiar;
y una segunda lista “cerrada”, en la que se guardan los nodos que ya han
sido estudiados.
Deep First Node. (BackTracking). Consiste en explorar en profundidad
cada una de las ramas del árbol, descendiendo por el árbol lo antes posi-
ble, para encontrar una solución factible, es decir, una cota primal. Esto
posibilita hacer podas por acotamiento. Dado un nodo, es rápido resol-
ver el situado inmediatamente por debajo: se añade una restricción y
reoptimiza rápidamente. El algoritmo es el siguiente:

13.6. Pseudocódigo del algoritmo Branch and Bound

En esta sección se presenta el pseudocódigo del algoritmo de Branch and


Bound propuesto por Dakin pensando en un problema de máximos.
Capı́tulo 13. PROGRAMACIÓN ENTERA. BRANCH AND BOUND 160

input : problema inicial S y su formulación P


output: solución entera óptima del problema inicial
1 inicialización: incluir el problema inicial S en un lista de problemas a
resolver; establecer la cota primal general en infinito negativo, zP = −∞;
vaciar la lista de soluciones óptimas;
2 while no esté la lista de problemas a resolver vacı́a do
3 eliminar el problema Si y su formulación Pi de la lista de problemas a
resolver ;
4 resolver la relajación lineal de Pi ;
i
5 cota dual ZiD = zRL ;
6 incluir la solución del PL en la lista de soluciones óptimas ;
7 if el problema formulado como P i no tiene solución then
8 poda por infactibilidad
9 end
10 if la cota dual del problema es menor que la cota primal general,
ZiD ≤ Z P then
11 poda por acotación;
12 end
13 ; if la solución del problema es entera then
14 actualizar la cota primal zP = zp i ;
15 incluir la solución en la lista de soluciones enteras ;
16 poda por optimalidad ;
17 end
18 obtener dos subproblemas S1i y S2i con las formulaciones P1i y P2i , y
cotas duales ziD ;
19 incluir los subproblemas S1i y S2i en la lista de problemas a resolver ;
20 escoger el siguiente nodo a estudiar;
21 end
Algoritmo 1: Algoritmo de Branch and Bound

13.7. Otro ejemplo de Branch and Bound

En esta sección se presenta otro ejemplo en el que se utiliza la enumeración


implı́cita o Branch and Bound para resolver un problema de PLE. El árbol de
Branch and Bound correspondiente a este problema se observa en la figura
13.15.
Capı́tulo 13. PROGRAMACIÓN ENTERA. BRANCH AND BOUND 161

MAX. 40 41.25

S 3.75, 2.25

40

x1 ≤ 3 x1 ≥ 4

39 39 40 41
S1 (3, 3) S2 (4, 1.8)

39 40

x2 ≤ 1 x2 ≥ 2

40 40.55
S21 (4.44, 1) S22 No factible

40

x1 ≤ 4 x1 ≥ 5

37 37 40 40
S211 (4, 1) S212 (5, 0)

37 40

Figura 13.15: Árbol del ejemplo

La formulación del problema inicial S es la siguiente:

max. z = 8x1 + 5x2


s.a.:
x1 + x2 ≤ 6 (13.2)
91 + 5x2 ≤ 45
x1 , x2 ∈ Z+

Para resolver el problema, primero se resuelve la relajación lineal del problema


de PL inicial, S. La solución óptima es (x1 = 3,75, x2 = 2,25) y el valor de la
función objetivo es zS∗ = 165
4 = 41,25, que será la cota superior.
Capı́tulo 13. PROGRAMACIÓN ENTERA. BRANCH AND BOUND 162

x2
9 z

Problema S:
7
max. z = 8x1 + 5x2
6
s.a.:
5
x1 + x2 ≤ 6
4
9x1 + 5x2 ≤ 45
x1 , x2 ∈ Z+ 3
x0∗
2

1 2 3 4 5 x1

Problema S

A continuación, ya que las dos variables tienen valores continuos, cogemos


arbitrariamente una de ellas, por ejemplo, x1 . Todas las soluciones enteras del
problema S cumplen que x1 ≤ 3 o x1 ≥ 4. Por lo tanto, se divide el problema
S en dos subproblemas, S1 y S2 , que tienen como base el problema S y a los
que se les añaden las restricciones x1 ≤ 3 y x1 ≥ 4, respectivamente. De esta
manera, estamos ramificando en x1 .

Subproblema S1 : Subproblema S2 :
max. z = 8x1 + 5x2 max. z = 8x1 + 5x2
s.a.: s.a.:
x1 + x2 ≤ 6 x1 + x2 ≤ 6
9x1 + 5x2 ≤ 45 9x1 + 5x2 ≤ 45
x1 ≤ 3 x1 ≥ 4
x1 , x2 ∈ Z+ x1 , x2 ∈ Z+
Capı́tulo 13. PROGRAMACIÓN ENTERA. BRANCH AND BOUND 163

x2 x2
9 z 9 z

8 8

7 7

6 6

5 5

4 4
x1∗
3 3

2 2 x2∗

1 1

1 2 3 4 5 x1 1 2 3 4 5 x1

Subproblema S1 Subproblema S2

Al resolver el subproblema S2 , se obtiene una solución entera en x1 , pero con-


tinua en x2 (x1 = 4, x2 = 1,8) y el valor de la función objetivo es 41. Todas
las soluciones enteras del subproblema S2 cumplen que x2 ≤ 1 o x2 ≥ 2. Por
lo tanto, se divide el problema S2 en dos subproblemas, S21 y S22 , que tienen
como base el problema S2 y a los que se les añaden las restricciones x2 ≤ 1 y
x2 ≥ 2, respectivamente. De esta manera, estamos ramificando en x2 .

Subproblema S21 : Subproblema S22 :


max. z = 8x1 + 5x2 max. z = 8x1 + 5x2
s.a.: s.a.:
x1 + x2 ≤ 6 x1 + x2 ≤ 6
9x1 + 5x2 ≤ 45 9x1 + 5x2 ≤ 45
x1 ≥ 4 x1 ≥ 4
x2 ≤ 1 x2 ≥ 2
x1 , x2 ∈ Z+ x1 , x2 ∈ Z+
Capı́tulo 13. PROGRAMACIÓN ENTERA. BRANCH AND BOUND 164

x2 x2
9 z 9 z

8 8

7 7

6 6

5 5

4 4

3 3

2 2

x21
1 1

1 2 3 4 5 x1 1 2 3 4 5 x1

Subproblema S21 Subproblema S22

El subproblema S22 es no factible, de forma que se poda por infactibilidad.

Tras resolver el subproblema S21 , se observa que la solución es continua (x1 =


4,44, x2 = 1) y que el valor de la función objetivo es 40,55. Todas las soluciones
enteras del subproblema S21 cumplen que x1 ≤ 4 o x1 ≥ 5. Por lo tanto, se
divide el problema S21 en dos subproblemas, S211 y S212 , que tienen como base
el problema S21 y a los que se les añaden las restricciones x1 ≤ 4 y x1 ≥ 5,
respectivamente. De esta manera, estamos ramificando en x1 .

Subproblema S211 : Subproblema S212 :


max. z = 8x1 + 5x2 max. z = 8x1 + 5x2
s.a.: s.a.:
x1 + x2 ≤ 6 x1 + x2 ≤ 6
9x1 + 5x2 ≤ 45 9x1 + 5x2 ≤ 45
x1 ≥ 4 x1 ≥ 4
x2 ≤ 1 x2 ≥ 2
x1 ≤ 4 x1 ≥ 5
x1 , x2 ∈ Z+ x1 , x2 ∈ Z+
Capı́tulo 13. PROGRAMACIÓN ENTERA. BRANCH AND BOUND 165

x2 x2
9 z 9 z

8 8

7 7

6 6

5 5

4 4

3 3

2 2

x211
1 1

1 2 3 4 5 x1 1 2 3 4 5 x1

Subproblema S211 Subproblema S212

Al resolver el subproblema S211 , se observa que la solución es entera (x1 = 4,


x2 = 1) y que el valor de la función objetivo es 37. Este valor se convertirı́a en
una cota inferior del problema entero S. Como la solución es entera, se poda
por optimalidad.

Por su parte, al resolver el subproblema S212 , se observa que la solución tam-


bién es entera (x1 = 5, x2 = 0) y que el valor de la función objetivo es 41. Como
este valor supera al de la cota inferior, lo reemplaza, convirtiéndose 41 en la
nueva cota inferior. Como la solución es entera, se poda por optimalidad.

El subproblema S2 ya se ha explorado al máximo, ası́ que vamos con el sub-


problema S1 . Tras resolverlo, se observa que la solución es entera (x1 = 3,
x2 = 3) y que el valor de la función objetivo es 39. Como esta solución es
entera, podrı́a convertirse en la cota inferior del problema S, pero ya tenemos
una cota inferior mejor, la hallada en el subproblema S212 . Como la solución
es entera, se poda por optimalidad.

13.8. GAP

En esta sección se introduce el concepto de gap, que indica cuán cerca puede
estar una solución entera del óptimo en función de los lejos que está de su
cota dual. Si no hay soluciones enteras no se puede calcular el gap.

Aunque se presenta en este capı́tulo de Branch and Bound, la idea es general y


se puede estudiar sobre las soluciones de cualquier otro método.
Capı́tulo 13. PROGRAMACIÓN ENTERA. BRANCH AND BOUND 166

La diferencia entre las cotas duales y primales nos da una idea del gap, como
se representa en la figura 13.16 en un problema de máximos.

z
Cota
dual
≈ Continua

gap

a saltos

Cota
primal
t/ iteración

Figura 13.16: Representación gráfica del gap

Cuantitativamente, siendo zP la cota primal y zD la cota dual, se obtiene por-


centualmente como se indica en la siguiente ecuación:

zP − zD
gap = (13.3)
zP

Mientras el gap sea positivo (en general, distinto de 0) hay posibilidades de


mejora; es decir, podemos aspirar a una solución mejor o, dicho de otro modo,
no podemos confirmar que tengamos la solución óptima.

Pueden darse distintos casos:

Se halla el óptimo muy pronto pero tardar mucho tiempo en demostrarlo,


porque sea necesario explorar todos los subproblemas (figura 13.17).
Capı́tulo 13. PROGRAMACIÓN ENTERA. BRANCH AND BOUND 167

z
Cota
dual

Cota horas
primal
t/ iteración

Figura 13.17: Primer caso: solución óptima temprana

Se tarda mucho tiempo en disminuir el gap (figura 13.18).

z
Cota
dual

Cota
horas
primal
t/ iteración

Figura 13.18: Segundo caso: disminución lenta del gap

Conseguir acercar rápidamente las cotas y lograr un buen valor del gap
(figura 13.19).
Capı́tulo 13. PROGRAMACIÓN ENTERA. BRANCH AND BOUND 168

z
Cota
dual

Cota
primal
t/ iteración

Figura 13.19: Tercer caso: solución buena temprana

Un ejemplo de este tercer caso, que tiene enfoque de mı́nimos, es el


siguiente (figura 13.8, en el que se ha detenido la ejecución con un gap
de 3 %.

Figura 13.20: Ejemplo gap AIMMS

En este ejemplo de mı́nimos, el cociente difiere del planteado para el


enfoque de máximos, y el gap se calcuları́a como:

zP − zD 135335 − 131277,86
gap = = = 0,03
zP 135335
Capı́tulo 14

PROGRAMACIÓN ENTERA. PLANOS DE


CORTE

14.1. Introducción

Las técnicas basadas en planos de corte son una alternativa a los métodos
basados en Branch and Bound.

La idea de estas técnicas se basa en que, dado un problema, se añaden restric-


ciones (que se llamarán planos de corte) de forma que en un número finito de
pasos la solución óptima de la relajación lineal asociado tiene valores enteros.
Claro está, el conjunto de cortes (restricciones) que se añaden no reducen el
espacio de factibilidad del problema entero (no se elimina ninguna solución
entera).

Volviendo a la analogı́a con un bizcocho con pasas. Las pasas son las solu-
ciones enteras y el bizcocho en sı́ la zona factible de la relajación lineal. Se
pueden hacer cortes con un cuchillo de forma que nunca se eliminen las pasas
del bizcocho de tal forma que tras algún corte con el cuchillo aparece una pasa
(solución entera) en la parte exterior del bizcocho, la miga (y que serı́a óptimo).

Existen dos familias de técnicas basadas en planos de corte:

Técnicas generales. Sirven para cualquier tipo de problema entero, pero


suelen ser poco eficaces. Un ejemplo de ellos son los cortes de Gomory.
Técnicas especı́ficas. Dependientes de la estructura del problema, no se
pueden aplicar a cualquier problema entero. Son más eficientes, pero
suponen un análisis previo de la estructura del problema.

En este capı́tulo nos vamos a centrar en un método de corte de los muchos que
hay en la literatura, más concretamente en una de las variantes del algoritmo
de Gomory. Esta variante nos sirve para resolver problemas de Programación
Lineal en los que todas las variables han de ser enteras.
Capı́tulo 14. PROGRAMACIÓN ENTERA. PLANOS DE CORTE 170

14.2. Fundamentos de los planos de corte

Supongamos que se trata de resolver el siguiente problema de Programación


Lineal Entera:

max. z = cx
s.a.:
(14.1)
Ax ≤ b
n
x ∈ Z+

Si prescindimos de la última restricción (x ∈ Z+


n
) y admitimos que las variables
x pueden tomar cualquier valor compatible con las restricciones tenemos el
siguiente problema de programación lineal asociado al problema entero:

max. z = cx
s.a.:
(14.2)
Ax ≤ b
x≥0

De ahora en adelante llamaremos al problema primero problema entero Pe y


al problema segundo problema común asociado P0 o, sencillamente, problema
continuo, problema lineal o relajación lineal.

Si nos referiremos a la zona factible de la relajación lineal P0 como F0 y a la


zona factible del problema entero Pe como Fe , del tema anterior sabemos que
se cumple que xe∗ ∈ Fe ∈ F0 .

Supongamos que hemos determinado ya una solución x0∗ óptima de P0 , porque


x0∗ ∉ Fe por no ser entera.

El fundamento del método consiste en buscar un plano secante (de corte) S,


que separe al conjunto F0 en dos partes F−1 y F1 , definidos por F1 = (S ≥ 0)∩F0
y F−1 = (S < 0) ∩ F0 , como se puede ver en la figura 14.1:
Capı́tulo 14. PROGRAMACIÓN ENTERA. PLANOS DE CORTE 171

x2 z
X0∗ ∈ F0 Xe∗ ∈ F1
7

4 x0∗
S<0 xe∗ x1∗ Corte
3
S≥0

1 2 3 4 5 6 x1

Figura 14.1: Ejemplo de dos cortes

Esto equivale a introducir una nueva restricción lineal:

S(x) ≥ 0 ; S(x) − hc1 = 0

siendo hc una nueva variable de holgura hc1 ≥ 0 en el problema de Progra-


mación Lineal P0 , obteniéndose un nuevo problema de Programación Lineal,
P1 , cuyo conjunto factible F1 incluye al Fe , es decir, dentro del cual sigue en-
contrándose la solución óptima xe∗ buscada del problema Pe , pero del cual
queda excluida la solución óptima x0∗ del problema P0 .

Evidentemente, la solución óptima x1∗ del nuevo problema lineal P1 será tal
que cx1∗ ≥ cxe∗ puesto que xe∗ ⊆ Fe ⊆ F1 y, al mismo tiempo, cx0∗ ≥ cx1∗
puesto que x1∗ ⊆ F1 ⊆ F0 luego:

cx0∗ ≥ cx1∗ ≥ cxe∗

y, por lo tanto:

c(x1∗ − xe∗ ) ≤ c(x0∗ − xe∗ )

x1∗ es pues una solución aproximada por exceso del problema Pe igual o más
próxima que x0∗ a la solución verdadera, xe∗ , y cx1∗ representa una cota supe-
rior igual o más estricta.
Capı́tulo 14. PROGRAMACIÓN ENTERA. PLANOS DE CORTE 172

Naturalmente, un elemento esencial en la aplicación de este método residirá


en la selección adecuada del plano de corte S. Precisamente, los distintos pro-
cedimientos del plano secante propuestos se diferencian en la forma de elegir
planos secantes adecuados.

Entonces se define un corte como una restricción que:

deja fuera del corte a la solución óptima de la última relajación lineal


resuelta, y
deja dentro del corte a todas las soluciones enteras del problema entero
original.

14.3. Expresión de las variables básicas en función de las no


básicas

Dado un problema de PL continua, una solución del mismo y por ello tene-
mos una base B, a la cual corresponden m variables siendo n las variables no
básicas que se anulan para la solución básica correspondiente a B.

m+n

m B A’

Figura 14.2: Matrices A y B

Colocando las columnas de las variables básicas en primer lugar (lo que exi-
girá sencillamente un cambio de notación de los ı́ndices), podemos escribir las
restricciones funcionales del problema P0 en la forma

A · x = (B|A )x = b

multiplicando esta expresión por la inversa B −1 de la matriz básica B

B −1 (B|A ) · x = B −1 · b

(I|B −1 · A ) · x = B −1 · b = uB

Ahora se puede dividir y despejar la igualdad matricial en función de las va-


riables que pertenecen a la base (B: pertenecen a la base) y las que no (NB: no
pertenecen a la base):

I · x B = uB − B −1 A · x NB

En definitiva, la ecuación i-ésima se escribe:


Capı́tulo 14. PROGRAMACIÓN ENTERA. PLANOS DE CORTE 173


xi = uBi − αik xk
k∈NB

haciendo B −1 A = [aik ]

Expresando las xiB en función de las variables no básicas:



xi = uBi − αik xk
k∈NB

Cuando la solución es básica se cumple

xi = uBi

. Esta expresión también permite observar cómo varı́a el valor de una variable
básica si se hace positiva una variable no báisca (en función del valor de la tasa
de sustitución, el valor de las aik ).

Se puede ver fácilmente con un ejemplo. Supongamos el problema lineal:


max. z = 4x1 + 6x2
s.a.:
x1 + 3x2 ≤ 56 (14.3)
3x1 + 2x2 ≤ 100
xi ≥ 0 ∀i

Si se añaden las variables de holgura h1 y h2 , se puede elegir, por ejemplo, la


base B1 : {h1 , h2 } y las dos restricciones técnicas se pueden expresar como:
56 = x1 + 3x2 + h1
(14.4)
100 = 3x1 + 2x2 + h2
O lo que es lo mismo:
h1 = 56 − x1 − 3x2
(14.5)
h2 = 100 − 3x1 − 2x2
En cambio si se elige la base B2 : {h1 , x1 } las dos restricciones se expresarı́an
como:
68 7 1
= 0x1 + x2 + h1 − h2
3 3 3
(14.6)
100 2 1
= x1 + x2 + 0h1 + h2
3 3 3
O lo que es igual:
68 7 1
h1 = − x2 + h2
3 3 3
(14.7)
100 2 1
x1 = − x2 − h2
3 3 3
Capı́tulo 14. PROGRAMACIÓN ENTERA. PLANOS DE CORTE 174

Como se puede ver en ambas bases, se ha presentado, para cada base, la expre-
sión de las variables básicas en función de las no básicas. Por ejemplo para la
base B2 se tiene la expresión de h1 y x1 en función de las variables no básicas
(x2 y h2 ).

14.4. Algoritmo de Gomory de las formas enteras

De la expresión presentada en el apartado anterior es de la que Gomory (en


1960) parte para formular un algoritmo en el que se van añadiendo cortes
al problema original de forma que en un número finito (aunque a veces muy
grande) se obtiene un corte que lleva a encontrar una solución entera que será
la óptima [?]. Es requisito imprescindible que los elementos A y b del problema
sean enteros.

Continuando con la analogı́a del bizcocho, este algoritmo supondrı́a hacer cor-
tes con el cuchillo de forma tal que en uno de los cortes tocarı́amos con el
cuchillo (o dejarı́amos al exterior) una pasa (y esa pasa serı́a la mejor).

Una gran ventaja de este algoritmo es que, dado cualquier problema que cum-
pla unas hipótesis concretas, se puede aplicar sin más.

Supongamos, como antes, que hemos encontrado una solución óptima de P0 ,


x0∗ = x B correspondiente a la base B y que ésta no cumple la condición de
tener todas sus componentes enteras.

Sea xiB una de éstas componentes no enteras y supongámosla expresada en


función de las variables no básicas xk (k ∈ NB) conforme a la expresión, ya
utilizada.

xi = uBi − αik xk
k∈NB

Por hipótesis, uBi es positiva pero no es entera puesto que xiB =uBi no es entera.

Definamos uBi de la siguiente forma:

uBi = ni0 + fi0

siendo:

ni0 entero y positivo (parte entera)


0 < fi0 < 1 (parte fraccional)

Asimismo, hagamos para cada coeficiente y αik la siguiente descomposición,

αik = nik + fik


Capı́tulo 14. PROGRAMACIÓN ENTERA. PLANOS DE CORTE 175

siendo:

ni0 entero (menor, igual o mayor que 0) (parte entera)


0 < fi < 1 (parte fraccional)

La expresión de xiB se rescribe entonce como:


 
uBi = ni0 − nik xk + fi0 − fik xk
k∈NB k∈NB

Entonces se puede considerar el plano S definido por



S(x) = −fi0 + fik xk ≥ 0
k∈NB

Este plano (o la restricción asociada) es la aportación principal de Gomory en


este algoritmo. Veamos ahora si esta restricción es un corte o no (deja fuera la
última solución entera y sigue haciendo factibles las soluciones enteras)

Evidentemente, x0∗ (solución óptima de la relajación lineal) queda en el


semiespacio abierto definido por S < 0 puesto que es solución básica

y todas las variables no básicas se anulan ( k∈NB fik xk = 0) y S(x) =
−fi0 < 0. Por lo tanto:

x0∗ ∈ (S < 0) ∩ F0 x0∗ ∈ F−1

Por otra parte, si consideramos una solución factible cualquiera de Pe ,


tendremos los elementos xiB y xk enteros por pertenecer a una so-
lución factible de Pe , ni0 y nik enteros por sus definiciones, luego

−fi0 + k∈NB fik xk ha de ser entero. Además, las xk han de ser no
negativas y, al menos una de ellas > 0 (pues ninguna solución entera
es de momento óptima pero sı́ no básica). Luego, (por las misma razón
 
que hacı́a que k∈NB xk > 0 deberá hacer ahora k∈NB fik xk > 0, luego
S(xe ) > −fi0 para cualquier solución entera.

Por lo tanto, recapitulando, S ha de ser:

entero
S > −fi0 y como fi0 < 1 entonces −fi0 > −1 y S > 0

Teniendo en cuenta la primera condición, la segunda equivale, evidentemente,


a

S≥0

Por lo tanto, toda solución factible xe de Pe cumple S ≥ 0 o, lo que es lo mismo:

Fe ∈ F1 siendo F1 = (S ≥ 0) ∩ F0

Por consiguiente, el plano S = 0 es un plano secante adecuado.


Capı́tulo 14. PROGRAMACIÓN ENTERA. PLANOS DE CORTE 176

El nuevo problema lineal P1 se escribirá ahora:

max. z = cx
s.a.:
Ax = b
 (14.8)
−fi0 + fik xk ≥ 0
k∈NB

x≥0

e introduciendo una nueva variable de holgura hck ,

max. z = cx
s.a.:
Ax = b
 (14.9)
hck − fik xk = −fi0
k∈NB

x ≥ 0 , hc ≥ 0

Por otra parte, hemos visto que S tenı́a que ser entero para cualquier solución
factible de Pe , luego, si añadimos a las restricciones de 14.10 la condición de
que x ∈ Z+ n
tenemos un nuevo programa entero equivalente al Pe de partida.

14.5. Aprovechamiento de la solución del problema continuo


asociado P0 para hallar la solución del problema continuo
asociado P1

Si la nueva restricción

hck − fik xk = −fi0
k∈NB

se añade al programa inicial P0 escrito precisamente en la forma:

max. z = cx
s.a.:
B −1
−1
(14.10)
Ix + (B |A ) · xk = B · b k ∈ NB
x≥0

vemos que S está también expresado en función de las variables no básicas en


la misma forma que las variables básicas xB , solo que si dichas variables no
básicas son todas nulas, resulta, como hemos visto

hc = −fi0 < 0
Capı́tulo 14. PROGRAMACIÓN ENTERA. PLANOS DE CORTE 177

Por lo tanto, podemos considerar el vector (x B , hc ) comouna solución


 básica
B 0
del nuevo problema P1 , correspondiente a la base B1 = cuya inversa
0 1
 
B −1 0
es B1−1 = .
0 1

Dicha solución del problema continuo P1 no es factible porque S no cumple


en ella la condición de no negatividad. La tabla correspondiente es óptima
no factible y se puede aplicar directamente el método de Lemke (o dual del
Simplex).

14.6. Desventajas de los planos de corte

Los planos de cortes genéricos (o independientes del tipo de problema) como


el que se ha estudiado de Gomory, tienen una conjunto de desventajas:

Problema de redondeo. ¿Puedo asumir que 3,000000001 es un número


entero o no? ¿Se siguen generando cortes o no?
Aún sabiendo que el número de planos de corte que hay que añadir es
finito, a veces este número puede ser muy grande y el algoritmo tarda
mucho tiempo en ejecutarse.
A diferencia de los métodos de descomposición no se obtiene ninguna
solución factible hasta terminar el algoritmo.

Con todo, los planos de corte han supuesto una base teórica para estudios
posteriores en los que se combinan junto con técnicas de descomposición (por
ejemplo: Branch and Cut).

14.7. ¿Cuántas iteraciones se debe mantener un corte en la ta-


bla?

Cada vez que se añade un corte, se añade una nueva columna (la correspon-
diente a la nueva variable de holgura) y una nueva fila. Si todas las filas y
columnas se mantuvieran siempre el tamaño de la tabla podrı́a ser muy gran-
de después de muchos cortes. Por lo tanto, en la medida que se añaden nuevos
cortes hay que desechar los viejos tan pronto que sea posible. Pero ¿es posible?
¿se puede desechar algún corte? Veamos.

Sea hck la variable de holgura correspondiente a un corte. Tras el primer pivote


nada más añadir el corte, hck se convierte en una variable no básica (tenı́a nivel
de actividad negativo y sale de la base). Es decir hck = 0, la solución óptima está
en el plano (hoperplano) de corte recién añadido (no hay holgura). Mientras
hck = 0 y siga siendo una variable no básica, las soluciones por las que se pasa
Capı́tulo 14. PROGRAMACIÓN ENTERA. PLANOS DE CORTE 178

en esas iteraciones del algoritmo siguen estando en mismo plano de corte


correspondiente a hck . En esas iteraciones el corte sigue activo. La variable hck
tiene tasas de sustitución no nulas y el corte no puede ser desechado.

Pero cuando en alguna iteración hck vuelve a entrar en la base, el valor de esta
variable se hace positivo y la solución ya no está en el plano de corte hck = 0;
el corte se vuelve inactivo. A partir de este momento las tasas de sustitución
de hck son todas nulas salvo en la fila correspondiente a hck . Es decir el corte
puede eliminarse y la fila y variable correspondiente también.

Es decir, a modo de resumen, el “ciclo de vida” de la restricción asociada al


corte es el siguiente:

Paso 0: hci no existe. Se añade el corte i lo que genera la variable de


holgura hci
Paso 1: hci = 0; el plano actúa
... después de n interacciones ...
Paso n+1: hi ≥ 0 ; hi se hace básica y el plano de corte no actúa y no
actuará más. Se puede prescindir del plano.

14.8. Distintas formulaciones de un problema entero

Observemos que un mismo conjunto de soluciones enteras de un problema de


programación lineal entero admite formulaciones distintas.

14.8.1. Ejemplo de distintas formulaciones

En la figura 14.3 se muestran dos formulaciones distintas para el conjunto


X = {(1, 1), (2, 1), (3, 1), (1, 2), (2, 2), (3, 2), (2, 3)}

x2
3

x1
1 2 3 4

Figura 14.3: Dos formulaciones distintas de un problema entero


Capı́tulo 14. PROGRAMACIÓN ENTERA. PLANOS DE CORTE 179

Geométricamente, se ve rápidamente que hay innumerables formulaciones pa-


ra un mismo problema. Entonces, ¿cómo elegir la mejor?

La geometrı́a nos da la respuesta. Obsérvese la figura 14.4, en la que se han


repetido las dos formulaciones mostradas en la figura 14.3 y se ha añadido una
tercera P3 . Esta última formulación es ideal, porque si se resuelve la relajación
lineal de P3 , la solución óptima es un punto extremo. En este caso, cada punto
extremo es entero, por lo que el problema entero puede resolverse como un
simple problema lineal (sin necesidad de incluir condiciones de integridad).

x2
3

x1
1 2 3 4

Figura 14.4: La formulación ideal

Lo deseable serı́a que todos los puntos extremos del poliedro que se usa como
formulación fuesen enteros.

14.8.2. Definiciones

Poliedro entero, envolvente convexa o convex hull. Se dice que un po-


liedro es entero si todos sus puntos extremos son enteros. Sin embargo,
pocas veces sucede que la formulación de la que se parte sea la formu-
lación ideal. Además, tratar de encontrar todas las restricciones de esta
formulación ideal no es fácil ni rápido en la práctica, normalmente es ne-
cesario un número exponencial de restricciones. Esto motiva la siguiente
definición.
Mejor formulación. Dadas las formulaciones P1 y P2 de un conjunto X ∈
Rn , se dice que P1 es mejor formulación que P2 si P1 ∈ P2 .
Desigualdad válida. Una desigualdad π t x ≤ π0 se dice que es una des-
igualdad válida para un problema entero (P) si es satisfecha por todos
los puntos factibles del problema. Dado un problema concreto, pueden
identificarse desigualdades válidas especı́ficas que permitan eliminar so-
luciones de la relajación lineal de forma que la solución óptima de la
relajación lineal se acerque más a la solución óptima del problema ente-
ro.
Capı́tulo 14. PROGRAMACIÓN ENTERA. PLANOS DE CORTE 180

Corte. Una desigualdad π t x ≤ π0 se dice que es un corte para un proble-


ma entero P E si, además de ser desigualdad válida, existe algún punto
de la relajación lineal P EL de este problema que no la satisface. En ese
caso, se dice que la desigualdad corta dichos puntos.
Dominancia. Dadas dos desigualdades válidas π t x ≤ π0 y π  tx ≤ π0
para un mismo problema, se dice que la primera desigualdad domina a
la segunda si existe un valor λ ≤ 0 tal que

 ≤ λπ y λπ0 ≤ π
π 0,

con al menos una de las dos desigualdades estricta.

14.8.3. Ejemplo de la utilidad de los cortes especı́ficos

En esta sección se presenta un ejemplo gráfico de la utilidad que tienen los


cortes (o desigualdades válidas). Partimos de un problema de PL cuya región
de factibilidad es la siguiente:

x2
5 z

1 2 3 4 5 x1
Ejemplo: región factible

Es posible añadir cortes a la formulación del PL original en forma de restric-


ciones, de manera que se encuentre una curva envolvente convexa, como se
observa a continuación. El resultado es la acotación de la región factible sin
eliminar ninguna solución entera.
Capı́tulo 14. PROGRAMACIÓN ENTERA. PLANOS DE CORTE 181

max. z = x1 + x2
x2
s.a.: 5 z
x1 + x2 ≥ 2
x2 ≤ 4
x2 ≥ 1 4
x

x1 ≥ 0
1 +
2
x1 − x2 ≤ 1 x
2 ≤
9

x1 ≤ 3 3

x1 ≤ 3
x1 + 2x2 ≤ 9
2
x1

1
x2 ≤ 4

2 ≤
+
x2

x
1 −

x1 , x2 ≥ 0
2

x
1 x2 ≥ 1
x1 , x2 ∈ Z+

1 2 3 4 5 x1
Ejemplo: envolvente convexa

Por último, conocido la envolvente convexa, en base a la función objetivo y su


dirección, se puede calcular la solución óptima de la relajación lineal, que será
además una solución entera.

x2
5 z

xe∗
3

1 2 3 4 5 x1
Ejemplo: solución óptima entera

14.9. Ejercicio hecho a mano

Resolver el siguiente problema mediante el algoritmo de Gomory de las formas


enteras:
Capı́tulo 14. PROGRAMACIÓN ENTERA. PLANOS DE CORTE 182

max. z = 2x1 + 3x2


s.a.:
x1 + 3x2 ≤ 6 (14.11)
2x1 + x2 ≤ 5
x1 , x2 ∈ Z+

La solución del problema continuo asociado P0 (sin la restricción de que x1 y


x2 tienen que ser enteras) se muestra en la siguiente tabla:

x1 x2 h1 h2
-39/5 0 0 -4/5 -3/5
x2 7/5 0 1 2/5 -1/5
x1 9/5 1 0 -1/5 3/5

x2 z

x0∗

1 2 3 x1

Figura 14.5: Solución de la relajación lineal

Tanto en la tabla como en la figura 14.5, se observa que esta solución óptima
no es solución del problema entero. Vamos a aplicar el algoritmo de Gomory
con la variable x1 (la de mayor fi0 ).

Para ello introducimos un plano nuevo (una restricción). Particularizamos la


siguiente fórmula para la fila nº 2 del cuadro:

S = −f20 + f23 h1 + f24 h2

4 4 3
S=− + h1 + h2
5 5 5
Capı́tulo 14. PROGRAMACIÓN ENTERA. PLANOS DE CORTE 183

Si S = 0, entonces:
4 3 4
h1 + h2 =
5 5 5

Si se convierte esta restricción a menor o igual:


4 3 4
− h1 − h2 ≤ −
5 5 5
y ahora en igualdad introduciendo la variable de holgura hc1 :
4 3 4
− h1 − h2 + hc1 = −
5 5 5

Esta nueva restricción se introduce en el cuadro del Simplex que habı́amos


obtenido como solución del problema continuo asociado P0 .
x1 x2 h1 h2 hc1
-7 0 0 -4/5 -3/5 0
x2 7/5 0 1 2/5 -1/5 0
x1 9/5 1 0 -1/5 3/5 0
hc1 -4/5 0 0 -4/5 -3/5 1

Esta solución es óptima, pero no es factible. Aplicamos el método de Lemke


pivotando sobre - 54 (entra h1 y sale hc1 ) y se llega a la siguiente solución.

x1 x2 h1 h2 hc1
-39/5 0 0 -4/5 -3/5 0
x2 1 0 1 0 -1/2 1/2
x1 2 1 0 0 3/4 -1/4
h1 1 0 0 1 3/4 -5/4

Se obtiene ahora una solución óptima factible y con las variables x1 y x2 ente-
ras.

x2
z

x0∗

1 xe∗

Corte

1 2 3 x1

Figura 14.6: Solución del problema entero


Capı́tulo 14. PROGRAMACIÓN ENTERA. PLANOS DE CORTE 184

En la figura 14.6 se puede observar el corte producido por 10x1 + 15x2 =


35 (expresión del mismo corte pero en las variables x1 y x2 en lugar de en
términos de h1 y h2 , variables no básicas).

Nota: tras añadir la nueva fila correspondiente al corte se podrı́a haber pivota-
do por 35 . En ese caso se habrı́a llegado a otra solución que es óptima también
(óptima múltiple, al ser el corte paralelo a la z, pero no entera).

14.10. Otro ejercicio de corte de Gomory

Se tiene el siguiente problema de Programación Lineal Entera:

max. z = 2x1 + 4x2


s.a.:
6x1 + 2x2 ≤ 39
2x2 + 2x2 ≤ 15
2x2 ≤ 5
x1 , x2 ∈ Z+

Tras aplicar el método del Simplex, o de forma gráfica, hallamos la solución


óptima, x0∗ :

5 z

4
max. z = 2x1 + 4x2
s.a.: 3 x0∗

6x1 + 2x2 ≤ 39
2
2x2 + 2x2 ≤ 15
2x2 ≤ 5 1

x1 , x2 ∈ Z+
x
1 2 3 4 5 6

−1

Solución óptima x0∗

Al ser x0∗ continua, tenemos que introducir un corte. Definimos el primer plano
de corte como se indica a la izquierda y lo incluimos en el gráfico como se
muestra a la derecha:
Capı́tulo 14. PROGRAMACIÓN ENTERA. PLANOS DE CORTE 185

5 z

3 x0∗

1 1 2
− + h3 ≥ 0
2 2
1

x
1 2 3 4 5 6

−1

Introducción del primer plano secante

El nuevo plano se introduce en la tabla del Simplex de la solución óptima an-


terior como:
1 1
− h3 + hc1 = −
2 2

x1 x2 h1 h2 h3 hc1
-20 0 0 0 -1 -1 0
h1 4 0 0 1 -3 2 0
x1 5 1 0 0 1/2 -1/2 0
x2 5/2 0 1 0 0 1/2 0
hc1 -1/2 0 0 0 0 -1/2 1

-19 0 0 0 -1 0 -2
h1 2 0 0 1 -3 0 4
x1 11/2 1 0 0 1/2 0 -1
x2 2 0 1 0 0 0 1
h3 1 0 0 0 0 1 -2

Tabla 14.1: Tabla correspondiente a la introducción del primer corte

Tras iterar en la tabla del Simplex, se obtiene la nueva solución óptima y se


observa que se transforma en la siguiente restricción:

x2 ≤ 2
Capı́tulo 14. PROGRAMACIÓN ENTERA. PLANOS DE CORTE 186

A continuación, se muestra a la izquierda la formulación matemática actualiza-


da del problema y a la derecha su representación gráfica. La solución óptima,
hallada en la tabla del Simplex anterior, se señala como x1∗ .

5 z

max. z = 2x1 + 4x2


4
s.a.:
6x1 + 2x2 ≤ 39 3 x0∗

2x2 + 2x2 ≤ 15
2
2x2 ≤ 5 x1∗

x2 ≤ 2 1

x1 , x2 ∈ Z+
x
1 2 3 4 5 6

−1

Introducción del segundo corte. Solución x1∗

La solución óptima obtenida, x1∗ , también es continua, ası́ que tenemos que
introducir un nuevo corte.

Definimos el segundo plano secante como se indica a la izquierda y lo inclui-


mos en el gráfico como se muestra a la derecha:

5 z

3 x0∗

2
x1∗
1
1 1
− + h2 ≥ 0
2 2 x
1 2 3 4 5 6

−1

Introducción segundo plano secante


Capı́tulo 14. PROGRAMACIÓN ENTERA. PLANOS DE CORTE 187

El nuevo plano se introduce en la tabla del Simplex de la solución óptima an-


terior como:
1 1
− h2 + hc2 = −
2 2

Tras iterar en la tabla del Simplex, se obtiene la nueva solución óptima y se


observa que se transforma en la siguiente restricción:

x1 + x2 ≤ 7

x1 x2 h1 h2 h3 hc1 hc2
-19 0 0 0 -1 0 -2 0
h1 2 0 0 1 -3 0 4 0
x1 11/2 1 0 0 1/2 0 -1 0
x2 2 0 1 0 0 0 1 0
h3 1 0 0 0 0 1 -2 0
hc2 -1/2 0 0 0 -1/2 0 0 1

-18 0 0 0 0 0 -2 -2
h1 5 0 0 1 0 0 4 -6
x1 5 1 0 0 0 0 -1 1
x2 2 0 1 0 0 0 1 0
h3 1 0 0 0 0 1 -2 0
h2 1 0 0 0 1 0 0 -2

Tabla 14.2: Tabla correspondiente a la introducción del segundo corte

A continuación, se muestra a la izquierda la formulación matemática actualiza-


da del problema y a la derecha su representación gráfica. La solución óptima,
hallada en la tabla del Simplex anterior, se señala como xe∗ .
Capı́tulo 14. PROGRAMACIÓN ENTERA. PLANOS DE CORTE 188

max. z = 2x1 + 4x2 5 z

s.a.:
4
6x1 + 2x2 ≤ 39
2x2 + 2x2 ≤ 15 3 x0∗

2x2 ≤ 5 x1∗
2
x2 ≤ 2 xe∗

x1 + x2 ≤ 7 1

x1 , x2 ∈ Z+
x
1 2 3 4 5 6

−1

Introducción del segundo corte. Solución xe∗

La solución óptima obtenida, xe∗ , ya es entera, de forma que el problema de


PLE queda resuelto.
Capı́tulo 15

OPTIMIZACIÓN EN RED

15.1. Introducción

Los modelos de redes (teorı́a de grafos) se aplican a una extensa variedad de


problemas de decisión, los cuales pueden ser modelados como problemas de
optimización de redes que pueden ser eficiente y efectivamente resueltos (me-
jor que si se formularan como Programación Lineal Entera). Algunos de estos
problemas de decisión son realmente problemas fı́sicos, tales como el trans-
porte o flujo de bienes materiales. Sin embargo, muchos problemas de redes
son más que una representación abstracta de procesos o actividades, tales co-
mo el camino crı́tico en las actividades entre las redes de un proyecto.

La familia de los problemas de optimización en red incluye los siguientes tipos:


árbol generador de peso mı́nimo, ruta más corta entre dos nodos especı́ficos,
flujo máximo, flujo con coste mı́nimo, transporte, asignación, ciclos euleria-
nos y hamiltonianos. Todos estos problemas se pueden formalizar fácilmente
mediante el uso de arcos de redes y de los nodos.

En este capı́tulo se van a ir presentando un conjunto amplio de estos proble-


mas (pero no todos) y se explicará al menos uno de los algoritmos ad-hoc para
cada problema. Pero antes se propone una sección previa de terminologı́a y
conceptos básicos.

15.2. Terminologı́a

Se suele hablar de red o de grafo que está formado por nodos y arcos, o vérti-
ces y aristas o nudos y ramas. En el ejemplo de la figura 15.1 el grafo está
compuesto por el conjunto de nodos N = {1, 2, 3, 4, 5} y el conjunto de arcos
A = {(1, 2); (1, 3); (1, 4); (3, 4); (3, 5); (5, 4)}.
Capı́tulo 15. OPTIMIZACIÓN EN RED 190

1 2

3 4

Figura 15.1: Ejemplo de grafo dirigido

15.2.1. Conceptos básicos

Se pueden definir los siguientes conceptos:

arco dirigido: aquel que permite el flujo sólo en un sentido (cualquiera


de los arcos de la figura 15.1).
red dirigida: aquella red de nodos unidos por arcos dirigidos.
camino: secuencia de arcos que conectan nodos.
camino dirigido (o camino): secuencia de arcos dirigidos todos ellos en
el sentido del nodo inicial al final. Por ejemplo, los arcos (1,3) (3,5).
cadena: secuencia de arcos dirigidos en cualquier sentido. Por ejemplo,
lo arcos (1,3) (3,4) (4,5).
ciclo: camino que empieza y acaba en el mismo nodo. En el ejemplo no
hay ciclos.
nodos conexos: dos nodos son conexos (están conectados) si existe al
menos una cadena que los una.
red conexa: red en la que todas las parejas de nodos son conexas.
árbol: red conexa sin ciclos. Por ejemplo, el de la figura 15.1.
árbol generador: red conexa sin ciclos que tiene exactamente n−1 arcos,
si hay n nodos. Por ejemplo, el de la figura 15.2.
capacidad de un arco: máximo flujo que atraviesa por un arco.
nodo de generación: aquel nodo cuyo flujo saliente excede al entrante.
nodo de consumo: aquel nodo cuyo flujo entrante excede al saliente.
nodo de transbordo (conexión): aquel en el que se conserva el flujo (flujo
entrante igual al saliente).

15.2.2. Representación de un grafo

Los grafos se pueden representar mediante el propio dibujo, pero:

el uso de dibujos no es un método eficiente para grafos muy grandes,


Capı́tulo 15. OPTIMIZACIÓN EN RED 191

1 2

3 4

Figura 15.2: Ejemplo de árbol generador

no es fácilmente transportable la abstracción de un dibujo al ordenador,


y
muchas veces un mismo grafo dibujado de formas distintas puede en-
gañar y parecer dos grafos distintos (ver figura 15.3).

2
1

3 4 3 1 4 1

2 3 4
2

Figura 15.3: Ejemplo de un mismo grafo no dirigido dibujado de formas dis-


tintas

Por eso se recurre a la representación matricial de un grafo (la matriz es única


e independiente del dibujo y es un elemento con el que un ordenador, que no
tiene mente abstracta, puede trabajar). Hay dos tipos de representaciones ma-
triciales de un grafo: utilizando la matriz de incidencia o utilizando la matriz
de adyacencia.

15.2.2.1. Matriz de incidencia

En la matriz de incidencia las filas son los nodos del grafo y las columnas las
aristas. Los elementos de la matriz, bi,j , se definen como:

1 si el nodo i pertenece a la arista j
bij =
0 otro caso
Capı́tulo 15. OPTIMIZACIÓN EN RED 192

1 1
1 2 1 2

2 2
4 5 4 5

3
3 4 3 4
3

Figura 15.4: Grafo dirigido y grafo no dirigido

Si el grafo es dirigido el elemento de la matriz de un nodo inicial de un arco


tendrá un −1 y si es nodo final un 1.

La matriz de incidencia no tiene por qué ser cuadrada. La dimensión de la


matriz depende del número de nodos y arcos y su relación de aspecto de la
relación entre nodos y arcos (lo mallado que sea el grafo).

Dados los dos grafos de la figura 15.4 sus matrices de incidencia son respecti-
vamente:
⎡ ⎤ ⎡ ⎤
1 1 0 1 0 −1 −1 0 1 0
⎢ ⎥ ⎢ ⎥
⎢ 1 0 0 0 1⎥ ⎢1 0 0 0 −1⎥
⎢ ⎥ ⎢ ⎥
⎢ 0 0 1 1 0⎥ ⎢0 0 1 −1 0⎥
⎣ ⎦ ⎣ ⎦
0 1 1 0 1 y 0 1 −1 0 1

15.2.2.2. Matriz de adyacencia

En la matriz de adyacencia las filas son los nodos del grafo y las columnas
también. Los elementos de la matriz de adyacencia, ai,j , se definen como:

1 si existe arco del nodo i alj
aij =
0 otro caso

Esta matriz es siempre cuadrada y si el grafo es no dirigido además es simétri-


ca.

Dados los dos grafos de la figura anterior 15.4 sus matrices de adyacencia son
respectivamente:
⎡ ⎤ ⎡ ⎤
0 1 1 1 0 1 0 1
⎢ ⎥ ⎢ ⎥
⎢1 0 0 1⎥ ⎢0 0 0 1⎥
⎢ ⎥ ⎢ ⎥
⎢1 0 0 1⎥ ⎢1 0 0 0⎥
⎣ ⎦ ⎣ ⎦
1 1 1 0 y 0 0 1 0
Capı́tulo 15. OPTIMIZACIÓN EN RED 193

15.3. Problema del camino mı́nimo

Aplicaciones:
Cálculo de rutas más corta entre dos estaciones del metro (el plano del
metro es un grafo)
Cálculo de camino más corto con un navegador de un coche o con Google
Maps
Enrutamiento por el camino más corto de paquetes de datos entre servi-
dores

Hipótesis:
red conexa no dirigida
cada arco no dirigido lleva asociada una distancia no negativa.

Objetivo: encontrar las distancia (coste, tiempo, etc.) mı́nima entre el origen
(uno de los nodos) y el resto de los nodos del grafo.

Otras posibilidades (que no se estudian):


redes dirigidas (la expansión de los nodos sólo se puede hacer en arcos
que salen del nodo correspondiente)
restricciones en los arcos

15.3.1. Algoritmo de Dijsktra

En 1959 Dijkstra propuso el siguiente algoritmo para resolver el problema del


camino mı́nimo [?].

Se basa en:
ir etiquetando los nodos, primero de forma temporal (calculando la me-
jor distancia hasta el momento desde el nodo inicial) y después de forma
permanente (cuando ya se conoce la mejor distancia acumulada).
que si se conoce el camino mı́nimo entre dos nodos, esta información
se puede reutilizar para calcular el camino mı́nimo desde el origen hasta
ese nodo del que conocemos ya el camino mı́nimo.

Durante la ejecución del algoritmo los nodos se van etiquetando de forma


temporal (por ejemplo mediante { }) y luego de forma permanente (mediante
[ ]). Dentro de cada llave o corchete se indica la información relativa el nodo
previo y la distancia acumulada del mejor camino mı́nimo encontrado hasta
ese momento.
Capı́tulo 15. OPTIMIZACIÓN EN RED 194

2
B E

3 1 3 3

2
A C F

4 4 5
2
3
D G

Figura 15.5: Algoritmo de Dijkstra - Datos

El algoritmo se puede enunciar ası́:


input : grafo no dirigido con distancias positivas en cada arco
output: camino mı́nimo desde un nodo inicial al resto de nodos
1 inicialización, etiquetar de forma permanente el nodo inicial [-,0];
2 while no estén todos los nodos etiquetados de forma permanente do
3 paso 1: desde el último nodo que se ha etiquetado de forma
permanente expandir los cálculos hacia los nodos a los que se puede
llegar desde el nodo recién etiquetado etiquetando de forma temporal
dichos nodos;
4 paso 2: de los nodos con etiquetas temporales conservar la mejor
etiqueta temporal (menor distancia acumulada desde el nodo inicial) ;
5 paso 3: elegir como siguiente nodo con etiqueta permanente aquel con
etiqueta temporal con distancia acumulada más pequeña;
6 end
Algoritmo 2: Algoritmo de Dijsktra

En el paso 3, la clave del algoritmo está en que seleccionado el nodo con eti-
queta temporal con distancia acumulada más pequeña como siguiente nodo
etiquetado de forma permanente esa distancia es la mı́nima para llegar desde
el nodo inicial; pues si fuera otra (viniendo desde uno de los nodos aún tempo-
rales) esa distancia será siempre mayor pues ya lo es y además hay que añadir
la distancia de los arcos necesarios.

Veamos el algoritmo con el siguiente ejemplo, cuyos datos (grafo y distancias)


se muestran en la figura 15.5, en el que se quiere calcular el camino mı́nimo
desde A al resto de nodos:

Iteración 0, inicialización. Se etiqueta de forma el nodo inicial (nodo A


en el ejemplo): [-,0].
Iteración 1. Desde el nodo A nos expandimos a los nodos adyacentes (B
y D) etiquetándolos de forma temporal (ver figura 15.6 izquierda).
De los nodos con etiqueta temporal se elige el de menor distancia acumu-
lada desde A y se etiqueta de forma permanente (ver figura 15.6 derecha).
Capı́tulo 15. OPTIMIZACIÓN EN RED 195

Iteración 2. Se expande desde el nodo B, no se puede hacia A, pero sı́


hacia C y E. Se etiquetan dichos nodos de forma temporal.
Se etiqueta de forma temporal el nodo de menos distancia acumulada
(elegir entre C y D), se elige C arbitrariamente.
Iteración 3. Se expande desde el nodo C (recién etiquetado) hacia D, E y
F. Se etiquetan dichos nodos de forma temporal.
Se eliminan las etiquetas temporales de D y E que son mejoradas.
Se etiqueta de forma temporal el nodo de menos distancia acumulada (el
D).
Iteración 4. Se expande desde D (recién etiquetado) y se etiqueta de for-
ma permanente E.
Iteración 5. Se expande desde E y se etiqueta de forma permanente.
Última iteración. Se etiqueta el nodo G, se acaba el algoritmo.

Ahora se conocen los caminos más cortos desde A al resto de los nodos. Por
ejemplo para ir de A a E el camino más corto es pasando por ABE y la distancia
es de 5. Para ir de A a F el camino más corto es vı́a ABCF con una distancia de
6.

2 2
B E B E

3 {A,3} 1 3 3 3 [A,3] 1 3 3

2 2
A C F A C F

[-,0] 4 4 5 [-,0] 4 4 5
2 2
3 3
D G D G

{B,4} {B,4}
a) expansión desde el nodo A b) etiquetado permanente del nodo B

Figura 15.6: Algoritmo de Disjkstra - Iteración 1


Capı́tulo 15. OPTIMIZACIÓN EN RED 196

2 2
B E B E

3 [A,3] 1 3 {B,5} 3 3 [A,3] 1 3 {B,5} 3

2 2
A C F A C F

[-,0] 4 4 {B,4}5 [-,0] 4 4 [B,4] 5


2 2
3 3
D G D G

{A,4} {A,4}
a) expansión desde el nodo B b) etiquetado permanente del nodo C

Figura 15.7: Algoritmo de Disjkstra - Iteración 2

2 2
B E {B,5}, {C,7} B E {B,5}
3 [A,3] 1 3 3 3 [A,3] 1 3 3

2 2
A C F A C F

[-,0] 4 4 [B,4] 5 {C,6} [-,0] 4 4 [B,4] 5 {C,6}


2 2
3 3
D G D G

{A,4}, {C,8} [A,4]

a) expansión desde el nodo C b) etiquetado permanente de D

Figura 15.8: Algoritmo de Disjkstra - Iteración 3

2 2
B E {B,5} B E [B,5]
3 [A,3] 1 3 3 3 [A,3] 1 3 3

2 2
A C F A C F

[-,0] 4 4 [B,4] 5 {C,6} [-,0] 4 4 [B,4] 5 {C,6}


2 {D,9} 2
3 3
D G D G

[A,4] {D,7} [A,4] {D,7}


a) expansión desde el nodo D b) etiquetado permanente de E

Figura 15.9: Algoritmo de Disjkstra - Iteración 4

La utilización del algoritmo de Dijkstra es mucho más eficiente que resolver el


mismo problema mediante los algoritmos estudiados de PLE.

Si se quiere calcular los caminos más cortos de todos los nodos a todos los
nodos, se utilizarı́a el algoritmo de Floyd-Warshall.
Capı́tulo 15. OPTIMIZACIÓN EN RED 197

2 2
B E [B,5] B E [B,5]
3 [A,3] 1 3 3 3 [A,3] 1 3 3

2 2
A C F A C F

[-,0] 4 4 [B,4] 5 {C,6} [-,0] 4 4 [B,4] 5 [C,6]


2 {E,8} 2
3 3
D G D G

[A,4] {D,7} [A,4] {D,7}


a) expansión desde el nodo E b) etiquetado permanente de F

Figura 15.10: Algoritmo de Disjkstra - Iteración 5

2
B E [B,5]
3 [A,3] 1 3 3

2
A C F

[-,0] 4 4 [B,4] 5 [C,6]


2
3
D G

[A,4] [D,7]

Figura 15.11: Algoritmo de Disjkstra - Resultado final

15.4. Problema del árbol generador de peso mı́nimo

Aplicaciones:

redes de telecomunicaciones
redes de distribución
redes de transporte

Hipótesis:

red conexa no dirigida


cada arco no dirigido lleva asociada una distancia no negativa.

Objetivo: encontrar la cadena de longitud mı́nima que recorre todos los nodos
sin ciclos (es decir, el árbol generador de peso mı́nimo).

Métodos:

Prim
Kurskal
Capı́tulo 15. OPTIMIZACIÓN EN RED 198

15.4.1. Algoritmo de Prim

Se buscan las conexiones más cortas.


input : grafo no dirigido con distancias positivas en cada arco
output: árbol generador de peso mı́nimo
1 inicialización, elegir un nodo inicial aleatoriamente ;
2 while no estén unidos todos los nodos mediante un árbol generador do
3 estudiar las conexiones que se pueden alcanzar con el árbol actual
(solución no completa actual) ;
4 elegir la conexión más corta (de los arcos que se podrı́an añadir al
árbol, el de menor distancia);
5 end
Algoritmo 3: Algoritmo de Prim

De esta forma, a partir de un nodo inicial, en cada iteración se va generando


un árbol (con un arco más en cada una).

Se puede probar que la elección del nodo inicial no influye en la función objeti-
vo; sı́, en el caso de soluciones múltiples puede ser que haya dos o más árboles
generadores óptimos distintos.

Vamos a buscar el árbol generador de peso mı́nimo del problema de la figura


15.5:

Iteración 1. Se elige, al azar, el nodo C como nodo de inicio.


Iteración 2. La conexión más cercana es con el nodo B (dCB = 1).
Con el nuevo árbol (nodos B y C; arco BC).
Iteración 3. La conexión más cercana es BE o CF (ambas con una distancia
de 2); se elige una arbitrariamente BE.
Iteración 4. La siguiente conexión más cercana, dado el árbol actual, es
CF.
Iteración 5. Se añade el arco FG.
Iteración 6. Se pueden añadir los arcos BA o GD (ambos con distancia 3).
Se ha elegido GD.
Última interacción. En la última iteración se añade el arco BA quedando
identificado un árbol generador (7-1 arcos) y con peso mı́nimo (la suma
de todos los arcos del árbol: 13), ver figura 15.18.
Capı́tulo 15. OPTIMIZACIÓN EN RED 199

2 2
B E B E

3 1 3 3 3 1 3 3

2 2
A C F A C F

4 4 5 4 4 5
2 2
3 3
D G D G

Figura 15.12: Algoritmo de Prim - It. 1 Figura 15.13: Algoritmo de Prim - It. 2

2 2
B E B E

3 1 3 3 3 1 3 3

2 2
A C F A C F

4 4 5 4 4 5
2 2
3 3
D G D G

Figura 15.14: Algoritmo de Prim - It. 3 Figura 15.15: Algoritmo de Prim - It. 4

2 2
B E B E

3 1 3 3 3 1 3 3

2 2
A C F A C F

4 4 5 4 4 5
2 2
3 3
D G D G

Figura 15.16: Algoritmo de Prim - It. 5 Figura 15.17: Algoritmo de Prim - It. 6

2
B E

3 1 3 3

2
A C F

4 4 5
2
3
D G

Figura 15.18: Algoritmo de Prim - Resultado final


Capı́tulo 15. OPTIMIZACIÓN EN RED 200

15.4.2. Algoritmo de Kurskal

En este caso se busca utilizar los arcos más cortos (de menor distancia).
input : grafo no dirigido con distancias positivas en cada arco
output: árbol generador de peso mı́nimo
1 while no estén unidos todos los nodos mediante un árbol generador do
2 añadir al árbol el arco con menor distancia no añadido aún de forma
que no se generen ciclos.;
3 end
Algoritmo 4: Algoritmo de Kurskal

Al aplicar el algoritmo de Kurskal al problema de la figura 15.5. los arcos que


se van seleccionando son: CB, BE, CF, FG, GD, BA. Hay que darse cuenta de que
los arcos CE y EF no pueden utilizarse (aunque tengan igual distancia que los
BA y DG: 3) porque si se utilizan generarı́an ciclos.

Se pueden ver el resultado en la figura 15.19 que como es lógico, el resultado


es el mismo que si se hubiera hecho con Prim, salvo en el caso de soluciones
óptimas múltiples, en cuyo caso el árbol podrı́a ser distinto, pero con el mismo
peso mı́nimo de los árboles.

2
B E

3 1 3 3

2
A C F

4 4 5
2
3
D G

Figura 15.19: Algoritmo de Kurskal

Los empates se pueden solucionar de forma arbitraria sin perder el óptimo.


Para problemas grandes Kurskal es más lento que Prim.

15.5. Problema del flujo máximo

Aplicaciones:

maximizar flujos en tuberı́as de agua o petroleo


maximizar flujo de coches entre dos puntos
Capı́tulo 15. OPTIMIZACIÓN EN RED 201

Hipótesis:

red conexa dirigida sin bucles


nodos origen y destino, el resto de transbordo (no generan ni consumen
flujo)
cada arco dirigido lleva asociada una capacidad máxima (cij )

Objetivo: maximizar el flujo entre el origen el destino

Métodos:

la Programación Lineal
algoritmo de los caminos de aumento (Ford-Fulkerson)

Se va a estudiar este último.

15.5.1. Flujo compatible

Se define flujo compatible como aquel que verifica:

el flujo no supera la capacidad de ningún arco (ϕij ≤ cij )


la ley de conservación de flujo en todos los nodos salvo el origen y el
destino: el flujo entrante es igual al saliente

Según esto, el objetivo del problema del flujo máximo se puede redefinir como:
determinar el flujo compatible que transporta la mayor cantidad de flujo de la
fuente al destino.

15.5.2. Método del camino de aumento

Se basa en tres conceptos principales: red residual, camino de aumento y corte.

Capacidad residual de un arco. Los arcos tienen una capacidad inicial (nomi-
nal), en la medida que se mete flujo por un arco, la capacidad que le queda
disponible (residual) va disminuyendo hasta el lı́mite en el que el arco no tiene
capacidad residual. La suma de la capacidad residual y el flujo es la capacidad
nominal.

Red residual. Indica el flujo sobrante de cada arco para asignarle flujo adicio-
nal sin violar su capacidad. Es la red cuya capacidad es la capacidad residual
de cada arco.
Capı́tulo 15. OPTIMIZACIÓN EN RED 202

Camino de aumento. Camino dirigido del origen al destino en la red residual


con todos sus arcos con capacidad residual estrictamente positiva. Es un ca-
mino por el que se pude llevar flujo del O al D.

Capacidad residual del camino de aumento. El mı́nimo de las capacidades


residuales de los arcos de dicho camino. Indica el máximo flujo que puede ir
por ese camino de aumento.

Corte. Partición de la red en dos subredes cualesquiera, conteniendo una al


origen y otra al destino.

Capacidad de un corte. Suma de las capacidades de los arcos que unen ambas
subredes (cruzan el corte) en el sentido del O al D.

Flujo de un corte. Suma de los flujos que atraviesan el corte cada uno en su
sentido.

Teorema de máximo flujo - mı́nimo corte. Para una red conexa dirigida con
un origen y un destino, el valor del flujo máximo es igual al valor mı́nimo de
las capacidades de cualquier corte de la red inicial. En el óptimo no existen
caminos de aumento en la red residual y se obtiene un corte con capacidad de
corte cero para la red residual.

input : grafo dirigido con capacidades positivas en cada arco


output: flujo máximo entre el O y el D
1 inicialización, obtención de la red residual a partir de la red inicial;
2 while existan caminos de aumento do
3 identificar un camino de aumento;
4 calcular la capacidad máxima (mı́nima de las capacidades residuales de
los arcos del camino);
5 añadir ese flujo al flujo total que va del O al D;
6 actualizar las capacidades residuales de los arcos correspondientes ;
7 end
Algoritmo 5: Algoritmo de Ford-Fulkerson

A veces no resulta fácil saber rápidamente si existen más caminos de aumento


en la red residual; en ese caso, si se consigue hallar un corte con capacidad
nula en la red residual ya no hay más caminos de aumento y se está en la
solución óptima.
Capı́tulo 15. OPTIMIZACIÓN EN RED 203

En general, y sobre todo al principio del algoritmo, hay muchas posibilida-


des de caminos de aumento a seleccionar. Lógicamente las decisiones iniciales
comprometen las futuras (no es lo mismo empezar por unos caminos de au-
mento que con otros) pero el resultado final (flujo máximo entre O y D) es el
mismo.

El flujo máximo del origen al destino tiene una cotas claras: la capacidad inicial
de todos los arcos de salida del origen y la capacidad inicial de los arcos que
van al nodo destino. Esto son cotas superiores (nunca se podrá llevar más
flujo), pero muchas veces lo que ocurre dentro del grafo puede hacer que no
se alcancen esas cotas, siendo el flujo máximo menor.

Tenemos el siguiente grafo compuesto por 5 nodos y unos arcos dirigidos, Ejemplo -
cada uno de ellos con una capacidad máxima de flujo que puede pasar (ver Problema de
figura 15.20). flujo máximo
resuelto con el
B algoritmo de
Ford-Fulkerson
1 2
3

1 1
A C E

2 2

Figura 15.20: Algoritmo de Ford-Furkelson - datos

Parece que como mucho sólo se pueden sacar del origen 4 unidades de flujo
(1+1+2) y como mucho puede llegar al destino 5 unidades de flujo. Lógicamen-
te como mucho llegarán 4 unidades, pero ¿estamos seguros de que si salen las
4 unidades del origen hay capacidad suficiente en el grafo para que lleguen al
destino?

Vamos a ir identificando caminos de aumento que “lleven” flujo del O al D,


pero antes dibujemos el grafo inicial con las capacidades residuales de cada
arco. Por estar en la primera iteración las capacidades residuales coinciden
con las capacidades iniciales (ver figura 15.21). En las siguiente iteraciones
irán cambiando.
Capı́tulo 15. OPTIMIZACIÓN EN RED 204

B
0
1 3

0 0
0 0 2
A C E
0 1
1
2

0
2
D

Figura 15.21: Algoritmo de Ford-Furkelson - Iteración 0

Se pueden encontrar varios caminos de aumento (camino formado por arcos


con capacidad residual estrictamente positiva); todos válidos. Se elige uno, por
ejemplo ABE, cuyo capacidad residual es 1 (la menor de las capacidades resi-
duales de los arcos de dicho camino) (ver figura 15.22).

B
1
0 3

1 0
0 0 1
A C E → ABE 1
0 1
1
2

0
2
D

Figura 15.22: Algoritmo de Ford-Furkelson - Iteración 1

El arco AB ya no tiene capacidad residual, no se puede utilizar para llevar flujo


por él. Los futuros caminos de aumento no pueden contener dicho arco.

Ahora, un posible camino de aumento es ADE (con una capacidad residual de


2, ver figura 15.25)

¿Existen más caminos de aumento? Sı́, ACE con capacidad residual de 1.


Capı́tulo 15. OPTIMIZACIÓN EN RED 205

B
1
0 3

1 0
0 0 1 → ABE 1
A C E
2 1 → ADE 2
1
0

2
0
D

Figura 15.23: Algoritmo de Ford-Furkelson - Iteración 2

B
1
0 3

1 0
→ ABE 1
1 1 1
A C E → ADE 2
2 0
0 → ACE 1
0

2
0
D

Figura 15.24: Algoritmo de Ford-Furkelson - Iteración 3

Ahora ya no hay más caminos de aumento, se está en la solución óptima. Vol-


viendo al teorema presentado previamente se puede ver que existe al menos
un corte de la red residual que (números negros) que tiene capacidad cero. El
flujo máximo es 4, que coincide con la mı́nima capacidad inicial de todos los
cortes posibles de la red inicial.
Capı́tulo 15. OPTIMIZACIÓN EN RED 206

B
1
0 3

1 0
→ ABE 1
1 1 1
A C E → ADE 2
2 0
0 → ACE 1
0

2 Corte con capacidad residual 0


0
D

Figura 15.25: Algoritmo de Ford-Furkelson - Corte de la red residual con capa-


cidad nula

15.6. Problema de coste mı́nimo

Hipótesis:

red conexa dirigida con n nodos


al menos un origen y un destino

Variables:

xij ≥ 0, flujo a través del arco que va de i a j

Parámetros:

cij , coste unitario de cada flujo que va por el arco que sale de i y va a j
uij , capacidad del arco de i a j
bi , flujo generador del nodo. Un nodo puede ser generador (bi > 0),
consumidor (bi < 0) o de transbordo (bi = 0)

Objetivo: Calcular los flujos entre los nodos generadores y consumidores que
supongan un coste menor.

El problema se puede definir como:


Capı́tulo 15. OPTIMIZACIÓN EN RED 207


min. z = cij xij
i,j

s.a. :
 
xij − xki = bi ∀i
j k

0 ≤ xij ≤ uij ∀(i, j)| exista el arco

Se supone que la oferta es igual a la demanda del producto:



bi = 0
i

Propiedad Si bi y uij son enteros, todas las variables básicas en cada solu-
ción básica son enteras (por ser la matriz de coeficientes técnicos una matriz
unimodular).

Hay dos métodos para resolver este problema: la Programación Lineal y el


algoritmo, basado en el Simplex, pero más eficiente llamado Simplex de redes.

15.6.1. Casos particulares

Problema de transporte: sin nodos de transbordo. Es un caso particular del


problema de flujo máximo que se estudiará en detalle en el capı́tulo siguiente,
el capı́tulo 16.

Problema de asignación de tareas, cuando se cumple:

Número de nodos orı́genes = número de nodos de destinos.


Demanda de cada nodo consumidor =1.
Capacidad de cada nodo generador = 1.

Problema de transbordo: problema de flujo de coste mı́nimo sin restricciones


de capacidad.

Problema de camino mı́nimo:

Origen: nodo generador con capacidad 1.


Destino: nodo consumidor con demanda 1.
Red no dirigida: red dirigida con arcos en ambos sentidos.
Distancia: coste por unidad de flujo independiente del sentido
Arcos no acotados (acotados con lı́mite 1)
Capı́tulo 15. OPTIMIZACIÓN EN RED 208

Problema de flujo máximo:

Anular los costes de flujo cij de los arcos existentes


Seleccionar una cantidad F (cota superior del máximo flujo posible) y
asignarlo como generación en el nudo origen y demanda en el nodo des-
tino.
Añadir un arco entre O y D con coste muy elevado y capacidad ilimitada
La minimización de coste hace que se envı́e la mayor cantidad de flujo
posible por los arcos de la red existente

15.7. Ciclo y camino euleriano

Este problema lo planteó Euler en el siglo XVIII. Supuso el origen de la teorı́a


de grafos. El primer ejemplo fue el de los puentes de Konı̈sberg [?].

Ciclo euleriano: ciclo que pasa por todos los nodos y atraviesa exactamente
una vez cada arista.

Camino euleriano: camino entre dos nodos que pasa por todos los vértices y
atraviesa exactamente una vez cada arista.

Teorema de Euler: Dado un grafo conexo, posee un ciclo euleriano sı́ y solo
si todos sus vértices son de grado par (número de aristas que inciden en el
vértice).

Un grafo tiene un camino euleriano sı́ y solo si es conexo y sólo tiene dos
vértices de orden impar (que serı́an en principio y fin del camino).

En la figura 15.26 se puede ver que el grafo 1 no puede tener ni caminos ni


ciclos euleriano (todos su nodos son de orden impar); en el grafo 2 existe un
camino euleriano (entre A y D); y en el grafo 3 existe un ciclo euleriano (todos
los nodos son de orden par).

15.7.1. Problema del cartero chino

Dado un grafo no dirigido conexo con distancias en las aristas, determinar


un recorrido que pase al menos una vez por cada arista y cuya longitud sea
mı́nima. Fue estudiado por primera vez por el matemático Kuan Mei-Ko en
los años 60 [?]. Corresponde al problema de un cartero que tiene que pasar
por todas las calles de una red para repartir el correo recorriendo la menor
distancia posible. Posteriormente, fue el experto en investigación operativa,
Alan J. Goldman, quien lo denominó “problema del cartero chino”.
Capı́tulo 15. OPTIMIZACIÓN EN RED 209

E E

B C B C B C

A D A D A D

Figura 15.26: Distintos grafos - caminos y ciclos eulerianos

Si el grafo tiene un ciclo euleriano es evidente que ese ciclo será la solución.
Si no lo tiene (algún vértice de orden impar), alguna de las aristas han de ser
recorridas más de una vez.

El algoritmo para hallar ese ciclo óptimo se puede enunciar ası́:

input : grafo no dirigido con distancias positivas en cada arco


output: ciclo de menor distancia que pasa al menos una vez por todas las
aristas
1 paso 1: buscar nodos de orden impar ;
2 paso 2: listar todos los posibles emparejamientos de nodos de orden
impar;
3 paso 3: para cada posible emparejamiento buscar el camino más corto
entre cada dos vértices de orden impar;
4 paso 4: elegir el emparejamiento con menor suma de los caminos más
cortos de los nodos de orden impar;
5 paso 5: al grafo original añadir los arcos utilizados en el paso 4;
6 paso 6: la longitud del ciclo óptimo es la suma de las distancias de todos
los arcos del grafo original más los arcos añadidos en el paso 4;
7 paso 7: es fácil encontrar una ruta óptima (hay varias);
Algoritmo 6: Algoritmo problema cartero chino

15.7.1.1. Ejemplo

Se quiere hallar el ciclo de longitud mı́nima que pasa por todas las aristas del
grafo de la figura 15.27:
Capı́tulo 15. OPTIMIZACIÓN EN RED 210

70
70
50
B F

50 50 60 60

50
A D H

50 70 120 70

70
C G

Figura 15.27: Ejemplo: grafo ciclo euleriano de peso mı́nimo

Paso 1. Hay dos vértices de orden impar: A y H.


Paso 2. Sólo hay un posible emparejamiento entre estos dos nodos (AH).
Si hubiera habido 4 nodos de orden impar habrı́a más posibles empare-
jamientos.
Paso 3. El camino más corto entre entre A y H utiliza los arcos AB, BF y
FH y tiene una longitud de 160.
Paso 4. Como sólo hay un emparejamiento es el mejor.
Paso 5. Se dibujan esos arcos en el grafo original (ver figura 15.28).
Paso 6. La longitud total de todos los arcos del grafo original es 840,
que sumados a los 160 de los arcos extras supone una distancia total de
1000.
Paso 7. Una posible ruta serı́a: ADCGHCABDFBEFHFBA.

50

B F
50

60

A D H

C G

Figura 15.28: Ejemplo: arcos extra que se añaden para tener ciclo
Capı́tulo 15. OPTIMIZACIÓN EN RED 211

15.8. Ciclo y camino hamiltoniano

Sea un grafo no dirigido, existe un ciclo hamiltoniano si existe un ciclo ele-


mental (no repite vértices) que contiene todos los vértices del grafo. Un camino
hamiltoniano es un camino elemental que contiene todos los vértices del grafo.

Dado un ciclo hamiltoniano, la eliminación de cualquier arista da un camino


hamiltoniano; al revés no siempre es factible.

15.8.1. Problema del viajante

Traveling Salesman Problem (TSP). Consiste en encontrar el circuito hamilto-


niano de longitud mı́nima en un grafo con distancias en los arcos, exigiendo
que se visite cada nodo exactamente una vez. Si el grafo está no dirigido se
habla del problema del viajante simétrico; si están los arcos dirigidos, del TSP
asimétrico (más difı́cil de resolver).

TSP simétrico. En este caso dij = dji . Tiene (n−1)!


2 soluciones. Crecen de forma
exponencial en la medida que aumentan el número de nodos del grafo. Hay
muchas formas para resolverlo:

Heurı́sticos (2-opt, 3-opt, Lin-Kernigan, etc.)


PLE con cortes añadidos que eviten subciclos
Metaheurı́sticos: ACO, Recocido simulado, etc.
Capı́tulo 16

TRANSPORTE Y ASIGNACIÓN

16.1. Presentación del problema de transporte

16.1.1. Introducción

Como se comentó en el tema anterior, el capı́tulo 15, el problema de transporte


es un caso particular de problema del flujo máximo. Lo estudiamos en un
capı́tulo por separado debeido a la gran importancia que tiene el problema y
la profundidad con la que se va a estudiar.

Se llaman “problemas de transporte” ya que aparecen en el estudio de los


problemas de expedición de mercancı́as desde diversos puntos de origen a
diversos destinos, aunque, desde luego, se trata únicamente de un caso tı́pi-
co, pero también pueden presentarse en muchos otros campos problemas de
estructura formal similar.

Dentro de la gama de problemas de transporte, también merece considera-


ción especial el caso particular del problema de transporte, que veremos más
adelante, de los “problemas de asignación”, ası́ llamados porque un ejemplo
tı́pico es el de la asignación óptima de ciertos recursos indivisibles (personas,
vehı́culos, etc.) a otras tantas misiones o tareas.

En este capı́tulo vamos a estudiar la forma de aprovechar las peculiaridades


del planteamiento de los problemas de transporte, para buscar sus soluciones
óptimas de manera más sencilla que con el empleo del método del Simplex.

16.1.2. Formulación matemática

Tras la introducción, se puede formular un problema de transporte de la si-


guiente manera:
Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 213

Dados:

un conjunto de orı́genes O, cada uno de los cuales, Oi , tiene asociada una


capacidad Oi (unidades de producto)
un conjunto de destinos D, cada uno de los cuales, Dj , tiene una deman-
da asociada Dj (unidades de producto) y
el coste cij asociado a transportar una unidad de producto del origen
i ∈ O al destino j ∈ D.

el problema consiste en determinar las cantidades transportadas desde el ori-


gen i ∈ O al destino j ∈ D con el mı́nimo coste, xij .

min. z = cij xij
ij

s.a.:

xij ≤ Oi ∀i ∈ O (16.1)
j∈D

xij ≥ Dj ∀j ∈ D
i∈O

xij ≥ 0 ∀j ∈ D, ∀i ∈ O

Se dice que los problemas son equilibrados si se cumple que:


 
Oi = Dj
i∈D j∈D

Una formulación equivalente, si el problema está equilibrado, es:



min. z = cij xij
ij

s.a.:

xij = Oi ∀i ∈ O (16.2)
j∈D

xij = Dj ∀j ∈ D
i∈

xij ≥ 0 ∀j ∈ D, ∀i ∈ O

16.1.3. Presentación matricial

La formulación extendida de 16.2 es:


Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 214

max. z = c11 x11 + c12 x12 + ... + cIJ x1J


s.a.:
x11 +x12 ... +x1J ... = O1
+x21 +x22 ... +x2J ... = O2
... +xI1 +xI2 ... +xIJ = OI
x11 +x21 ... +xI1 +xIJ = D1
x12 +x22 ... +xI2 = D2
... ... ... ... =
+x1J +x2J ... +xIJ = DJ
xij ≥ 0 ∀j ∈ D, ∀i ∈ O
(16.3)

De acuerdo con:

max. z = cx
s.a.:
(16.4)
Ax = b
x≥0

Las matrices de coeficientes técnicos de este problema tienen siempre esta


forma:
⎛ ⎞
1 0 0 ... 0
⎜ ⎟
⎜ 0 1 0 ... 0 ⎟
⎜ ⎟
⎜ 0 0 1 ... 0 ⎟
A=⎜


⎟ (16.5)
⎜ ... ... ... ... ... ⎟
⎜ ⎟
⎝ 0 0 0 ... 1 ⎠
I I I ... I

donde 1 representa un vector fila con tantos elementos como destinos, todos
ellos con valor 1 y 0 representa un vector fila con tantos elementos como
destinos, todos ellos con valor 0.

El vector de términos independientes tiene esta forma. Está compuesto por el


subvector de capacidades de los nodos origen y de demanda de los nodos de
destino.
⎛ ⎞
O1
⎜ ⎟
⎜ ... ⎟
⎜ ⎟
⎜ OI ⎟
b=⎜


⎟ (16.6)
⎜ D1 ⎟
⎜ ⎟
⎝ ... ⎠
DJ
Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 215

Por su parte, el vector de contribuciones al beneficio está formado por el coste


de transportar productos desde cada origen a cada destino, es decir, por el
coste de los arcos.
 
c = c11 ... cI1 ... cij c1J ... cIJ (16.7)

16.2. Peculiaridades de la restricciones funcionales en el pro-


blema de transporte

Hemos visto que, en el problema de transporte equilibrado, llegamos direc-


tamente al modelo matemático 16.1, al que también es fácil reducir los pro-
blemas no equilibrados. (A partir de este momento, mientras no se indique lo
contrario, admitiremos, pues, que estamos en el caso de un problema equili-
brado).

Evidentemente, dicho modelo 16.2 se ajusta a la forma general de los pro-


blemas de programación lineal. Sin embargo, las restricciones funcionales (o
técnicas) presentan diferentes peculiaridades que, debidamente aprovechadas,
tienen importantes consecuencias prácticas en cuanto a los métodos de reso-
lución.

Para fijar las ideas, consideremos el sistema de restricciones funcionales para


m = 3 orı́genes y n = 4 destinos. Dicho sistema se escribirá:
⎛ ⎞
x11
⎜ ⎟
⎜ x12 ⎟
⎜ ⎟
⎛ ⎞ ⎜ x13 ⎟ ⎟ ⎛ O1 ⎞
1 1 1 1 0 0 0 0 0 0 0 0 ⎜ ⎜ x ⎟
⎜ ⎟ ⎜ 14 ⎟ ⎜ ⎟
⎜ 0 0 0 0 1 1 1 1 0 0 0 0 ⎟⎜ ⎟ ⎜ O ⎟
⎜ ⎟ ⎜ x21 ⎟ ⎜ 2 ⎟
⎜ 0 0 0 0 0 0 0 0 1 1 1 1 ⎟⎜ ⎟ ⎜ O3 ⎟
⎜ ⎟⎜ x ⎟ ⎜ ⎟
⎜ ⎟ ⎜ 22 ⎟ ⎜ ⎟
⎜ 1 0 0 0 1 0 0 0 1 0 0 0 ⎟⎜ ⎟ = ⎜ D1 ⎟ (16.8)
⎜ ⎟ ⎜ x23 ⎟ ⎜ ⎟
⎜ 0 1 0 0 0 1 0 0 0 1 0 0 ⎟⎜ ⎟ ⎜ D2 ⎟
⎜ ⎟⎜ x ⎟ ⎜ ⎟
⎜ ⎟ ⎜ 24 ⎟ ⎜ ⎟
⎝ 0 0 1 0 0 0 1 0 0 0 1 0 ⎠⎜ ⎟ ⎝ D3 ⎠
⎜ x31 ⎟
0 0 0 1 0 0 0 1 0 0 0 1 ⎜ ⎜ x32 ⎟
⎟ D4
⎜ ⎟
⎜ ⎟
⎝ x33 ⎠
x34

A la vista de este sistema, se aprecian las siguientes peculiaridades:

Todos los coeficientes de la matriz son iguales a cero o a la unidad.


Cada variable xij aparece únicamente en 2 ecuaciones.
Las variables que figuran en la misma ecuación difieren únicamente en
un o de sus dos subı́ndices (en el 2º para las m primeras ecuaciones, en
el 1º para las n últimas).
Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 216

Estas observaciones sugieren la posibilidad de utilizar una expresión más con-


densada de los datos, siendo muy natural pensar en un cuadro de doble en-
trada en que se ponga de manifiesto el carácter de orı́genes y destino de los
puntos Oi y Dj .

16.2.1. Representación del problema

Dado lo peculiar del problema, se expone la representación tabular especı́fica,


diferente, por ejemplo, de la matriz completa del método del Simplex.

Destinos
destino D1 ... destino Dj ... destino DJ Ofertas
c11 c1j cIJ
origen O1 x11 ... x1j ... x1J O1


c11 c1j c1J


... ... ... ... ... ... ...
Orı́genes

ci1 cij ciJ


origen Oi xi1 ... xij ... xiJ Oi


ci1 cij ciJ


... ... ... ... ... ... ...
cI1 cIj cIJ
origen OI xI1 ... xIj ... xIJ OI


cI1 cIj cIJ


Demandas D1 ... Dj ... DJ

donde cij es el coste reducido asociado al a variable xij , que se explicará más
adelante. El coste reducido hace las veces del vector de criterios del Simplex
(V B ) en problemas de minimizar.

16.2.2. Propiedades

En cuanto a las propiedades del problema:

1. Si el problema es equilibrado, existe al menos una solución factible, por


O Dj OD
ejmplo: xij =  i O i
=  i jDj .
i∈O j∈D
En efecto, cumple las restricciones:

max z = cij xij
ij

s.a.:

 Oi Dj j∈D Dj (16.9)
xij =  = Oi  = Oi ∀i ∈ O
j∈D j∈D j∈D D j j∈D Dj

  Oi Dj Oi
xij =  = Dj i∈O = Dj ∀j ∈ D
i∈O i∈O i∈O Oi i∈O Oi
Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 217

2. La base de cualquier solución, B es una matriz unimodular y los elemen-


tos de B −1 son 0, 1 o -1.
3. El número de restricciones linealmente independientes es car d(O) +
car d(D) − 1.

16.2.2.1. Propiedades de las soluciones básicas

El número de variables básicas es igual al número de restricciones lineal-


mente independientes es car d(O) + car d(D) − 1.
Dada una solución existe un único ciclo para cada variable no básica
(pasarela).
• Existe al menos uno: cualquier actividad no básica se puede obtener
como combinación lineal de las básicas.
• Existe solo uno: solo hay una forma de combinar linealmente acti-
vidades básicas
Las celdas correspondiantes a las variables básicas de una solución bási-
ca no permiten formar ciclos: no se pueden combinar linealmente.
Las tasas de sustitución son siempre 1, −1 o 0.

16.3. Métodos de resolución

Si el problema se formula como PE, el carácter unimodular de la base garantiza


que el la solución de la relajación lineal siempre es entera. Esto evita tener que
resolver con Branch and Bound o con otros métodos.

Además de cualquier método general de PL, existen dos alternativas análogas


al método del Simplex pero que aprovechan las caracterı́sticas peculiares de
este problema:

1. Stepping-stone
2. MODI

16.4. El procedimiento

El procedimiento para resolverlo consiste en:

1. Solución inicial de partida. Para esto existen diferentes métodos que se


estudiarán más adelante
2. Criterio de optimalidad. En este paso es donde se diferencian los méto-
dos de Stepping-stone y MODI
3. Regla de entrada
4. Regla de salida

Se estudiará en detalle a continuación.


Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 218

16.4.1. Solución inicial de partida. Diferentes métodos

Hay distintos métodos para hallar una solución inicial de partida, como el
rincón noroeste (NO), el mı́nimo coste y Vogel, entre otros. Estas requieren
diferente esfuerzo y ofrecen distinta calidad de la solución de partida.

16.4.1.1. Rincón NO

Un procedimiento muy sencillo de hallar una solución factible de partida con-


siste en:

1. Empezar con la casilla (1, 1).


2. Asignarle la máxima cantidad posible cumpliendo las restriccicones de
oferta (fila) y demanda (columna).
3. Pasar a la casilla inmediatamente a la derecha, si quedan disponibilida-
des sin emplear, y a la casilla inmediatamente inferior si quedan nece-
sidades sin atender. Si no se da ni una ni otra circunstancia, pasar a la
casilla diagonalmente inmediata hacia la derecha y hacia abajo. Si nin-
guno de estos desplazamientos es posible, hemos llegado al fin; caso
contrario, volver a la etapa 2.

Este procedimiento se conoce con el nombre de “regla del rincón noroeste”


porque se empieza en el “rincón noroeste de la matriz”. Desde luego, puesto
que la ordenación de las filas y la columnas es arbitraria, no existe razón para
no comenzar por cualquier casilla y según un orden distinto.

Evidentemente, de esta forma se llega a una solución, puesto que se agotan


todas las existencias y se cubren todas las necesidades. Dicha solución es fac-
tible puesto que todas las variables tienen valores no negativos. Además será
básica por la forma de asignar valores a las variables, buscando siempre la
“saturación” de una fila o una columna, avanzando siempre hacia la derecha y
hacia abajo sin retroceder nunca, lo que implica n − 1 pasos hacia la derecha
y m − 1 hacia abajo, de forma que no tendremos más de 1 + n − 1 + m − 1=
m + n − 1 valores no nulos.

De hecho, lo que puede ocurrir es que aparezcan menos de m+n-1 variables no


nulas, es decir que se llegue a una solución básica factible pero degenerada (lo
que ocurrirá cuando en algún paso que no sea el último se agoten a la vez una
oferta y una demanda). Esta circunstancia, sin embargo, no plantea dificultades
excesivas a la hora de proseguir los cálculos.
Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 219

Aunque con la aplicación de la regla del rincón noroeste estamos seguros de


llegar a una solución básica factible, ésta puede estar muy alejada del óptimo
que deseamos hallar. Esto es debido a que no se han tenido en cuenta los cos-
tes asociados a cada variable. Ahora bien, no existe una relación directa entre
el número de pasos de cálculo que nos separan del óptimo, y el valor de di-
cha función económica, pero en términos generales, el número de iteraciones
tenderá a reducirse cuando partamos de una solución económica mejor. Por
lo tanto, puede valer la pena de invertir algún esfuerzo en conseguir que la
solución básica factible de partida sea ya relativamente atractiva desde el pun-
to de vista económico. A continuación se va a presentar dos procedimientos
encaminados a esta finalidad.

16.4.1.2. Mı́nimo coste

Aplicando la regla del rincón noreste, la asignación de valores no nulos a las


casillas se hace exclusivamente en base a su posición en el cuadro, sin atender
a los costes correspondientes.

Podemos obtener fácilmente una solución en general más ventajosa desde el


punto de vista económico si vamos asignando cantidades tan grandes como
sea posible a las casillas de costes bajos. Empezaremos por la de coste mı́nimo
y saturaremos la columna o la fila correspondiente, según sea mayor la oferta
o la demanda. Prescindiendo de la fila o columna saturada, volvemos a buscar
la casilla de mı́nimo coste para asignarle la máxima cantidad posible, etc.

Con este procedimiento se llega con prácticamente el mismo esfuerzo que con
el caso de la regla del rincón noroeste a una solución básica factible de me-
nor coste, a veces mucho más ventajosa. De hecho, la diferencia entre ambas
soluciones de partida es tanto mayor:

cuanto mayor sea la ventaja de elegir casillas con costes bajos, es decir
cuanto mayores sean las diferencias entre costes;
cuanto más consigamos aprovechar dicha ventaja utilizando justamente
las casillas más interesantes.

Precisamente estas consideraciones son la base del método de Vogel que per-
mite hallar fácilmente una solución básica factible de coste en general aún
menor.

16.4.1.3. Vogel

Para aplicarlo nos fijaremos en la “diferencia” asociada a cada fila y a cada


columna en el cuadro de costes cij .
Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 220

La “diferencia” de una fila o columna es la diferencia aritmética entre el me-


nor de sus elementos y el menor de los restantes en dicha fila o columna. Esta
cantidad sirve de indicador de las prioridades que conviene considerar en las
asignaciones a las respectivas filas o columnas, puesto que indica la penaliza-
ción unitaria mı́nima en la que se incurre si se deja de hacer la asignación al
mı́nimo coste en dicha fila o columna.

El procedimiento consiste precisamente en hacer en cada momento la máxima


asignación posible a la casilla de coste mı́nimo de la fila o columna con mayor
diferencia todavı́a no saturada.

El procedimiento de Vogel para hallar una solución básica inicial factible cons-
ta pues de las siguientes etapas:

1. Construir la tabla de costes y de disponibilidades y pasar a 3.


2. Utilizar la tabla de costes, disponibilidades y necesidades del problema
resultante una vez eliminadas las asignaciones (tanto positivas como nu-
las) que se han determinado.
3. Calcular las diferencias de cada fila y de cada columna.
4. Seleccionar la fila o la columna de máxima diferencia (eligiendo arbitra-
riamente en caso de existir dos o más iguales).
5. Asignar una cantidad tan grande como sea posible a la casilla de coste
más bajo de dicha fila o columna seleccionada en 4.
6. Asignar cantidades nulas a todas las demás casillas de la fila o columna
que quede saturada como consecuencia de las asignación hecha en 5.
7. Hacer la única asignación posible en aquellas filas o columnas en las
cuales solamente quede una casilla sin asignación.
8. Eliminar todas las filas y columnas completas. Terminar si todas están
en este caso. De lo contrario pasar de nuevo a la etapa 2.

16.4.2. Criterio de optimalidad

Dada una solución básica factible, se necesita saber si es la óptima o si hay


que seguir pivotando. Sean como sean calculados, el coste reducido de una

variable cij representa la reducción unitaria de la función objetivo al introducir


con valor 1 la variable xij , por lo que la solución es óptima si cij ≥ 0, ∀j ∈


D, ∀i ∈ O.

Para calcular los costes reducidos cij hay dos métodos: Stepping-stone y MODI.

16.4.2.1. Stepping-stone

Para saber si una solución básica factible es óptima, parece natural fijarnos en
cómo cambiarı́a el coste si una unidad se suministrara utilizando una casilla
Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 221

origen-destino que no figure en dicha solución. En definitiva, se trata, lo mis-


mo que en el método del Simplex, de ver si existe alguna nueva actividad que
sea ventajoso introducir, determinando, en caso afirmativo, cuál es la activi-
dad que consecuentemente deberá ser suprimida para pasar a una nueva base
mejor que la anterior. En efecto, en el problema de transporte seleccionar una
nueva actividad básica equivale a utilizar una nueva casilla origen-destino.

En principio, podemos explorar sistemáticamente todas las casillas desocupa-


das (no básicas), para ver si alguna de ellas permite mejorar la solución. Este
procedimiento, llamado del Stepping-stone o de “pasarela”, que se explica en
este apartado.

Lo mismo que en el caso del método de Simplex, si existen varias actividades


cuya introducción permitirı́a mejorar la solución, podemos seleccionar la que
nos dé la máxima reducción del coste total cuando se le asigne una cantidad
+1, introduciendo al mismo tiempo, naturalmente, las modificaciones precisas
para seguir teniendo una solución factible.

El cambio que se produce en el coste total cuando se asigna una cantidad +1


a una casilla desocupada puede determinarse de una manera muy fácil.

Sea (i, j) esta casilla. Para no vulnerar las restricciones relativas a las ofertas Oi
y a las demandas Dj , tendremos que introducir modificaciones en el circuito
cerrado que se pone de manifiesto al entrar en juego la nueva casilla. El cambio
resultante en los costes será evidente una vez hechos los reajustes necesarios
para restablecer el cumplimiento de las restricciones.

La introducción de una nueva asignación en una solución básica factible no de-


generada implica siempre la aparición de un ciclo cerrado, de apariencia más
o menos complicada, y en el cual una serie de reajustes permite restablecer el
cumplimiento de las restricciones (siempre, naturalmente, que la nueva asig-
nación no sea tan grande que, una vez hechas las modificaciones pertinentes,
aparezca un valor negativo en alguna otra casilla).

En realidad, este método resulta sin embargo muy engorroso si el número de


casillas es grande, pudiendo afortunadamente sustituirse por otro mucho más
cómodo, MODI, que se estudia en el siguiente apartado.

16.4.2.2. MODI

Las restricciones técnicas del problema de transporte, convenientemente mo-


dificadas, se pueden expresar como:
Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 222


Oi − xij = 0 ∀i ∈ O
j∈D
 (16.10)
Dj − xij = 0 ∀j ∈ D
i∈

A su vez, a la función objetivo se le pueden sumar los términos nulos, que son Se definen ui y
los primeros miembros de las dos expresiones anteriores premultiplicados por vi
los valores ui y vi . Posteriormente, se puede operar:
⎛ ⎞ ⎛ ⎞
     
z= cij xij = cij xij − ui ⎝Oi − xij ⎠ − vj ⎝Dj − xij ⎠ =
ij ij i j j i
  
= ui Oi + vj Dj + xij (cij − ui − vj )
i j ij
(16.11)

Por lo tanto, la función objetivo se puede expresar como la suma de dos térmi-
B
nos, uno constante y otro que depende de xij . Si se denota con xij a las va-
−B
riables básicas y xij a las no básicas, el término variable se puede reformular
como:
  
B −B
xij (cij − ui − vj ) = xij (cij − ui − vj ) + xij (cij − ui − vj )
(16.12)
ij ij ij

Se pueden elegir los valores de ui y vi de tal manera que cij − ui − vj = 0 si


la variable xij es básica. De esta manera, la expresión 16.12 es estrictamente
−B
nula. El primer término lo es por que cij − ui − vj = 0 y el segundo porque xij
al tratarse de variables básicas.

Por lo tanto, si una variable no básica entra a formar parte de la solución, el


incremento de la función objetivo es, precisamente, el valor de cij = cij − ui −


vj . Es decir:

Δz|Δx −B =1 = cij − ui − vj (16.13)


ij

En la práctica, puesto que podemos elegir una cualquiera de las variables ui ,


vj , y asignarle un valor arbitrario, puede ser interesante elegir conveniente-
mente tanto la variable en cuestión como el valor arbitrario correspondiente.
Una regla práctica que facilita los cálculos consiste en elegir la variable que
tenga en su fila o columna el máximo número de asignaciones no nulas, y atri-
buirle el valor cero. Si, por ejemplo, se trata de una variable ui , la relación
cij = ui + vj , que ha de cumplirse para los pares (i, j) correspondientes a
las variables básicas, nos da entonces inmediatamente los valores de las vj
correspondientes a las casillas ocupadas en dicha fila i.
Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 223

A continuación, de estas vj podemos deducir inmediatamente los valores de


otras ui y ası́ sucesivamente, resultando en general muy sencilla la determina-
ción del conjunto de valores buscados.

Con ayuda de estos pasaremos a calcular los valores de cij − ui –vj para to-
das las casillas no básicas. Si todos son positivos, la solución es óptima. En
caso contrario, podremos elegir, como hemos visto, la variable que vamos a
introducir.

16.4.3. Regla de entrada

Una vez calculados los costes reducidos por cualquiera de los dos métodos,
establecemos la regla de entrada: de entre todas las variables con costes redu-
cidos negativos, elegimos aquella cuyo valor absoluto del coste reducido sea
mayor, es decir, el más negativo.

16.4.4. Regla de salida

La variable básica que habrá que suprimir será, al igual que en el método del
Simplex, la primera que se anule al ir aumentando el valor de la nueva variable
introducida. En este caso, como ya hemos dicho, los valores que varı́an son
los de las casillas del ciclo cerrado que aparece al introducir la nueva variable,
siendo evidente en cada caso cual de ellos es el primero en anularse, y qué va-
lores resultan entonces para la nueva variable y para las restantes modificadas.
Por tanto, para conocer qué variable sale de la base, hacemos una “pasarela”
completa.

16.5. Problemas desequilibrados

En la mayorı́a de los apartados previos se ha supuesto que las disponibilidades


totales en los orı́genes son iguales a las necesidades totales en los destinos, es
decir:


I 
J
Oi = Dj
i=1 j=1

Esta condición expresa simplemente que se trata de un “sistema equilibrado”,


y corresponde a una ley de conservación de los flujos de mercancı́as en la red
de transporte propiamente dicha.
Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 224

Cuando no se cumple esta condición, diremos que el sistema no es equilibra-


do, pudiendo evidentemente distinguirse dos situaciones, exceso de oferta o
exceso de demanda, que estudiaremos en detalle en esta sección.

16.5.1. Oferta superior a demanda

Cuando la oferta es superior a la demanda, la condición de “sistema equilibra-


do” no se cumple y se tiene que:


I 
J
Oi > Dj
i=1 j=1

Existe un exceso de oferta, que podemos suponer remitido a un destino ficticio


d∗ , de forma que el problema se redefine sobre un conjunto D∗ = D ∪ {d∗ }. A
este destino ficticio le atribuiremos unas necesidades precisamente iguales a
dicho excedente. Se supondrán nulos los costes de transporte desde cualquier
origen hasta el destino ficticio. En estas condiciones, nos encontramos de nue-
vo en el caso de un sistema equilibrado (con m orı́genes y n + 1 destinos).

En el problema equilibrado, los costes en origen (ya sean de producción, si


estos orı́genes son fábricas, o bien de adquisición, si se trata de centros de
compra, etc...) son indiferentes puesto que, de todos modos, es preciso agotar
todas las disponibilidades. Por el contrario, en el caso presente, si los costes
marginales de origen no son todos iguales, el utilizar simplemente la suma de
los costes de transporte como función económica equivale a una suboptimiza-
ción.

Sin embargo, si los costes de origen son lineales, el problema puede también
reducirse fácilmente a un problema equilibrado. Sean αi los costes fijos y βi
los costes marginales del origen Oi , los costes de producción totales en dicho
origen i serán:


J
CTi = αi + βi xij
j=1

Por tanto, la función económica será:


I 
I 
J 
I 
J
z
= αi + βi xij + cij xij
i=1 i=1 j=1 i=1 j=1

Pero, por hipótesis:



I 
J 
I 
J
Oi > Dj = cij xij
i=1 j=1 i=1 j=1
Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 225

I
luego, sumando y restando i=1 βi Oi a la función z
, y agrupando convenien-
temente los términos, queda de la siguiente forma equivalente:


I 
I 
I 
J 
I 
J
z
= αi + βi Oi + βi ( xij − Oi ) + cij xij
i=1 i=1 i=1 j=1 i=1 j=1

J
Ahora bien, para cada fábrica de origen Oi , Oi − j=1 xij = xid , donde xid∗
representa la capacidad no utilizada del origen i ∈ O, que corresponderı́a
al destino ficticio. Como las dos primeras sumas son constantes, el proble-
ma queda reducido a un problema equilibrado en el cual βi es el coste del
transporte (evidentemente ficticio) desde cada fábrica hasta el destino ficticio
introducido para equilibrar los flujos.

En cuanto a la representación tabular, la consideración del destino ficticio se


traduce en la incorporación de una columna más.

16.5.2. Demanda superior a oferta

Cuando la demanda es superior a la oferta, la condición de “sistema equilibra-


do” tampoco se cumple, pero en este caso se tiene que:


I 
J
Oi < Dj
i=1 j=1

No hay capacidad suficiente para satisfacer todas las necesidades; del mismo
modo que en el caso anterior, introducimos ahora un origen ficticio o∗ que
satisfaga el exceso de demanda. Teniendo en cuenta este origen ficticio, o∗ , el
problema se redefine sobre un conjunto O∗ = O∪{o∗ }. En este caso, la variable
xo∗ j representa la demanda no atendida del destino j ∈ D, que corresponderı́a
al origen ficticio.

Ahora bien, el coste de una necesidad insatisfecha raras veces es nulo, ya que
puede implicar la pérdida de clientes, un retraso costoso, el empleo de produc-
tos sustitutivos menos adecuados, etc. En el caso de que los costes de carencia
sean los mismos para todos los destinos, pueden repartirse arbitrariamente
entre ellos. Para ello, se busca, como siempre, el mı́nimo coste de transporte,
y se admite que el suministro desde el origen ficticio hasta cualquier destino
se hace con un coste de transporte nulo.
Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 226

Si, por el contrario, no es posible atribuir idénticos costes marginales de caren-


cia a todos los destinos es preciso un estudio previo que puede ser muy difı́cil.
El objetivo de este estudio es equilibrar los costes que después se utilizarán,
como en el caso de un exceso de oferta, para atribuir unos costes ficticios de
transporte desde el origen ficticio hasta los mercados, lo que permite reducir
el problema al caso equilibrado.

A veces, se puede obtener capacidad adicional empleando horas extraordina-


rias (entre otras posibilidades) en una o varias de las fábricas. Para introducir
esta circunstancia, se pueden considerar nuevas capacidades con costes de
transporte suplementarios que, en realidad, son los costes suplementarios de
producción.

Un principio similar puede aplicarse al caso de un exceso de disponibilidad


cuando un esfuerzo de promoción comercial puede servir para aumentar las
ventas en algunos puntos de consumo, naturalmente a costa de los gastos
adicionales correspondientes.

En cuanto a la representación tabular, la consideración del origen ficticio se


traduce en la incorporación de una fila más.

16.6. Soluciones degeneradas

Al aplicar el método de resolución a un problema de transporte, puede suceder


que la solución básica factible de partida, o alguna de las que se van conside-
rando sucesivamente, sea degenerada, resultando nulo el valor de alguna de
las variables básicas (en efecto, si bien todas las variables no básicas han de
ser forzosamente nulas, las básicas solamente han de cumplir las condiciones
de no negatividad, pudiendo en particular ser nulas algunas de ellas).

En este caso lo que resulta esencial es tener bien presente la distinción entre
una variable básica que aparezca con el valor particular cero, y una variable
no básica. Si, al introducir una nueva actividad en una base, y aplicar la regla
de supresión, se anulan simultáneamente varias variables, podremos designar
arbitrariamente una de ellas como no básica en la nueva solución, y considerar
que la otra o las otras siguen perteneciendo a la nueva base pero con valor cero.
Para facilitar su identificación (puesto que normalmente las variables básicas
se reconocen por tener valores positivos) podemos suponer que no son riguro-
samente nulas, sino que tienen un valor muy pequeño , que haremos figurar
en todos los pasos sucesivos en que siga siendo necesario, como si se tratara
de una cantidad realmente asignada a la casilla correspondiente.
Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 227

En el caso de que sea en la solución básica factible de partida dónde aparezcan


menos de m+n-1 variables nulas, las variables básicas degeneradas adiciona-
les pueden seleccionarse arbitrariamente, con tal de que las m+n-1 variables
básicas, positivas y degeneradas, ocupen posiciones independientes.

16.7. Transporte y dualidad

El dual del problema de transporte es:


 
max. z = = Oi ui + Dj vj
i j

s.a.:
(16.14)
ui + vj ≤ cij ∀i ∈ O, ∀j ∈ D
ui libre de signo ∀i ∈ O
vj libre de signo ∀j ∈ D

Para justificarlo, se formula 16.14 de forma equivalente como sigue:


 
max. z = = Oi (u+ −
i − ui ) + Dj (vi+ − vi− )
i j

s.a.:
+ − + − (16.15)
(u − u ) + (v − v ) ≤ cij ∀i ∈ O, ∀j ∈ D
u+ −
i , ui libre de signo ∀i ∈ O
vi+ , vi− libre de signo ∀j ∈ D

El dual de este problema es:



min. s = cij xij
ij

s.a.:

xij ≤ Oi ∀i ∈ O
j∈D

xij ≥ Oi ∀i ∈ O (16.16)
j∈D

xij ≤ Dj ∀j ∈ D
i∈


xij ≥ Dj ∀j ∈ D
i∈

xij ≥ 0 ∀j ∈ D, ∀i ∈ O
Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 228

Que es equivalente a 16.2.

Por otro lado, los criterios del Simplex, V B , de un problema P y del dual de
ese mismo problema, formulado en términos de máximo son iguales, pero
cambiados de signo.

Del teorema de las holguras complementarias:

h
ij = −Vij
B B
= Vij
max min
B
(16.17)
cij − ui − vj = Vij
min

16.8. El problema de asignación

16.8.1. Introducción

Se trata de un caso particular del problema de transporte, en el que:

m = car d(O) = car d(D) = n


Oi = 1 ∀i ∈ O, y
Dj = 1 ∀j ∈ D

Es decir, el número de orı́genes y de destinos es el mismo y la capacidad de los


primeros y la demanda de los segundos es igual a 1.

Este problema se plantea al intentar determinar la asignación óptima de ope-


rarios a puestos de trabajo, de máquinas a operaciones o incluso de fábricas a
la producción de un producto en concreto, entre otras opciones.

Se puede formular como:



min. z = cij xij
ij

s.a.:

xij ≤ 1 ∀i ∈ O (16.18)
j∈D

xij ≥ 1 ∀j ∈ D
i∈O

xij ≥ 0 ∀j ∈ D, ∀i ∈ O
Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 229

De las m + n restricciones, en este caso existen I = J linealmente independien-


tes, con lo que una solución básica contendrá m = n variables básicas.

Si el problema tal y como se plantea inicialmente no es equilibrado, podemos


reducirnos a otro equilibrado mediante la introducción de orı́genes o desti-
nos ficticios. Sin embargo, a diferencia de lo que hacı́amos en los problemas
de transporte en general, en vez de introducir un único origen o destino ficti-
cio que “absorba” todo el excedente de demanda o de oferta, introduciremos
tantos orı́genes o destinos ficticios, todos ellos con disponibilidades o necesi-
dades iguales a la unidad, como sean precisos para igualar el número total de
orı́genes y el de destinos, equilibrando ası́ el problema sin perder la naturaleza
binaria o booleana de todas las variables que intervienen.

16.8.2. Representación

Dada la estructura particular de este problema, se puede representar con una


tabla cuadrada con tantas filas y columnas como el número de orı́genes o de
destinos.

D1 D2 ... Dj ... DJ
O1 c11 c12 ... c1j ... c1J
O2 c21 c22 ... c2j ... c2J
... ... ... ... ... ... ...
Oi ci1 ci2 ... cij ... ciJ
... ... ... ... ... ... ...
OI cI1 cI2 ... cIj ... cIJ

Donde cij es el coste de asignar el origen i al destino j

Por ejemplo, veamos un caso numérico. En la siguiente tabla se muestran los


costes de asignación entre dos conjuntos: el de orı́genes, O = {O1 , O2 , O3 , O4 },
y el de destino, D = {D1 , D2 , D3 , D4 }.

D1 D2 D3 D4
O1 4 2 3 1
O2 5 2 6 3
O3 1 8 9 2
O4 10 1 6 4
Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 230

En este caso, una posible asignación (aunque no la óptima) podrı́a ser:

D1 D2 D3 D4
O1 ×
O2 ×
O3 ×
O4 ×

De esta forma, el punto de origen O1 satisface al punto de demanda D2 , O2 a


D1 , O3 a D4 y O4 a D3 .

16.8.3. Propiedades

En una solución del problema, para cada fila i, solo un valor xij = 1.
En una solución del problema, para cada columna j, solo un valor xij = 1.
Si se suma una constante k a todos los costes de una fila o de una co-
lumna, el problema resultante alcanza la solución óptima para la misma
asignación que el problema original. En efecto, por ejemplo, si cambian
todos los costes del origen i∗ ci
∗ j = ci∗ j +k ∀j, la nueva función objetivo
es:
  

z
= cij xij = cij xi,j + (ci
∗ j + k)xi,j
i,j i≠i∗ ,j j
  
= ci,j xij + ci
∗ j xij + kxij =
(16.19)
i≠i∗ ,j i=i∗ ,j i=i∗ ,j
 
ci,j xij + k xij = z + k
i≠i,j i=i∗ ,j

Se puede justificar, igualmente para una columna. En particular, k puede


ser el opuesto del menor valor de la fila o la lı́nea correspondiente.
En un problema en el que todos los costes son no negativos y hay un
conjunto de ceros, de tal manera que se puede encontrar un conjunto de
dichos ceros, de manera que hay un 0 y solo uno cada cada fila y un 0 y
solo uno en cada columna, la solución consiste en asignar los orı́genes y
destinos correspondientes a dichos ceros, con un coste total igual a 0.

D1 D2 D3 D4
O1 2 0 1 3
O2 0 2 1 1
O3 2 5 7 0
O4 3 1 0 3
Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 231

16.8.4. Método Húngaro

1. Restar a cada fila el menor coste de dicha fila.


2. Restar a cada columna el menor coste de dicha columna.
3. Si existe un conjunto de costes iguales a cero que permiten realizar una
asignación con coste global igual a cero, se ha obtenido la solución ópti-
ma, si no, hay que continuar.
4. Tachar todos los ceros con el mı́nimo número posible de lı́neas (siempre
habrá que utilizar menos que el número de orı́genes o destinos, porque
si no, existirı́a una asignación con coste cero).
5. Identificar k igual al coste mı́nimo de todos los costes no tachados y
obtener un problema equivalente:
Restar k a los elementos sin tachar, sumar k.
Sumar k a los elementos tachados.
Dejar igual los elementos tachados una sola vez.

D1 D2 D3 D4
O1 1 4 3 1
O2 2 1 6 7
O3 3 2 6 6
O4 1 2 3 7

D1 D2 D3 D4
O1 0 3 2 0
O2 1 0 5 6
O3 1 0 4 4
O4 0 1 2 6

D1 D2 D3 D4
O1 0 3 0 0
O2 1 0 3 6
O3 1 0 2 4
O4 0 1 0 6

D1 D2 D3 D4
O1 0 4 0 0
O2 0 0 2 5
O3 0 0 1 3
O4 0 2 0 6
Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 232

16.8.5. Ejemplo a mano del problema de transporte

Una compañı́a tiene tres almacenes y en una determinada semana cuatro clien-
tes solicitan el suministro de determinadas cantidades que la compañı́a tiene
en sus almacenes. Las existencias de almacén (Oi ), las demandas (Di ) y los cos-
tes de transporte de cada uno de los almacenes (Oi ) a cada uno de los clientes
(Dj ) se muestran en la tabla:

D1 D2 D3 D4 Oi
O1 20 11 3 6 5
O2 5 9 10 2 10
O3 18 7 4 1 15
Dj 3 3 12 12

Se pide el programa de transporte que minimice los costes de transporte:

calculando la solución inicial por el método de la esquina noroeste y


calculando la solución inicial por el método de Vogel.

Resolución

1. Método de la esquina noroeste

Empezamos asignando a la casilla (1,1) la máxima cantidad posible, 3. Actua-


lizamos la demanda y la oferta correspondiente. Pasamos a la casilla (1,2) (a
su derecha) y asignamos la máxima cantidad posible, 3. Después actualizamos
la oferta y la demanda correspondiente. Si se sigue aplicando el método del
rincón noroeste se llega a la siguiente solución inicial:

D1 D2 D3 D4 Oi
20 11 3 6
O1 3 2 5 (=3+2)

5 9 10 2
O2 1 9 10 (=1+9)

18 7 4 1
O3 3 12 15 (=3+12)

Dj 3 (=3) 3 (=3) 12 (=9+3) 12 (=12)


Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 233

En el cuadro se observa que esta solución es básica y factible y contiene 4 +


3 − 1 = 6 variables básicas. Las variables que están en la solución son x11 ,
x12 , x22 , x23 , x33 y x34 . Para ver si esta solución es la óptima o no, podemos
calcularlo de dos formas distintas.

En la primera forma llamada de “pasarela”, vamos a buscar para cada variable


no básica un circuito cerrado cuyas esquinas sean variables básicas y analiza-
remos la variación de la función objetivo cuando aumentamos en una unidad
la variable no básica. Si se produce un incremento del coste no nos interesará
introducir dicha variable. Si hay varias variables que reducen el valor de Z,
escogeremos como variable no básica a introducir en la solución aquella que
genere un mayor decremento de la función objetivo. Y si no hay ninguna varia-
ble que pueda mejorar el coste total de transporte al ser introducida será que
estaremos en la solución óptima.

Empecemos, por ejemplo con la variable x21 . Desde su casilla puedo trazar un
circuito cerrado que pasa por las casillas x11 , x12 , x22 y acaba de nuevo en x21
(ver siguiente tabla).

D1 D2 D3 D4 Oi
20 11 3 6
O1 3 → → 2 5
↑ (-) ↓ (+)

5 ↑ 9 ↓ 10 2
O2 ← ← 1 9 10
(+) (-)

18 7 4 1
O3 3 12 15

Dj 3 3 12 12

La variación de Z al introducir una unidad la variable x21 es:

Zx21 = c21 − c11 + c12 − c22 = 5 − 20 + 11 − 9 = −13

Como sale negativo, la introducción de la variable x21 consigue disminuir el


valor de la función objetivo, de manera que resulta económicamente intere-
sante.

Si hacemos lo mismo con el resto de las variables básicas, podemos representar


los resultados obtenidos en la siguiente tabla:
Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 234

Variable no básica Circuito asociado Z


x31 x31 → x11 → x12 → x22 → x23 → x33 → x31 +6
x32 x32 → x22 → xa → x33 → x32 +4
x13 x13 → x12 → x22 → x23 → x13 -9
x14 x14 → x12 → x22 → x23 → x33 → x34 → x14 -3
x24 x24 → x23 → x33 → x34 → x24 -6

Podemos recoger estos resultados en la misma tabla que antes, indicando las
casillas que contienen las variables básicas en gris, y las casillas correspondien-
tes a las variables no básicas en blanco con la variación de Z que se obtendrı́a
si dicha variable tomara el valor 1.

D1 D2 D3 D4 Oi
20 11 3 6
O1 3 2 -9 -3 5

5 9 10 2
O2 -13 1 9 -6 10

18 7 4 1
O3 +6 +4 3 12 15

Dj 3 3 12 12

Nos interesará introducir la variable x21 , que es la que reduce el valor del coste
de transporte en mayor medida. Sólo se puede introducir en una unidad para
que la solución continúe siendo óptima.

El cuadro correspondiente a la siguiente solución es:

D1 D2 D3 D4 Oi
20 11 3 6
O1 2 2 5

5 9 10 2
O2 1 9 10

18 7 4 1
O3 3 12 15

Dj 3 3 12 12
Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 235

Ahora tenemos que ver si esta nueva solución es óptima o no. Vamos a dibujar
el circuito cerrado de una variable básica, por ejemplo, el circuito de la variable
x14 .

D1 D2 D3 D4 Oi
20 11 3 6
O1 3 ← 2 ← 5
↓ (-) ↑ (+)

5 ↓ 9 10 2
O2 1 → → 9 10
(+) ↓ (-)

18 7 4 ↓ 1 ↑
O3 3 → → 12 15
(+) (-)

Dj 3 3 12 12

El incremento de Z al introducir la variable x14 con valor 1 es:

Zx14 = c24 − c11 + c21 − c23 + c33 − c34 6 − 20 + 5 − 10 + 4 − 1 = −16

Si calculamos el resto de los circuitos cerrados y los incrementos de Z respecti-


vos al resto de las variables no básicas obtendremos los siguientes resultados:

Variable no básica Circuito asociado Z


x31 x31 → x21 → x23 → x33 → x31 +19
x32 x32 → x12 → x11 → x21 → x23 → x33 → x34 +17
x13 x13 → x11 → x21 → x23 → x13 -22
x22 x22 → x21 → x11 → x12 → x22 +13
x24 x24 → x23 → x33 → x34 → x24 -5

A la vista de los resultados observamos, por un lado, que introducir la variable


x22 no es recomendable (Zx22 = +13), lo cual resulta lógico pues serı́a volver
a la solución anterior. Por otro lado, se observa que la solución no es óptima y
que interesa introducir la variable x13 . Esta variable sólo se puede introducir a
nivel 2 para que el resto de las variables básicas no sean negativas.

La nueva solución obtenida es la siguiente:


Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 236

D1 D2 D3 D4 Oi
20 11 3 6
O1 3 2 5

5 9 10 2
O2 3 7 10

18 7 4 1
O3 3 12 15

Dj 3 3 12 12

Hasta ahora, para calcular si la solución era óptima o, si no lo era, hallar qué va-
riable no básica introducir a la solución, hemos usado el método de los circui-
tos cerrados. Este método se puede aplicar siempre que se quiera en cualquier
problema que presente esta estructura, pero se convierte en muy farragoso
cuando el problema tiene una dimensión considerable al complicarse mucho el
cálculo de los circuitos cerrados correspondientes. Vamos a seguir resolviendo
este problema pero el resto de los pasos los vamos a calcular con otro método
más sistemático, el método de “las ui y las vj ” o de ”los multiplicadores”.

Según se ha visto en la teorı́a, para las variables básicas se cumplen las siguien-
tes ecuaciones:
c12 = u1 + v2 = 11

c13 = u1 + v3 = 3

c21 = u2 + v1 = 5

c23 = u2 + v3 = 10

c33 = u3 + v3 = 4

c34 = u3 + v4 = 1

Si damos un valor arbitrario a una de las variables, por ejemplo u1 = 0, pode-


mos resolver fácilmente el resto de las ecuaciones:

u1 = 0, u2 = 7, u3 = 1, v1 = −2, v2 = 11, v3 = 3, v4 = 0

Y ahora podemos hallar la variación de Z que se producirı́a al introducir una


variable no básica a nivel unitario. Por ejemplo:

Zx11 = c11 − u1 − v1 = 20–0–(−2) = 22

Y haciendo lo mismo con el resto de las variables obtenemos la siguiente tabla:


Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 237

D1 D2 D3 D4 Oi ui
20 11 3 6
O1 22 3 → → 2 6 5 0
↑ ↓
5 9 ↑ 10 ↓ 2
O2 3 -9 ← ← 7 -5 10 7

18 7 4 1
O3 19 -5 3 12 15 1

Dj 3 3 12 12
vj -2 11 3 0

Según esto, tenemos que introducir la variable x22, el circuito existente para
equilibrar la solución es:

x22 → x21 → x13 → x23 → x22

La nueva solución que se obtiene es la siguiente:

D1 D2 D3 D4 Oi ui
20 11 3 6
O1 5 5

5 9 10 2
O2 3 3 4 10

18 7 4 1
O3 3 12 15

Dj 3 3 12 12
vj

Para esta nueva solución calculamos de nuevo los parámetros ui y vj :

u1 = 0, u2 = 7, u3 = 1, v1 = −2, v2 = 2, v3 = 3, v4 = 0

Y los incrementos de Z correspondientes a la introducción de cada una de las


variables no básicas son los representados en el siguiente cuadro:
Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 238

D1 D2 D3 D4 Oi ui
20 11 3 6
O1 22 9 5 6 5 0

5 9 10 2
O2 3 3 4 ← ← -5 10 7
↓ ↑
18 7 4 ↓ 1 ↑
O3 19 4 3 → → 12 15 1

Dj 3 3 12 12
vj -2 2 3 0

Introducimos x24 a nivel 4 y la siguiente solución se muestra en la siguiente


tabla, en la tabla escribimos también las ui y vi correspondientes:

D1 D2 D3 D4 Oi ui
20 11 3 6
O1 17 4 5 6 5 0

5 9 10 2
O2 3 3 → 5 → 4 10 2
↑ ↓
18 7 ↑ 4 1 ↓
O3 14 -1 ← 7 ← 8 15 1

Dj 3 3 12 12
vj 3 7 3 0

Introducimos la variable x32 a nivel 3 y llegamos a la siguiente solución:


Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 239

D1 D2 D3 D4 Oi ui
20 11 3 6
O1 17 5 5 6 5 0

5 9 10 2
O2 3 1 5 7 10 2

18 7 4 1
O3 14 3 7 5 15 1

Dj 3 3 12 12
vj 3 6 3 0

Y llegamos, por fin, a la solución óptima. Si introdujéramos a nivel unitario


cualquiera de las variables no básicas aumentarı́a el coste de transporte que,
para la solución óptima, es:

Z = c13 x13 + c21 x21 + c24 x24 + c32 x32 + c33 x33 + c34 x34 = 98

2. Método de Vogel

Vamos a hallar la solución inicial por el método de Vogel.

Dibujamos la tabla de costes y disponibilidades y, sobre ella, calculamos las


máximas diferencias entre los costes de las variables que están en la misma
columna o en la misma fila.

D1 D2 D3 D4 Oi Máx. dif. i
20 11 3 6
O1 5 3

5 9 10 2
O2 10 3

18 7 4 1
O3 15 3

Dj 3 3 12 12
Máx. dif. j 13 2 1 1

La máxima diferencia es 13 correspondiente a la columna nº1. En esa columna


asigno la mayor cantidad posible a la variable de menor coste (x21 = 3) y con
Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 240

esta asignación ya no existen necesidades en el primer destino y las disponibi-


lidades des segundo origen se reducen a 7.

Estas operaciones junto con las nuevas diferencias entre los dos menores cos-
tes de cada fila y cada columna se recogen en la siguiente tabla.

D1 D2 D3 D4 Oi Máx. dif. i
20 11 3 6
O1 5 3

5 9 10 2
O2 3 7 7←

18 7 4 1
O3 15 3

Dj 3 3 12 12
Máx. dif. j 2 1 1

Recalculamos de nuevo las máximas diferencias y elegimos la mayor. En este


caso es 7, correspondiente a la fila nº2. Asignamos a x24 (la casilla de menor
coste), la mayor cantidad posible: 7. Actualizamos la demanda y oferta corres-
pondientes y calculamos las nuevas diferencias.

D1 D2 D3 D4 Oi Máx. dif. i
20 11 3 6
O1 5 3

5 9 10 2
O2 3 7 0

18 7 4 1
O3 15 3

Dj 0 3 12 5
Máx. dif. j 2 1 5

Ahora la máxima diferencia es 5, para la columna nº4. La casilla de menor coste


es x24 y se le asigna la máxima cantidad posible, 5. La siguiente tabla recoge
los datos correspondientes a la nueva asignación:
Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 241

D1 D2 D3 D4 Oi Máx. dif. i
20 11 3 6
O1 5 3←

5 9 10 2
O2 3 7 0

18 7 4 1
O3 5 10 3

Dj 0 3 12 0
Máx. dif. j 2 1

Ahora, de entre las nuevas diferencias, elegimos arbitrariamente una de las dos
mayores, por ejemplo, la fila nº1. Le asignamos la máxima cantidad posible, 5.

D1 D2 D3 D4 Oi Máx. dif. i
20 11 3 6
O1 5 0

5 9 10 2
O2 3 7 0

18 7 4 1
O3 5 10 3

Dj 0 3 7 0
Máx. dif. j 2 6

Y el resto de los cuadros son los siguientes:


Capı́tulo 16. TRANSPORTE Y ASIGNACIÓN 242

D1 D2 D3 D4 Oi Máx. dif. i
20 11 3 6
O1 5 0

5 9 10 2
O2 3 7 0

18 7 4 1
O3 7 5 3 7

Dj 0 3 0 0
Máx. dif. j 7

D1 D2 D3 D4
20 11 3 6
O1 5

5 9 10 2
O2 3 7

18 7 4 1
O3 3 7 5

Esta es la solución inicial calculada por el método de Vogel. Casualmente es la


solución óptima del problema.

En general, y como se puede apreciar en este problema, el cálculo de la solución


inicial es más lento por el método de Vogel, pero nos lleva a soluciones “más
cercanas” a la óptima. En este caso concreto, la solución inicial es óptima.

También podría gustarte