P. 1
Teoria Pto

Teoria Pto

|Views: 6.066|Likes:
Publicado porKurmi Kur Mi

More info:

Published by: Kurmi Kur Mi on Jan 28, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

05/29/2013

pdf

text

original

Sections

  • INTRODUCCIÓN
  • Introducción a la teoría de optimización
  • 1.1 Orígenes y desarrollo
  • 1.1.1 Orígenes de la Investigación operativa
  • 1.1.2 La Teoría de Juegos
  • 1.1.3 La Programación Lineal
  • 1.1.4 La Investigación Operativa
  • 1.2 Modelización de un problema de P. L
  • 1.2.1 Formulación de los modelos
  • 1.3 Modelización de diversos problemas de I.O
  • 1.4 Modelos de programación matemática
  • 1.5 El método geométrico
  • 1.5.1 Descripción del método geométrico
  • 1.5.2 Resumen del método geométrico
  • Programación Lineal
  • 2.1 Modelo general de programación lineal
  • 2.2 Nociones previas
  • 2.3. DEFINICIONES SOBRE LAS SOLUCIONES DE UN PROBLEMA 39
  • 2.3 Definiciones sobre las soluciones de un proble- ma
  • 2.4. ALGUNOS RESULTADOS SOBRE LAS SOLUCIONES 43
  • 2.4 Algunos resultados sobre las soluciones
  • 2.5 El algoritmo del Simplex
  • 2.6 Algoritmo del Simplex en forma de tabla (max)
  • 2.7. ALGORITMO DEL SIMPLEX EN FORMA DE TABLA (MIN) 55
  • 2.7 Algoritmo del Simplex en forma de tabla (min)
  • 2.8 Búsqueda de soluciones iniciales
  • 2.8.1 Método de las Penalizaciones
  • 2.9 Algoritmo del Simplex en forma matricial
  • 2.9.1 Método del Simplex en forma matricial (caso maxi- mizante)
  • 2.10. ADAPTACIÓN ALGEBRAICA DEL ALGORITMO DEL SIMPLEX 67
  • 2.10 Adaptación algebraica del algoritmo del Sim- plex
  • 2.10.1 Algoritmo del Simplex (enfoque algebraico)
  • 2.11 Otros algoritmos de programación lineal
  • 2.11.1 Método de las dos fases
  • 2.11.2 Algoritmo revisado del Simplex (Caso maximizante)
  • Dualidad en programación lineal
  • 3.1 Formas de la dualidad
  • 3.1.1 Forma canónica maximizante de la dualidad
  • 3.1.2 Forma estándar maximizante de la dualidad
  • 3.1.3 Reglas para escribir el problema dual
  • 3.1.4 Forma canónica minimizante de la dualidad
  • 3.2 Propiedades de la relación de dualidad
  • 3.3 Interpretación económica de la dualidad
  • 3.4. ALGORITMO DUAL DEL SIMPLEX. (CASO MAXIMIZANTE) 107
  • 3.4 Algoritmo Dual del Simplex. (Caso maximizante)
  • Análisis de sensibilidad
  • 4.1 Introducción gráfica
  • 4.2 Cambios discretos
  • 4.2.1 Variación en un coste de una variable no básica
  • 4.2.2 Variación en un coste de una variable básica
  • 4.2.3 Cambios en los recursos
  • 4.2.4 Cambios en los coeficientes tecnológicos
  • 4.3. INCORPORACIÓN DE UNA NUEVA ACTIVIDAD 117
  • 4.3 Incorporación de una nueva actividad
  • 4.4 Incorporación de nuevas restricciones
  • 4.5 Programación Paramétrica
  • 4.5.1 Parametrización de los coeficientes de coste
  • 4.5.2 Parametrización de los recursos
  • El problema de transporte
  • 5.1 Introducción
  • 5.2 Planteamiento como un problema de progra- mación lineal
  • 5.3 Problema no equilibrado
  • 5.4 Propiedades del problema de transporte
  • 5.5 Determinación de una solución inicial
  • 5.5.1 Método de la esquina Noroeste
  • 5.5.2 Método de costo mínimo
  • 5.5.3 Método de Vogel
  • 5.6 Definición de Ciclo
  • 5.7 Algoritmo de transporte (forma minimizante)
  • 5.8 Soluciones degeneradas
  • 5.9. OTRAS VARIACIONES DEL PROBLEMA DE TRANSPORTE 143
  • 5.9 Otras variaciones del problema de transporte
  • 5.10 El problema de transbordo
  • 5.11 El problema de asignación
  • 5.11.1 El algoritmo Húngaro (Forma minimizante)
  • 5.11.2 Ejemplo de aplicación del algoritmo Húngaro
  • 5.12. PROBLEMA DE EMPAREJAMIENTO 149
  • 5.12 Problema de emparejamiento
  • 5.13 Problema de planificación de la producción
  • Modelos de Redes
  • 6.1 Redes. Conceptos básicos
  • 6.2 Caminos de longitud mínima
  • 6.3 Algoritmos de ordenación y de etiquetación
  • 6.4 Algoritmo de Dijkstra
  • 6.5 Problema del flujo máximo
  • 6.6. ALGORITMO DE FORD-FULKERSON 165
  • 6.6 Algoritmo de Ford-Fulkerson
  • 6.6.1 Flujo de un corte
  • 6.6.2 Algoritmo de Ford-Fulkerson
  • 6.7 CPM y PERT
  • 6.7.1 Algoritmo CPM
  • 6.7.2 El método PERT
  • Programación Entera
  • 7.1 Introducción
  • 7.2 Algunos problemas de programación entera
  • 7.2.1 El problema de la mochila
  • 7.2.2 Problema del viajante
  • 7.2.3 Problema de costo fijo
  • 7.3 El algoritmo de ramificación y acotación
  • 7.3.1 Resumen
  • 7.3.2 Programación entera mixta
  • 7.4 Algoritmo de corte o de Gomory
  • 7.4.1 Resumen del algoritmo de Gomory
  • 7.5 Programación 0-1. Algoritmo de enumeración
  • Teoría de Colas
  • 8.1 Introducción
  • 8.1.1 Costos de los sistemas de colas
  • 8.1.2 Estructuras típicas
  • 8.2 Terminología
  • 8.2.1 Características físicas
  • 8.2.2 Características de funcionalidad
  • 8.3. MODELOS DE LLEGADAS Y DE TIEMPO DE SERVICIO 201
  • 8.2.3 Parámetros de los sistemas de colas
  • 8.3 Modelos de llegadas y de tiempo de servicio
  • 8.3.1 Relación entre la distribución de Poisson y la exponen- cial
  • 8.3.2 Otra distribución de las llegadas. La distribución de Erlang
  • 8.3.3 Modelos de duración de los servicios
  • 8.4 La notación de Kendall
  • 8.5 Estudio de una cola M/M/1
  • 8.5.1 Probabilidad de que el sistema esté en cierto estado
  • 8.5.2 Número medio de elementos en el sistema
  • 8.5.3 Número medio de elementos en cola
  • 8.6 Teorema de Little
  • 8.7 Sistemas con capacidad limitada
  • 8.8 Modelo con s servidores
  • 8.8.1 Cálculo de la probabilidad de los diferentes estados del sistema
  • 8.8.2 Cálculo de P0
  • 8.8.3 Cálculo de los parámetros
  • 8.9 El coste de un sistema de colas
  • 9.1 Simulación. Generalidades
  • 9.2 Un ejemplo muy sencillo
  • 9.3 Método Montecarlo
  • 9.4 Notas históricas sobre el Método Montecarlo
  • 9.5 Generación de números aleatorios
  • 9.5.1 Propiedades de un buen generador de números aleato- rios
  • 9.5.2 Método del centro del cuadrado
  • 9.5.3 Método de las congruencias
  • 9.6 Método de la transformación inversa
  • 9.7 Simulación de una cola M/M/1
  • 9.7.1 Programa FORTRAN
  • 9.8 IntegraciónMontecarlo. Método de éxito-fracaso
  • 9.9 Ejemplos de programas de simulación

INVESTIGACIÓN OPERATIVA.

Teoría, Ejercicios y Prácticas con Ordenador
Rosa Rodríguez Huertas Antonio Gámez Mellado
10 de Septiembre de 2002
2
Índice General
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
I TEORÍA 11
1 Introducción a la teoría de optimización 13
1.1 Orígenes y desarrollo . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1.1 Orígenes de la Investigación operativa . . . . . . . . . . . . . 14
1.1.2 La Teoría de Juegos . . . . . . . . . . . . . . . . . . . . . . . 16
1.1.3 La Programación Lineal . . . . . . . . . . . . . . . . . . . . . 16
1.1.4 La Investigación Operativa . . . . . . . . . . . . . . . . . . . 17
1.2 Modelización de un problema de P. L. . . . . . . . . . . . . . . . . . 18
1.2.1 Formulación de los modelos . . . . . . . . . . . . . . . . . . . 19
1.3 Modelización de diversos problemas de I.O. . . . . . . . . . . . . . . 20
1.4 Modelos de programación matemática . . . . . . . . . . . . . . . . . 25
1.5 El método geométrico . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.5.1 Descripción del método geométrico . . . . . . . . . . . . . . . 28
1.5.2 Resumen del método geométrico . . . . . . . . . . . . . . . . 32
2 Programación Lineal 33
2.1 Modelo general de programación lineal . . . . . . . . . . . . . . . . . 33
2.2 Nociones previas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.3 Definiciones sobre las soluciones de un problema . . . . . . . . . . . 39
2.4 Algunos resultados sobre las soluciones . . . . . . . . . . . . . . . . . 43
2.5 El algoritmo del Simplex . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.6 Algoritmo del Simplex en forma de tabla (max) . . . . . . . . . . . . 51
2.7 Algoritmo del Simplex en forma de tabla (min) . . . . . . . . . . . . 55
2.8 Búsqueda de soluciones iniciales . . . . . . . . . . . . . . . . . . . . . 57
2.8.1 Método de las Penalizaciones . . . . . . . . . . . . . . . . . . 62
2.9 Algoritmo del Simplex en forma matricial . . . . . . . . . . . . . . . 64
2.9.1 Método del Simplex en forma matricial (caso maximizante) . 66
2.10 Adaptación algebraica del algoritmo del Simplex . . . . . . . . . . . 67
2.10.1 Algoritmo del Simplex (enfoque algebraico) . . . . . . . . . . 68
2.10.2 Método del Simplex en forma de tabla (Usando z
j
−c
j
en la
última fila) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
2.11 Otros algoritmos de programación lineal . . . . . . . . . . . . . . . . 76
2.11.1 Método de las dos fases . . . . . . . . . . . . . . . . . . . . . 77
3
4 ÍNDICE GENERAL
2.11.2 Algoritmo revisado del Simplex (Caso maximizante) . . . . . 79
3 Dualidad en programación lineal 85
3.1 Formas de la dualidad . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.1.1 Forma canónica maximizante de la dualidad . . . . . . . . . . 85
3.1.2 Forma estándar maximizante de la dualidad . . . . . . . . . . 88
3.1.3 Reglas para escribir el problema dual . . . . . . . . . . . . . . 91
3.1.4 Forma canónica minimizante de la dualidad . . . . . . . . . . 92
3.2 Propiedades de la relación de dualidad . . . . . . . . . . . . . . . . . 94
3.3 Interpretación económica de la dualidad . . . . . . . . . . . . . . . . 105
3.4 Algoritmo Dual del Simplex. (Caso maximizante) . . . . . . . . . . . 107
4 Análisis de sensibilidad 111
4.1 Introducción gráfica . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
4.2 Cambios discretos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
4.2.1 Variación en un coste de una variable no básica . . . . . . . . 112
4.2.2 Variación en un coste de una variable básica . . . . . . . . . . 114
4.2.3 Cambios en los recursos . . . . . . . . . . . . . . . . . . . . . 116
4.2.4 Cambios en los coeficientes tecnológicos . . . . . . . . . . . . 116
4.3 Incorporación de una nueva actividad . . . . . . . . . . . . . . . . . 117
4.4 Incorporación de nuevas restricciones . . . . . . . . . . . . . . . . . . 118
4.5 Programación Paramétrica . . . . . . . . . . . . . . . . . . . . . . . . 119
4.5.1 Parametrización de los coeficientes de coste . . . . . . . . . . 119
4.5.2 Parametrización de los recursos . . . . . . . . . . . . . . . . . 124
5 El problema de transporte 127
5.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
5.2 Planteamiento como un problema de programación lineal . . . . . . 128
5.3 Problema no equilibrado . . . . . . . . . . . . . . . . . . . . . . . . . 129
5.4 Propiedades del problema de transporte . . . . . . . . . . . . . . . . 129
5.5 Determinación de una solución inicial . . . . . . . . . . . . . . . . . 129
5.5.1 Método de la esquina Noroeste . . . . . . . . . . . . . . . . . 130
5.5.2 Método de costo mínimo . . . . . . . . . . . . . . . . . . . . . 132
5.5.3 Método de Vogel . . . . . . . . . . . . . . . . . . . . . . . . . 134
5.6 Definición de Ciclo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
5.7 Algoritmo de transporte (forma minimizante) . . . . . . . . . . . . . 137
5.8 Soluciones degeneradas . . . . . . . . . . . . . . . . . . . . . . . . . . 141
5.9 Otras variaciones del problema de transporte . . . . . . . . . . . . . 143
5.10 El problema de transbordo . . . . . . . . . . . . . . . . . . . . . . . 144
5.11 El problema de asignación . . . . . . . . . . . . . . . . . . . . . . . . 146
5.11.1 El algoritmo Húngaro (Forma minimizante) . . . . . . . . . . 146
5.11.2 Ejemplo de aplicación del algoritmo Húngaro . . . . . . . . . 147
5.12 Problema de emparejamiento . . . . . . . . . . . . . . . . . . . . . . 149
5.13 Problema de planificación de la producción . . . . . . . . . . . . . . 150
ÍNDICE GENERAL 5
6 Modelos de Redes 155
6.1 Redes. Conceptos básicos . . . . . . . . . . . . . . . . . . . . . . . . 155
6.2 Caminos de longitud mínima . . . . . . . . . . . . . . . . . . . . . . 157
6.3 Algoritmos de ordenación y de etiquetación . . . . . . . . . . . . . . 158
6.4 Algoritmo de Dijkstra . . . . . . . . . . . . . . . . . . . . . . . . . . 161
6.5 Problema del flujo máximo . . . . . . . . . . . . . . . . . . . . . . . 163
6.6 Algoritmo de Ford-Fulkerson . . . . . . . . . . . . . . . . . . . . . . 165
6.6.1 Flujo de un corte . . . . . . . . . . . . . . . . . . . . . . . . . 165
6.6.2 Algoritmo de Ford-Fulkerson . . . . . . . . . . . . . . . . . . 166
6.7 CPM y PERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
6.7.1 Algoritmo CPM . . . . . . . . . . . . . . . . . . . . . . . . . 171
6.7.2 El método PERT . . . . . . . . . . . . . . . . . . . . . . . . . 173
7 Programación Entera 177
7.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
7.2 Algunos problemas de programación entera . . . . . . . . . . . . . . 178
7.2.1 El problema de la mochila . . . . . . . . . . . . . . . . . . . . 178
7.2.2 Problema del viajante . . . . . . . . . . . . . . . . . . . . . . 179
7.2.3 Problema de costo fijo . . . . . . . . . . . . . . . . . . . . . . 180
7.3 El algoritmo de ramificación y acotación . . . . . . . . . . . . . . . . 181
7.3.1 Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
7.3.2 Programación entera mixta . . . . . . . . . . . . . . . . . . . 185
7.4 Algoritmo de corte o de Gomory . . . . . . . . . . . . . . . . . . . . 185
7.4.1 Resumen del algoritmo de Gomory . . . . . . . . . . . . . . . 188
7.5 Programación 0-1. Algoritmo de enumeración . . . . . . . . . . . . . 189
8 Teoría de Colas 195
8.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
8.1.1 Costos de los sistemas de colas . . . . . . . . . . . . . . . . . 197
8.1.2 Estructuras típicas. . . . . . . . . . . . . . . . . . . . . . . . . 198
8.2 Terminología . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
8.2.1 Características físicas . . . . . . . . . . . . . . . . . . . . . . 198
8.2.2 Características de funcionalidad . . . . . . . . . . . . . . . . . 200
8.2.3 Parámetros de los sistemas de colas . . . . . . . . . . . . . . 201
8.3 Modelos de llegadas y de tiempo de servicio . . . . . . . . . . . . . . 201
8.3.1 Relación entre la distribución de Poisson y la exponencial . . 203
8.3.2 Otra distribución de las llegadas. La distribución de Erlang . 204
8.3.3 Modelos de duración de los servicios . . . . . . . . . . . . . . 205
8.4 La notación de Kendall . . . . . . . . . . . . . . . . . . . . . . . . . 205
8.5 Estudio de una cola M/M/1 . . . . . . . . . . . . . . . . . . . . . . . 206
8.5.1 Probabilidad de que el sistema esté en cierto estado . . . . . 206
8.5.2 Número medio de elementos en el sistema . . . . . . . . . . . 209
8.5.3 Número medio de elementos en cola . . . . . . . . . . . . . . 209
8.6 Teorema de Little . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
8.7 Sistemas con capacidad limitada . . . . . . . . . . . . . . . . . . . . 210
8.8 Modelo con s servidores . . . . . . . . . . . . . . . . . . . . . . . . . 213
8.8.1 Cálculo de la probabilidad de los diferentes estados del sistema 213
6 ÍNDICE GENERAL
8.8.2 Cálculo de P
0
. . . . . . . . . . . . . . . . . . . . . . . . . . . 214
8.8.3 Cálculo de los parámetros . . . . . . . . . . . . . . . . . . . . 215
8.8.4 Sistemas de colas de tipo M/M/s/FCFS/∞/∞. Expresiones
para el caso de s servidores . . . . . . . . . . . . . . . . . . . 215
8.9 El coste de un sistema de colas . . . . . . . . . . . . . . . . . . . . . 216
9 Introducción a la Simulación 219
9.1 Simulación. Generalidades . . . . . . . . . . . . . . . . . . . . . . . . 219
9.2 Un ejemplo muy sencillo . . . . . . . . . . . . . . . . . . . . . . . . . 220
9.3 Método Montecarlo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
9.4 Notas históricas sobre el Método Montecarlo . . . . . . . . . . . . . 224
9.5 Generación de números aleatorios . . . . . . . . . . . . . . . . . . . . 225
9.5.1 Propiedades de un buen generador de números aleatorios . . 226
9.5.2 Método del centro del cuadrado . . . . . . . . . . . . . . . . . 226
9.5.3 Método de las congruencias . . . . . . . . . . . . . . . . . . . 226
9.6 Método de la transformación inversa . . . . . . . . . . . . . . . . . . 229
9.6.1 Método de la transformación inversa aplicado a la distribución
exponencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
9.7 Simulación de una cola M/M/1 . . . . . . . . . . . . . . . . . . . . . 230
9.7.1 Programa FORTRAN . . . . . . . . . . . . . . . . . . . . . . 233
9.8 Integración Montecarlo. Método de éxito-fracaso . . . . . . . . . . . 240
9.9 Ejemplos de programas de simulación . . . . . . . . . . . . . . . . . 242
II EJERCICIOS 249
1 Introducción a la optimización 251
1.1 Ejercicios Resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
1.2 Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
1.3 Soluciones de los Ejercicios Propuestos . . . . . . . . . . . . . . . . . 275
2 Programación lineal 283
2.1 Ejercicios Resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
2.2 Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
2.3 Soluciones de los Ejercicios Propuestos . . . . . . . . . . . . . . . . . 310
3 Dualidad en programación lineal 315
3.1 Ejercicios Resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
3.2 Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
3.3 Soluciones de los Ejercicios Propuestos . . . . . . . . . . . . . . . . . 332
4 Análisis de sensibilidad 335
4.1 Ejercicios Resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
4.2 Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
4.3 Soluciones de los Ejercicios Propuestos . . . . . . . . . . . . . . . . . 367
ÍNDICE GENERAL 7
5 El Problema de transporte 371
5.1 Ejercicios Resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
5.2 Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
5.3 Soluciones de los Ejercicios Propuestos . . . . . . . . . . . . . . . . . 388
6 Problemas de redes 391
6.1 Ejercicios Resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
6.2 Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
6.3 Soluciones de los Ejercicios Propuestos . . . . . . . . . . . . . . . . . 401
7 Programación entera 403
7.1 Ejercicios Resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
7.2 Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
7.3 Soluciones de los Ejercicios Propuestos . . . . . . . . . . . . . . . . . 416
8 Teoría de colas 419
8.1 Ejercicios Resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
8.2 Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
8.3 Soluciones de los Ejercicios Propuestos . . . . . . . . . . . . . . . . . 426
9 Introducción a la Simulación 427
9.1 Ejercicios resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
9.2 Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
III PRÁCTICAS CON ORDENADOR 431
1 Programación lineal I 433
1.1 Problema de programación lineal con LINGO . . . . . . . . . . . . . 433
1.2 Análisis de sensibilidad con LINGO . . . . . . . . . . . . . . . . . . . 436
1.3 Otros problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
2 Programación lineal II 445
2.1 Comandos de salida de ficheros . . . . . . . . . . . . . . . . . . . . . 445
2.2 Formato abreviado de LINGO . . . . . . . . . . . . . . . . . . . . . . 448
2.3 Recapitulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
3 El problema de transporte 453
3.1 Problema de transporte . . . . . . . . . . . . . . . . . . . . . . . . . 453
3.2 Problema de asignación . . . . . . . . . . . . . . . . . . . . . . . . . 455
3.3 Problema de emparejamiento . . . . . . . . . . . . . . . . . . . . . . 457
3.4 Problema de planificación de la producción . . . . . . . . . . . . . . 459
3.5 Otros problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
8 ÍNDICE GENERAL
4 Problemas de redes 463
4.1 Camino mínimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
4.2 Flujo máximo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
4.3 CPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
4.4 Otros problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
5 Variable entera, acotada y libre 475
5.1 Variable entera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
5.2 Variable acotada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
5.3 Variable libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
5.4 Variable binaria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
5.5 Otros problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
BIBLIOGRAFÍA 499
INTRODUCCIÓN
Este libro está concebido con el propósito de cubrir los conceptos y técnicas
básicas de la Investigación Operativa y pone el mayor énfasis en sus aplicaciones
a problemas reales. Los destinatarios de este texto son las personas, estudiantes o
profesionales, que se inicien en el estudio de las distintas técnicas que la Investigación
Operativa nos suministra para el estudio de los problemas de optimización que surgen
a diario en el mundo de la empresa y de la administración, problemas que pretenden
dar el máximo rendimiento a los recursos disponibles y, por lo general, limitados.
Está especialmente diseñado para alumnos de las Escuelas de Ingeniería o para
estudios de Ciencias Económicas y Empresariales y es fruto de la experiencia de
los autores, ambos profesores de Estadística e Investigación Operativa de la Escuela
Superior de Ingeniería de la Universidad de Cádiz.
El libro está organizado en tres secciones:
Una primera parte teórica donde se recogen sobre todo los conceptos fundamen-
tales y los algoritmos más usuales en la resolución de problemas de optimización,
ilustrando todos los aspectos mencionados con abundantes ejemplos. En los cuatro
primeros temas se trata la Programación Lineal, la Dualidad en Programación Li-
neal y los problemas de Sensibilidad del algoritmo de Simplex. Los siguientes temas
están dedicados a algoritmos especiales de optimización, incluyéndose el problema
de transporte, problemas de redes y programación con variable entera o binaria. El
libro contiene también un capítulo de Teoría de Colas, así como otro que trata los
temas más básicos de las Técnicas de Simulación, incluyendo programas en Fortran
y en otros lenguajes de Programación.
La segunda parte, dedicada a problemas sobre los temas tratados en la teoría,
contiene una sección de ejercicios totalmente resueltos y otra de ejercicios propuestos
con su solución.
La tercera parte contiene diversos problemas realizados con el Programa LINGO
publicado por LINDO SYSTEMS. INC., incluyendo instrucciones de uso de los co-
mandos de este programa.
Esperamos que los lectores encuentren útil este manual para el estudio y las
aplicaciones de la Investigación Operativa y sean capaces de resolver los problemas
que se les planteen en este campo. De esta forma, veremos cumplido nuestro objetivo.
LOS AUTORES
9
Parte I
TEORÍA
11
Tema 1
Introducción a la teoría de
optimización
1.1 Orígenes y desarrollo
En los siglos XVII y XVIII, grandes matemáticos como Newton, Leibnitz, Bernoulli
y, sobre todo, Lagrange, que tanto habían contribuido al desarrollo del cálculo infini-
tesimal, se ocuparon de obtener máximos y mínimos condicionados de determinadas
funciones.
Posteriormente el matemático francés Jean Baptiste-Joseph Fourier (1768-1830)
fue el primero en intuir, aunque de forma imprecisa, los métodos de lo que actual-
mente llamamos programación lineal y la potencialidad que de ellos se deriva.
Si exceptuamos al matemático Gaspar Monge (1746-1818), quien en 1776 se in-
teresó por problemas de este género, debemos remontarnos al año 1939 para encon-
trar nuevos estudios relacionados con los métodos de la actual programación lineal.
En este año, el matemático ruso Leonodas Vitalyevich Kantarovitch publica una
extensa monografía titulada Métodos matemáticos de organización y planificación
de la producción en la que por primera vez se hace corresponder a una extensa gama
de problemas una teoría matemática precisa y bien definida llamada, hoy en día,
programación lineal.
En 1941-1942 se formula por primera vez el problema de transporte, estudiado in-
dependientemente por Koopmans y Kantarovitch, razón por la cual se suele conocer
con el nombre de problema de Koopmans-Kantarovitch.
Tres años más tarde, G. Stigler plantea otro problema particular conocido con el
nombre de régimen alimenticio optimal.
13
14 TEMA 1. INTRODUCCIÓN A LA TEORÍA DE OPTIMIZACIÓN
1.1.1 Orígenes de la Investigación operativa
La Investigación Operativa (I.O.) es una ciencia relativamente joven. Los pri-
meros resultados importantes se consiguieron durante la II Guerra Mundial. En la
batalla de Inglaterra el ejército alemán sometió a los británicos a un duro ataque
aéreo. El gobierno estaba explorando cualquier método para defender el país. Los
ingleses tenían una fuerza aérea hábil, aunque pequeña, pero disponía de radares.
Se plantearon sacarle al radar el máximo rendimiento. El gobierno convocó a media
docena de científicos de diversas disciplinas para resolver este problema. Así dise-
ñaron una nueva técnica, la Investigación Operativa, que duplicó la efectividad del
sistema de defensa aérea mediante una localización óptima para las antenas y una
mejor distribución de las señales.
Alentados por este éxito, Inglaterra organizó equipos similares para resolver otros
problemas militares. EE.UU. hizo lo mismo cuando entró en guerra, creándose el
proyecto (SCOOP Scientific Computation of Optimum Programs) que desarrolló el
algoritmo Simplex (George B. Dantzing, 1947).
Una de las primeras aplicaciones de los estudios del grupo SCOOP fue el puente
aéreo de Berlín. Se continuó con infinidad de aplicaciones de tipo preferentemente
militar.
En 1946 comienza el largo período de la guerra fría entre la antigua Unión So-
viética (URSS) y las potencias aliadas (principalmente, Inglaterra y Estados Unidos).
Uno de los episodios más llamativos de esa guerra fría se produjo a mediados de 1948
cuando la URSS bloqueó las comunicaciones terrestres desde las zonas alemanas en
poder de los aliados con la ciudad de Berlín, iniciando el bloqueo de Berlín. A los alia-
dos se les plantearon dos posibilidades: o romper el bloqueo terrestre por la fuerza, o
llegar a Berlín por el aire. Se adoptó la decisión de programar una demostración téc-
nica del poder aéreo norteamericano; a tal efecto, se organizó un gigantesco puente
aéreo para abastecer la ciudad: en diciembre de 1948 se estaban transportando 4500
toneladas diarias; en marzo de 1949, se llegó a las 8000 toneladas, tantas como se
transportaban por carretera y ferrocarril antes del corte de las comunicaciones. En
la planificación de los suministros se utilizó la programación lineal. (El 12 de mayo
de 1949, los soviéticos levantaron el bloqueo).
En estos años posteriores a la Segunda Guerra Mundial, en Estados Unidos se
asumió que la eficaz coordinación de todas las energías y recursos de la nación era
un problema de tal complejidad, que su resolución y simplificación pasaba necesa-
riamente por los modelos de optimización que resuelve la programación lineal.
Paralelamente a los hechos descritos se desarrollan las técnicas de computación
y los ordenadores, instrumentos que harían posible la resolución y simplificación de
los problemas que se estaban gestando.
En 1952 un ordenador SEAC del National Bureau of Standars proporcionó la
primera solución de un problema de programación lineal, que es el tema del que nos
ocuparemos al principio del libro. Se obtuvieron soluciones para los problemas de
determinar la altura óptima a la que deberían volar los aviones para localizar los
1.1. ORÍGENES Y DESARROLLO 15
submarinos enemigos, además resolvieron el problema del reparto de fondos entre
combustible, armamento, instrumentos, equipos, etc. . . También se determinó la
profundidad a la que había que enviar las cargas para alcanzar a los submarinos
enemigos con mayor efectividad. En este aspecto los resultados de la Investigación
Operativa multiplicaron por cinco la eficacia de la fuerza aérea.
Los fundamentos matemáticos de la programación lineal se deben al matemático
norteamericano de origen húngaro Janos von Neuman (1903-1957), quien en 1928
publicó su famoso trabajo Teoría de Juegos. En 1947 conjetura la equivalencia de
los problemas de programación lineal y la teoría de matrices desarrollada en sus
trabajos. La influencia de este respetado matemático, discípulo de David Hilbert
en Gotinga y, desde 1930, catedrático de la Universidad de Princenton de Estados
Unidos, hace que otros investigadores se interesaran paulatinamente por el desarrollo
riguroso de esta disciplina.
En 1958 se aplicaron los métodos de la programación lineal a un problema con-
creto: el cálculo del plan óptimo de transporte de arena de construcción a las obras
de edificación de la ciudad de Moscú. En este problema había 10 puntos de partida
y 230 de llegada. El plan óptimo de transporte, calculado con el ordenador Strena
en 10 días del mes de junio, rebajó un 11% los gastos respecto a los costes previstos.
Estos métodos se aplicaron posteriormente a problemas comerciales y de la in-
dustria, lo que contribuyó a que la Investigación Operativa se desarrollara extraor-
dinariamente entre los años 50 y 60.
En la sociedad civil ya se habían planteado anteriormente diversos problemas pro-
pios de la Investigación Operativa en un disciplina que se conoció como Investigación
de Empresas o Análisis de Empresas, pero lo que aportó la II Guerra Mundial fue
el desarrollo de métodos sistemáticos para afrontar estos problemas, principalmente
el método Simplex.
El campo de las aplicaciones no bélicas de la Investigación Operativa es muy am-
plio. Ésta resuelve problemas tales como el uso adecuado de los equipos de trabajo
y de personal, localización y volumen de sucursales, campañas de publicidad, trans-
porte de mercancías, problemas de grafos y redes, problemas de colas, etc. También
tiene aplicaciones en agricultura y ganadería dando respuestas que permitan la mejor
distribución de los cultivos o la alimentación más económica para el ganado.
Como ya hemos comentado anteriormente, otro motor importantísimo del de-
sarrollo de la Investigación Operativa ha sido el ordenador que permite resolver
problemas reales en que intervienen un gran número de variables en un tiempo ra-
zonable.
En España el Instituto de Estadística de Madrid comenzó sus cursos en 1950
con una conferencia sobre aplicaciones de la Investigación Operativa, justo cuando
apareció el libro de Morse-Kimbal en el que se exponían los trabajos de los equipos
científicos que se constituyeron en la guerra. Se publicó a partir de 1950 una revista
especializada: “Trabajos de Estadística en Investigación Operativa” con un nivel
similar al de otros países europeos, a pesar de que nuestra industria estaba muy
atrasada. Adelantándose a otros paises se creó un Instituto de Investigación Opera-
16 TEMA 1. INTRODUCCIÓN A LA TEORÍA DE OPTIMIZACIÓN
tiva que colaboró con las empresas españolas a introducir la Investigación Operativa
en la resolución de sus problemas. De esta forma, se reconoció la importancia de
esta materia, y como consecuencia se incorporó a los planes de estudio de facultades
y escuelas universitarias.
Destacamos asimismo a Sixto Ríos que ha jugado un papel fundamental en el
campo de la Estadística y la Investigación Operativa en España. También se puede
destacar el gran número de discípulos de este profesor, incluidos sus propios hijos,
que han contribuido y contribuyen al desarrollo de la Estadística y la Investigación
Operativa en las universidades españolas, aportando un gran número de trabajos y
publicaciones.
En el siglo XX se produce la aparición de nuevas ramas de las matemáticas, por
lo que es preciso resaltar algunos aspectos que la caracterizan:
• Teoría de Juegos.
• La Programación Lineal.
• La Investigación Operativa.
• Álgebra Computacional.
1.1.2 La Teoría de Juegos
Así como la Teoría de la Probabilidad surgió del estudio de los juegos de azar y del
deseo de los jugadores profesionales de encontrar formas de mejorar sus ventajas,
la teoría de juegos nace al intentar dar precisión a la noción de “comportamiento
racional". El estudio matemático de los juegos ofrece la posibilidad de nuevas formas
de comprensión y precisión en el estudio de la Economía.
La Teoría de Juegos utiliza herramientas básicas de las matemáticas, el Algebra,
en concreto las matrices, la probabilidad e incluso el teorema del punto fijo de
Brouwer para demostrar que existe un único plan de acción “estable" o racional
que representa la estrategia óptima. Actualmente se aplica en Economía y en la
Estrategia Militar.
1.1.3 La Programación Lineal
La Programación Lineal es una técnica reciente de la Matemática Aplicada que
permite considerar un cierto número de variables simultáneamente y calcular la
solución óptima de un problema dado considerando ciertas restricciones.
Su nombre se debe a que en un principio trataba de resolver problemas que se
planteaban en términos matemáticos con funciones lineales. En la actualidad se
aplica también a problemas no lineales.
1.1. ORÍGENES Y DESARROLLO 17
La teoría de la Programación Lineal ha sido desarrollada por Gohn, Von Neu-
mann, Dantzig, Koopmans, W. Cooper y Charnes entre otros matemáticos, estadís-
ticos y economistas.
El proceso para encontrar la solución óptima es el siguiente: Se plantea el pro-
blema, se traduce a un modo algebraico, se analizan las restricciones y se busca
el óptimo dependiendo del criterio que se quiera aplicar. La respuesta se puede
encontrar por varios métodos. El más general es el diseñado por Dantzig, que se
denomina método del Simplex.
Estos métodos emplean un “teorema dual" mediante el cual un problema de
maximización lleva emparejado uno de minimización.
Se utiliza en problemas de transportes, negocios, en logística militar y en la
actualidad las aplicaciones también se dirigen hacia el área industrial, a la resolución
de problemas de producción, etc.
La Programación Lineal se ha convertido en una herramienta de las Matemáticas
tanto teóricas como aplicadas que utiliza el Algebra, la Teoría de Matrices y está
relacionada con la Estadística y la Teoría de Juegos.
1.1.4 La Investigación Operativa
Una característica importante del siglo XX es el desarrollo de las distintas ramas
de las Matemáticas y el descubrimiento de los vínculos entre ellas. Pero también el
resurgir de nuevas ramas como es la Investigación Operativa.
Aunque debe su nombre a su aplicación a las operaciones militares, y empieza a
desarrollarse en la II Guerra Mundial, sus orígenes se remontan al siglo XVII. Pascal
y Fermat, que habían inventado el concepto de esperanza matemática, inician los
estudios de Investigación Operativa junto con Jacques Bernoulli y Waldegrave al
intentar resolver problemas de decisión en el campo de la incertidumbre.
Posteriormente, Monge (1746-1818) se propuso y logró resolver un problema
económico de naturaleza combinatoria: el de los desmontes y rellenos. Borel (1871-
1956) presentó la Teoría matemática de los Juegos en la Academia de Ciencias de
París, mientras que Erlang establecía la de las “líneas de espera”, que utilizó para la
concepción de redes telefónicas. En vísperas de la II Guerra Mundial, Kantorovitch
concebía y aplicaba la programación lineal a la planificación. Por ello cuando el físico
inglés Blackett, en 1938, fue llamado para reunir el primer equipo de investigadores
operativos, ya le habían precedido personalidades en dicho campo.
Blackett tuvo el mérito de encontrar la fórmula que le permitió tratar de forma
rápida y con éxito la difícil cuestión de la implantación óptima de los radares de
vigilancia británicos, que desempeñaron un papel tan decisivo en la “Batalla de
Inglaterra”. Desde que finalizó la guerra se ha utilizado con éxito para resolver
problemas de ámbito empresarial, industrial, etc.
Es justo señalar que el desarrollo de la investigación operativa ha sido posible
18 TEMA 1. INTRODUCCIÓN A LA TEORÍA DE OPTIMIZACIÓN
gracias al desarrollo de los medios informáticos que son los que posibilitan resolver
los problemas en la práctica, como gestión de grandes conjuntos económicos, orga-
nización sistemática de tareas complejas o controlar toda una red eléctrica nacional.
Debido al éxito de la Investigación Operativa en el campo militar, los industria-
les recurrieron a ésta para solucionar los problemas generados por la complejidad y
especialización que iba en aumento dentro de sus organizaciones. En 1951, la Inves-
tigación Operativa ya se había introducido por completo en la industria británica
y estaba en proceso de hacerlo en la estadounidense. Desde entonces, su desarrollo
ha sido muy rápido, en gran medida gracias a la ayuda del ordenador que, desde
el momento de su aparición, queda irremediablemente unido a la Teoría de la Pro-
babilidad, a la Estadística y especialmente a la propia Investigación Operativa y
aumentó enormemente las posibilidades de la Ciencia.
Según Hillier y Lieberman (1991), en esencia la contribución del enfoque de la
Investigación Operativa proviene principalmente de:
• La estructuración de una situación de la vida real como un modelo matemático,
logrando una abstracción de los elementos esenciales para que pueda buscarse
una solución que concuerde con los objetivos del que toma decisiones.
• El análisis de la estructura de tales soluciones y el desarrollo de procedimientos
sistemáticos para obtenerlas.
• El desarrollo de una solución, incluyendo la teoría matemática si es necesario,
que lleva el valor óptimo de la medida de lo que se espera del sistema.
Actualmente la Investigación Operativa incluye gran cantidad de ramas como la
Programación Lineal y No Lineal, Programación Dinámica, Simulación, Teoría de
Colas, Teoría de Inventarios, Teoría de Grafos, etc. y se encuentra muy difundida,
con aplicaciones en campos muy variados y en particular muy unida a la Economía
y a la Informática y por supuesto a la Estadística y Teoría de Probabilidad, consti-
tuyendo una materia universitaria con entidad propia.
1.2 Modelización de un problema de P. L.
Introduciremos las líneas generales del modelo de Programación Lineal (P.L.) ilus-
trándolo con el siguiente ejemplo:
Ejemplo 1 Alimentación del ganado
Nos proponemos alimentar el ganado de una granja de la forma que sea la más
económica posible. La alimentación debe contener cuatro tipos de nutrientes que
llamamos A,B,C,D. Estos componentes se encuentran en dos tipos de piensos M y
N. La cantidad, en gramos, de cada componente por kilo de estos piensos viene dada
1.2. MODELIZACIÓN DE UN PROBLEMA DE P. L. 19
en la tabla siguiente:
A B C D
M 100 100 200
N 100 200 100
Un animal debe consumir diariamente al menos 0,4 Kg del componente A, 0,6 Kg del
componente B, 2 Kg. del componente C y 1,7 Kg. del componente D. El compuesto
M cuesta 20 pts/kg y el N 8 pts/kg. ¿Qué cantidades de piensos M y N deben
adquirirse para que el gasto de comida sea el menor posible?
Para resolver el problema construimos un modelo matemático del mismo. La
construcción de este modelo puede hacerse siguiendo el proceso que se describe a
continuación:
1.2.1 Formulación de los modelos
Paso 1: Determinar las variables de decisión o de entrada y representarlas alge-
braicamente. Tomamos en este caso las variables:
x
1
= cantidad de pienso M(en Kg)
x
2
= cantidad de pienso N(en Kg).
Paso 2: Determinar las restricciones expresándolas como ecuaciones o inecuaciones
de las variables de decisión.
Las restricciones se deducen de la composición requerida para la dieta (en Kg.):
En componente A 0, 1x
1
+ 0x
2
≥ 0, 4
En componente B 0x
1
+ 0, 1x
2
≥ 0, 6
En componente C 0, 1x
1
+ 0, 2x
2
≥ 2
En componente D 0, 2x
1
+ 0, 1x
2
≥ 1, 7
Paso 3: Expresar todas las condiciones implícitamente establecidas por la natu-
raleza de las variables (que no puedan ser negativas, que sean enteras, que sólo
pueden tomar determinados valores, etc.)
En este ejemplo los cantidades de pienso no pueden tomar valores negativos
por lo tanto, deberíamos imponer que sean x
1
≥ 0; x
2
≥ 0. No imponemos
otras restricciones al tipo de variables.
Paso 4: Determinar la función objetivo.
El objetivo de este problema es:
Minimizar gasto = Min Z = 20x
1
+ 8x
2
.
El modelo por tanto es el siguiente:
Min Z = 20x
1
+ 8x
2
s.a.: 0, 1x
1
+ 0x
2
≥ 0, 4
0x
1
+ 0, 1x
2
≥ 0, 6
0, 1x
1
+ 0, 2x
2
≥ 2
0, 2x
1
+ 0, 1x
2
≥ 1, 7
x
1
, x
2
≥ 0
20 TEMA 1. INTRODUCCIÓN A LA TEORÍA DE OPTIMIZACIÓN
1.3 Modelización de diversos problemas de I.O.
Vamos a modelizar ahora diversos problemas que se pueden plantear en la Investi-
gación Operativa (I.O.) que enunciamos a continuación:
Ejemplo 2 Transporte de tropa.
Un destacamento militar formado por 40 soldados de Ingenieros, 36 especia-
listas dinamiteros, 88 antiguerrilleros y 120 infantes como tropa de apoyo, ha de
transportarse hasta una posición estratégica importante. En el parque de la base
se dispone de 4 tipos de vehículos A,B,C,D, acondicionados para el transporte de
tropas. El número de personas que cada vehículo puede transportar es 10,7,6,9 de la
forma en que se detalla en la siguiente tabla:
Ingenieros Dinamiteros Antiguerrillas Infantes
A 3 2 1 4
B 1 1 2 3
C 2 1 2 1
D 3 2 3 1
Los gastos de gasolina de cada vehículo hasta el punto de destino se estiman en
160, 80, 40 y 120 litros respectivamente. Si queremos ahorrar gasolina. ¿Cuántos
vehículos de cada tipo habrá que utilizar para que el gasto de gasolina sea el menor
posible?
P1) x
i
= n
o
vehículos de cada tipo que se usen.
P2)
3x
1
+x
2
+ 2x
3
+ 3x
4
≥ 40
2x
1
+x
2
+x
3
+ 2x
4
≥ 36
x
1
+ 2x
2
+ 2x
3
+ 3x
4
≥ 88
4x
1
+ 3x
2
+x
3
+x
4
≥ 120
P3) x
i
≥ 0; x
i
son enteros.
P4) Minimizar gasto gasolina = 160x
1
+ 80x
2
+ 40x
3
+ 120x
4
Min Z = 160x
1
+ 80x
2
+ 40x
3
+ 120x
4
s.a.: 3x
1
+x
2
+ 2x
3
+ 3x
4
≥ 40
2x
1
+x
2
+x
3
+ 2x
4
≥ 36
x
1
+ 2x
2
+ 2x
3
+ 3x
4
≥ 88
4x
1
+ 3x
2
+x
3
+x
4
≥ 120
x
i
≥ 0 ; enteros.
Ejemplo 3 Transporte de mercancías.
Un fabricante desea despachar varias unidades de un artículo a tres tiendas T1,
T2, T3. Dispone de dos almacenes desde donde realizar el envío, A y B. En el
1.3. MODELIZACIÓN DE DIVERSOS PROBLEMAS DE I.O. 21
primero dispone de 5 unidades de este artículo y el segundo 10. La demanda de cada
tienda es 8, 5 y 2 unidades respectivamente. Los gastos de transporte de un artículo
desde cada almacén a cada tienda están expresados en la tabla:
T1 T2 T3
A 1 2 4
B 3 2 1
¿Cómo ha de realizar el transporte para que sea lo más económico posible?
x
i
= n
o
de unidades transportadas.
Problema equilibrado (Oferta=Demanda):
T1 T2 T3 Disponibilidad
A x
1
x
2
x
3
5
B x
4
x
5
x
6
10
Demanda 8 5 2
Min Z = x
1
+ 2x
2
+ 4x
3
+ 3x
4
+ 2x
5
+x
6
s.a.: x
1
+x
2
+x
3
= 5
x
4
+x
5
+x
6
= 10
x
1
+x
4
= 8
x
2
+x
5
= 5
x
3
+x
6
= 2
x
i
enteros y no negativos.
Ejemplo 4 Árboles frutales.
Un agricultor tiene una parcela de 640 m
2
para dedicarla al cultivo de árboles
frutales: naranjos, perales y manzanos. Se pregunta de qué forma repartirá la su-
perficie de la parcela entre las tres variedades para conseguir el máximo beneficio
sabiendo que:
Cada naranjo necesita un mínimo de 16 m
2
, cada peral 4 m
2
y cada manzano 8
m
2
.
Dispone de 900 horas de trabajo al año, necesitando cada naranjo de 30 horas al
año, cada peral 5 y cada manzano 10.
Los beneficios unitarios son de 50, 25 y 20 unidades monetarias respectivamente
por cada naranjo, peral y manzano respectivamente.
x
1
= número de naranjos.
x
2
= número de perales.
x
3
= número de manzanos.
22 TEMA 1. INTRODUCCIÓN A LA TEORÍA DE OPTIMIZACIÓN
Max Z = 50x
1
+ 25x
2
+ 20x
3
s.a.: 16x
1
+ 4x
2
+ 8x
3
≤ 640
30x
1
+ 5x
2
+ 10x
3
≤ 900
x
i
≥ 0 ; enteros.
Ejemplo 5 Árboles frutales (II).
1. Si se produce un incremento del precio de los naranjos que hace elevar el be-
neficio de cada naranjo a 120. ¿Sigue siendo válida la solución?
2. Si desciende el beneficio de los perales hasta situarse en 10. ¿Se modificará la
solución del problema?
3. Al agricultor se le plantea la posibilidad de cultivar limoneros que necesitan
12m
2
de tierra, 20 horas anuales de mano de obra, proporcionando un beneficio
de 30 u.m. ¿Cuál será ahora la situación?
4. A causa de la sequía, el agricultor tiene restricciones para el riego: Le han
asignado 200m
3
de agua anuales. Las necesidades son de 2m
3
por naranjo,
1m
3
por peral y 1m
3
por manzano cada año. ¿Cómo repercute esta nueva
situación en la solución inicial?
5. Se compra una parcela contigua de 160m
2
. ¿Cuál será en este caso la nueva
solución?
6. De acuerdo con un estudio técnico, para el tratamiento óptimo de los perales
se necesitan 10m
2
y 15 horas de mano de obra anuales. ¿Sigue siendo válida
la solución?
1. Z

= 120x
1
+ 25x
2
+ 20x
3
2. Z
′′
= 50x
1
+ 10x
2
+ 20x
3
3. x
4
= número de limoneros.
Max Z = 50x
1
+ 25x
2
+ 20x
3
+ 30x
4
s.a.: 16x
1
+ 4x
2
+ 8x
3
+ 12x
4
≤ 640
30x
1
+ 5x
2
+ 10x
3
+ 20x
4
≤ 900
x
i
≥ 0 ; enteros.
4. Nueva restricción: 2x
1
+x
2
+x
3
≤ 200
5. 16x
1
+ 4x
2
+ 8x
3
≤ 800
6. El programa lineal se escribirá:
Z = 50x
1
+ 25x
2
+ 20x
3
s.a.: 16x
1
+ 10x
2
+ 8x
3
≤ 640
30x
1
+ 15x
2
+ 10x
3
≤ 900
x
i
≥ 0 ; enteros.
1.3. MODELIZACIÓN DE DIVERSOS PROBLEMAS DE I.O. 23
Ejemplo 6 Asignación de personal.
Una empresa ha preseleccionado 5 candidatos para ocupar 4 puestos de trabajo en
la empresa. Los puestos de trabajo consisten en manejar 4 máquinas diferentes (un
trabajador para cada máquina). La empresa ha probado a los cinco trabajadores en
las 4 máquinas, realizando el mismo trabajo todos ellos en cada una de las máquinas,
se obtuvieron los siguientes tiempos:
Trabajo Máquina 1 Máquina 2 Máquina 3 Máquina 4
1 10 6 6 5
2 8 7 6 6
3 8 6 5 6
4 9 7 7 6
5 8 7 6 5
Determinar qué trabajadores debe seleccionar la empresa y a qué máquinas debe
asignarlos.
La variable x
ij
representa la acción “el trabajador i se asigna a la máquina j”.
Los dos estados de esta acción son 0 (si no se asigna) y 1 (si se asigna).
Min Z = 10x
11
+ 8x
21
+ 8x
31
+ 9x
41
+ 8x
51
+
+ 6x
12
+ 7x
22
+ 6x
32
+ 7x
42
+ 7x
52
+
+ 6x
13
+ 3x
23
+ 5x
33
+ 7x
42
+ 6x
53
+
+ 5x
14
+ 6x
24
+ 6x
34
+ 6x
44
+ 5x
54
s.a.: x
11
+x
21
+x
31
+x
41
≤ 1
x
21
+x
22
+x
23
+x
24
≤ 1
x
31
+x
32
+x
33
+x
34
≤ 1
x
41
+x
42
+x
43
+x
44
≤ 1
x
51
+x
52
+x
53
+x
54
≤ 1
x
11
+x
21
+x
31
+x
41
+x
51
= 1
x
21
+x
22
+x
23
+x
24
+x
52
= 1
x
31
+x
32
+x
33
+x
34
+x
53
= 1
x
41
+x
42
+x
43
+x
44
+x
54
= 1
x
ij
≥ 0; x
ij
ǫ{0, 1}
Ejemplo 7 Camino mínimo.
Una persona tiene que desplazarse a diario de un pueblo 1 a otro 7. Está es-
tudiando usando el mapa de carreteras cuál debe ser el trayecto más corto. Las
carreteras y sus distancias están en la figura 1.1.
24 TEMA 1. INTRODUCCIÓN A LA TEORÍA DE OPTIMIZACIÓN
Figura 1.1 Mapa de carreteras de los pueblos 1 al 7.
La variable x
ij
representa la acción “desplazarse del pueblo i al j”, indicando el
uno que se produce tal desplazamiento, y el cero que no se produce.
Min Z = 12x
12
+ 4x
13
+ 5x
24
+ 3x
25
+ 2x
34
+ 10x
36
+ 5x
42
+ 2x
43
+ 10x
45
+ 3x
52
+ 10x
54
+
+ 2x
57
+ 10x
63
+ 4x
67
s.a.: x
12
+x
13
= 1
x
24
+x
25
−x
12
−x
42
−x
52
= 0
x
34
+x
36
−x
13
−x
43
−x
63
= 0
x
42
+x
43
+x
45
−x
24
−x
34
−x
54
= 0
x
52
+x
54
+x
57
−x
25
−x
45
= 0
x
63
+x
67
−x
36
= 0
−x
57
−x
67
= −1
x
ij
≥ 0 ; x
ij
∈ {0, 1}.
Ejemplo 8 Localización.
Una empresa tiene la exclusiva para la distribución de un producto en 4 pobla-
ciones. En un estudio de mercado se ha determinado la demanda potencial:
Población 1 Población 2 Población 3 Población 4
3000 unidades 2000 unidades 2500 unidades 2700 unidades
Se sabe que los costes de transporte son de dos pesetas por Km y unidad transportada.
La distancia entre los pueblos es la que figura en la tabla siguiente:
1 2 3 4
1 - 25 35 40
2 - - 20 40
3 - - - 30
4 - - - -
Para abaratar los costes de transporte se decide instalar un almacén con capacidad
para 6000 unidades en dos de estas cuatro ciudades.
1.4. MODELOS DE PROGRAMACIÓN MATEMÁTICA 25
Determinar en qué poblaciones deben instalarse los almacenes para que el coste
de distribución sea mínimo.
La variable x
ij
representa la cantidad enviada del almacén i a la población j, e
y
i
toma el valor 1 si se selecciona la ciudad i para localizar el almacén. Toma el
valor 0 en caso contrario.
Min Z = 50x
12
+ 70x
13
+ 60x
14
+ 50x
21
+ 40x
23
+
+ 80x
24
+ 70x
31
+ 40x
32
+ 60x
34
+ 60x
41
+
+ 80x
42
+ 60x
43
s.a.: x
11
+x
21
+x
31
+x
41
≥ 3000
x
12
+x
22
+x
32
+x
42
≥ 2000
x
13
+x
23
+x
33
+x
43
≥ 2500
x
14
+x
24
+x
34
+x
44
≥ 2700
y
1
+y
2
+y
3
+y
4
= 2
x
11
+x
12
+x
13
+x
14
−6000y
1
≤ 0
x
21
+x
22
+x
23
+x
23
−6000y
2
≤ 0
x
31
+x
32
+x
33
+x
34
−6000y
3
≤ 0
x
41
+x
42
+x
43
+x
44
−6000y
4
≤ 0
x
ij
≥ 0 ; y
i
∈ {0, 1}.
1.4 Modelos de programación matemática
La modelización general de un problema de programación lineal es:
Max(Min): Z = c
1
x
1
+c
2
x
2
· · · +c
n
x
n
sujeto a: a
11
x
1
+a
12
x
2
+· · · +a
1n
x
n
(≤=≥) b
1
. . . . . . . . . . . . . . . . . . . . . . . . . . .
a
m1
x
1
+a
m2
x
2
+· · · +a
mn
x
n
(≤=≥) b
m
x
1
≥ 0; x
2
≥ 0; . . . x
n
≥ 0.
donde tanto la función objetivo como las restricciones son funciones lineales.
Si la función objetivo y/o las restricciones no fueran funciones lineales diremos
que el problema es de programación no lineal.
En la programación cuadrática la función objetivo es de segundo grado y las
restricciones si existen son lineales.
En el caso particular de un problema de programación lineal en el que las variables
de decisión tomen valores enteros, se llama programación entera.
Cuando las variables sólo toman valores 0,1 se llama programación booleana.
Los modelos de programación lineal se incluyen en una clase más amplia, la clase
de modelos de optimización en los que se optimiza una función de las variables
de decisión, denominada función objetivo, sujeta a un conjunto de limitaciones o
restricciones sobre las variables de decisión.
26 TEMA 1. INTRODUCCIÓN A LA TEORÍA DE OPTIMIZACIÓN
La formulación general de un problema de optimización es:
Opt Z = f(x
1
, x
2
, . . . , x
n
)
sujeto a g
j
(x
1
, . . . , x
n
) ≤ 0; j = 1, . . . , m donde,
f es la función objetivo, (x
1
, x
2
, . . . , x
n
) son las variables de decisión, y tenemos
unas restricciones caracterizadas por las desigualdades sobre (g
1
, g
2
, . . . , g
m
).
En el caso de la programación lineal la función objetivo y las restricciones son
lineales en las variables de decisión:
f(x
1
, x
2
, . . . , x
n
) = c
1
x
1
+· · · +c
n
x
n
= C
t
X
g
j
(x
1
, . . . , x
n
) = a
j1
x
1
+· · · +a
jn
x
n
−b
j
A· X ≤ b en notacion matricial, donde,
C es el vector coeficientes del objetivo, A es la matriz de coeficientes tecnológicos,
b es el vector de términos constantes y X el vector de variables de decisión.
1.5 El método geométrico
En algunos casos sencillos vamos a poder resolver problemas de programación lineal
usando el método geométrico. La única restricción que tendremos que considerar es
que tenga dos variables de decisión. Ilustramos este método con el ejemplo siguiente:
Ejemplo 9
Max Z = 2x
1
+x
2
s.a.: 5x
1
+ 2x
2
≤ 10
3x
1
+ 5x
2
≤ 15
x
1
, x
2
≥ 0.
Paso 1: Representamos en un sistema de coordenadas adecuadas las rectas que
corresponden a las restricciones.
5x
1
+ 2x
2
= 10 −→
x
1
= 0 x
2
= 5
x
1
= 2 x
2
= 0
3x
1
+ 5x
2
= 15 −→
x
1
= 0 x
2
= 3
x
1
= 5 x
2
= 0
Paso 2. Se representa la región del plano que verifica simultáneamente todas las
restricciones. Esta región se conoce con el nombre de región factible. La región
factible está marcada en la figura siguiente:
1.5. EL MÉTODO GEOMÉTRICO 27
Figura 1.2 Dibujo de la Región Factible. Ejemplo 9.
Paso 3.
Representamos la recta correspondiente al valor 0 de la función objetivo:
Z = 2x
1
+x
2
= 0; 2x
1
+x
2
= 0 −→
x
1
= 0 x
2
= 0
x
1
= 1 x
2
= −2
Si desplazamos la recta paralelamente hacia arriba el valor de Z va aumentando.
Así la paralela a 2x
1
+x
2
= 0 que pasa por (1, 0) es 2x
1
+x
2
= 2 y nos da un valor
del objetivo Z = 2 · 1 + 0 = 2.
Lo más alto que podemos desplazar la recta sin dejar la región factible es hasta
el punto A, que es el punto de corte de las dos rectas:
5x
1
+ 2x
2
= 10
3x
1
+ 5x
2
= 15
_
15x
1
+ 6x
2
= 30
−15x
1
−25x
2
= −75
_
Si sumamos ambas, obtenemos el punto A, con coordenadas:
−19x
2
= −45 −→
x
2
= 45/19
x
1
= 20/19.
28 TEMA 1. INTRODUCCIÓN A LA TEORÍA DE OPTIMIZACIÓN
En el punto A se obtiene el óptimo, cuyo valor en la función objetivo vale
Z = 2 ×
20
19
+
45
19
=
85
19
= 4. 473 7.
1.5.1 Descripción del método geométrico
1) Dibujar un sistema de coordenadas cartesianas en el que las variables de decisión
corresponden a los ejes. Se elegirá una escala adecuada (no necesariamente la
misma en ambos ejes). Representar las rectas correspondientes a las distintas
restricciones.
2) Representar las regiones del plano que cumplen cada una de las restricciones,
incluidas las de no negatividad. La intersección de estas regiones nos daría la
región de soluciones o región factible (si la intersección es ∅ el problema no
tiene solución).
3) Si la función objetivo es Z = c
1
x
1
+ c
2
x
2
, tendremos que representar la recta
r ≡ c
1
x
1
+ c
2
x
2
= 0 y estudiar la variación de Z al desplazarnos dentro de
la región factible mediante rectas paralelas a r ≡ c
1
x
1
+ c
2
x
2
= 0. En los
problemas de maximización la solución será el punto de la región factible que
nos de un Z mayor, en los de minimización el que nos proporcione un Z menor.
Ejemplo 10
Max Z = 6x
1
+ 10x
2
s.a.: 5x
1
+ 2x
2
≤ 10
3x
1
+ 5x
2
≤ 15
x
1
, x
2
≥ 0.
Paso 1.
5x
1
+ 2x
2
= 10 −→
x
1
= 0 x
2
= 5
x
1
= 2 x
2
= 0
3x
1
+ 5x
2
= 15 −→
x
1
= 0 x
2
= 3
x
1
= 5 x
2
= 0
6x
1
+ 10x
2
= 0 −→
x
1
= 0 x
2
= 0
x
1
= 1 x
2
= −
3
5
Paso 2. Ver figura 1.3.
1.5. EL MÉTODO GEOMÉTRICO 29
Figura 1.3 Dibujo de la Región Factible. Ejemplo 10.
Paso 3.
La recta paralela a 6x
1
+ 10x
2
= 0 que pasa por (1, 0) es 6x
1
+ 10x
2
= 6 con
valor del objetivo Z = 6 · 1 + 10 · 0 = 6.
Tiene soluciones múltiples pues, las dos rectas:
_
3x
1
+ 5x
2
= 15
6x
1
+ 10x
2
= 0
tienen la misma pendiente, son paralelas y, en todos los puntos desde A hasta
B se obtiene el mismo valor para la función objetivo.
A
_
20
19
,
45
19
_
y B(0, 3)
El valor del objetivo en el segmento AB es Z = 6 · 0 + 10 · 3 = 30.
Ejemplo 11
Min Z = x
1
−4x
2
s.a.: x
1
+x
2
≤ 6
x
1
−2x
2
≤ 2
−4x
1
+ 3x
2
≤ 12
x
1
, x
2
≥ 0
30 TEMA 1. INTRODUCCIÓN A LA TEORÍA DE OPTIMIZACIÓN
Paso 1.
x
1
+x
2
= 6 −→
x
1
= 0 x
2
= 6
x
1
= 6 x
2
= 0
x
1
−2x
2
= 2 −→
x
1
= 0 x
2
= −1
x
1
= 2 x
2
= 0
−4x
1
+ 3x
2
= 12 −→
x
1
= 0 x
2
= 4
x
1
= −3 x
2
= 0
x
1
−4x
2
= 0 −→
x
1
= 0 x
2
= 0
x
1
= 4 x
2
= 1
Paso 2. Ver figura 1.4.
Figura 1.4 Dibujo de la región factible. Ejemplo 11.
Paso 3.
La recta paralela a x
1
− 4x
2
= 0 que pasa por (1,0) sería x
1
− 4x
2
= 1 con
Z = x
1
−4x
2
= 1 · 1 −4 · 0 = 1.
1.5. EL MÉTODO GEOMÉTRICO 31
Tengo que ir hacia arriba porque el término independiente ha aumentado y lo
que tengo que hacer es minimizar. El punto donde se obtiene el óptimo es el
punto A, con coordenadas:
A
_
x
1
+x
2
= 6
−4x
1
+ 3x
2
= 12 donde,
x
1
=
6
7
, x
2
=
36
7
.
Y la solución óptima es: Z = x
1
−4x
2
= −
138
7
.
Nota: Si el programa hubiese estado escrito en forma maximizante, el óptimo
se obtendría en el punto B(2, 0), como puede verse en la figura 1.4.
Ejemplo 12
Max Z = 2x
1
−x
2
s.a.: x
1
−x
2
≤ 2
5x
1
−2x
2
≤ 16
x
1
, x
2
≥ 0
Paso 1.
x
1
−x
2
= 2 −→
x
1
= 0 x
2
= −2
x
1
= 2 x
2
= 0
5x
1
−2x
2
= 16 −→
x
1
= 2 x
2
= −3
x
1
=
16
5
x
2
= 0
2x
1
−x
2
= 0 −→
x
1
= 0 x
2
= 0
x
1
= 1 x
2
= 2
Paso 2. Ver figura 1.5.
32 TEMA 1. INTRODUCCIÓN A LA TEORÍA DE OPTIMIZACIÓN
Figura 1.5 Dibujo de la Región factible. Ejemplo 12.
Paso 3.
La recta paralela a 2x
1
−x
2
= 0 que pasa por (1, 0) toma el valor Z = 2·1−0 =
2. Luego la solución óptima es el punto A, que se obtiene como:
A
_
x
1
−x
2
= 2
5x
1
−2x
2
= 16
donde, x
1
= 4, x
2
= 2.
Y la función objetivo vale Z = 2x
1
− x
2
, y por tanto la solución óptima vale
Z = 8 −2 = 6. Si en el problema hubiésemos tenido que minimizar la solución
sería ilimitada.
1.5.2 Resumen del método geométrico
• Si la región factible es ∅ el programa lineal no tiene solución factible.
• Si la región factible es acotada entonces siempre hay solución finita, que puede
ser única o múltiple.
• Si la región factible es no acotada entonces puede ocurrir que haya:
— Solución finita (única o múltiple).
— Solución ilimitada.
Tema 2
Programación Lineal
2.1 Modelo general de programación lineal
Un programa lineal consiste en encontrar un vector X = (x
1
, x
2
, . . . , x
n
) que opti-
mice una función lineal Z. Las coordenadas de este vector están sujetas a ciertas
restricciones que se expresan en ecuaciones o inecuaciones lineales.
Opt. Z = c
1
x
1
+c
2
x
2
+· · · +c
n
x
n
s.a.: a
11
x
1
+a
12
x
2
+· · · +a
1n
x
n
(≤=≥) b
1
a
21
x
1
+a
22
x
2
+· · · +a
2n
x
n
(≤=≥) b
2
. . . . . . . . . . . .
a
m1
x
1
+a
m2
x
2
+· · · +a
mn
x
n
(≤=≥) b
m
x
i
≥ 0 i = 1, 2, . . . , n.
_
¸
¸
¸
¸
¸
¸
_
¸
¸
¸
¸
¸
¸
_
Todos los c
j
son conocidos, también los a
ij
y los b
i
.
A los coeficientes c
j
se les denomina coeficientes de coste, a los a
ij
coeficientes
tecnológicos y a los b
i
coeficientes de recursos.
Programa lineal en forma estándar. Decimos que un programa lineal está
en forma estándar si todas las restricciones son de igualdad y todos los b
i
con
i = 1, 2, . . . , m son positivos o nulos.
Veamos un ejemplo de un programa lineal en forma estándar:
Ejemplo 13 Problema en forma estándar
Max Z = 3x
1
+ 2x
2
−x
3
s.a.:
2x
1
+x
2
−3x
3
= 4
3x
1
−2x
2
−x
3
= 2
x
1
, x
2
, x
3
≥ 0
_
_
_
33
34 TEMA 2. PROGRAMACIÓN LINEAL
A veces puede aparecer en forma matricial:
Opt. Z = c
t
X
s.a.: AX = b
X ≥ 0
_
_
_
donde c =
_
_
_
_
_
c
1
c
2
.
.
.
c
n
_
_
_
_
_
, X =
_
_
_
_
_
x
1
x
2
.
.
.
x
n
_
_
_
_
_
, b =
_
_
_
_
_
b
1
b
2
.
.
.
b
m
_
_
_
_
_
y
A =
_
_
_
a
11
. . . a
1n
.
.
.
.
.
.
.
.
.
a
m1
. . . a
mn
_
_
_.
También puede aparecer en forma vectorial:
Opt. Z = c
t
X
s.a.: a
1
x
1
+a
2
x
2
+· · · +a
n
x
n
= b
X ≥ 0
_
_
_
donde a
j
es la j− ésima columna de la matriz A.
Ejemplo 14 El modelo anterior en forma vectorial sería:
Opt. Z = (3, 2, −1)
_
_
x
1
x
2
x
3
_
_
s.a.:
_
2
3
_
x
1
+
_
1
−2
_
x
2
+
_
−3
−1
_
x
3
=
_
4
2
_
X ≥ 0
Programa lineal en forma canónica maximizante. Decimos que un programa
lineal está en forma canónica maximizante si todas las restricciones son de desigual-
dad del tipo ≤ y el programa es de maximizar.
Ejemplo 15 Forma canónica maximizante
Max Z = 3x
1
+ 2x
2
−x
3
s.a.:
2x
1
+x
2
−3x
3
≤ 4
3x
1
−2x
2
−x
3
≤ 2
x
1
, x
2
, x
3
≥ 0
_
_
_
2.1. MODELO GENERAL DE PROGRAMACIÓN LINEAL 35
Programa lineal en forma canónica minimizante. Decimos que un programa
lineal está en forma canónica minimizante si todas las restricciones son en desigual-
dad (≥) y el programa es de minimizar.
Ejemplo 16 Forma canónica minimizante
Min Z = 3x
1
+ 2x
2
−x
3
s.a.:
2x
1
+x
2
−3x
3
≥ 4
3x
1
−2x
2
−x
3
≥ 2
x
1
, x
2
, x
3
≥ 0
_
_
_
¿Cómo pasar cualquier modelo a forma estándar? Paso 1: Si algún b
j
es
negativo se multiplica la restricción por −1.
Paso 2: Si la variable x
r
no tiene condición de no negatividad, expresarla como
diferencia de dos variables positivas de la forma:
x
r
= x

r
−x
′′
r
; x

r
≥ 0; x
′′
r
≥ 0
Paso 3: Las desigualdades se convierten en igualdades mediante la introducción de
variables de holgura positivas de la forma:
n

a
ij
x
j
≤ b
i
=⇒
n

a
ij
x
j
+s
i
= b
i
; s
i
≥ 0
n

a
ij
x
j
≥ b
i
=⇒
n

a
ij
x
j
−t
i
= b
i
; t
i
≥ 0
Ejemplo 17 Pasar a forma estándar el programa lineal:
Max Z = 3x
1
+x
2
s.a.:
x
1
+x
2
≤ 8
2x
1
+ 5x
2
≤ 20
x
1
, x
2
≥ 0
_
_
_
Los pasos 1 y 2 no son necesarios en este caso.
Paso 3:
Max Z = 3x
1
+x
2
s.a.:
x
1
+ 2x
2
+x
3
= 8
2x
1
+ 5x
2
+x
4
= 20
x
1
, x
2
, x
3
, x
4
≥ 0
_
_
_
36 TEMA 2. PROGRAMACIÓN LINEAL
Ejemplo 18 Pasar a forma estándar el programa lineal:
Max Z = x
1
+x
2
s.a.:
x
1
+ 5x
2
≤ 5
2x
1
−x
2
≤ −4
x
1
, x
2
≥ 0
_
_
_
Paso 1: 2x
1
−x
2
≤ −4 ↔−2x
1
+x
2
≥ 4
Paso 2: Son mayores que cero.
Paso 3:
Max Z = x
1
+x
2
s.a.:
x
1
+ 5x
2
+x
3
= 5
−2x
1
+x
2
−x
4
= 4
x
1
, x
2
, x
3
, x
4
≥ 0
_
_
_
Ejemplo 19 Pasar a forma estándar el programa lineal:
Min Z = 5x
1
+ 2x
2
s.a.:
6x
1
+x
2
≥ 6
4x
1
+ 3x
2
≤ 5
x
1
≥ 0
x
2
sin restriccion
_
¸
¸
_
¸
¸
_
Paso 1: No es necesario.
Paso 2: x
2
= x

2
−x
′′
2
; x

2
, x
′′
2
≥ 0
Paso 3:
Min Z = 5x
1
+ 2x

2
−2x
′′
2
s.a.:
6x
1
+x

2
−x
′′
2
−x
3
= 6
4x
1
+ 3x

2
−3x
′′
2
+x
4
= 5
x
1
, x

2
, x
′′
2
, x
3
, x
4
≥ 0
_
_
_
Cambiar el sentido de optimización. Un problema de maximización puede
pasarse a otro de minimización y viceversa:
Max z =
n

c
j
x
j
⇐⇒ Min z

=
n

(−c
j
)x
j
; z = −z

Min z =
n

c
j
x
j
⇐⇒ Max z

=
n

(−c
j
)x
j
; z = −z

2.1. MODELO GENERAL DE PROGRAMACIÓN LINEAL 37
Cambiar el sentido de una desigualdad.
n

a
ij
x
j
≤ b
i
=⇒
n

(−a
ij
)x
j
≥ −b
i
n

a
ij
x
j
≥ b
i
=⇒
n

(−a
ij
)x
j
≤ −b
i
Convertir igualdades en desigualdades.
n

a
ij
x
j
= b
i

_
n
a
ij
x
j
≤ b
i

n
a
ij
x
j
≥ b
i


_
n
a
ij
x
j
≤ b
i

n
(−a
ij
)x
j
≤ −b
i

_
n
(−a
ij
)x
j
≥ −b
i

n
a
ij
x
j
≥ b
i
Ejemplo 20 Dado el programa lineal:
Min Z = 3x
1
+ 2x
2
−x
3
s.a.:
x
1
−2x
2
= 4
3x
1
+x
3
= 3
x
1
≤ 0, x
2
, x
3
≥ 0
_
_
_
pasarlo a forma canónica maximizante, y forma canónica minimizante.
Como la variable primera no cumple la condición de no negatividad se realizará
el cambio de variable x
1
= −x

1
≥ 0.
Forma canónica maximizante:
Max Z’ = 3x

1
−2x
2
+x
3
−x

1
−2x
2
= 4 ↔
_
−x

1
−2x
2
≤ 4
−x

1
−2x
2
≥ 4

_
−x

1
−2x
2
≤ 4
x

1
+ 2x
2
≤ −4
−3x

1
+x
3
= 3 ↔
_
−3x

1
+x
3
≤ 3
−3x
1
+x
3
≥ 3

_
−3x
1
+x
3
≤ 3
3x
1
−x
3
≤ −3
Max Z’ = −3x

1
−2x
2
+x
3
s.a.:
−x

1
−2x
2
≤ 4
x

1
+ 2x
2
≤ −4
−3x

1
+x
3
≤ 3
3x

1
−x
3
≤ −3
x

1
≥ 0, x
2
, x
3
≥ 0
_
¸
¸
¸
¸
_
¸
¸
¸
¸
_
38 TEMA 2. PROGRAMACIÓN LINEAL
Forma canónica minimizante:
Min Z = 3x

1
+ 2x
2
−x
3
s.a.:
x

1
+ 2x
2
≥ −4
−x

1
−2x
2
≥ 4
3x

1
−x
3
≥ −3
−3x

1
+x
3
≥ 3
x

1
≥ 0, x
2
, x
3
≥ 0
_
¸
¸
¸
¸
_
¸
¸
¸
¸
_
2.2 Nociones previas
Decimos que {a
1
, a
2
, ..., a
n
} es un conjunto de vectores linealmente depen-
diente si existen α
1
, α
2
, ....α
n
constantes no todas nulas de forma que se cumple
α
1
a
1

2
a
2

3
a
3
+... +α
n
a
n
=

0. Son vectores linealmente independientes
si la igualdad anterior sólo se cumple para α
1
= α
2
= ... = α
n
= 0.
Decimos que el vector v se puede expresar como combinación lineal convexa
de los vectores {a
1
, a
2
, ..., a
n
} si existen constantes positivas λ
1
, λ
2
, ...λ
n
de forma
que se verifique:
v = λ
1
a
1

2
a
2
+... +λ
n
a
n
y λ
1

2
+... +λ
n
= 1.
Sean A
1
y A
2
dos puntos de IR
n
; se llama segmento lineal cerrado de extremos
A
1
y A
2
al conjunto:
{A ∈ IR
n
/A = λA
1
+ (1 −λ)A
2
; 0 ≤ λ ≤ 1}
Un conjunto C ⊂ IR
n
es un conjunto convexo cuando dados dos puntos cua-
lesquiera de C el segmento lineal cerrado determinado por esos puntos está contenido
en C.
Decimos que un punto x de un conjunto convexo C es un punto extremo
o vértice de C si no existen dos puntos x
1
, x
2
∈ C , x
1
= x
2,
de forma que
x = λx
1
+ (1 −λ)x
2
para algún λ / 0 < λ < 1.
Se llama semiespacio cerrado al conjunto de puntos de IR
n
que cumple
α
1
x
1

2
x
2
+... +α
n
x
n
≤ α
Se llama poliedro al conjunto intersección de una cantidad finita de semiespacios
cerrados.
Teorema 1 Todo semiespacio cerrado es un conjunto convexo.
Demostración:
Sea S = {(x
1
, x
2
, ...x
n
) ∈ IR
n
/ α
1
x
1

2
x
2
+... +α
n
x
n
≤ α}. Sean Y y Z dos
puntos de S, entonces se cumple:
2.3. DEFINICIONES SOBRE LAS SOLUCIONES DE UN PROBLEMA 39
Y = (y
1
, y
2
, ...y
n
) ∈ S ⇐⇒ α
1
y
1

2
y
2
+... +α
n
y
n
≤ α.
Z = (z
1
, z
2
, ...z
n
) ∈ S ⇐⇒ α
1
z
1

2
z
2
+... +α
n
z
n
≤ α.
Demostraremos que cualquier punto del segmento Y Z verifica la condición:
λY + (1 −λ)Z ∈ S ; 0 ≤ λ ≤ 1
Pero
λY + (1 −λ)Z = λ(y
1
, y
2
, . . . , y
n
) + (1 −λ)(z
1
, z
2
, . . . , z
n
) =
= (λy
1
+ (1 −λ)z
1
, λy
2
+ (1 −λ)z
2
, . . . , λy
n
+ (1 −λ)z
n
)
Ahora sustituimos y comprobamos que sea menor o igual a α.
α
1
[λy
1
+ (1 −λ)z
1
] +α
2
[λy
2
+ (1 −λ)z
2
] +· · · +α
n
[λy
n
+ (1 −λ)z
n
] =
= α
1
λy
1

1
(1 −λ)z
1

2
λy
2

2
(1 −λ)z
2
+· · · +α
n
λy
n

n
(1 −λ)z
n
=
= λ(α
1
y
1

2
y
2
+· · · +α
n
y
n
) + (1 −λ)(α
1
z
1

2
z
2
+· · · +α
n
z
n
) ≤
≤ λα + (1 −λ)α = λα +α −λα = α
Luego
λY + (1 −λ)Z ∈ S.
Corolario 1 Un poliedro es un conjunto convexo.
Teorema 2 Si C es un conjunto convexo acotado con un número finito de puntos
extremos, entonces cualquier punto de C puede expresarse como combinación lineal
convexa de los puntos extremos. Esto es:
A
1
, A
2
, . . . , A
k
puntos extremos de C , A ∈ C =⇒
A = λ
1
A
1

2
A
2
+· · · +λ
k
A
k
siendo λ
1

2
+· · · +λ
k
= 1.
2.3 Definiciones sobre las soluciones de un proble-
ma
Vamos a dar a continuación algunas definiciones sobre las soluciones de un problema
de programación lineal.
40 TEMA 2. PROGRAMACIÓN LINEAL
Se llama solución factible a cualquier vector x que verifique
Ax = b; x ≥ 0
Se llama región factible al conjunto de todas las soluciones factibles
F = {x ∈ IR
n
/ Ax = b; x ≥ 0}
Decimos que X

es una solución factible óptima si optimiza en el sentido
deseado a la función objetivo. Esto es:
Caso de Maximización Z

= C
t
X

cualquier otro X ∈ F =⇒
Z = C
t
X ≤ C
t
X

= Z

Caso de Minimización Z

= C
t
X

cualquier otro X ∈ F =⇒
Z = C
t
X ≥ C
t
X

= Z

Sea X

la solución óptima del programa lineal, a la cantidad Z

= C
t
X

se le
llama valor óptimo del programa lineal.
Decimos que un programa lineal es no acotado cuando no tiene valor óptimo
finito: Max Z →+∞ o Min Z →−∞.
Decimos que un programa lineal no tiene solución, o que es infactible
cuando no existen valores para las variables x
i
que verifiquen las restricciones. Es
decir, la región factible es vacía, F = ∅.
Matriz básica: Supongamos un sistema de ecuaciones del tipo:
_
¸
¸
_
¸
¸
_
θ
11
x
1
+... +θ
1n
x
n
= b
1
θ
21
x
1
+... +θ
2n
x
n
= b
2
... ... .
θ
m1
x
1
+... +θ
mn
x
n
= b
n
Denotamos por A la matriz de los coeficientes, A = (θ
ij
) . Si suponemos que
r(A) = m, tomamos cualquier submatriz B de A, que sea cuadrada y rango m
(determinante no nulo). La matriz B se llama matriz básica.
Si hacemos igual a cero las n − m variables asociadas a los vectores columnas
de A que no están en B, la solución del sistema formado por estas variables nulas
y la solución del sistema resultante BX
B
= b de m ecuaciones con m variables se
denomina solución básica asociada a la matriz básica B.
Se denominan variables básicas a las variables del vector X
B
formado por las
m variables del sistema BX
B
= b. Las “n−m” variables que se han igualado a cero
se denominan variables no básicas.
Llamamos Base asociada a la matriz básica B a los vectores cuyas coordenadas
son cada una de las columnas de B.
2.3. DEFINICIONES SOBRE LAS SOLUCIONES DE UN PROBLEMA 41
Ejemplo 21 Encontrar las soluciones básicas de:
x
1
+ 2x
2
+x
3
= 4
2x
1
+x
2
+ 5x
3
= 5
_
A =
_
1 2 1
2 1 5
_
; r(A) = 2.
Escogemos como matriz básica
B =
_
θ
1
θ
2
_
=
_
1 2
2 1
_
En este caso las variables básicas son x
1
y x
2
. La base está formada por los
vectores
_
1
2
_
y
_
2
1
_
.
Para calcular la solución básica correspondiente a la matriz B igualamos a 0 la
variable no básica, x
3
= 0.
BX
B
= b ; =⇒
_
1 2
2 1
__
x
1
x
2
_
=
_
4
5
_
=⇒
x
1
+ 2x
2
= 4
2x
1
+x
2
= 5
_
X
B
= B
−1
b −→
_
x
1
x
2
_
=
_
1 2
2 1
_
−1
_
4
5
_
=
_
2
1
_
Una solución básica del sistema sería:
x
1
= 2; x
2
= 1; x
3
= 0.
Podríamos haber escogido como submatriz
B =
_
θ
1
, θ
3
_
=
_
1 1
2 5
_
y por tanto x
2
= 0
_
1 1
2 5
__
x
1
x
2
_
=
_
4
5
_
=⇒
x
1
+x
3
= 4
2x
1
+ 5x
3
= 5
_
42 TEMA 2. PROGRAMACIÓN LINEAL
X
B
= B
−1
b =⇒
_
x
1
x
3
_
=
_
1 1
2 5
_
−1
_
4
5
_
=
_
5
−1
_
Una solución básica del sistema sería:
x
1
= 5; x
2
= 0; x
3
= −1.
Otra submatriz
B =
_
θ
2
, θ
3
_
=
_
2 1
1 5
_
y por tanto x
1
= 0
X
B
= B
−1
b =⇒
_
x
2
x
3
_
=
_
2 1
1 5
_
−1
_
4
5
_
=
_
5/3
2/3
_
.
Una solución básica del sistema sería:
x
1
= 0; x
2
=
5
3
; x
3
=
2
3
.
Resumiendo, las soluciones básicas de este ejemplo son:
Variables básicas Variables no básicas
x
1
= 2; x
2
= 1 x
3
= 0
x
1
= 5; x
3
= −1 x
2
= 0
x
2
=
5
3
; x
3
=
2
3
x
1
= 0
Si A es una matriz de dimensión m × n y n > m, tendrá
_
n
m
_
soluciones
básicas como máximo. En el ejemplo anterior
_
3
2
_
= 3, y como hemos visto
anteriormente, hay 3 soluciones básicas exactamente. A veces este número máxi-
mo de soluciones básicas no se alcanza porque algunas de las submatrices tienen
determinante nulo.
Si X
B
es una solución básica y se cumple que los valores de las variables básicas
son mayores o iguales que cero, decimos que la solución es básica factible y que
la base B es una base factible.
Si en una solución factible básica, alguna de las variables básicas vale cero, deci-
mos que la solución es factible básica degenerada.
Soluciones básicas factibles adyacentes son dos soluciones básicas factibles
que tienen en común m−1 variables básicas.
2.4. ALGUNOS RESULTADOS SOBRE LAS SOLUCIONES 43
Ejemplo 22 Con referencia al ejemplo anterior:
Variables básicas Variables no básicas
x
1
= 2; x
2
= 1 x
3
= 0 Solución básica factible
x
1
= 5; x
3
= −1 x
2
= 0 Solución básica no factible
x
2
=
5
3
; x
3
=
2
3
x
1
= 0 Solución básica factible
2.4 Algunos resultados sobre las soluciones
Vamos a estudiar ahora algunos resultados relacionados con las soluciones de un
problema de programación lineal.
Teorema 3 El conjunto F de las soluciones factibles es convexo.
Demostración
Suponemos F = {x ∈ IR
n
/ Ax = b; x ≥ 0}
x
1
, x
2
∈ F probaremos que x = λx
1
+ (1 −λ)x
2
∈ F; 0 ≤ λ ≤ 1
x
1
∈ F ⇐⇒ Ax
1
= b; x
1
≥ 0
x
2
∈ F ⇐⇒ Ax
2
= b; x
2
≥ 0
Como x = λx
1
+ (1 −λ)x
2
∈ F si cumple que AX = b; esto es:
A[λx
1
+ (1 −λ)x
2
] = Aλx
1
+A(1 −λ)x
2
= λAx
1
+ (1 −λ)Ax
2
=
= λb + (1 −λ)b = λb +b −λb = b.
Veamos que x ≥ 0
λx
1
+ (1 −λ)x
2
≥ 0 son sumas de dos productos ≥ 0; por tanto es ≥ 0.
Luego se verifica que λx
1
+ (1 −λ)x
2
∈ F. Luego F es convexo.
Teorema 4 Sea A una matriz m×n con r(A) = m y sea b un vector m×1. Sea
F el conjunto convexo formado por los vectores X que cumplen AX = b con X ≥ 0.
Un vector X es una solución básica factible si y solo si X es punto extremo de F.
Demostración
=⇒ Supongamos, sin pérdida de generalidad, que X = (x
1
, x
2
, . . . , x
m
; 0, 0, . . . , 0)
es una solución básica factible, y B = {a
1
, a
2
, . . . , a
m
} la base asociada a esta solu-
ción.
44 TEMA 2. PROGRAMACIÓN LINEAL
Supongamos que X no es punto extremo, y razonaremos por reducción al ab-
surdo.
Si X no es punto extremo, existen dos puntos y, z ∈ F que verifican:
X = λy + (1 −λ)z para algún λ ∈ (0, 1) con y = z.
Además y, z son de la forma:
y = (y
1
, y
2
, . . . , y
m
; y
m+1
, . . . , y
n
) z = (z
1
, z
2
, . . . , z
m
; z
m+1
, . . . , z
n
).
De esta forma tenemos:
(x
1
, x
2
, . . . , x
m
; 0, . . . , 0) =
= λ(y
1
, y
2
, . . . , y
m
; y
m+1
, . . . , y
n
) + (1 −λ)(z
1
, z
2
, . . . , z
m
; z
m+1
, . . . , z
n
).
Si operamos tenemos:
(x
1
, x
2
, . . . , x
m
; 0, . . . , 0) =
= (λy
1
+ (1 −λ)z
1
, λy
2
+ (1 −λ)z
2
, . . . , λy
m
+ (1 −λ)z
m
, λy
m+1
+
+(1 −λ)z
m+1
, . . . , λy
n
+ (1 −λ)z
n
).
Luego
_
_
_
λy
m+1
+ (1 −λ)z
m+1
= 0
· · · · · · · · · · · · · · · · · · · · ·
λy
n
+ (1 −λ)z
n
= 0
=⇒
=⇒
_
_
_
y
m+1
= 0
· · · · · ·
y
n
= 0
y
_
_
_
z
m+1
= 0
· · · · · ·
z
n
= 0
puesto que no puede haber soluciones negativas.
Además tenemos, como y, z ∈ F se cumple
y
1
a
1
+y
2
a
2
+· · · +y
m
a
m
= b
z
1
a
1
+z
2
a
2
+· · · +z
m
a
m
= b
_
Si restamos ambas expresiones nos queda:
(y
1
−z
1
)a
1
+ (y
2
−z
2
)a
2
+· · · + (y
m
−z
m
)a
m
=

0.
Por definición sabemos que los escalares tienen que ser cero, pues {a
1
, a
2
, . . . , a
m
}
forman una base, y por tanto son linealmente independientes, por lo que se deduce:
2.4. ALGUNOS RESULTADOS SOBRE LAS SOLUCIONES 45
y
1
−z
1
= 0
y
2
−z
2
= 0
· · · · · ·
y
m
−z
m
= 0
_
¸
¸
_
¸
¸
_
=⇒
y
1
= z
1
y
2
= z
2
· · · · · ·
y
m
= z
m
_
¸
¸
_
¸
¸
_
=⇒ y = z.
Pero esto es absurdo pues habíamos supuesto que y = z. Y por tanto hemos llegado
a una contradicción, esto implica que X es punto extremo.
⇐= Supongamos que X es un punto extremo de F que tiene k componentes es-
trictamente mayores que 0. Suponemos sin pérdida de generalidad que son las k
primeras X = (x
1
, x
2
, . . . , x
k
; 0, . . . , 0).
Como tiene que verificar el sistema tendremos:
x
1
a
1
+x
2
a
2
+· · · +x
k
a
k
= b (2.1)
Vamos a probar que {a
1
, a
2
, . . . , a
k
} son linealmente independientes. Vamos a ra-
zonar por reducción al absurdo.
Supongamos que no son linealmente independientes, entonces existen λ
1
, λ
2
, . . . , λ
k
no todos nulos tal que:
λ
1
a
1

2
a
2
+· · · +λ
k
a
k
=

0
Si multiplicamos por ǫ > 0, entonces:
ǫλ
1
a
1
+ǫλ
2
a
2
+· · · +ǫλ
k
a
k
=

0 (2.2)
Si sumamos (2.1) y (2.2) tenemos:
(x
1
+ǫλ
1
)a
1
+ (x
2
+ǫλ
2
)a
2
+· · · + (x
k
+ǫλ
k
)a
k
= b
Si restamos (2.1) y (2.2) tenemos:
(x
1
−ǫλ
1
)a
1
+ (x
2
−ǫλ
2
)a
2
+· · · + (x
k
−ǫλ
k
)a
k
= b
Si llamamos y, z a los vectores:
y = (x
1
+ǫλ
1
, x
2
+ǫλ
2
, . . . , x
k
+ǫλ
k
, 0, . . . , 0)
z = (x
1
−ǫλ
1
, x
2
−ǫλ
2
, . . . , x
k
−ǫλ
k
, 0, . . . , 0)
Ambos son solución de AX = b. Si tomamos ǫ suficientemente pequeño:
x
i
+ǫλ
i
≥ 0 y ≥ 0
x
i
−ǫλ
i
≥ 0 z ≥ 0
Por tanto y, z verifican el sistema y además son mayores o iguales a cero, entonces
y, z ∈ F.
46 TEMA 2. PROGRAMACIÓN LINEAL
Pero si calculamos
1
2
y +
1
2
z tenemos:
1
2
y +
1
2
z =
_
1
2
x
1
+
1
2
ǫλ
1
,
1
2
x
2
+
1
2
ǫλ
2
, . . . ,
1
2
x
k
+
1
2
ǫλ
k
, 0, . . . , 0
_
+ (2.3)
+
_
1
2
x
1

1
2
ǫλ
1
,
1
2
x
2

1
2
ǫλ
2
, . . . ,
1
2
x
k

1
2
ǫλ
k
, 0, . . . , 0
_
=
= (x
1
, x
2
, . . . , x
k
, 0, . . . , 0) = X
Pero esto contradice que X sea punto extremo de F. Luego {a
1
, a
2
, . . . , a
k
} son
vectores linealmente independientes y k ≤ m.
Pueden ocurrir dos cosas:
• Si k = m forman base, y entonces X es solución básica factible.
• Si k < m se completan las columnas que faltan formando una base, entonces
será solución básica factible degenerada.
Teorema 5 Dado un programa lineal en forma estándar factible acotado, el valor
óptimo del programa lineal se obtiene en un punto extremo de la región factible.
Demostración
Sea el programa lineal
Max z = c
t
X
s.a. AX = b
X ≥ 0
_
_
_
y sean {E
1
, E
2
, . . . , E
k
} puntos extremos.
Si llamamos M = max{c
t
E
1
, c
t
E
2
, . . . , c
t
E
k
}.
Sea ahora X ∈ F un punto cualquiera de la región factible, usando el teorema
anterior tendremos:
X = λ
1
E
1

2
E
2
+· · · +λ
k
E
k
/ λ
1

2
+· · · +λ
k
= 1.
Entonces:
Z = c
t
X = c
t

1
E
1

2
E
2
+· · · +λ
k
E
k
) =
= λ
1
c
t
E
1

2
c
t
E
2
+· · · +λ
k
c
t
E
k
≤ λ
1
M +λ
2
M +· · · +λ
k
M
= (λ
1

2
+· · · +λ
k
) · M = 1 · M = M.
2.4. ALGUNOS RESULTADOS SOBRE LAS SOLUCIONES 47
Así tenemos que M es el valor de la función objetivo en algún punto extremo.
∀x ∈ F el valor de la función objetivo Z ≤ M, entonces el punto de la región factible
que me da el mayor valor es el valor extremo.
La demostración para el caso minimizante es idéntica, sólo que hay que buscar
el mínimo y tendremos que Z ≥ m, siendo m = min{c
t
E
1
, c
t
E
2
, . . . , c
t
E
k
}.
Ejemplo 23 Hallar la solución óptima del programa lineal:
Max Z = 2x
1
−3x
2
+ 10x
3
s.a.:
x
1
+ 2x
2
+x
3
= 4
2x
1
+x
2
+ 5x
3
= 5
x
1
, x
2
, x
3
≥ 0
_
_
_
Variables básicas Variables no básicas Objetivo
x
1
= 2; x
2
= 1 x
3
= 0 z=1
x
1
= 5; x
3
= −1 x
2
= 0 No factible
x
2
= 5/3; x
3
= 2/3 x
1
= 0 z=5/3
El valor máximo de Z es Z = 5/3, eso implica que la solución óptima es:
x
1
= 0 x
2
= 5/3 x
3
= 2/3.
Teorema 6 Sean x
1
, x
2
, . . . , x
k
soluciones óptimas de un programa lineal en forma
estándar, entonces las combinaciones lineales convexas de x
1
, x
2
, . . . , x
k
también son
soluciones óptimas.
Si llamamos X = λ
1
x
1

2
x
2
+· · · +λ
k
x
k
, y evaluamos Z, obtenemos:
Z = c
t
X = c
t

1
x
1

2
x
2
+· · · +λ
k
x
k
) =
= λ
1
c
t
x
1

2
c
t
x
2
+· · · +λ
k
c
t
x
k
=
= λ
1
M +λ
2
M +· · · +λ
k
M =
= (λ
1

2
+· · · +λ
k
) · M = 1 · M = M.
Luego X también es óptima.
Ejemplo 24 Resolver el siguiente P.L.
Max z = 3x
1
+ 3x
2
s.a.:
x
1
≤ 4
x
1
+x
2
≤ 6
x
2
≤ 3
x
1
, x
2
≥ 0
_
¸
¸
_
¸
¸
_
48 TEMA 2. PROGRAMACIÓN LINEAL
Los puntos extremos son A(4, 0), B(4, 2), C(3, 3), D(0, 3), E(0, 0) que aparecen
en la siguiente figura.
Figura 2.1: Soluciones óptimas multiples
Variables básicas Objetivo
x
1
= 0; x
2
= 0 z = 0 Solución básica factible
x
1
= 0; x
2
= 3 z = 9 Solución básica no factible
x
1
= 3; x
2
= 3 z = 18 Solución óptima
x
1
= 4; x
2
= 2 z = 18 Solución óptima
x
1
= 4; x
2
= 0 z = 12 Solución básica factible
Luego B y C son soluciones óptimas, y por tanto todos los puntos del segmento
lineal BC también son soluciones óptimas.
2.5 El algoritmo del Simplex
El algoritmo del Simplex es una técnica general de resolución de problemas de pro-
gramación lineal. Los pasos básicos del algoritmo son los siguientes:
1. Partir de una solución básica factible (un vértice de la región factible).
2. Comprobar si esta solución es óptima. Si es así, parar. En caso contrario, ir
al paso 3.
2.5. EL ALGORITMO DEL SIMPLEX 49
3. Hallar una nueva solución básica adyacente a la anterior que mejore el valor
de la función objetivo. Ir al paso 2.
Explicaremos la forma en que se realizan estos pasos con el siguiente ejemplo,
dejando para más adelante una exposición más detallada del algoritmo.
Ejemplo 25 Resolver el siguiente P.L.
Max z = x
1
+x
2
s.a.:
−x
1
+x
2
≤ 2
x
1
+ 2x
2
≤ 6
2x
1
+x
2
≤ 6
x
1
, x
2
≥ 0
_
¸
¸
_
¸
¸
_
Como el problema tiene sólo dos variables podría resolverse por el procedimiento
geométrico. Se puede comprobar que la región factible es el polígono de vértices O,
A, B, C, D. Las coordenadas de los vértices y los valores de la función objetivo de
cada uno de ellos son:
Vértice Coordenadas Valor de la función objetivo
O (0, 0) 0
A (0,2) 2
B (
2
3
,
8
3
)
10
3
C (2, 2) 4
D (3, 0) 3
Por lo tanto el valor óptimo va a ser C con un valor óptimo de 4 para la función
objetivo.
Ahora queremos resolver este problema por un procedimiento analítico.
Lo primero que vamos a hacer es formular el problema en forma estándar, intro-
duciendo variables de holgura:
Max z = x
1
+x
2
s.a.:
_
¸
¸
_
¸
¸
_
−x
1
+x
2
+h
1
= 2
x
1
+2x
2
+h
2
= 6
2x
1
+x
2
+h
3
= 6
x
1
≥ 0 x
2
≥ 0 h
1
≥ 0 h
2
≥ 0 h
3
≥ 0
Paso 1 Partir de una solución básica factible. (Un vértice de la región factible). En
este caso es muy fácil partir de una solución básica factible. Si tomamos como
variables básicas las variables de holgura, y damos a las no básicas x
1
y x
2
el
valor cero tenemos la solución básica factible de partida (x
1
, x
2
, h
1
, h
2
, h
3
) =
(0, 0, 2, 6, 6) con un valor para z = x
1
+x
2
= 0. Los valores anteriores cumplen
50 TEMA 2. PROGRAMACIÓN LINEAL
el siguiente sistema que se ha conseguido añadiendo al anterior una última
ecuación conseguida trasponiendo términos en la función objetivo.
−x
1
+x
2
+h
1
= 2
x
1
+2x
2
+h
2
= 6
2x
1
+x
2
+h
3
= 6
z −x
1
−x
2
= 0
x
1
≥ 0 x
2
≥ 0 h
1
≥ 0 h
2
≥ 0 h
3
≥ 0
Puede observarse que todos los valores de las variables básicas, y también el
valor de z, aparecen en los términos independientes de este sistema.
Paso 2 Comprobar si esta solución es óptima. Puesto que z = x
1
+x
2
= 0. Podremos
mejorarla si logramos introducir en la base la variable x
1
ó x
2
. Supongamos
que introducimos x
1
en la base aumentando su valor dentro de las condiciones
de factibilidad y manteniendo x
2
como variable no básica (x
2
= 0). Se deberá
pues cumplir:
−x
1
+h
1
= 2
x
1
+h
2
= 6
2x
1
+h
3
= 6
x
1
≥ 0 h
1
≥ 0 h
2
≥ 0 h
3
≥ 0
es decir
h
1
= 2 + x
1
≥ 0
h
2
= 6 − x
1
≥ 0
h
3
= 6 − 2x
1
≥ 0
Como x
1
≥ 0 la primera restricción se cumple siempre. Para que se cumplan
las otras dos ha de ser x
1
≤ 6 y x
1

6
2
= 3 Por lo tanto el mejor valor
para x
1
cumpliendo todas las condiciones de factibilidad es 3. Así que la
solución actual no es óptima, puesto que puede mejorarse aumentando el valor
de x
1
.
Paso 3 Hallar una nueva solución básica adyacente a la actual que mejore el valor de
la función objetivo.
Si tomamos x
1
= 3, h
3
= 6 − 2x
1
= 0 . Por lo tanto la variable h
3
sal-
drá de la base entrando en su lugar x
1
. La nueva solución es (x
1
, x
2
, h
1
, h
2
, h
3
) =
(3, 0, 5, 3, 0) con un valor para z = x
1
+x
2
= 3 +0 = 3, mejorándose por tanto
el valor de z. Con el objeto de que la actual solución aparezca de nuevo en
el lugar de los términos independientes del sistema realizamos las transforma-
ciones adecuadas para que los coeficientes de x
1
del sistema sean 0, 0, 1, 0, que
eran los coeficientes que antes tenía h
3
. Para ello dividimos la tercera ecuación
por el coeficiente de x
1
, que es 2 (pivote), y realizamos las transformaciones
del método de Gauss a las restantes ecuaciones, de modo que los restantes
coeficientes de x
1
sean nulos. De esta forma se obtiene el sistema siguiente:
2.6. ALGORITMO DEL SIMPLEX EN FORMA DE TABLA (MAX) 51
3
2
x
2
+h
1
+
1
2
h
3
= 5
3
2
x
2
+h
2

1
2
h
3
= 3
x
1
+
1
2
x
2
+
1
2
h
3
= 3
z −
1
2
x
2
+
1
2
h
3
= 3
x
1
≥ 0 x
2
≥ 0 h
1
≥ 0 h
2
≥ 0 h
3
≥ 0
Ir paso 2 La solución actual es (x
1
, x
2
, h
1
, h
2
, h
3
) = (3, 0, 5, 3, 0) ¿Es óptima? Despe-
jamos z de la última ecuación obteniendose z = 3 +
1
2
x
2

1
2
h
3
. El valor de
z puede mejorar si podemos aumentar el valor de x
2
que toma en la solución
básica actual el valor 0. Conviene mantener para h
3
el valor 0. Impondremos
las condiciones de factibilidad:
h
1
= 5 −
3
2
x
2
≥ 0, h
2
= 3 −
3
2
x
2
≥ 0, x
1
= 3 −
1
2
x
2
≥ 0
Por lo tanto
5
3
2
≥ x
2
,
3
3
2
≥ x
2
,
3
1
2
≥ x
2
;
10
3
≥ x
2
, 2 ≥ x
2
, 6 ≥ x
2
Estas condiciones se cumplen para x
2
≤ 2
Paso 3 Dando a x
2
el valor 2 se mejora lo más posible el valor de z. Esta variable entra
en la base. Sustituyendo este valor para x
2
y h
3
por 0, se obtiene h
2
= 0 que
es la variable que entra en la base. Si denominamos pivote al elemento a
lk
siendo x
l
la variable que deja de ser básica, y x
k
la variable que pasa a ser
básica, el pivote es ahora el coeficiente de x
2
de la segunda ecuación, que es
3
2
. Dividiendo esta segunda ecuación por
3
2
y haciendo las transformaciones de
Gauss adecuadas para anular el resto de los coeficientes de x
2
el sistema toma
el siguiente aspecto.
h
1
−h
2
+h
3
= 2
x
2
+
2
3
h
2

1
3
h
3
= 2
x
1

1
3
h
2
+
2
3
h
3
= 2
z +
1
3
h
2
+
1
3
h
3
= 4
x
1
≥ 0 x
2
≥ 0 h
1
≥ 0 h
2
≥ 0 h
3
≥ 0
La nueva solución básica es (x
1
, x
2
, h
1
, h
2
, h
3
) = (2, 2, 2, 0, 0) . Esta solución
ya es óptima. En efecto, si despejamos z de la última ecuación del sistema
obtenemos z = 4−
1
3
h
2

1
3
h
3
. Como h
2
y h
3
no pueden tomar valores negativos
el mejor valor para estas variables es cero. Por lo tanto la solución actual
(2, 2, 2, 0, 0) no puede mejorarse.
2.6 Algoritmo del Simplex en forma de tabla (max)
Vamos a describir el Algoritmo del simplex en forma de tabla aplicable al caso de
que el problema sea de maximización, todas las restriciones del tipo ≤, y todos los
52 TEMA 2. PROGRAMACIÓN LINEAL
recursos no negativos. Para aplicar el algoritmo en otras situaciones se harán las
transformaciones necesarias para poner el problema en esta forma (ver epígrafe 2.8).
Consideremos el problema (o programa) lineal que consiste en encontrar un vector
X = (x
1
, x
2
, . . . , x
n
) que optimice una función lineal.
Opt. Z = c
1
x
1
+c
2
x
2
+· · · +c
n
x
n
s.a.: a
11
x
1
+a
12
x
2
+· · · +a
1n
x
n
≤ b
1
a
21
x
1
+a
22
x
2
+· · · +a
2n
x
n
≤ b
2
· · · : · · · : . . . : . . .
a
m1
x
1
+a
m2
x
2
+· · · +a
mn
x
n
≤ b
m
x
i
≥ 0, b
i
≥ 0, i = 1, 2, . . . , n.
_
¸
¸
¸
¸
¸
¸
_
¸
¸
¸
¸
¸
¸
_
Pasamos en primer lugar el problema a forma estándar añadiendo m variables de
holgura x
n+1
, x
n+2
, . . . , x
n+m
. De esta forma el problema tomará la forma:
Opt. Z = c
1
x
1
+c
2
x
2
+· · · +c
n
x
n
s.a.: a
11
x
1
+a
12
x
2
+· · · +a
1n
x
n
+x
n+1
= b
1
a
21
x
1
+a
22
x
2
+· · · +a
2n
x
n
+x
n+2
= b
2
· · · : · · · : . . . : . . .
a
m1
x
1
+a
m2
x
2
+· · · +a
mn
x
n
≤ +x
n+m
= b
m
x
i
≥ 0 i = 1, 2, . . . , n.
0. Construir la tabla inicial: Esta tabla se construye tomando en cada fila los
coeficientes de cada restricción seguido del correspondiente término indepen-
diente de la forma estándar. Añadimos una última fila con los coeficientes que
resultan si se trasponen los términos de la función objetivo hasta igualarlos
a cero. En la parte superior de la tabla aparecen los costes y las variables.
En la parte izquierda de la tabla aparecen estos mismos datos referentes a las
variables básicas. La tabla inicial presentaría el siguiente aspecto:
Opt. c
1
c
2
. . . c
n
0 0 0 coef. objetivo
x
1
x
2
. . . x
n
x
n+1
x
n+2
x
n+m
variables
x
n+1
0 a
11
a
12
. . . a
1n
1 0 0 b
1
x
n+2
0 a
21
a
22
. . . a
2n
0 1 0 b2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . .
.
.
.
x
n+m
0 a
m1
a
m2
. . . a
mn
0 0 1 b
m
−c
1
−c
2
. . . −c
n
0 0 0 0
Tomamos la solución inicial que corresponde a una base canónica ( La cor-
respondiente matriz básica es la identidad). está solución es.
(x
1
, x
2
, . . . x
n
, x
n+1
, x
n+2
, . . . , x
n+m
) = (0, 0, . . . 0, b
1
, b
2
, . . . , b
m
)
1. Partir de una solución básica factible: Considerar la solución inicial.
2.6. ALGORITMO DEL SIMPLEX EN FORMA DE TABLA (MAX) 53
2. Comprobar si esta solución es óptima. La solución actual es óptima
si todos los costes reducidos, coeficientes de la última fila, son no negativos
(positivos o nulos). Si es así, parar. En otro caso ir al paso 3.
3. Hallar una nueva solución básica adyacente a la actual que mejore
el valor de la función objetivo (leer nota a pie de página
1
):
3a. Regla de la variable de entrada
Seleccionar para entrar en la base la variable x
j
con r
j
más negativo. Sea
ésta la x
k
. Cuando hay varias variables que tienen este mismo valor, se
selecciona arbitrariamente una cualquiera de éstas.
3 b. Regla de la variable de salida
Seleccionar para salir de la base la variable de la fila i que haga mínimo
el cociente
x
b
i
y
ik
para los y
ik
> 0. Sea la fila l. (Si todos los y
ik
≤ 0, el
problema es no acotado) −→ Fin . En caso contrario ir al paso 4.
4. Realizar transformaciones en la tabla para conseguir una nueva matriz unitaria
tomando y
lk
como pivote. Se realizan transformaciones lineales similares a
las que se usan en el método de Gauss, hasta conseguir que la columna k tenga
el valor 1 en el lugar del elemento pivote y 0 en los restantes. De esta forma
obtenemos una nueva solución básica factible adyacente a la anterior (para la
última fila se puede optar por usar la relación 2.4 de la página 53). Con esta
nueva solución y esta nueva tabla ir al paso 2.
Ejemplo 26 Resolver ahora el problema anterior:
Max z = x
1
+x
2
s.a.:
−x
1
+x
2
≤ 2
x
1
+ 2x
2
≤ 6
2x
1
+x
2
≤ 6
x
1
, x
2
≥ 0
_
¸
¸
_
¸
¸
_
1
Como se verá la tabla va evolucionando durante el algoritmo. En general usaremos la siguiente
notación:
Opt. c
1
c
2
. . . cn 0 0 0 coef. objetivo
x
1
x
2
. . . xn x
n+1
x
n+2
x
n+m
variables
x
b1
c
b1
y
11
y
12
. . . y
1n
y
1 n+1
y
1 n+2
. . . y
1 n+m
x
b
1
x
b2
c
b2
y
21
y
22
. . . y
2n
y
2 n+1
y
2 n+2
. . . y
2 n+m
x
b
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
x
bm
c
bm
y
m1
y
m2
. . . y
mn
y
m n+1
y
m n+2
. . . y
m n+m
x
b
m
r
1
r
2
. . . rn r
n+1
r
n+2
rn+m Z
0
Los términos de la matriz de los coeficientes se designan en general por y
ij
y los términos
independientes por x
b
i
.
Los coeficientes r
i
que aparecen en la última fila se suelen llamar costes reducidos de la variable
correspondiente. Estos costes reducidos cumplen la siguiente relación:
r
j
= c
b1
y
1j
+ c
b2
y
2j
+ . . . c
bm
y
mj
−c
j
= z
j−
c
j
(2.4)
54 TEMA 2. PROGRAMACIÓN LINEAL
empleando el algoritmo de Simplex en forma de tabla
Paso 0 La tabla inicial es (introduciendo variables de holgura):
1 1 0 0 0
x
1
x
2
h
1
h
2
h
3
0 h
1
-1 1 1 0 0 2
0 h
2
1 2 0 1 0 6
0 h
3
2 1 0 0 1 6
-1 -1 0 0 0 0
Paso 1 Partimos de una base canónica. La solución básica factible inicial es:
(x
1
, x
2
, h
1
, h
2
, h
3
) = (0, 0, 2, 6, 6)
con un valor para z = x
1
+x
2
= 0 + 0 = 0.
Puede observarse que todos los valores de las variables básicas, y también el
valor de z, aparecen en los términos independientes de este sistema.
Paso 2 Comprobar si esta solución es óptima. No es óptima puesto que hay valores
no negativos de los costes reducidos (los que corresponden a las variables x
1
y
x
2
ambos con valor −1.
Paso 3 a Seleccionamos la primera como variable de entrada k = 1.
Paso 3 b Seleccionamos como variable de salida la que aparezca en la fila correspondien-
te al mínimo cociente
x
B
i
y
ik
para los y
ik
> 0. En este caso el valor mínimo se
alcanza cuando: min
_
6
1
,
6
2
_
= min(6, 3) = 3. Corresponde a la tercera fila. Así
que l = 3. Por lo tanto el elemento pivote es y
31
= 2. La variable de salida es
h
3
.
Paso 4 Hallar una nueva solución básica adyacente a la actual que mejore el valor de
la función objetivo.
Pivoteando se obtiene la siguiente tabla:
1 1 0 0 0
x
1
x
2
h
1
h
2
h
3
0 h
1
0
3
2
1 0
1
2
5
0 h
2
0
3
2
0 1 −
1
2
3
1 x
1
1
1
2
0 0
1
2
3
0 −
1
2
0 0
1
2
3
La nueva solución es (x
1
, x
2
, h
1
, h
2
, h
3
) = (3, 0, 5, 3, 0) con un valor para z = 3.
Ir paso 2 ¿Es óptima? No porque algún coste reducido es negativo (el que corresponde
a la variable x
2
que vale −
1
2
.
Paso 3 a Seleccionamos x
2
como variable de entrada, por lo tanto k = 2.
2.7. ALGORITMO DEL SIMPLEX EN FORMA DE TABLA (MIN) 55
Paso 3 b Seleccionamos como variable de salida la que aparezca en la fila correspondi-
ente al mínimo cociente
x
0
i
y
ik
para los y
ik
> 0. En este caso min
_
5
3
2
,
3
3
2
,
3
1
2
_
=
min
_
10
3
, 2, 6
_
= 2. Corresponde a la segunda fila. Así que l = 2. Por lo tanto
el elemento pivote es y
22
=
3
2
. La variable de salida es h
2
.
Paso 4 Hallar una nueva solución básica adyacente a la actual que mejore el valor de
la función objetivo.
Pivoteando se obtiene la siguiente tabla:
1 1 0 0 0
x
1
x
2
h
1
h
2
h
3
0 h
1
0 0 1 -1 1 2
0 x
2
0 1 0
2
3

1
3
2
1 x
1
1 0 0 -
1
3
2
3
2
0 0 0
1
3
1
3
4
La nueva solución es (x
1
, x
2
, h
1
, h
2
, h
3
) = (2, 2, 2, 0, 0) con un valor para z =
4.
Ir paso 2 ¿Es óptima? Sí, porque ningún coste reducido es negativo. Por lo tanto la
solución óptima de este problema es x
1
= 2, x
2
= 2.
Los valores de las variables de holgura (h
1
= 2, h
2
= 0, h
3
= 0) sirven para saber
qué restricciones están saturadas (se cumple la igualdad sustituyendo la solución
hallada en la restricción primitiva). En este caso las dos últimas restricciones están
saturadas por lo que los recursos segundo y tercero se agotan y, en cambio, sobran
2 unidades del primer recurso, pues h
1
= 2.
2.7 Algoritmo del Simplex en forma de tabla (min)
Si el problema es de minimización un procedimiento que puede seguirse es transfor-
mar la función objetivo de maximización en otra de minimización tal como se ha
indicado anteriormente:
Min z =
n

c
j
x
j
⇐⇒ Max z

=
n

(−c
j
)x
j
; z = −z

De esta forma ya se podría aplicar el algoritmo en la forma maximizante.
También cabe la posibilidad de usar un algoritmo específico para este caso, que se
consigue con ligeras modificaciones del anterior. Estas variaciones se reducen a cam-
bios de signo en los costes reducidos. A continuación indicamos las modificaciones
que habría que hacer en el algoritmo de la forma de maximización para obtener un
algoritmo minimizante de Simplex.
56 TEMA 2. PROGRAMACIÓN LINEAL
El paso 2 sería: Comprobar si esta solución es óptima. La solución actual es óptima si
todos los costes reducidos son no positivos (todos son negativos o nulos). Si es
así, parar. En otro caso ir al paso 3.
El paso 3a quedaría: Regla de la variable de entrada. Seleccionar para entrar en la base la
variable con r
j
más positivo. Sea ésta la x
k
. Cuando hay varias variables
que tienen este mismo valor, se selecciona arbitrariamente una cualquiera
de éstas.
El resto del algoritmo permanecería inalterado.
Ejemplo 27 Dado el programa lineal:
Min Z = x
2
−3x
3
+ 2x
5
s.a.:
x
1
+ 3x
2
−x
3
+ 2x
5
= 7
−2x
2
+ 4x
3
+x
4
= 12
−4x
2
+ 3x
3
+ 8x
5
+x
6
= 10
x
1
, x
2
, x
3
, x
4
, x
5
, x
6
≥ 0
_
¸
¸
_
¸
¸
_
resolverlo usando el algoritmo del Simplex en forma minimizante.
Tomamos como variables básicas: (x
1
, x
4
, x
6
)
Construimos la tabla del Simplex:
Tabla I 0 1 −3 0 2 0 sol. básica
x
1
x
2
x
3
x
4
x
5
x
6
factible
x
1
0 1 3 −1 0 2 0 7
x
4
0 0 −2 4 1 0 0 12
x
6
0 0 −4 3 0 8 1 10
0 −1 3 0 −2 0 Z
0
= 0
La variable que pasa a ser básica es x
3
por ser r
3
el más positivo de los r
j
. Y
deja de ser básica x
4
pues min
_
12
4
;
10
3
_
=
12
4
= 3.
Si hacemos las transformaciones:
Multiplico la fila 2 por 1/4.
Sumo a la fila 1 la fila 2.
Resto a la fila 3 la fila 2 multiplicada por 3.
Obtenemos la siguiente tabla:
2.8. BÚSQUEDA DE SOLUCIONES INICIALES 57
Tabla II 0 1 −3 0 2 0 sol. básica
x
1
x
2
x
3
x
4
x
5
x
6
factible
x
1
0 1
5/2
0 1/4 2 0 10
x
3
−3 0 −1/2 1 1/4 0 0 3
x
6
0 0 −5/2 0 −3/4 8 1 1
0
1/2
0 −3/4 −2 0
ˆ
Z = −9
Entra en la base x
2
por ser el más positivo de los r
j
. Y sale x
1
pues es el único
y
i2
que es positivo.
Si hacemos las transformaciones:
Multiplico la fila 1 por 2/5.
Sumo a la fila 2 la fila 1 multiplicada por 1/5.
Sumo a la fila 3 la fila 1.
Obtenemos la siguiente tabla:
Tabla III 0 1 −3 0 2 0 sol. básica
x
1
x
2
x
3
x
4
x
5
x
6
factible
x
2
1 2/5 1 0 1/10 4/5 0 4
x
3
−3 1/5 0 1 3/10 2/5 0 5
x
6
0 1 0 0 −1/2 10 1 11
−1/5 0 0 −4/5 −12/5 0
˜
Z = −11
La solución asociada a esta base es óptima pues todos los r
j
≤ 0, la solución es:
x
1
= 0 x
2
= 4 x
3
= 5 x
4
= 0 x
5
= 0 x
6
= 11 ;
˜
Z = −11.
2.8 Búsqueda de soluciones iniciales
Vamos a considerar varios casos. Los tres primeros corresponden a recursos no
negativos. En los tres últimos los recursos pueden ser negativos.:
• Primer caso: Hay desigualdades (≤) y b
i
≥ 0.
• Segundo caso: Hay igualdades y b
i
≥ 0.
• Tercer caso: Hay desigualdades (≥) y b
i
≥ 0
• Cuarto caso: Hay desigualdades (≤) y b
i
≤ 0.
• Quinto caso: Hay igualdades y b
i
≤ 0.
• Sexto caso: Hay desigualdades (≥) y b
i
≤ 0
58 TEMA 2. PROGRAMACIÓN LINEAL
Primer caso (Desigualdades ≤ y b
i
≥ 0.).
En este caso, las desigualdades se convierten en igualdades introduciendo varia-
bles de holgura positivas que tienen coeficiente nulo en la función objetivo. Este
caso ya se ha tratado en la presentación del algoritmo de simplex.
Segundo caso (Igualdades y b
i
≥ 0).
En el caso de que aparezca un signo de igualdad en alguna restricción, sumamos
una nueva variable positiva que llamamos variable artificial:
n

j=1
a
ij
x
j
= b
i
=⇒
n

j=1
a
ij
x
j
+r
i
= b
i
donde r
i
son las variables artificiales
A la función objetivo le añadimos un nuevo término formado por esta variable
artificial que tendrá coeficiente negativo y valor absoluto "muy grande" si el prob-
lema es de maximización y con coeficiente coeficiente positivo y valor absoluto "muy
grande" si el problema es de minimización. Con ello se consigue que la variable
artificial salga de la base y sea nula, lo que permite eliminarla.
Tercer caso (Desigualdades (≥) y b
i
≥ 0)
Si el signo de la restricción es de (≥) restamos en primer lugar una variable
de holgura positiva para transformarla en una igualdad. Cuando ya tenemos una
igualdad sumamos una variable artificial tal como hemos explicado en el párrafo
anterior. Es decir ahora tenemos dos variables nuevas, una artificial que se añadira a
la función objetivo con un coeficiente "muy grande" si el problema es de minimización
(o "muy pequeño" si es de maximización), y una de holgura que se suma a la función
objetivo con coeficiente nulo.
n

j=1
a
ij
x
j
≥ b
i
=⇒
n

j=1
a
ij
x
j
−t
i
+r
i
= b
i
donde r
i
son las variables artificiales, y t
i
son las variables de holgura.
Cuarto, quinto y sexto caso. (Se reducen a los tres primeros casos).
Cambiando el signo de las restricciones el cuarto caso se transforma en el tercero,
el quinto se transforma en el segundo y el sexto en el primero.
A continuación aplicamos algunas de estas reglas en varios ejemplos:
2.8. BÚSQUEDA DE SOLUCIONES INICIALES 59
Ejemplo 28 Dado el programa lineal:
Max Z = 3x
1
+ 2x
2
+x
3
s.a.:
x
1
+ 2x
2
+x
3
≤ 10
x
1
+x
2
+ 2x
3
≤ 9
2x
1
+ 3x
3
≤ 12
x
1
, x
2
, x
3
≥ 0
_
¸
¸
_
¸
¸
_
Si introducimos las variables de holgura positivas tendremos el programa equi-
valente:
Max Z = 3x
1
+ 2x
2
+x
3
s.a.:
x
1
+ 2x
2
+x
3
+x
4
= 10
x
1
+x
2
+ 2x
3
+x
5
= 9
2x
1
+ 3x
3
+x
6
= 12
x
1
, x
2
, x
3
, x
4
, x
5
, x
6
≥ 0
_
¸
¸
_
¸
¸
_
Tomamos como variables básicas las de holgura: x
4
, x
5
, x
6
. Por tanto una solución
básica factible inicial es:
x
1
= 0 x
2
= 0 x
3
= 0 x
4
= 10 x
5
= 9 x
6
= 12 ; Z
0
= 0
Construimos la tabla del Simplex:
Tabla I 3 2 1 0 0 0 sol. básica
x
1
x
2
x
3
x
4
x
5
x
6
factible
x
4
0 1 2 1 1 0 0 10
x
5
0 1 1 2 0 1 0 9
x
6
0 2 0 3 0 0 1 12
-3 −2 −1 0 0 0 Z
0
= 0
Entra en la base x
1
por ser el más negativo de los r
j
.
Y sale x
6
pues: min
_
9
1
;
10
1
;
12
2
_
=
12
2
= 6.
Si hacemos las transformaciones:
Multiplico la fila 3 por 1/2.
Sumo a la fila 1 la fila 3 multiplicada por (-1/2).
sumo a la fila 2 la fila 3 multiplicada por (-1/2).
Obtenemos la siguiente tabla:
60 TEMA 2. PROGRAMACIÓN LINEAL
Tabla II 3 2 1 0 0 0 sol. básica
x
1
x
2
x
3
x
4
x
5
x
6
factible
x
4
0 0 2 −1/2 1 0 −1/2 4
x
5
0 0 1 1/2 0 1 −1/2 3
x
1
3 1 0 3/2 0 0 1/2 6
0 -2 7/2 0 0 3/2 Z = 18
Entra en la base x
2
porque le corresponde el más negativo de los r
j
. Y sale x
4
pues: min
_
3
1
;
4
2
_
=
4
2
= 2.
Si hacemos las transformaciones:
Multiplico la fila 1 por 1/2.
Sumo a la fila 2 la fila 1 multiplicada por (-1/2).
Obtenemos la siguiente tabla:
Tabla III 3 2 1 0 0 0 sol. b sica
x
1
x
2
x
3
x
4
x
5
x
6
factible
x
2
2 0 1 −1/4 1/2 0 −1/4 2
x
5
0 0 0 3/4 −1/2 1 −1/4 1
x
1
3 1 0 3/2 0 0 1/2 6
0 0 3 1 0 1
˜
Z = 22
La solución asociada a esta base es óptima pues todos los r
j
≥ 0, la solución es:
x
1
= 6 x
2
= 2 x
3
= 0 ;
˜
Z = 22.
Las variables de holgura no se han incluido en la solución óptima.
El valor para la variable de holgura x
5
= 1 significa que una unidad del segundo
recurso no se ha gastado.
Ejemplo 29 Dado el programa lineal:
Max Z = x
1
+ 2x
2
s.a.:
x
1
−2x
2
≤ 4
x
1
−5x
2
≤ 8
x
1
, x
2
≥ 0
_
_
_
Si introducimos las variables de holgura positivas tendremos el programa equi-
valente:
Max Z = x
1
+ 2x
2
s.a.:
x
1
−2x
2
+x
3
= 4
x
1
−5x
2
+x
4
= 8
x
1
, x
2
, x
3
, x
4
≥ 0
_
_
_
2.8. BÚSQUEDA DE SOLUCIONES INICIALES 61
Y por tanto una solución básica factible inicial es:
x
1
= 0 x
2
= 0 x
3
= 4 x
4
= 8; Z
0
= 0
Construimos la tabla del Simplex:
Tabla I 1 2 0 0 sol. básica
x
1
x
2
x
3
x
4
factible
x
3
0 1 −2 1 0 4
x
4
0 1 −5 0 1 8
−1 -2 0 0
La solución es no acotada o ilimitada pues todos los y
i2
< 0 ya que y
11
= −2 < 0,
y
12
= −5 < 0. Podemos hallar una dirección (Rayo Óptimo) cuyos puntos son
todos soluciones factibles y la función objetivo mejora cuando aumenta el valor de
las variables. Sustituyendo en el sistema el valor x
1
= 0 obtenemos una de estas
direcciones:
_
¸
¸
_
¸
¸
_
x
1
= 0
x
2
= x
2
x
3
= 4 + 2x
2
x
4
= 8 + 5x
2
Nota: Este programa lineal puede resolverse usando el método geométrico estudiado
en el Tema 1. Puede observarse entonces que la región factible es no acotada y el
valor de la z puede mejorar tanto como queramos.
Ejemplo 30 Dado el programa lineal:
Min Z = 3x
1
+ 5x
2
s.a.:
x
1
≤ 4
x
2
≤ 6
3x
1
+ 2x
2
≥ 18
x
1
, x
2
≥ 0
_
¸
¸
_
¸
¸
_
Si introducimos las variables de holgura positivas, y una variable artificial x
6
tendremos el programa no equivalente:
Min Z = 3x
1
+ 5x
2
+mx
6
s.a.:
x
1
+x
3
= 4
x
2
+x
4
= 6
3x
1
+ 2x
2
−x
5
+x
6
= 18
x
1
, x
2
, x
3
, x
4
, x
5
, x
6
≥ 0
_
¸
¸
_
¸
¸
_
De esta forma hemos construido un programa no equivalente, con una variable
artificial. En el caso en que todas las variables artificiales que se tengan que intro-
ducir sean nulas el programa equivalente al inicial. El problema se resuelve usando
62 TEMA 2. PROGRAMACIÓN LINEAL
el método de las penalizaciones (o de la “m grande”), que estudiamos en el siguiente
epígrafe.
2.8.1 Método de las Penalizaciones
Caso Maximizante. A las variables artificiales se les pone costo muy bajo (−m) −→
−∞ en la función objetivo (Z), para que salgan rápidamente de la base.
Caso Minimizante. A las variables artificiales se les pone costo muy alto (m) −→
+∞ en la función objetivo (Z), para que salgan rápidamente de la base.
Teorema 7 Dado un programa lineal con variables artificiales y dada la solución
básica factible óptima X
B
= B
−1
· b, si alguna de las variables artificiales es básica,
y con valor positivo, entonces el problema original es no factible.
Para ilustrar este método y este teorema realizamos dos ejemplos. En el primero,
continuamos con el ejemplo 30.
Ejemplo 31 Resolver el problema dado en el ejemplo 30 .
Construimo la tabla inicial del Simplex, usando el método de las penalizaciones:
La solución básica factible inicial era:
x
1
= 0 x
2
= 0 x
3
= 4 x
4
= 6 x
5
= 0 x
6
= 18; Z
0
= 18m
La tabla inicial del Simplex es:
Tabla I 3 5 0 0 0 m sol. básica
Min x
1
x
2
x
3
x
4
x
5
x
6
factible
x
3
0 1 0 1 0 0 0 4
x
4
0 0 1 0 1 0 0 6
x
6
m 3 2 0 0 −1 1 18
r
j
−3 −5 0 0 0 −m 0
Para que x
6
pueda actuar como variable básica tendría que tener un cero en su
coste reducido. Para conseguirlo podemos sumar a la última fila la tercera multipli-
cada por m, obteniéndose:
Tabla I 3 5 0 0 0 m sol. básica
Min x
1
x
2
x
3
x
4
x
5
x
6
factible
x
3
0 1 0 1 0 0 0 4
x
4
0 0 1 0 1 0 0 6
x
6
m 3 2 0 0 −1 1 18
r
j
3m−3 2m−5 0 0 −m 0 Z
0
= 18m
2.8. BÚSQUEDA DE SOLUCIONES INICIALES 63
Esta tabla puede escribirse también directamente si calculamos la última fila
usando la expresión de los costes reducidos dada en 2.4 de la página 53.
Así, entra en la base x
1
por ser r
1
el mayor coste reducido y sale de la base x
3
,
pues hace mínimo el cociente 4/1 y 18/3. Si construimos la nueva tabla del Simplex
obtenemos:
Tabla II 3 5 0 0 0 m sol. básica
Min x
1
x
2
x
3
x
4
x
5
x
6
factible
x
1
3 1 0 1 0 0 0 4
x
4
0 0 1 0 1 0 0 6
x
6
m 0 2 −3 0 −1 1 6
r
j
0 2m−5 −3m+ 3 0 −m 0 Z = 6m+ 12
Entra en la base x
2
por ser r
2
el mayor, y sale de la base x
6
pues es el que hace
mínimo el cociente 6/1 y 6/2. Si construimos la nueva tabla del Simplex:
Tabla III 3 5 0 0 0 m sol. básica
Min x
1
x
2
x
3
x
4
x
5
x
6
factible
x
1
3 1 0 1 0 0 0 4
x
4
0 0 0 3/2 1 1/2 −1/2 3
x
2
5 0 1 −3/2 0 −1/2 1/2 3
r
j
0 0 −9/2 0 −5/2 5/2 −m
ˆ
Z = 27
La solución óptima es x
1
= 4, x
2
= 3 , con z = 27.
La variable de holgura x
4
= 3 se interpreta como que el segundo recurso no se
gasta, y quedan 3 unidades.
Ejemplo 32 Dado el programa lineal:
Min Z = x
1
−2x
2
+ 3x
3
s.a.:
−2x
1
+x
2
+ 3x
3
= 2
2x
1
+ 3x
2
+ 4x
3
= 1
x
1
, x
2
, x
3
≥ 0
_
_
_
Si introducimos las variables artificiales x
4
, x
5
tendremos el programa no equi-
valente:
Min Z = x
1
−2x
2
+ 3x
3
+mx
4
+mx
5
s.a.:
−2x
1
+x
2
+ 3x
3
+x
4
= 2
2x
1
+ 3x
2
+ 4x
3
+x
5
= 1
x
1
, x
2
, x
3
, x
4
, x
5
≥ 0
_
_
_
Así hemos construido un programa no equivalente con variables artificiales, que
en el caso en que todas las variables artificiales sean nulas, será un programa equi-
valente al inicial.
64 TEMA 2. PROGRAMACIÓN LINEAL
El sistema es equivalente al inicial si las variables artificiales son nulas: x
4
=
x
5
= 0.
La solución básica factible inicial es:
x
1
= 0 x
2
= 0 x
3
= 0 x
4
= 2 x
5
= 1; Z
0
= 3m
Construimos la tabla del Simplex:
Tabla I 1 −2 3 m m sol. básica
Min x
1
x
2
x
3
x
4
x
5
factible
x
4
m −2 1 3 1 0 2
x
5
m 2 3 4 0 1 1
r
j
−1 4m+ 2 7m−3 0 0 Z
0
= 3m
Así, entra en la base x
3
por ser r
3
el mayor y sale de la base a
5
, pues hace mínimo
el cociente 2/3 y 1/4. Si construimos la nueva tabla del Simplex obtenemos:
Tabla II 1 −2 3 m m sol. básica
Min x
1
x
2
x
3
x
4
x
5
factible
x
4
m −7/2 −5/4 0 1 −3/4 5/4
x
3
3 1/2 3/4 1 0 1/4 1/4
r
j

7
2
m+
1
2

5
4
m+
17
4
0 0 −
7
4
m+
3
4
Z = 5m+
3
4
Así, el problema original es no factible, porque he llegado a la tabla óptima, y la
variable artificial x
4
no ha salido de la base, y tiene un valor positivo x
4
= 5/4.
2.9 Algoritmo del Simplex en forma matricial
Si partimos de la forma matricial
Opt. Z = c

X
s.a.: AX = b
X ≥ 0
_
_
_
siendo
c =
_
_
_
_
_
c
1
c
2
.
.
.
c
n
_
_
_
_
_
, X =
_
_
_
_
_
x
1
x
2
.
.
.
x
n
_
_
_
_
_
, b =
_
_
_
_
_
b
1
b
2
.
.
.
b
m
_
_
_
_
_
y A =
_
_
_
a
11
. . . a
1n
.
.
.
.
.
.
.
.
.
a
m1
. . . a
mn
_
_
_.
y considerando, sin pérdida de generalidad, que las n primeras columnas de A co-
rresponden a la matriz básica B asociada a una solución básica factible, que N es
2.9. ALGORITMO DEL SIMPLEX EN FORMA MATRICIAL 65
la matriz formada por las restantes columnas y que X
B
, X
N
, c
B
, c
N
son, respecti-
vamente, las matrices formadas por las variables básicas, las no básicas, los costes
de las variables básicas y los costes de la variables no básicas, entonces el problema
puede expresarse en la forma:
Max Z = (c

B
, c

N
)
_
X
B
XN
_
= c

B
X
B
+c

N
X
N
s.a.:
_
B N
_ _
XB
X
N
_
= BX
B
+NX
N
= b
X ≥ 0
_
_
_
Multiplicando por B
−1
el sistema formado por las restricciones, se obtiene:
B
−1
BX
B
+B
−1
NX
N
= B
−1
b
y por tanto
X
B
= B
−1
b −B
−1
NX
N
Sustituyendo en la función objetivo este valor de X
B
tenemos:
Z = (c

B
, c

N
)
_
X
B
XN
_
= c

B
X
B
+c

N
X
N
= c

B
_
B
−1
b −B
−1
NX
N
_
+c

N
X
N
=
= c

B
B
−1
b +
_
c

N
−c

B
B
−1
N
_
X
N
.
En el caso particular de la solución básica asociada a esta matriz B, X
N
= 0,
por lo que las dos últimas expresiones tomarán la forma:
X
B
= B
−1
b = X
0
B
y Z = c

B
B
−1
b = Z
0
que son los valores de las variables básicas y de la función objetivo correspondiente
a una solución básica factible inicial.
Por lo tanto, en general se cumplirá para cualquier otra solución factible:
X
B
= X
0
B
−B
−1
NX
N
,
Z = Z
0
+
_
c

N
−c

B
B
−1
N
_
X
N
= Z
0

_
c

B
B
−1
N −c

N
_
X
N
.
Dependiendo de los valores de los elementos de la matriz
_
c

B
B
−1
N −c

N
_
el
valor de la función objetivo, Z, se podrá mejorar o no. Así, si el problema fuera
de maximización, se podría mejorar la solución anterior si algún elemento de esta
matriz fuera negativo, aumentando el valor del x
j
∈ X
N
dentro de las condiciones
de factibilidad X
0
B
−B
−1
NX
N
0.
66 TEMA 2. PROGRAMACIÓN LINEAL
2.9.1 Método del Simplex en forma matricial (caso maxi-
mizante)
Paso 1 Partir de una solución básica factible X
B
= B
−1
b =X
0
B
y Z = c

B
B
−1
b =
Z
0
.
Paso 2 Si c

N
−c

B
B
−1
N ≥ 0 la solución actual es óptima. Fin. Si no es así ir al
paso 3
Paso 3 .
Paso 3a Regla de la variable de entrada: Seleccionar para entrar en la
base la variable no básica de X
N
cuyo coeficiente en
_
c

B
B
−1
N −c

N
_
sea
lo menor posible. (el más negativo).
Paso 3b Regla de la variable de salida: Se selecciona la variable de salida
de forma que la variable de entrada considerada anteriormente pueda
tomar el mayor valor posible dentro de las condiciones de factibilidad
X
0
B
−B
−1
NX
N
0.
Paso 4 Tomando ahora esta nueva matriz básica ir al paso 1.
Vamos a aplicar este enfoque del método del Simplex al ejemplo que aparece a
continuación.
Ejemplo 33 Dado el programa lineal:
Max Z = 2x
1
−3x
2
+ 10x
3
s.a.:
x
1
+ 2x
2
+x
3
= 4
2x
1
+x
2
+ 5x
3
= 5
x
1
, x
2
, x
3
≥ 0
_
_
_
B = (a
1
, a
2
) =
_
1 2
2 1
_
=⇒
=⇒ B
−1
=
_
−1/3 2/3
2/3 −1/3
_
, N = (a
3
) =
_
1
5
_
Ordenamos los cálculos de la forma siguiente:
B
−1
_
B
.
.
.N
.
.
.b
_
=
_
B
−1
B
.
.
.B
−1
N
.
.
.B
−1
b
_
=
_
I
.
.
.B
−1
N
.
.
.B
−1
b
_
_
−1/3 2/3
2/3 −1/3
__
1 2
2 1
1
5
4
5
_
=
_
1 0
0 1
3
-1
2
1
_
X
0
B
= B
−1
· b =
_
2
1
_
, Z
0
= c

B
B
−1
b =
_
2 −3
_
_
2
1
_
= 1
2.10. ADAPTACIÓN ALGEBRAICA DEL ALGORITMO DEL SIMPLEX 67
¿Es esta solución óptima?
c

B
B
−1
N −c

N
=
_
2 −3
_
_
3
−1
_
−(10) = (9 −10) = (−1) .
Por ser negativo, la solución puede mejorar. Entra en la base x
3
.
Las condiciones de factibilidad son:
X
0
B
−B
−1
NX
N
=
_
2
1
_

_
3
−1
_
x
3
=
_
2 −3x
3
1 +x
3
_
0 .
Ha de cumplirse que 2 − 3x
3
0, ya que 1 + x
3
es siempre mayor o igual que
cero si lo es x
3
. El mejor valor para x
3
=
2
3
. Si damos este valor, la variable x
1
= 0
y sale de la base.
Las nuevas variables básicas son x
2
y x
3
. Partiendo ahora de la matriz transfor-
mada resultante
_
1 0
0 1
3
-1
2
1
_
B =
_
0 3
1 −1
_
−1
=
_
1
3
1
1
3
0
_
_
1
3
1
1
3
0
__
1 0
0 1
3
-1
2
1
_
=
_
1
3
1
1
3
0
0
1
5
3
2
3
_
_
x
2
x
3
_
0
= X
0
B
= B
−1
· b =
_
5
3
2
3
_
,
Z
0
= c

B
B
−1
b =
_
−3 10
_
_
5
3
2
3
_
=
5
3
.
c

B
B
−1
N −c

N
=
_
−3 10
_
_
1
3
1
3
_
−2 =
1
3
.
Por lo tanto la solución actual x
1
= 0, x
2
= 5/3, x
3
= 2/3; z = 5/3; es óptima.
2.10 Adaptación algebraica del algoritmo del Sim-
plex
Definimos algunas magnitudes y concretamos algunos conceptos:
68 TEMA 2. PROGRAMACIÓN LINEAL
Sea el programa lineal:
Opt. Z = c
t
X
s.a.: AX = b
X ≥ 0
_
_
_
donde r(A) = m y B = (a
1
, a
2
, . . . , a
m
).
Si tenemos algún a
j
que no está en la base B, entonces podemos expresarlo como
combinación lineal de los vectores de B, de la forma:
a
j
= y
1j
a
1
+y
2j
a
2
+· · · +y
mj
a
m
= B · y
j
donde y
j
=
_
_
_
_
y
1j
y
2j
. . .
y
mj
_
_
_
_
Así tenemos un procedimiento, pues y
j
= B
−1
· a
j
.
Hay un caso particular muy importante, cuando la base inicial coincide con la
matriz identidad tendremos que B = I y por tanto y
j
= a
j
.
Definimos el escalar z
j
como z
j
= c
t
B
· y
j
. = c

B
B
−1
· a
j
.
2.10.1 Algoritmo del Simplex (enfoque algebraico)
Partimos de una solución factible básica inicial, y a partir de ella se pasa a otra
solución básica factible adyacente que se consigue cambiando una sola columna de
la base. Este cambio se hace mediante un criterio lógico basado en:
• Mejorar lo más posible la función objetivo.
• Mantener la factibilidad (no deben salir soluciones básicas no factibles).
Para ello necesitamos:
• Regla para la variable de salida (Mantener la factibilidad).
• Regla para la variable de entrada (Mejorar la función objetivo).
Demostración de la Regla para la variable de salida.
Suponemos que la base B = (a
1
, a
2
, a
3
) y a
j
es el vector que no está en B y que va
a entrar en la nueva base.
Supongamos que las variables básicas son x
1
, x
2
, x
3
, y que x
j
es variable no
básica. Si las variables toman los valores:
x
1
= x
0
1
x
2
= x
0
2
x
3
= x
0
3
x
j
= 0.
2.10. ADAPTACIÓN ALGEBRAICA DEL ALGORITMO DEL SIMPLEX 69
Al introducir a
j
en la nueva base tendremos:
x
1
= ˆ x
1
x
2
= ˆ x
2
x
3
= ˆ x
3
x
j
= θ ≥ 0.
siendo alguna de las variables x
1
, x
2
, x
3
igual a cero y el resto son mayores o iguales
a cero.
Como ambas soluciones deben ser factibles tendrá que cumplirse:
x
0
1
a
1
+x
0
2
a
2
+x
0
3
a
3
= b
ˆ x
1
a
1
+ ˆ x
2
a
2
+ ˆ x
3
a
3
+θa
j
= b
_
=⇒
x
0
1
a
1
+x
0
2
a
2
+x
0
3
a
3
= ˆ x
1
a
1
+ ˆ x
2
a
2
+ ˆ x
3
a
3
+θa
j
(2.5)
Como a
j
es combinación lineal de los vectores de la base, tendremos que:
a
j
= y
1j
a
1
+y
2j
a
2
+y
3j
a
3
(2.6)
Si sustituimos (2.6) en (2.5) tenemos:
x
0
1
a
1
+x
0
2
a
2
+x
0
3
a
3
= ˆ x
1
a
1
+ ˆ x
2
a
2
+ ˆ x
3
a
3
+θ(y
1j
a
1
+y
2j
a
2
+y
3j
a
3
)
x
0
1
a
1
+x
0
2
a
2
+x
0
3
a
3
= ( ˆ x
1
+θy
1j
)a
1
+ ( ˆ x
2
+θy
2j
)a
2
+ ( ˆ x
3
+θy
3j
)a
3
_
_
_
x
0
1
= ˆ x
1
+θy
1j
x
0
2
= ˆ x
2
+θy
2j
x
0
3
= ˆ x
3
+θy
3j
y despejando queda
_
_
_
ˆ x
1
= x
0
1
−θy
1j
ˆ x
2
= x
0
2
−θy
2j
ˆ x
3
= x
0
3
−θy
3j
(2.7)
donde algún ˆ x
1
, ˆ x
2
, ˆ x
3
debe ser cero, esto es:
x
0
1
−θy
1j
= 0 x
0
2
−θy
2j
= 0 x
0
3
−θy
3j
= 0
o equivalentemente
θ =
x
0
1
y
1j
θ =
x
0
2
y
2j
θ =
x
0
3
y
3j
(2.8)
Como θ ha de ser positivo o cero, y x
0
1
, x
0
2
, x
0
3
lo son, podemos desechar las columnas
para las que y
ij
≤ 0.
Para las que cumplen que y
ij
> 0 tendremos que como ˆ x
1
, ˆ x
2
, ˆ x
3
han de ser
mayores o iguales que cero, y por tanto de (2.7) deducimos que:
x
0
1
−θy
1j
≥ 0
x
0
2
−θy
2j
≥ 0
x
0
3
−θy
3j
≥ 0
_
_
_
=⇒
θ ≤
x
0
1
y
1j
θ ≤
x
0
2
y
2j
θ ≤
x
0
3
y
3j
_
¸
¸
¸
¸
¸
¸
_
¸
¸
¸
¸
¸
¸
_
(2.9)
70 TEMA 2. PROGRAMACIÓN LINEAL
Como pretendemos que θ cumpla (2.8) y (2.9) tendremos:
θ = min
_
x
0
i
y
ij
; y
ij
> 0
_
Y ésta es la regla para la variable de salida, aquella que hace mínimo el cociente
x
0
i
y
ij
tal que y
ij
> 0, siendo x
j
la variable de entrada en la base.
Como regla de la variable de salida tenemos que dada la solución básica factible
X
B
= B
−1
· b, siendo el vector a
j
que entra en la base, y
ij
> 0 para algún i, entonces
saldrá de la base aquel vector a
k
que verifique:
x
0
k
y
kj
= min
_
x
0
i
y
ij
; y
ij
> 0
_
.
Demostración de la Regla para la variable de entrada.
Sea B = (a
1
, a
2
, a
3
) y sea a
j
que no está en la base B. Si las variables toman los
valores:
_
_
_
x
1
= x
0
1
x
2
= x
0
2
x
3
= x
0
3
=⇒ Z
0
= c
1
x
0
1
+c
2
x
0
2
+c
3
x
0
3
.
Al introducir a
j
en la nueva base tendremos:
_
¸
¸
_
¸
¸
_
x
1
= ˆ x
1
x
2
= ˆ x
2
x
3
= ˆ x
3
x
j
= θ.
=⇒
ˆ
Z = c
1
ˆ x
1
+c
2
ˆ x
2
+c
3
ˆ x
3
.
Si usamos las relaciones obtenidas anteriormente (2.7) tendremos:
ˆ
Z = c
1
(x
0
1
−θy
1j
) +c
2
(x
0
2
−θy
2j
) +c
3
(x
0
3
−θy
3j
) +θc
j
= (2.10)
= c
1
x
0
1
+c
2
x
0
2
+c
3
x
0
3
−θc
1
y
1j
−θc
2
y
2j
−θc
3
y
3j
+θc
j
=
= Z
0
−θ(c
1
y
1j
+c
2
y
2j
+c
3
y
3j
−c
j
) = Z
0
−θ(z
j
−c
j
).
pues ya hemos definido que z
j
= c
t
B
· y
j
siendo y
j
=
_
_
_
_
y
1j
y
2j
· · ·
y
mj
_
_
_
_
.
De la expresión (2.10) se obtienen dos conclusiones:
• Para el caso maximizante: Dada la solución básica factible X
B
= B
−1
· b con
un valor para la función objetivo Z
0
= c
t
B
· X
B
, la actual solución es óptima si
z
j
−c
j
≥ 0 para toda columna a
j
de A. Veamos:
ˆ
Z = Z
0
−θ(z
j
−c
j
) y como θ ≥ 0 y z
j
−c
j
≥ 0 =⇒
=⇒
ˆ
Z ≤ Z
0
.
2.10. ADAPTACIÓN ALGEBRAICA DEL ALGORITMO DEL SIMPLEX 71
Y por tanto Z
0
es el valor máximo.
Por tanto concluimos como regla para la variable de entrada:
Dada la solución factible básica X
B
= B
−1
· b, la variable de entrada será
aquella que proporcione un valor más negativo de z
j
−c
j
.
• Para el caso minimizante: Dada la solución básica factible X
B
= B
−1
· b con
un valor para la función objetivo Z
0
= c
t
B
· X
B
, la actual solución es óptima si
z
j
−c
j
≤ 0 para toda columna a
j
de A.
Y por tanto concluimos como regla para la variable de entrada:
Dada la solución factible básica X
B
= B
−1
· b, la variable de entrada será
aquella que proporcione un valor más positivo de z
j
−c
j
.
Soluciones óptimas alternativas.
Teorema 8 Dada la solución básica factible X
B
= B
−1
· b óptima, si existe algún a
j
fuera de la base para el que se cumpla que z
j
−c
j
= 0, el problema tiene soluciones
alternativas.
Caso particular: Si z
j
− c
j
= 0; a
j
no está en la base B, pero no hay ningún
y
ij
> 0, no podemos sacar ninguna a
i
de la base. Cuando ésto ocurre decimos que
hay un rayo óptimo (una serie de variables que pueden tomar valores infinitos pero
que dan unos valores finitos en la tabla).
Soluciones no acotadas.
En el caso maximizante tenemos que hay algún z
j
−c
j
< 0 y a
j
es un vector que no
está en la base y todos los y
ij
≤ 0.
Teorema 9 Dada X
B
= B
−1
· b solución básica factible, si para alguna columna a
j
no básica es z
j
−c
j
< 0 con y
ij
≤ 0 para todo i, el problema es no acotado.
Demostración:
Supongamos que la base consta de 3 vectores, y que éstos son los tres primeros. Así:
B = (a
1
, a
2
, a
3
) a
j
no b˘ asico z
j
−c
j
< 0 y
y
1j
≤ 0 y
2j
≤ 0 y
3j
≤ 0.
Pero como el vector a
j
se puede expresar como combinación lineal de B entonces:
a
j
= y
1j
a
1
+y
2j
a
2
+y
3j
a
3
(2.11)
Sea la solución básica factible: x
1
= x
0
1
; x
2
= x
0
2
; x
3
= x
0
3
.
72 TEMA 2. PROGRAMACIÓN LINEAL
Expresándolo vectorialmeante tenemos:
x
0
1
a
1
+x
0
2
a
2
+x
0
3
a
3
= b (2.12)
Si multiplicamos la expresión (2.11) por α > 0 entonces:
αy
1j
a
1
+αy
2j
a
2
+αy
3j
a
3
= αa
j
(2.13)
Si restamos (2.12) - (2.13) obtenemos:
(x
0
1
−αy
1j
)a
1
+ (x
0
2
−αy
2j
)a
2
+ (x
0
3
−αy
3j
)a
3
+αa
j
= b.
Así obtenemos una solución del sistema de restricciones:
x
1
= x
0
1
−αy
1j
x
2
= x
0
2
−αy
2j
x
3
= x
0
3
−αy
3j
x
j
= α
que es una solución factible no básica. Si buscamos la solución óptima:
ˆ
Z = c
1
(x
0
1
−αy
1j
) +c
2
(x
0
2
−αy
2j
) +c
3
(x
0
3
−αy
3j
) +c
j
α =
= c
1
x
0
1
+c
2
x
0
2
+c
3
x
0
3
−αc
1
y
1j
−αc
2
y
2j
−αc
3
y
3j
+αc
j
=
= Z
0
−α(c
1
y
1j
+c
2
y
2j
+c
3
y
3j
−c
j
) =
= Z
0
−α(z
j
−c
j
) como α > 0 y z
j
−c
j
< 0 =⇒
=⇒
ˆ
Z > Z
0
.
Como α es arbitrario, puedo hacerlo tan grande como quiera, es decir no acotarlo.
La solución óptima aumentará al aumentar α.
2.10.2 Método del Simplex en forma de tabla (Usando z
j
−c
j
en la última fila)
Opt. c
1
c
2
. . . . . . . . . c
n
coef. objetivo
x
1
x
2
. . . . . . . . . x
n
variables
x
1
c
1
y
11
y
12
. . . . . . . . . y
1n
x
0
1
x
2
c
2
y
21
y
22
. . . . . . . . . y
2n
x
0
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
x
m
c
m
y
m1
y
m2
. . . . . . . . . y
mn
x
0
m
z
j
− c
j
z
1
−c
1
z
2
−c
2
. . . . . . . . . z
n
−c
n
Z
0
Si B = I
m
=⇒ y
j
= B
−1
· a
j
= a
j
.
2.10. ADAPTACIÓN ALGEBRAICA DEL ALGORITMO DEL SIMPLEX 73
Una vez que tengamos la tabla (caso maximizante), los pasos a seguir son:
Paso 0:
Construir la tabla inicial y la solución inicial.
Paso 1:
Considerar la solución actual.
Paso 2:
Si todos los z
j
−c
j
≥ 0, la solución es óptima −→ Fin
Si z
j
−c
j
< 0 para alguna variable, ir al paso 3.
Paso 3a:
Seleccionar para entrar en la base la columna con z
j
−c
j
más negativo. Sea ésta la
a
k
.
Paso 3b:
Seleccionar para salir de la base el que haga mínimo el cociente
x
0
i
y
ik
para los y
ik
> 0.
Sea la fila r.
(Si todos los y
ik
≤ 0, el problema es no acotado) −→ Fin . Si no es así, ir al paso
4.
Paso 4:
Realizar transformaciones en la tabla para conseguir una nueva matriz unitaria
tomando y
rk
como pivote. Calcular z
j
−c
j
usando la expresión

m
i=1
c
i
y
ij
−c
j
(2.14)
Paso 5:
Volver al paso 2.
Ejemplo 34 Resolver el programa lineal, usando el método del Simplex en forma
de tabla.
Max Z = 3x
1
+ 2x
2
−2x
3
+x
4
s.a.:
2x
1
+ 3x
2
+x
3
= 12
2x
1
+x
2
+x
4
= 8
x
1
, x
2
, x
3
, x
4
≥ 0
_
_
_
Tomamos como base:
B = (a
3
, a
4
) = I
2
74 TEMA 2. PROGRAMACIÓN LINEAL
Construimos la tabla del Simplex:
Tabla I 3 2 −2 1 Sol. básica
x
1
x
2
x
3
x
4
factible
x
3
−2 2 3 1 0 12
x
4
1 2 1 0 1 8
z
j
− c
j
−5 −7 0 0 Z
0
= −16
Entra en la base a
2
por ser el más negativo.
Y sale a
3
pues min
_
12
3
;
8
1
_
=
12
3
= 4.
Si hacemos las transformaciones siguientes:
Divido la fila 1 por 3 (multiplico por 1/3).
Resto a la fila 2 la fila 1.
Obtenemos la siguiente tabla:
Tabla II 3 2 −2 1 Sol. básica
x
1
x
2
x
3
x
4
factible
x
2
2 2/3 1 1/3 0 4
x
4
1
4/3
0 −1/3 1 4
z
j
− c
j
-1/3
0 7/3 0 Z = 12
Entra en la base a
1
por ser z
1
−c
1
< 0 el único negativo. Como variable de salida
hacemos:
min
_
4
2/3
;
4
4/3
_
= min{6, 3} = 3.
Y por tanto sale de la base a
4
.
Hacemos las transformaciones siguientes:
Multiplico por 3/4 la fila 3.
Resto a la fila 1 la fila 2 por 2/3.
Obtenemos la siguiente tabla:
Tabla III 3 2 −2 1 Sol. básica
x
1
x
2
x
3
x
4
factible
x
2
2 0 1 1/2 −1/2 2
x
1
1 1 0 −1/4 3/4 3
z
j
− c
j
0 0 9/4 1/4 Z = 13
La solución asociada a esta base es óptima pues todos los z
j
−c
j
≥ 0, la solución
es:
x
1
= 3 x
2
= 2 x
3
= 0 x
4
= 0 ;
˜
Z = 13.
2.10. ADAPTACIÓN ALGEBRAICA DEL ALGORITMO DEL SIMPLEX 75
La base óptima es
B = (a
2
, a
1
) =
_
3 2
1 2
_
=⇒ B
−1
=
_
1/2 −1/2
−1/4 3/4
_
Si observamos la Tabla III del Simplex tenemos que la matriz B
−1
son las columnas
que formaban la base inicial.
Haciendo las transformaciones adecuadas, también podemos obtener el algoritmo
correspondiente para el caso minimizante.
Ejemplo 35 Resolver el programa lineal, usando el método del Simplex en forma
de tabla.
Min Z = x
2
−3x
3
+ 2x
5
s.a.:
x
1
+ 3x
2
−x
3
+ 2x
5
= 7
−2x
2
+ 4x
3
+x
4
= 12
−4x
2
+ 3x
3
+ 8x
5
+x
6
= 10
x
1
, x
2
, x
3
, x
4
, x
5
, x
6
≥ 0
_
¸
¸
_
¸
¸
_
Tomamos como base:
B = (a
1
, a
4
, a
6
) = I
3
Construimos la tabla del Simplex:
Tabla I 0 1 −3 0 2 0 Sol. básica
x
1
x
2
x
3
x
4
x
5
x
6
factible
x
1
0 1 3 −1 0 2 0 7
x
4
0 0 −2 4 1 0 0 12
x
6
0 0 −4 3 0 8 1 10
z
j
−c
j
0 −1 3 0 −2 0 Z
0
= 0
Entra en la base a
3
por ser el más positivo de los z
j
−c
j
.
Y sale a
4
pues min
_
12
4
;
10
3
_
=
12
4
= 3.
Si hacemos las transformaciones siguientes:
Multiplico la fila 2 por 1/4.
Sumo a la fila 1 la fila 2.
Resto a la fila 3 la fila 2 multiplicada por 3.
Obtenemos la siguiente tabla:
76 TEMA 2. PROGRAMACIÓN LINEAL
Tabla II 0 1 −3 0 2 0 Sol. básica
x
1
x
2
x
3
x
4
x
5
x
6
factible
x
1
0 1
5/2
0 1/4 2 0 10
x
3
−3 0 −1/2 1 1/4 0 0 3
x
6
0 0 −5/2 0 −3/4 8 1 1
z
j
−c
j
0
1/2
0 −3/4 −2 0
ˆ
Z = −9
La fila de los costes reducidos se obtiene por medio de la expresión 2.14. Por
ejemplo:
z
2
−c
2
= 0 ×
5
2
−3 ×
_

1
2
_
+ 0 ×
_

5
2
_
−1 =
1
2
Entra en la base a
2
por ser el más positivo de los z
j
− c
j
. Y sale a
1
pues es el
único y
i2
que es positivo.
Si hacemos las transformaciones que aparecen a continuación:
Multiplico la fila 1 por 2/5.
Sumo a la fila 2 la fila 1 multiplicada por 1/5.
Sumo a la fila 3 la fila 1.
Obtenemos la siguiente tabla:
Tabla III 0 1 −3 0 2 0 Sol. básica
x
1
x
2
x
3
x
4
x
5
x
6
factible
x
2
1 2/5 1 0 1/10 4/5 0 4
x
3
−3 1/5 0 1 3/10 2/5 0 5
x
6
0 1 0 0 −1/2 10 1 11
z
j
−c
j
−1/5 0 0 −4/5 −12/5 0
˜
Z = −11
La solución asociada a esta base es óptima pues todos los z
j
−c
j
≤ 0, la solución
es:
x
1
= 0 x
2
= 4 x
3
= 5 x
4
= 0 x
5
= 0 x
6
= 11 ;
˜
Z = −11.
La base óptima es
B = (a
2
, a
3
, a
6
) =
_
_
3 −1 0
−2 4 0
−4 3 1
_
_
=⇒ B
−1
=
_
_
2/5 1/10 0
1/5 3/10 0
1 −1/2 1
_
_
.
2.11 Otros algoritmos de programación lineal
Vamos a estudiar ahora otros algoritmos de programación lineal:
2.11. OTROS ALGORITMOS DE PROGRAMACIÓN LINEAL 77
2.11.1 Método de las dos fases
Este algoritmo suele utilizarse cuando hay igualdades o desigualdades del tipo ≥,
y por tanto sería necesario añadir variables artificiales. Consta de dos fases: La
primera de ellas consiste en minimizar la suma de las variables artificiales. En esta
primera fase todas las variables artificiales han de resultar nulas. En caso contrario
el problema no tiene solución (es infactible).
Fase 1:
Paso 0: Escribir el programa en forma estándar, añadiendo variables artifi-
ciales.
Paso 1: Considerar la función objetivo Z

{minimizante o maximizante}, que
se obtiene incorporando al objetivo las variables artificiales con coefi-
cientes {1 o -1} y asignando coeficiente cero al resto.
Paso 2: Aplicar el algoritmo del Simplex, con la función objetivo descrita en
el paso 1. Si en la solución óptima aparecen variables artificiales con valor
positivo, el problema original es no factible −→ Fin .
Si no ocurre, ir a la fase 2.
Fase 2:
Paso 3: Considerar la función objetivo original, con coeficiente c
j
= 0 para
las variables artificiales que aparezcan en la base óptima del paso 2. Se
prescindirá de las variables artificiales no básicas y se actualizarán los
z
j
−c
j
.
Paso 4: Si en la función objetivo del paso 3 no hay variables artificiales aplicar
el algoritmo del Simplex al nuevo programa hasta obtener la solución
óptima.
Paso 5: Si en la función objetivo del paso 3 hubiera variables artificiales,
aplicar el algoritmo del Simplex con esta modificación en la variable de
salida:
Si x
k
es la variable de entrada e y
ik
< 0 para alguna variable artificial x
i
,
elegir x
i
como variable de salida, e y
ik
como pivote.
Ejemplo 36 Resolver el programa lineal usando el método de las dos fases.
Min Z = 3x
1
+ 5x
2
s.a.:
x
1
≤ 4
x
2
≤ 6
3x
1
+ 2x
2
≥ 18
x
1
, x
2
≥ 0
_
¸
¸
_
¸
¸
_
Si introducimos las variables de holgura positivas, y una variable artificial x
6
tendremos el programa no equivalente:
78 TEMA 2. PROGRAMACIÓN LINEAL
Min Z = 3x
1
+ 5x
2
s.a.:
x
1
+x
3
= 4
x
2
+x
4
= 6
3x
1
+ 2x
2
−x
5
+x
6
= 18
x
1
, x
2
, x
3
, x
4
, x
5
, x
6
≥ 0
_
¸
¸
_
¸
¸
_
Este ejemplo ya lo hemos resuelto anteriormente usando el método de las pena-
lizaciones, vamos a resolverlo ahora usando el método de las dos fases:
Fase 1:
Construimos la tabla del Simplex como indica el paso 1. El objetivo es minimizar
la variable artificial x
6.
Tabla I 0 0 0 0 0 1
Min x
1
x
2
x
3
x
4
x
5
x
6
x
3
0 1 0 1 0 0 0 4
x
4
0 0 1 0 1 0 0 6
x
6
1 3 2 0 0 −1 1 18
z
j
−c
j
3 2 0 0 −1 0 Z
0
= 18
Así, entra en la base a
1
por ser z
1
−c
1
el mayor y sale de la base a
3
, pues hace
mínimo el cociente 4/1 y 18/3. Si construimos la nueva tabla del Simplex obtenemos:
Tabla II 0 0 0 0 0 1
Min x
1
x
2
x
3
x
4
x
5
x
6
x
1
0 1 0 1 0 0 0 4
x
4
0 0 1 0 1 0 0 6
x
6
1 0 2 −3 0 −1 1 6
z
j
−c
j
0 2 −3 0 −1 0 Z = 6
Entra en la base a
2
por ser z
2
−c
2
el mayor, y sale de la base a
6
pues es el que
hace mínimo el cociente 6/1 y 6/2. Si construimos la nueva tabla del Simplex:
Tabla III 0 0 0 0 0 1
Min x
1
x
2
x
3
x
4
x
5
x
6
x
1
3 1 0 1 0 0 0 4
x
4
0 0 0 3/2 1 1/2 −1/2 3
x
2
5 0 1 −3/2 0 −1/2 1/2 3
z
j
−c
j
0 0 0 0 0 −1 Z = 0
Fase 2
Como en la base óptima no aparece ninguna variable artificial, según el paso 3,
prescindimos de esta variable. Así la nueva tabla queda:
2.11. OTROS ALGORITMOS DE PROGRAMACIÓN LINEAL 79
Tabla IV 3 5 0 0 0
Min x
1
x
2
x
3
x
4
x
5
x
1
3 1 0 1 0 0 4
x
4
0 0 0 3/2 1 1/2 3
x
2
5 0 1 −3/2 0 −1/2 3
z
j
−c
j
0 0 −9/2 0 −5/2
ˆ
Z = 27
La solución óptima es x
1
= 4 x
2
= 3 , con z = 27.
La variable de holgura x
4
= 3.
2.11.2 Algoritmo revisado del Simplex (Caso maximizante)
Este algoritmo tiene ventajas desde el punto de vista de la implementación, ya
que ocupa menos posiciones de memoria. Además no acumula errores, porque las
operaciones se realizan siempre con los datos originales.
Paso 0: Escribir el problema en forma estándar y obtener una matriz básica inicial.
Paso 1: Evaluar B
−1
y el vector multiplicador s = c

B
· B
−1
. Calcular, para las
variables no básicas, los z
j
−c
j
= s · a
j
−c
j
. Si todos son mayores o iguales a
cero, la solución es óptima −→ Fin .
Paso 2: Seleccionar el vector que entra en la base, que será el que proporcione un
valor más negativo de z
j
−c
j
. Sea éste a
k
.
Paso 3: Evaluar y
k
= B
−1
· a
k
y X
B
= B
−1
· b y seleccionar el vector que sale de
la base, será el que haga mínimo el cociente
x
i
y
ik
para los y
ik
> 0. Sea a
r
.
Paso 4: Sustituir en B el vector a
r
por a
k
. Volver al paso 1.
Vamos a resolver el siguiente ejemplo usando el algoritmo revisado del Simplex.
Este programa lineal ya se ha resuelto anteriormente en el ejemplo 34.
Ejemplo 37 Dado el programa lineal:
Max Z = 3x
1
+ 2x
2
−2x
3
+x
4
s.a.:
2x
1
+ 3x
2
+x
3
= 12
2x
1
+x
2
+x
4
= 8
x
1
, x
2
, x
3
, x
4
≥ 0
_
_
_
Tomamos como base:
B = (a
3
, a
4
) = I
2
=⇒ B
−1
= I
2
80 TEMA 2. PROGRAMACIÓN LINEAL
El vector multiplicador del Simplex es:
s = c

B
· B
−1
= c

B
· I
2
= c

B
= (−2, 1).
Si calculamos los z
j
−c
j
tendremos:
z
1
−c
1
= (−2, 1)
_
2
2
_
−3 = −2 −3 = −5
z
2
−c
2
= (−2, 1)
_
3
1
_
−2 = −5 −2 = -7
Si calculamos y
k
= B
−1
· a
k
y x
B
= B
−1
· b tenemos:
y
2
= B
−1
· a
2
= I
2
· a
2
= a
2
=
_
3
1
_
; x
B
= B
−1
· b = b =
_
12
8
_
Entra en la base a
2
por ser el más negativo.
Y sale a
3
pues min
_
12
3
;
8
1
_
=
12
3
= 4.
Iteración 1 La nueva base es:
B = (a
2
, a
4
) =
_
3 0
1 1
_
=⇒ B
−1
=
_
1/3 0
−1/3 1
_
El vector multiplicador del Simplex es:
s = c
B
· B
−1
= (2, 1) ·
_
1/3 0
−1/3 1
_
= (1/3, 1).
Si calculamos los z
j
−c
j
tendremos:
z
1
−c
1
= (1/3, 1)
_
2
2
_
−3 = 8/3 −3 =
−1/3
z
3
−c
3
= (1/3, 1)
_
1
0
_
−(−2) = 1/3 + 2 = 7/3.
Si calculamos y
k
= B
−1
· a
k
y x
B
= B
−1
· b tenemos:
y
1
= B
−1
· a
1
=
_
1/3 0
−1/3 1
_
·
_
2
2
_
=
_
2/3
4/3
_
;
x
B
= B
−1
· b =
_
1/3 0
−1/3 1
_
·
_
12
8
_
=
_
4
4
_
.
2.11. OTROS ALGORITMOS DE PROGRAMACIÓN LINEAL 81
Entra en la base a
1
por ser z
1
−c
1
< 0 el único negativo. Como variable de salida
hacemos:
min
_
4
2/3
;
4
4/3
_
= min{6, 3} = 3.
Y por tanto sale de la base a
4
.
Iteración 2 La nueva base es:
B = (a
2
, a
1
) =
_
3 2
1 2
_
=⇒ B
−1
=
_
1/2 −1/2
−1/4 3/4
_
El vector multiplicador del Simplex es:
s = c
B
· B
−1
= (2, 3) ·
_
1/2 −1/2
−1/4 3/4
_
= (1/4, 5/4).
Si calculamos los z
j
−c
j
tendremos:
z
3
−c
3
= (1/4, 5/4)
_
1
0
_
−(−2) = 1/4 + 2 = 9/4
z
4
−c
4
= (1/4, 5/4)
_
0
1
_
−1 = 5/4 −1 = 1/4.
La solución ya es óptima.
Si calculamos x
B
= B
−1
· b tenemos:
x
B
= B
−1
· b =
_
1/2 −1/2
−1/4 3/4
_
·
_
12
8
_
=
_
2
3
_
La solución asociada a esta base es óptima pues todos los z
j
−c
j
≥ 0, la solución
es:
x
1
= 3 x
2
= 2 x
3
= 0 x
4
= 0 ;
˜
Z = 13
La base óptima es
B = (a
2
, a
1
) =
_
3 2
1 2
_
=⇒ B
−1
=
_
1/2 −1/2
−1/4 3/4
_
Ejemplo 38 Aplicar el procedimiento anterior al programa lineal:
Max Z = 2x
1
−3x
2
+ 10x
3
s.a.:
x
1
+ 2x
2
+x
3
= 4
2x
1
+x
2
+ 5x
3
= 5
x
1
, x
2
, x
3
≥ 0
_
_
_
82 TEMA 2. PROGRAMACIÓN LINEAL
Este programa lineal ya lo hemos resuelto anteriormente usando el método del
Simplex en forma matricial, (ver ejemplo 33 en la página 66).
Si lo resolvemos ahora usando el algoritmo revisado del Simplex, tenemos que si
tomamos como base:
B = (a
1
, a
2
) =
_
1 2
2 1
_
=⇒ B
−1
=
_
−1/3 2/3
2/3 −1/3
_
La solución asociada a esta base es factible pues:
X
B
= B
−1
· b =
_
x
1
x
2
_
=
_
−1/3 2/3
2/3 −1/3
_
·
_
4
5
_
=
_
2
1
_
=⇒
=⇒ x
1
= 2 x
2
= 1 x
3
= 0.
Si calculamos los z
j
−c
j
usando que z
j
= c
t
B
· y
j
obtenemos:
z
1
−c
1
= (2, −3)
_
1
0
_
−2 = 2 −2 = 0
z
2
−c
2
= (2, −3)
_
0
1
_
−(−3) = −3 + 3 = 0
z
3
−c
3
= (2, −3)
_
3
−1
_
−10 = 9 −10 = −1.
Como estamos en un problema de maximizar, entra en la base a
3
(según la regla de
la variable de entrada).
y
3
= B
−1
· a
3
=
_
−1/3 2/3
2/3 −1/3
_
·
_
1
5
_
=
_
3
−1
_
=
_
y
13
y
23
_
Veamos qué variable tendrá que salir (usando la regla de variable de salida)
x
0
3
y
k3
= min
_
x
0
i
y
i3
; y
i3
> 0
_
Como y
13
= 3 y y
23
= −1, sólo puede salir de la base a
1
pues y
23
es negativo.
Al salir de la base a
1
tenemos:
B = (a
2
, a
3
) =
_
2 1
1 5
_
=⇒ B
−1
=
_
5/9 −1/9
−1/9 2/9
_
La solución asociada a esta base es factible pues:
X
B
= B
−1
· b =
_
5/3
2/3
_
=⇒ x
1
= 0 x
2
= 5/3 x
3
= 2/3.
2.11. OTROS ALGORITMOS DE PROGRAMACIÓN LINEAL 83
Si calculamos los z
j
−c
j
usando que z
j
= c
t
B
· y
j
obtenemos:
z
1
−c
1
= (−3, 10)
_
1/3
1/3
_
−2 = 7/3 −2 = 1/3
z
2
−c
2
= (−3, 10)
_
1
0
_
−(−3) = −3 + 3 = 0
z
3
−c
3
= (−3, 10)
_
0
1
_
−10 = 10 −10 = 0.
Como estamos en un problema de maximizar, y todos los z
j
− c
j
≥ 0, por la regla
de parada, la solución ya es óptima.
x
1
= 0 x
2
= 5/3 x
3
= 2/3 ; Z = 0 + (−3)
5
3
+ 10
2
3
=
5
3
.
Ejemplo 39 Resolver el programa lineal usando el algoritmo revisado del Simplex:
Max Z = x
1
−x
2
+ 10x
3
−6x
4
s.a.:
x
1
+ 2x
3
+ 5x
4
= 10
x
2
+ 5x
3
+ 3x
4
= 15
x
1
, x
2
, x
3
, x
4
≥ 0
_
_
_
Tomamos como base:
B = (a
1
, a
2
) =
_
1 0
0 1
_
=⇒ B
−1
= I
2
=
_
1 0
0 1
_
Así, directamente obtengo una solución básica factible asociada a esta base pues:
X
B
= B
−1
· b =
_
10
15
_
=⇒ x
1
= 10 x
2
= 15 x
3
= 0 x
4
= 0.
Si calculamos los z
j
−c
j
usando que z
j
= c
t
B
· y
j
obtenemos:
z
1
−c
1
= 0
z
2
−c
2
= 0
z
3
−c
3
= (1, −1)
_
2
5
_
−10 = −3 −10 = −13
z
4
−c
4
= (1, −1)
_
5
3
_
−(−6) = 2 + 6 = 8.
Como estamos en un problema de maximizar, entra en la base a
3
(según la regla
de la variable de entrada). Veamos qué variable tendrá que salir (usando la regla de
variable de salida).
84 TEMA 2. PROGRAMACIÓN LINEAL
x
0
3
y
k3
= min
_
x
0
i
y
i3
; y
i3
> 0 en nuestro caso j = 3.
_
Como y
13
= 2 y y
23
= 5:
x
0
3
y
k3
== min
_
10
2
;
15
5
_
= min{5, 3} = 3.
Luego el mínimo corresponde a
x
0
2
y
23
, y por tanto sale de la base a
2
. Al cambiar de
base tenemos:
B = (a
1
, a
3
) =
_
1 2
0 5
_
=⇒ B
−1
=
_
1 −2/5
0 1/5
_
La solución asociada a esta base es factible pues:
X
B
= B
−1
· b =
_
4
3
_
=⇒ x
1
= 4 x
2
= 0 x
3
= 3 x
4
= 0.
Si calculamos los z
j
−c
j
usando que z
j
= c
t
B
· y
j
obtenemos:
z
1
−c
1
= 0
z
2
−c
2
= (1, 10)
_
−2/5
1/5
_
−(−1) = 8/5 + 1 = 13/5
z
3
−c
3
= 0
z
4
−c
4
= (1, 10)
_
19/5
3/5
_
−(−6) = 49/5 + 6 = 79/5.
Como estamos en un problema de maximizar, y todos los z
j
−c
j
≥ 0, por la regla
de parada, la solución ya es óptima.
x
1
= 4 x
2
= 0 x
3
= 3 x
4
= 0 ; Z = 4 −0 + 10(3) −0 = 34.
Tema 3
Dualidad en programación
lineal
3.1 Formas de la dualidad
3.1.1 Forma canónica maximizante de la dualidad
Dado el programa lineal:
Max Z = C
t
· X
sujeto a AX ≤ b
X ≥ 0
donde,
A es una matriz de dimensión m×n
C es un vector columna de dimensión n ×1
b es un vector columna de dimensión m×1
X es un vector columna de dimensión n ×1
llamado Programa Primal, se llama Programa Dual del mismo al programa
lineal:
Min W = b
t
· Y
sujeto a A
t
· Y ≥ C
Y ≥ 0
donde A
t
y A , C y C
t
, b y b
t
son matrices traspuestas entre sí. El vector columna
Y, que contiene las variables del problema, ha de ser de dimensión m×1.
85
86 TEMA 3. DUALIDAD EN PROGRAMACIÓN LINEAL
Ejemplo 40 Obtener el programa dual de:
Max Z = 2x
1
−x
2
+ 2x
3
+x
4
s.a.: 2x
1
+x
2
+x
3
+ 2x
4
≤ 18
3x
1
+ 4x
2
+ 2x
3
+x
4
≤ 24
x
i
≥ 0, i = 1, 2, 3, 4
Sean:
A =
_
2 1 1 2
3 4 2 1
_
c
t
= (2, −1, 2, 1) b =
_
18
24
_
.
Por lo tanto
W = b
t
· Y = (18, 24)
_
y
1
y
2
_
A
t
· Y =
_
_
_
_
2 3
1 4
1 2
2 1
_
_
_
_
·
_
y
1
y
2
_

_
_
_
_
2
−1
2
1
_
_
_
_
así que el programa dual es
Min W = 18y
1
+ 24y
2
s.a.: 2y
1
+ 3y
2
≥ 2
y
1
+ 4y
2
≥ −1
y
1
+ 2y
2
≥ 2
2y
1
+y
2
≥ 1
y
1
, y
2
≥ 0
En la práctica resulta util emplear la tabla de simplex en la forma siguiente:
Max
Min x
1
x
2
x
3
x
4

y
1
2 1 1 2 18
y
2
3 4 2 1 24
≥ 2 -1 2 1
Para escribir el dual se leen los coeficientes de las restricciones y de la función
objetivo por columnas. Recordamos que cuando se trata del problema primal se leen
por filas.
y
1
variable dual asociada a la primera restricción.
y
2
variable dual asociada a la segunda restricción.
Si el problema no estuviera expresado en forma canónica maximizante, una forma
de hallar su dual es transformarlo previamente a su forma canónica maximizante,
como haremos en el siguiente ejemplo.
3.1. FORMAS DE LA DUALIDAD 87
Ejemplo 41 Obtener el programa dual de:
Max Z = 3x
1
+ 8x
2
+ 2x
3
−4x
4
s.a.: x
1
+x
2
+ 2x
3
+ 3x
4
≤ 5
x
1
−x
2
= −1
x
3
−x
4
≥ 46
x
i
≥ 0, i = 1, 2, 3, 4
Transformamos las restricciones segunda y tercera en desigualdades de signo ≤
x
1
−x
2
= −1 ⇔
_
x
1
− x
2
≤ −1
x
1
− x
2
≥ −1

_
x
1
− x
2
≤ −1
−x
1
+ x
2
≤ 1
x
3
−x
4
≥ 46 ⇔−x
3
+x
4
≤ −46.
Por lo tanto el problema se expresa en forma canónica maximizante de la siguiente
forma:
Max
Min x
1
x
2
x
3
x
4

y
1
1 1 2 3 5
y
2
1 −1 0 0 −1
y
3
−1 1 0 0 1
y
4
0 0 −1 1 −46
≥ 3 8 2 −4
Min W = 5y
1
−y
2
+y
3
−46y
4
s.a.: y
1
+y
2
−y
3
≥ 3
y
1
−y
2
+y
3
≥ 8
2y
1
−y
4
≥ 2
3y
1
+y
4
≥ −4
y
1
, y
2
, y
3
, y
4
≥ 0
Si se hacen los siguientes cambios:
y

2
= y
2
−y
3
y

3
= −y
3
_
tenemos:
Min W = 5y
1
−y

2
+ 46y

3
s.a.: y
1
+y

2
≥ 3
y
1
−y

2
≥ 8
2y
1
+y

3
≥ 2
3y
1
−y

3
≥ −4
y
1
≥ 0, y

2
no restringida, y

3
≤ 0
88 TEMA 3. DUALIDAD EN PROGRAMACIÓN LINEAL
y
1
variable dual asociada a la primera restricción.
y

2
variable dual asociada a la segunda restricción.
y

3
variable dual asociada a la tercera restricción.
Como puede verse la matriz de los coeficientes del problema dual es la traspuesta
de la matriz correspondiente del problema primal.
3.1.2 Forma estándar maximizante de la dualidad
La dualidad se puede expresar en diferentes formas.
Por ejemplo, si el programa lineal está en forma estándar
Max Z = C
t
· X sujeto a Ax = b, X ≥ 0
su dual puede expresarse en la forma siguiente:
Min W = b
t
· Y, sujeto a A
t
· Y ≥ C, Y no restringida.
En efecto, pasando la forma estándar a forma canónica maximizante obtenemos:
Ax = b ⇐⇒
_
Ax ≤ b
Ax ≥ b
⇐⇒
_
Ax ≤ b
−Ax ≤ −b
Llamando
A

=
_
A
−A
_
y b

=
_
b
−b
_
El problema se transforma en
Max Z = C
t
· X sujeto a A

x ≤ b

, X ≥ 0
Según la definición de dualidad su dual es
Min W = (b

)
t
· Y

, sujeto a (A

)
t
· Y ≥ C, Y ≥ 0
Realizando operaciones
Min W =
_
b
−b
_
t
·
_
Y1
Y2
_
, s. a.
_
A
−A
_
t
·
_
Y1
Y2
_
≥ C, Y ≥ 0 ⇔
Min W =
_
b
t
, −b
t
_
·
_
Y1
Y
2
_
, s. a.
_
A
t
, −A
t
_
·
_
Y1
Y
2
_
≥ C, Y ≥ 0 ⇔
Min W = b
t
Y
1
−b
t
Y
2
, s.a.: A
t
Y
1
−A
t
Y
2
, ≥ C, Y
1
, Y
2
≥ 0.
3.1. FORMAS DE LA DUALIDAD 89
Definiendo Y = Y
1
−Y
2
con Y
1
, Y
2
≥ 0 hacen que Y no esté restringida en signo,
resultando que el programa dual puede expresarse en la forma:
Min W = b
t
· Y, sujeto a A
t
· Y ≥ C, Y no restringida.
Ejemplo 42 Hallar el dual del siguiente programa lineal:
Max Z = 2x
1
+ 3x
2
+ 4x
3
s.a.: x
1
+x
2
+x
3
≤ 3
x
1
−x
2
≥ 2
x
1
+x
2
= 1
x
1
≥ 0, x
2
≤ 0, x
3
libre
Para ponerlo en forma canónica maximizante realizamos primero los cambios
necesarios para que todas las variables sean no negativas:
x
2
= −x

2
, x
3
= x

3
−x

4
Max Z = 2x
1
−3x

2
+ 4x

3
−4x

4
s.a.: x
1
−x

2
+x

3
−x

4
≤ 3
x
1
+x

2
≥ 2
x
1
−x

2
= 1
x
1
≥ 0, x
2
≥ 0, x

3
≥ 0, x

4
≥ 0
Realizamos ahora las transformaciones para que todas las restricciones sean de
signo ≤
Max Z = 2x
1
−3x

2
+ 4x

3
−4x

4
s.a.: x
1
−x

2
+x

3
−x

4
≤ 3
−x
1
−x

2
≤ −2
x
1
−x

2
≤ 1
−x
1
+x

2
≤ −1
x
1
≥ 0, x
2
≥ 0, x

3
≥ 0, x

4
≥ 0
Su dual es
Min W = 3y
1
−2y
2
+y
3
−y
4
s.a.: y
1
−y
2
+y
3
−y
4
≥ 2
−y
1
−y
2
−y
3
+y
4
≥ −3
y
1
≥ 4
−y
1
≥ −4
y
1
, y
2
, y
3
.y
4
≥ 0
Realizando los cambios
90 TEMA 3. DUALIDAD EN PROGRAMACIÓN LINEAL
y
3
−y
4
= y

3
, y

2
= −y
2
Obtenemos que el problema dual es:
Min W = 3y
1
+ 2y

2
+y

3
s.a.: y
1
+y

2
+y

3
≥ 2
y
1
−y
2
+y

3
≤ 3
y
1
= 4
y
1
≥ 0, y

2
≤ 0, y

3
libre
Ejemplo 43 Obtener el programa dual de:
Max Z = 2x
1
+ 3x
2
−x
3
s.a.: 3x
1
+ 4x
2
+ 2x
3
≤ 3
3x
1
−2x
2
−x
3
≤ 7
x
1
≥ 0, x
2
no restringida, x
3
≤ 0
Hago los siguientes cambios:
x
2
= x

1
−x
′′
2
x
3
= −x

3
Max Z = 2x
1
+ 3x

2
−3x
′′
2
+x

3
s.a.: 3x
1
+ 4x

2
−4x
′′
2
−2x

3
≤ 3
3x
1
−2x

2
+ 2x
′′
2
+x

3
≤ 7
x
1
, x

2
, x
′′
2
, x

3
≥ 0
Max
Min x
1
x

2
x
′′
2
x

3

y
1
3 4 -4 -2 3
y
2
3 -2 2 1 7
≥ 2 3 -3 1
Min W = 3y
1
+ 7y
2
s.a.: 3y
1
+ 3y
2
≥ 2
4y
1
−2y
2
≥ 3
−4y
1
+ 2y
2
≥ −3
−2y
1
+y
2
≥ 1
y
1
, y
2
≥ 0
Buscamos el programa dual:
−2y
1
+y
2
≥ 1 ⇔2y
1
−y
2
≤ −1
3.1. FORMAS DE LA DUALIDAD 91
4y
1
− 2y
2
≥ 3
4y
1
− 2y
2
≤ 3
_
⇔4y
1
−2y
2
= 3
El programa dual quedaría:
Min W = 3y
1
+ 7y
2
s.a.: 3y
1
+ 3y
2
≥ 2
4y
1
−2y
2
= 3
2y
1
−y
2
≤ −1
y
1
, y
2
≥ 0
3.1.3 Reglas para escribir el problema dual
Con el objeto de no tener que realizar todas estas transformaciones en cada problema
conviene tener una serie de reglas para escribir el problema dual conociendo el primal.
Las reglas de conversión son las siguientes:
1. Función objetivo:
(a) El dual de un problema de maximización es un problema de minimización.
(b) El dual de un problema de minimización es un problema de maximización.
2. Número de incógnitas y de restricciones:
(a) El número de incógnitas del dual es el número de restricciones del primal.
(b) El número de restricciones del dual es el número de incógnitas del primal.
3. Coeficientes de coste y términos independientes de las restricciones.
(a) Los coeficientes de coste del dual son los términos independientes de las
restricciones del primal.
(b) Los términos independientes de las restricciones del dual son los coefi-
cientes de coste del primal.
4. Las matrices tecnológicas del primal y dual son traspuestas entre sí.
5. Signo de las restricciones y de las variables.
A cada restricción de un problema viene asociado una variable del otro.
Las reglas para escribir los signos de las restricciones y de las variables corres-
pondientes vienen resumidas en la tabla siguiente:
92 TEMA 3. DUALIDAD EN PROGRAMACIÓN LINEAL
Primal de Maximización Dual de Minimización
restricción
_
_
_


=
≥ 0
≤ 0
libre
_
_
_
variables
variable
_
_
_
≥ 0
≤ 0
libre


=
_
_
_
restricción
Dual de Maximización Primal de Minimización
3.1.4 Forma canónica minimizante de la dualidad
La siguiente expresión enuncia la dualidad en forma canónica minimizante.
Dado el programa lineal Min Z = c
t
· X, sujeto a A
t
· X ≥ b, X ≥ 0 su dual es
Max W = b
t
· Y, sujeto a A
t
· Y ≤ c, Y ≥ 0.
Se puede comprobar que en este enunciado se cumplen las reglas para determinar
el programa dual dadas en la tabla anterior.
Ejemplo 44 Obtener el dual del problema:
Min Z = 3x
1
+ 9x
2
s.a.: x
1
−x
2
≥ 1
2x
1
+x
2
≥ 3
3x
1
−x
2
≥ 5
x
1
, x
2
≥ 0
El problema dual que se obtiene con ayuda de la siguiente tabla y de las reglas
de signo de variables y restricciones es:
Max
Min x
1
x
2

y
1
1 -1 1
y
2
2 1 3
y
3
3 -1 5
≤ 3 9
Max W = y
1
+ 3y
2
+ 5y
3
s.a.: y
1
+ 2y
2
+ 3y
3
≤ 3
−y
1
+y
2
−y
3
≤ 9
y
1
, y
2
, y
3
≥ 0
Ejemplo 45 Hallar el dual del problema siguiente realizando previamente las trans-
formaciones necesarias para expresarlo en la forma canónica minimizante. Compro-
3.1. FORMAS DE LA DUALIDAD 93
bar a posteriori que se cumplen las reglas de los signos.
Min Z = 2x
1
−x
2
s.a.: 4x
1
+ 7x
2
≤ 10
3x
1
−4x
2
≥ 8
x
1
≥ 0, x
2
no restringida
Llamamos x
2
= x

2
−x
′′
2
:
Min Z = 2x
1
−x

2
+x
′′
2
s.a.: 4x
1
+ 7x

2
−7x
′′
2
≤ 10
3x
1
−4x

2
+ 4x
′′
2
≥ 8
x
1
, x

2
, x
′′
2
≥ 0
4x
1
+ 7x

2
−7x
′′
2
≤ 10 ⇔−4x
1
−7x

2
+ 7x
′′
2
≥ −10
Escribimos ahora el dual
Max
Min x
1
x

2
x
′′
2

y
1
-4 -7 7 -10
y
2
3 -4 4 8
≤ 2 -1 1
Max W = −10y
1
+ 8y
2
s.a.: −4y
1
+ 3y
2
≤ 2
−7y
1
−4y
2
≤ −1
7y
1
+ 4y
2
≤ 1
y
1
, y
2
≥ 0
Si llamamos y

1
= −y
1
tenemos:
Max W = 10y

1
+ 8y
2
s.a.: 4y

1
+ 3y
2
≤ 2
7y

1
−4y
2
≤ −1
−7y

1
+ 4y
2
≤ 1
y
1
≤ 0, y
2
≤ 0
7y

1
−4y
2
≥ −1
7y

1
−4y
2
≤ −1
_
⇔7y

1
−4y
2
= −1
El dual será:
94 TEMA 3. DUALIDAD EN PROGRAMACIÓN LINEAL
Max W = 10y

1
+ 8y
2
s.a.: 4y

1
+ 3y
2
≤ 2
7y

1
−4y
2
= −1
y

1
≤ 0, y
2
≥ 0
En la siguiente tabla están indicados los cambios efectuados:
restricción del dual
_
_
_
1
a

2
a
=
x
1
≥ 0
x
2
libre
_
_
_
variables del primal
variable del dual
_
y
2
≥ 0
y

1
≤ 0
≥ 2
a
≤ 1
a
_
restricción del primal
Dual de Maximización Primal de Minimización
3.2 Propiedades de la relación de dualidad
1.- El dual del dual es el primal.
Demostración.
Max Z = C
t
· X
sujeto a AX ≤ b
X ≥ 0
donde A es una matriz de dimensión m×n y X un vector de dimensión n ×1. Su
dual es:
Min W = b
t
· Y
sujeto a A
t
Y ≥ C
Y ≥ 0
Como no hemos demostrado las reglas de los signos su uso no puede ser considerado
una demostración, no obstante si las aplicáramos se obtendría este resultado de
inmediato. Así tendremos que el problema dual de este último es el primitivo:
Max Z = C
t
· X
sujeto a (A
t
)
t
X ≤ b
X ≥ 0

Max Z = C
t
· X
sujeto a AX ≤ b
X ≥ 0
A continuación exponemos una demostración de esta propiedad.
Para calcular el dual de
min W = b
t
· Y
sujeto a A
t
Y ≥ C
y ≥ 0
3.2. PROPIEDADES DE LA RELACIÓN DE DUALIDAD 95
que es el dual del primitivo, lo expresamos en forma canónica maximizante
W

= −W = −b
t
· Y
max W’=max (-W) = −b
t
· Y
sujeto a −A
t
Y ≤ −C
y ≥ 0
Su dual es:
min (-Z) = −C
t
· X
sujeto a −AX ≤ −b
X ≥ 0
es decir:
max Z = C
t
· X
sujeto a AX ≥ b
X ≥ 0
que es el problema primitivo.
2.- Teorema de dualidad débil.
Si x
0
e y
0
son soluciones factibles para el programa primal y el programa dual
respectivamente, entonces se cumple que C
t
· x
0
≤ b
t
· y
0
.
Demostración.
Los problemas son:
Primal
_
_
_
Max Z = c
t
· X
sujeto a AX ≤ b
X ≥ 0
Dual
_
_
_
Min W = b
t
· Y
sujeto a A
t
· Y ≥ c
y ≥ 0
Como x
0
es factible se verifica:
Ax
0
≤ b; x
0
≥ 0 (3.1)
Como y
0
es factible se cumple:
A
t
y
0
≥ c; y
0
≥ 0 (3.2)
Si multiplico (3.1) por la izquierda por y
t
0
tenemos:
96 TEMA 3. DUALIDAD EN PROGRAMACIÓN LINEAL
y
t
0
Ax
0
≤ y
t
0
b (3.3)
Si multiplico (3.2) por x
t
0
tenemos:
x
t
0
A
t
y
0
≥ x
t
0
c (3.4)
Si hallo la traspuesta de (3.4) tenemos:
y
t
0
Ax
0
≥ c
t
x
0
(3.5)
Considerando (3.5) y (3.3) c
t
x
0
≤ y
t
0
Ax
0
y y
t
0
Ax
0
≤ y
t
0
b.
Por tanto c
t
x
0
≤ y
t
0
b = b
t
y
0
puesto que
y
0
b = (y
0
1
, y
0
2
...y
0
m
)
_
_
_
_
_
_
b
1
b
2
·
·
b
m
_
_
_
_
_
_
= (b
1
, b
2
...b
m
)
_
_
_
_
_
_
y
0
1
y
0
2
·
·
y
0
m
)
_
_
_
_
_
_
= b
t
· y
0
Consecuencias del teorema de dualidad débil.
Esta desigualdad tiene las consecuencias inmediatas siguientes:
a) Cualquier valor que tenga la función objetivo primal es cota inferior para la
función objetivo dual.
b) Cualquier valor que tenga la función objetivo dual es cota superior para la función
objetivo primal.
También se deducen las siguientes propiedades
c) Si el primal es factible y no acotado, entonces el dual es no factible.
Demostración.
La demostraremos por Reducción al Absurdo: Si el dual fuera factible e y
0
una
solución, entonces para toda solución factible del primal, x, en aplicación del teorema
de dualidad debil se cumpliría que C
t
x < b
t
y
0
. Por tanto el primal estaría acotado
por b
t
y
0
, contradiciéndose la hipótesis de no acotación del primal.
d) Si el dual es factible y no acotado, entonces el primal es no factible.
3.2. PROPIEDADES DE LA RELACIÓN DE DUALIDAD 97
Si el primal fuera factible entonces existe un x
0
que cumple las restricciones y la
no negatividad, por tanto Z
0
= c
t
x
0
=⇒ Z
0
≤ W. Pero si tiene una cota inferior
no puede ser no acotada.
e) Si existen soluciones factibles para los problemas primales y duales que dan el
mismo valor para las respectivas funciones objetivo entonces dichas soluciones
son óptimas para sus respectivos problemas.
Demostración.
Supongamos dos soluciones factibles para cada uno de los problemas primal y
dual respectivamente x

e y

, llamamos Z

= c
t
· x

e W

= b
t
· y

. y Z

= W

.
Primal: Sea x cualquier otra solución factible entonces c
t
· x ≤ b
t
y

= c
t
· x

=⇒
c
t
x ≤ c
t
x

∀x.
x

es el valor mas alto al que puede llegar el objetivo por tanto x

es óptima.
Dual: Sea y cualquier otra solución factible entonces c
t
x

≤ b
t
y =⇒b
t
y

≤ b
t
y ∀y.
b
t
y

es el valor mínimo al que llega la función objetivo por tanto y

es óptima.
3.- Teorema de dualidad principal.
Si el problema primal tiene solución óptima finita correspondiente a la base B,
entonces el problema dual también tiene solución óptima finita y dicha solución es
Y
∗t
= C
t
B
B
−1
(vector multiplicador simplex de la base óptima).
Demostración.
Max Z = C
t
· X
sujeto a Ax ≤ b
X ≥ 0
y su dual
Min W = b
t
· Y
sujeto a A
t
· Y ≥ C
y ≥ 0
Añadiendo al primal variables de holgura (X
n
) resulta
AX +IX
n
= b (AI) = (a
1
a
2
..a
n
e
1
, e
2
..e
m
)
B base óptima =⇒X
B
= B
−1
b y C
t
B
B
−1
(A| I ) −(C
t
| 0) ≥ 0 porque los costes
reducidos son no negativos si la base es óptima.
Separando los costes reducidos de las variables primitivas y de las variables de
holgura tenemos:
C
t
B
B
−1
A −C
t
≥ 0; . C
t
B
B
−1
I −0 ≥ 0
98 TEMA 3. DUALIDAD EN PROGRAMACIÓN LINEAL
Transponiendo la primera de estas desigualdades resulta
A
t
_
C
t
B
B
−1
_
t
−C ≥ 0 =⇒ A
t
Y

≥ C
De la segunda obtenemos
C
t
B
B
−1
I = C
t
B
B
−1
= (Y

)
t
≥ 0
Luego Y

es una solución factible del problema dual. Veamos que es además
óptima:
W

= b
t
Y

= Y
∗t
b = C
t
B
B
−1
· b = C
t
B
tX
B
= Z

Por la consecuencia e) del teorema de dualidad débil, Y

también es óptima.
Consecuencias:
Si el primal es factible el dual es factible.
Si el dual es infactible entonces el primal es no acotado o es también infactible.
Si el primal es infactible entonces el dual es no acotado o es también infactible.
Solución del problema dual en la resolución del problema primal
• Si se emplea el algoritmo revisado del simplex ya tenemos la solución de la
dualidad:
Y
∗t
= C
t
B
· B
−1
= S (vector multiplicador del simplex)
• Si se emplea el algoritmo del simplex la solución coincide con los costes reduci-
dos de las variables de holgura:
Y
∗t
= C
t
B
· B
−1
.
Ejemplo 46 Dado el P.L.
Max Z = 5x
1
+ 3x
2
s.a.: x
1
≤ 2
5x
1
+ 2x
2
≤ 12
3x
1
+ 8x
2
≤ 12
x
1
, x
2
≥ 0
Hallar su dual y obtener las soluciones de los problemas primal y dual.
3.2. PROPIEDADES DE LA RELACIÓN DE DUALIDAD 99
El dual es:
Min W = 2y
1
+ 12y
2
+ 12y
3
s.a.: y
1
+ 5y
2
+ 3y
3
≥ 5
2y
2
+ 8y
3
≥ 3
y
1
, y
2
, y
3
≥ 0
Solución del primal:
5 3 0 0 0
Max x
1
x
2
x
3
x
4
x
5
x
3
0 1* 0 1 0 0 2
x
4
0 5 2 0 1 0 12
x
5
0 3 8 0 0 1 12
Z
j
−c
j
-5 -3 0 0 0 z=0
5 3 0 0 0
Max x
1
x
2
x
3
x
4
x
5
x
1
5 1 0 1 0 0 2
x
4
0 0 2 -5 1 0 2
x
5
0 0 8* -3 0 1 6
Z
j
−c
j
0 -3 5 0 0 z=10
5 3 0 0 0
Max x
1
x
2
x
3
x
4
x
5
x
1
5 1 0 1 0 0 2
x
4
0 0 0 -17/4 1 -1/4 1/2
x
2
3 0 1 -3/8 0 1/8 3/4
Z
j
−c
j
0 0 31/8 0 3/8 z=49/4
Solución óptima del programa primal: x
1
= 2, x
2
=
3
4
, Z

=
49
4
.
Solución óptima del dual: y
1
=
31
8
, y
2
= 0, y
3
=
3
8
, W

=
49
4
.
Nota: En este ejemplo las soluciones del dual coinciden con los valores de las
variables de holgura. No obstante, en los casos en que la base unitaria primitiva
no proceda de una variable de holgura puede haber tener algún coste no nulo en
la el objetivo. En este caso la solución del dual correspondiente a tal variable
de holgura habría que obtenerla con la expresión r
j
= z
j
− c
j
. Es decir:
z
j
= r
j
+ c
j
. Aquí tambien se debe usar esta expresión, lo que pasa es que
c
3
= c
4
= c
5
= 0. En el siguiente ejemplo resolveremos un caso en que alguna
de las variable de holgura no tiene coeficiente nulo en la función objetivo.
100 TEMA 3. DUALIDAD EN PROGRAMACIÓN LINEAL
Ejemplo 47 Dado el P.L.
Min Z = 2x
1
+ 3x
2
−x
3
s.a.: 2x
1
+x
2
−x
3
≥ 2
x
1
−2x
2
+ 3x
3
= 6
x
1
+ 3x
2
+ 4x
3
≤ 10
x
1
, x
2
≥ 0, x
3
no restringida
Deducir su problema dual. Resolver el problema primal y hallar la solución del
dual a partir de la tabla del primal.
Hacemos el cambio x
3
= x

3
−x
′′
3
Min Z = 2x
1
+ 3x
2
−x

3
+x
′′
3
s.a.: 2x
1
+x
2
−x

3
+x
′′
3
≥ 2
x
1
−2x
2
+ 3x

3
−3x
′′
3
= 6
x
1
+ 3x
2
+ 4x

3
−4x
′′
3
≤ 10
x
1
, x
2
, x

3
, x
′′
3
≥ 0
Pasando a la forma canónica minimizante
Min Z = 2x
1
+ 3x
2
−x

3
+x
′′
3
s.a.: 2x
1
+x
2
−x

3
+x
′′
3
≥ 2
x
1
−2x
2
+ 3x

3
−3x
′′
3
≥ 6
−x
1
+ 2x
2
−3x

3
+ 3x
′′
3
≥ −6
−x
1
−3x
2
−4x

3
+ 4x
′′
3
≥ −10
x
1
, x
2
, x

3
, x
′′
3
≥ 0
Max
Min x
1
x
2
x

3
x
′′
3

y
1
2 1 -1 1 2
y
2
1 -2 3 -3 6
y
3
-1 2 -3 3 -6
y
4
-1 -3 -4 4 -10
≤ 2 3 -1 1
El problema dual es
Max W = 2y
1
+ 6y
2
−6y
3
−10y
4
s.a.: 2y
1
+y
2
−y
3
−y
4
≤ 2
y
1
−2y
2
+ 2y
3
−3y
4
≤ 3
−y
1
+ 3y
2
−3y
3
−4y
4
≤ −1
y
1
−3y
2
+ 3y
3
+ 4y
4
≤ 1
y
1
, y
2
, y
3
, y
4
≥ 0
3.2. PROPIEDADES DE LA RELACIÓN DE DUALIDAD 101
−y
1
+ 3y
2
− 3y
3
− 4y
4
≤ −1
y
1
− 3y
2
+ 3y
3
+ 4y
4
≤ 1
_
=⇒y
1
−3y
2
+ 3y
3
+ 4y
4
= 1.
Si hacemos el cambio:
y

2
= y
2
−y
3
y
4
= −y
4
_
El programa dual será:
Max W = 2y
1
+ 6y

2
+ 10y

4
s.a.: 2y
1
+y

2
+y

4
≤ 2
y
1
−2y

2
+ 3y

4
≤ 3
−y
1
+ 3y

2
+ 4y

4
= −1
y
1
≥ 0, y

2
no restringida y

4
≤ 0
Hallamos ahora la solución del primal. Añadiendo variables de holgura y artifi-
ciales y transformando las variables en no negativas tenemos:
Min Z = 2x
1
+ 3x
2
−x

3
+x
′′
3
+mx
5
+mx
6
s.a.: 2x
1
+x
2
−x

3
+x
′′
3
−x
4
+x
5
≥ 2
x
1
−2x
2
+ 3x

3
−3x
′′
3
+x
6
= 6
x
1
+ 3x
2
+ 4x

3
−4x
′′
3
+x
7
≤ 10
x
i
≥ 0, i = 1, 2, .., 7
2 3 −1 1 0 m m 0
Min x
1
x
2
x

3
x
′′
3
x
4
x
5
x
6
x
7
x
5
m 2∗ 1 −1 1 −1 1 0 0 2
x
6
m 1 −2 3 −3 0 0 1 0 6
x
7
0 1 3 4 −4 0 0 0 1 10
Z
j
−c
j
3m−2 −m−3 2m+ 1 −2m−1 −m 0 0 0 8m
2 3 −1 1 0 m m 0
Min x
1
x
2
x

3
x
′′
3
x
4
x
5
x
6
x
7
x
1
2 1 1/2 −1/2 1/2 −1/2 1/2 0 0 1
x
6
m 0 −5/2 7/2∗ −7/2 1/2 −1/2 1 0 5
x
7
0 0 5/2 9/2 −9/2 1/2 −1/2 0 1 9
Z
j
−c
j
0
−5m
2
−2
7m
2
−7m
2
m
2
−1
−3m
2
+ 1 0 0 5m+ 2
2 3 −1 1 0 m m 0
Min x
1
x
2
x

3
x
′′
3
x
4
x
5
x
6
x
7
x
1
2 1 1/7 0 0 −3/7 3/7 1/7 0 12/7
x

3
−1 0 −5/7 1 −1 1/7 −1/7 2/7 0 10/7
x
7
0 0 40/7 0 0 −1/7 1/7 −9/7 1 18/7
Z
j
−c
j
0 −2 0 0 −1 1 −m −m 0 2
102 TEMA 3. DUALIDAD EN PROGRAMACIÓN LINEAL
La solución óptima del programa primal es:
x
1
=
12
7
, x
2
= 0, x
3
=
10
7
, Z

= 2.
La solución óptima del dual, llamando y
2
= y

2
, y
3
= y

4
, es:
y
1
= (1 −m) +m = 1, y
2
= −m+m = 0, y
3
= 0, W

= 2.
4.- Teorema de Holgura Complementaria.
Sean X

= (x
j
) e Y

= (y
i
) soluciones factibles de los problemas primal y dual
repectivamente, y sean U

= (u
i
) y V

= (v
j
) los valores respectivos de las
variables de holgura para las soluciones X

e Y

, entonces, X

e Y

son
óptimas si y solo si se cumple que:
u
i
y
i
= 0 i = 1, 2, .., m v
j
x
j
= 0 j = 1, 2, .., n
Demostración.
=⇒ Supongamos que X

e Y

son óptimas. Partimos de:
Max Z = C
t
· X
sujeto a AX ≤ b
X ≥ 0
y su dual
Min W = b
t
· Y
sujeto a A
t
· Y ≥ C
y ≥ 0
Tenemos:
AX

+U

= b =⇒multiplicamos por Y
∗t
por la izquierda
Y
∗t
AX

+Y
∗t
U

= Y
∗t
b
Y
∗t
U

= Y
∗t
b −Y
∗t
AX

(3.6)
y
A
t
Y

−V

= C =⇒multiplicamos por X

Y
∗t
AX

−V
∗t
X

= V
∗t
X

−V
∗t
X

= C
t
X

−Y
∗t
AX

(3.7)
Por ser óptimas se cumple que
C
t
X

= b
t
Y

. (3.8)
Pero cuando además Y
∗t
b = b
t
Y

de (3.6) (3.7) y (3.8) tenemos:
3.2. PROPIEDADES DE LA RELACIÓN DE DUALIDAD 103
Y
∗t
U

= −V
∗t
· X

=⇒Y
∗t
U

+V
∗t
X

= 0
(y
1
, y
2
, .., y
m
)
_
_
_
_
_
_
u
1
u
2
·
·
u
m
_
_
_
_
_
_
+ (v
1
, v
2
, .., v
n
)
_
_
_
_
_
_
x
1
x
2
·
·
x
n
_
_
_
_
_
_
= 0
m

i=1
y
i
u
i
+
n

j=1
v
j
x
j
= 0
Como todos los sumandos son no negativos ha de ser:
y
i
· u
i
= 0 i = 1, 2, .., m
v
j
· x
j
= 0 j = 1, 2, .., n
⇐= Supongamos que X

,Y

verifican u
i
y
i
= 0; v
j
x
j
= 0 y además son
factibles

m
i=1
y
i
u
i
= 0;

n
j=1
v
j
x
j
= 0, luego,
m

i=1
y
i
u
i
+
n

j=1
v
j
x
j
= 0
Y
∗t
U

+V
∗t
X

= 0
pero
AX

+U

= b =⇒ U

= b −AX

(1)
AY

−V

= C =⇒ Y
∗t
A−V
∗t
= C
t
=⇒ V
∗t
= Y
∗t
A−C
t
.
Usando las tres relaciones últimas tenemos:
Y
∗t
(b −AX

) + (Y
∗t
A−C
t
)X

= 0
Y
∗t
b −Y
∗t
AX

+Y
∗t
AX

−C
t
X

= 0
Y
∗t
b = C
t
X

Por la consecuencia e) del teorema de dualidad débil, entonces son óptimas.
104 TEMA 3. DUALIDAD EN PROGRAMACIÓN LINEAL
Nota: Este teorema puede utilizarse para deducir la solución del dual conociendo
la del primal, veámoslo por medio del siguiente ejemplo:
Ejemplo 48 Dado el programa lineal siguiente, determine la solución óptima del
programa dual usando el teorema de Holgura complementaria.
Max Z = 5x
1
+ 3x
2
s.a. :x
1
≤ 2
5x
1
+ 2x
2
≤ 12
3x
1
+ 8x
2
≤ 12
x
1
, x
2
≥ 0
Se sabe que la solución óptima del primal es: x
1
= 2, x
2
=
3
4
, Z =
49
4
.
Introduciendo variables de holgura, el sistema de restricciones será:
x
1
+ u
1
= 2
5x
1
+ 2x
2
+u
2
= 12
3x
1
+ 8x
2
+u
3
= 12
El dual será:
Min W: = 2y
1
+ 12y
2
+ 12y
3
s.a.:y
1
+ 5y
2
+ 3y
3
≥ 5
2y
2
+ 8y
3
≥ 3
y
1
, y
2
, y
3
≥ 0
y el sistema de restricciones del dual con variables de holgura es:
y
1
+ 5y
2
+ 3y
3
−v
1
= 5
2y
2
+ 8y
3
−v
2
= 3
v
j
x

j
= 0
_
v
1
x
1
= 0
v
2
x
2
= 0
y como
_
x
1
= 2 > 0
x
2
= 3/4 > 0
_
=⇒
=⇒
_
_
_
v
1
= 0
v
2
= 0
y
u
1
= 0
u
2
=
1
2
u
3
= 0
_
_
_
u
i
y
i
= 0
_
_
_
u
1
y
1
= 0
u
2
y
2
= 0
u
3
y
3
= 0
y como y
2
= 0
Sustituyendo los valores v
1
= 0, v
2
= 0, y
2
= 0 en el problema dual, se obtiene
su solución resolviendo el sistema.
y
1
+ 3y
3
= 5
8y
3
= 3
_
=⇒y
3
=
8
3
, y
1
=
31
8
3.3. INTERPRETACIÓN ECONÓMICA DE LA DUALIDAD 105
Es decir la solución óptima del problema dual es:
y
1
=
31
8
, y
2
= 0, y
3
=
8
3
, v
1
= 0, v
2
= 0, W =
49
4
.
3.3 Interpretación económica de la dualidad
Las variables duales nos indican como varía la función objetivo al cambiar los recur-
sos.
En efecto: Si la base óptima es B; X

B
= B
−1
b; Z

= C
t
B
X

B
, cambian los
recursos a b+∆b, y el valor ∆b es suficientemente pequeño para que no haya cambio
en la base óptima, entonces:
X

B
= B
−1
(b + ∆b) = B
−1
b +B
−1
(∆b)
Z

= C
t
B
X

B
= C
t
B
B
−1
b +C
B
B
−1
(∆b) = Z

+Y
∗t
(∆b) =
= Z

+
m

i=1
y

i
(∆b) = Z

+y

1
(∆b
1
) +y

2
(∆b
2
) +· · · +y

m
(∆b
m
) (3.9)
Ejemplo 49 En el siguiente problema
Max Z: = 5x
1
+ 3x
2
s.a.:x
1
≤ 2
5x
1
+ 2x
2
≤ 12
3x
1
+ 8x
2
≤ 12
x
1
, x
2
≥ 0
la solución óptima primal: x
1
= 2, x
2
=
3
4
, Z =
49
4
y la solución óptima dual es
y

1
=
31
8
, y

2
= 0, y

3
=
3
8
; .W =
49
4
.
Si usamos la expresión 3.9, se tiene que
Z

= Z

+y

1
(∆b
1
) +y

2
(∆b
2
) +y

3
(∆b
3
) =
49
4
+
31
8
(∆b
1
) + 0(∆b
2
) +
3
8
(∆b
3
)
Así que si b
1
= 2 aumenta una unidad =⇒ Z aumenta en
31
8
. Si b
2
= 12 aumenta
una unidad =⇒Z aumenta en 0 y si b
3
= 12 aumenta una unidad =⇒Z aumenta
en
3
8
. Hay que tener en cuenta que este resultado sólo es válido dentro del entorno
de b que no implique un cambio de la base óptima y por tanto de la matriz óptima
permanece inalterada. El intervalo de validez de este resultado se tratará en el
siguiente tema, donde estudiaremos el problema de la sensibilidad de los disyintos
parámetros del problema de Programación lineal.
En resumen, ¿cuándo conviene resolver el programa dual?
106 TEMA 3. DUALIDAD EN PROGRAMACIÓN LINEAL
• Cuando el dual sea más fácil de resolver.
• Cuando necesitamos aplicar su interpretación económica.
• En aquellas ramas de la Investigación Operativa en las que la dualidad aparezca
de modo natural, por ejemplo en los problemas de transporte y asignación.
Ejemplo 50 (Interpretación económica del dual) Una peletero fabrica bolsos,
cinturones y monederos. Cada bolso supone una ganancia de 120 euros, cada cin-
turón 60, y cada monedero 40. El material y horas de sueldo necesarios para realizar
cada uno de estos objetos viene expresado en la siguiente tabla, donde también se
indica la cantidad de recursos disponibles actualmente:
Gasto por unidad y producto bolsos cinturones monederos Disponible
Material (piel) 8 6 1 48
Diseño y confección (horas trabajo) 4 2 1.5 20
Acabado(horas trabajo) 2 1.5 0.5 8
Ganancia por unidad 120 60 40
¿Cuántos objetos hará de cada clase para maximizar la ganancia? Plantear este
problema y hallar una interpretación del problema dual.
Planteamiento:
Sean las variables de decisión para el problema:
x
1
= número de bolsos,
x
2
= número de cinturones,
x
3
= número de monederos.
Max Z = 120x
1
+ 60x
2
+ 40x
3
s.a.: 8x
1
+ 6x
2
+x
3
≤ 48
4x
1
+ 2x
2
+ 1.5x
3
≤ 20
2x
1
+ 1.5x
2
+ 0.5x
3
≤ 8
x
1
, x
2
, x
3
≥ 0,
Supongamos que otro empresario desea adquirir los materiales y las horas de
trabajo disponibles, y debe hacer una oferta que no sea rechazada por el anterior
propietario, pero que al mismo tiempo sea lo más ventajosa posible para él. ¿Cuanto
deberá pagar por el material y las horas de trabajo disponibles?
Sean y
1
, y
2
, y
3
los precios a los que va a pagar la unidad de piel, la hora de
trabajo del personal de diseño-confección y la hora de trabajo de acabado, respecti-
vamente. Lo que debería pagar el comprador será 48y
1
+20y
2
+8y
3
, y naturalmente
deseará que esta cantidad sea lo menor posible. Supone, que como es de esperar, el
actual dueño no se la venderá si esto le supone alguna pérdida. Por eso, el precio que
pague por el material y horas que permitan hacer cada objeto deberá ser al menos
3.4. ALGORITMO DUAL DEL SIMPLEX. (CASO MAXIMIZANTE) 107
igual que la ganancia que el dueño actual saca por este producto. En resumen, el
problema que el comprador ha de resolver es el siguiente:
min 48y
1
+ 20y
2
+ 8y
3
s.a. 8y
1
+ 4y
2
+ 2y
3
≥ 120 (ganancia por un bolso)
6y
1
+ 2y
2
+ 1.5y ≥ 60 (ganancia por un cinturón)
y
1
+ 1.5y
2
+ 0.5y
3
≥ 40 (ganancia por un monedero)
y
1
, y
2
, y
3
≥ 0
que como se ve es el dual del primero. Los valores de las variables de la solución del
problema dual deben ser interpretadas como los precios por unidad de cada recurso.
Se suelen llamar ”precios-sombra de los recursos”, ya que, no es un precio real o de
mercado, sino un precio asociado al problema primal.
3.4 Algoritmo Dual del Simplex. (Caso maximizante)
Este método es útil a veces para no tener que introducir variables artificiales. Este
algoritmo se aplica cuando puede obtenerse una solución básica, que tiene costes
reducidos positivos, pero que no es factible porque tiene algunas soluciones negativas.
Es decir, se aplica en el caso de una tabla en la que todos los z
j
−c
j
≥ 0, pero con
algún x
i
< 0. Este tipo de soluciones se llaman dual factible.
Paso 1
Si x
B
solución básica factible cumpliendo x
B
≥ 0, entonces la solución es óptima.
Paso 2 (Selección de la variable de salida)
Seleccionar como variable de salida aquella variable básica con valor más negativo.
Sea x
r
.
Paso 3 (Selección de la variable de entrada)
Determinar para las columnas no básicas los cocientes p
j
=
zj−cj
y
rj
para los y
rj
< 0.
Si todos los y
rj
≥ 0 el programa dual es no acotado y el primal es no factible. FIN.
Si hay algún y
rj
< 0, entra la variable de mayor cociente (o menor valor absoluto).
Sea x
k
.
Paso 4
Establecer una nueva tabla con y
rk
como pivote y volver al Paso 1.
Nota 2: En el caso minimizante todo es igual salvo:
• Paso 1. Hay que partir de una tabla en la que z
j
−c
j
≤ 0.
• Paso 3. Se selecciona la variable de entrada que de mínimo el cociente p
j
=
zj−cj
yrj
para los y
rj
< 0 (o menor valor absoluto, porque es positivo).
108 TEMA 3. DUALIDAD EN PROGRAMACIÓN LINEAL
Ejemplo 51 Resolver el programa lineal:
Max Z = −2x
1
−x
2
−4x
3
s.a.: 3x
1
+ 2x
2
+ 5x
3
≥ 15
x
1
+ 3x
2
+ 2x
3
≥ 7
x
1
, x
2
, x
3
≥ 0
_
¸
¸
_
¸
¸
_
La tabla inicial, obtenida cambiando de signo las dos restriciones y añadiendo
variables de holgura es:
−2 −1 −4 0 0
Max x
1
x
2
x
3
x
4
x
5
x
4
0 −3 −2∗ −5 1 0 −15
x
5
0 −1 −3 −2 0 1 −7
z
j
−c
j
2 1 4 0 0 z

= 0
Así pues, se cumplen las condiciones para poder aplicar el algoritmo dual del
simplex, pues el primal es infactible (x
B
< 0); y el dual es factible pues z
j
−c
j
≥ 0.
El término independiente más negativo es -15. El pivote correspondiente está en la
segunda columna, ya que:
max
_
2
−3
,
1
−2
,
4
−5
_
= min
_
2
3
,
1
2
,
4
5
_
=
1
2
Así, haciendo las transformaciones correspondientes, si usamos −2 como pivote,
tenemos la siguiente tabla:
−2 −1 −4 0 0
Max x
1
x
2
x
3
x
4
x
5
x
2
-1
3
2
1
5
2
-
1
2
0
15
2
x
5
0
7
2
0
11
2
-
3
2
1
31
2
z
j
−c
j
1
2
0
3
2
1
2
0
que es dual factible y primal factible. La solución del problema es:
x
1
= 0 , x
2
= 7.5 , z = −2 ×0 −7.5 −4 ×0 = −7.5
Y la solución óptima del dual es:
y
1
= 1/2 , y
2
= 0 , w = −15 ×
1
2
−7 ×0 = −7.5
Ejemplo 52 Resolver el programa lineal siguiente y su programa dual:
3.4. ALGORITMO DUAL DEL SIMPLEX. (CASO MAXIMIZANTE) 109
Min Z = x
1
+x
2
+x
3
s.a.: x
1
−x
2
+ 3x
3
≥ 1
2x
1
−x
2
+x
3
≥ 0
x
1
+x
2
−x
3
≥ 2
x
1
, x
2
, x
3
≥ 0
_
¸
¸
¸
¸
_
¸
¸
¸
¸
_
El problema dual sería
x
1
x
2
x
3

y
1
1 −1 3 1
y
2
2 −1 1 0
y
3
1 1 −1 2
≤ 1 1 1
Max W = y
1
+ 2y
3
s.a.: y
1
+ 2y
2
+y
3
≤ 1
−y
1
−y
2
+y
3
≤ 1
3y
1
+y
2
−y
3
≤ 1
y
1
, y
2
, y
3
≥ 0
_
¸
¸
¸
¸
_
¸
¸
¸
¸
_
Para calcular la solución del primal cambiamos previamente el signo de las de-
sigualdades, lo que va a implicar un cambio de signo en las variables duales:
Min Z = x
1
+x
2
+x
3
s.a.: −x
1
+x
2
−3x
3
≤ −1
−2x
1
+x
2
−x
3
≤ 0
−x
1
−x
2
+x
3
≤ −2
x
1
, x
2
, x
3
≥ 0
:
Min Z = x
1
+x
2
+x
3
s.a.: −x
1
+x
2
−3x
3
+x
4
= −1
−2x
1
+x
2
−x
3
+x
5
= 0
−x
1
−x
2
+x
3
+x
6
= −2
x
1
, x
2
, x
3
, x
4
, x
5
, x
6
≥ 0
_
¸
¸
¸
¸
_
¸
¸
¸
¸
_
1 1 1 0 0 0
Min x
1
x
2
x
3
x
4
x
5
x
6
x
4
0 −1 1 −3 1 0 0 −1
x
5
0 −2 1 −1 0 1 0 0
x
6
0 −1 −1 1 0 0 1 −2
z
j
−c
j
−1 −1 −1 0 0 0 z = 0
Sale x
6
pues tiene el valor más pequeño x
6
= −2, y entra x
1
, pues en la tercera
fila min{
−1
−1
,
−1
−1
} = 1. Así, haciendo las transformaciones correspondientes, usando
como pivote al coeficiente y
31
= −1, tenemos la siguiente tabla:
1 1 1 0 0 0
Min x
1
x
2
x
3
x
4
x
5
x
6
x
4
0 0 2 −4 1 0 −1 1
x
5
0 0 3 −3 0 1 −2 4
x
1
1 1 1 −1 0 0 −1 2
z
j
−c
j
0 0 −2 0 0 −1 z = 2
110 TEMA 3. DUALIDAD EN PROGRAMACIÓN LINEAL
Como el valor z
2
− c
2
= 0 y x
2
no está en la base, indica que hay soluciones
múltiples. Como x
B
≥ 0, tenemos que una solución óptima del primal es:
x
1
= 2 , x
2
= 0 , x
3
= 0 , z = 2.
Como hemos cambiado de signo las restricciones del primal tenemos que la solu-
ción óptima del dual es:
y
1
= 0 , y
2
= 0 , y
3
= 1 , w = 2.
Como hemos dicho hay un coste reducido cero en una variable no básica (z
2
−c
2
= 0),
y por tanto si se introduce la variable x
2
sale x
4
. Si se hacen las transformaciones
correspondientes usando como pivote 2, obtenemos la nueva tabla:
1 1 1 0 0 0
Min x
1
x
2
x
3
x
4
x
5
x
6
x
2
1 0 1 −4 1/2 0 −1/2 1/2
x
5
0 0 0 −3 −3/2 1 −1/2 5/2
x
1
1 1 0 −1 −1/2 0 −1/2 3/2
z
j
−c
j
0 0 −2 0 0 −1 z = 2
Así obtenemos que otra solución óptima para el primal es:
x
1
= 3/2 , x
2
= 1/2 , x
3
= 0 , z = 2.
El valor del objetivo coincide, como era de esperar con la obtenida en la tabla
anterior. Por tanto, el problema primal tiene infinitas soluciones. Sin embargo, para
el problema dual se obtiene ahora la misma solución que anteriormente.
Tema 4
Análisis de sensibilidad
4.1 Introducción gráfica
Consideraremos en el siguiente ejemplo
max Z = 3x
1
+ 2x
2
s.a.:
_
_
_
2x
1
+x
2
≤ 100
x
1
+x
2
≤ 80
x
1
, x
2
≥ 0
cuya solución óptima es x
1
= 20, x
2
= 60, con Z = 180.
¿Qué ocurriría si se realizaran cambios en los coeficientes de la función objetivo?
Observando la representación gráfica de este problema en la figura 4.1 de la página
112,puede deducirse que si se hicieran pequeñas modificaciones de los coeficientes de
la función objetivo el resultado sería un ligero giro en la representación gráfica de la
función objetivo, sin que se altere, el valor del punto donde se alcanza el valor óptimo,
aunque si se alteraría el valor de Z. En el Análisis de Sensibilidad, que iniciamos
en este capítulo, se estudiarán los efectos producidos por algunas modificaciones en
los datos iniciales. En el caso que estamos tratando, un cambio en los costes, c
i
,
podría mantenerse la solución óptima para ciertos intervalos de variación, aunque
cambiaría el valor del objetivo.
Si lo que cambian son los recursos, bi, algunas aristas de la región factible se
desplazarán paralelamente. En este caso, puede que se mantenga la base óptima
pero en muchos casos, como en el de nuestro ejemplo, variará la solución óptima y
por tanto también el objetivo. Más complicado es ver qué ocurriría cuando cam-
bien los coeficientes tecnológicos (a
ij
) aunque también pueden obtenerse algunas
simplificaciones.
111
112 TEMA 4. ANÁLISIS DE SENSIBILIDAD
Figura 4.1: Problema de Sensibilidad en los costes.
Para realizar este estudio se supone que se tiene una solución óptima del proble-
ma, y que debido a las fluctuaciones del mercado han variado los precios de alguno
de los productos, o se han producido cambios en los recursos disponibles. Partimos
de una solución óptima del problema precedente, pero es necesario realizar algunas
modificaciones debido a los cambios producidos. Por este motivo, el Análisis de
Sensibilidad se conoce también con el nombre de Análisis de Post-optimalidad.
4.2 Cambios discretos
4.2.1 Variación en un coste de una variable no básica
Ejemplo 53 Consideramos el problema
max Z = 60x
1
+ 30x
2
+ 20x
3
,
s.a.
8x
1
+ 6x
2
+x
3
≤ 48
4x
1
+ 2x
2
+ 1.5x
3
≤ 20
2x
1
+ 1.5x
2
+ 0.5x
3
≤ 8
x
1
, x
2
, x
3
no negativos
La tabla de simplex inicial es
cB x
1
x
2
x
2
h
1
h
2
h
3
h
1
0 8 6 1 1 0 0 48
h
2
0 4 2 1.5 0 1 0 20
h
3
0 2 1.5 0.5 0 0 1 8
−60 −30 −20 0 0 0 Z = 0
4.2. CAMBIOS DISCRETOS 113
La tabla de simplex que da la solución óptima es:
60 30 20 0 0 0
x
1
x
2
x
3
h
1
h
2
h
3
0 h
1
0 −2 0 1 2 −8 24
20 x
3
0 −2 1 0 2 −4 8
60 x
1
1 1.25 0 0 −0.5 1.5 2
0 5 0 0 10 10 Z = 280
Se desea realizar un cambio en el coste de x
2
, cuyo valor es 30 a 30 + △, de modo
que se conserve la matriz óptima actual. ¿Qué cambios se producirían en la tabla
anterior?
Recordamos que las filas correspondientes a las restricciones pueden obtenerse
ordenando los cálculos de la forma siguiente:
B
−1
_
B
.
.
. N
.
.
. b
_
=
_
B
−1
B
.
.
. B
−1
N
.
.
. B
−1
b
_
=
_
I
.
.
. B
−1
N
.
.
. B
−1
b
_
y que los costes reducidos de las variables no básicas son c

B
B
−1
N−c

N
, siendo nulos
los costes reducidos de las variables básicas. La solución del problema es:
X
0
B
= B
−1
· b Z
0
= c

B
B
−1
b
qué era óptima si
c

B
B
−1
N −c

N
≥ 0
Por lo tanto, como sólo vamos a cambiar el coste de una variable no básica, sólo puede
alterarse en todo el proceso anterior esta última expresión. Únicamente tendremos
que recalcular z
2
−c
2
, resultaría:
z
2
−c
2
=
_
0 20 60
_
_
_
−2
−2
1.25
_
_
−(30 +△) = 5.0 −△.
La tabla quedaría en este caso en la siguiente forma:
60 30 +△ 20 0 0 0
x
1
x
2
x
3
h
1
h
2
h
3
0 h
1
0 −2 0 1 2 −8 24
20 x
3
0 −2 1 0 2 −4 8
60 x
1
1 1.25 0 0 −0.5 1.5 2
0 5 −△ 0 0 10 10 280
Se observa que la tabla permanecerá óptima si 5−△≥ 0, es decir si △≤ 5. Este
hecho pone de manifiesto que el coste reducido, 5, de una variable no básica, x
2
, en la
tabla óptima es la cantidad máxima en que puede aumentar el coste de esta variable
en la función objetivo sin que varié la actual solución óptima. Por tanto el valor de
114 TEMA 4. ANÁLISIS DE SENSIBILIDAD
c
2
, puede aumentar hasta 35. También el valor de la función objetivo será en este
caso el mismo ya que Z
0
= c

B
B
−1
b y ninguna de estas matrices cambia si c
2
≤ 35.
Igualmente, c
2
puede disminuir todo lo que se quiera, pues no hay restricción para
△ por la izquierda.
Si no se cumpliera esta condición y c
2
pasara a ser, por ejemplo 40, la tabla final
del simplex quedaría:
Max 60 40 20 0 0 0
x
1
x
2
x
3
h
1
h
2
h
3
0 h
1
0 −2 0 1 2 −8 24
20 x
3
0 −2 1 0 2 −4 8
60 x
1
1 1.25 0 0 −0.5 1.5 2
0 −5 0 0 10 10 280
y habría que continuar hasta obtener de nuevo optimalidad. Sale x
1
y entra x
2
,
con lo que la nueva tabla quedará:
Max x
1
x
2
x
3
h
1
h
2
h
3
0 h
1
1.6 0 0 1 1.2 −5.6 27.2
20 x
3
1.6 0 1 0 1.2 −1.6 11.2
30 x
2
0.8 1 0 0 −0.4 1.2 1.6
4 0 0 0 8 16 Z = 288
que ya es la tabla óptima.
La nueva solución óptima con la variación en c
2
= 40 es:
x
1
= 0, x
2
= 1.6, x
3
= 11.2 Z = 288.
4.2.2 Variación en un coste de una variable básica
Supongamos que el cambio lo realizamos ahora en c
1
= 60 que va a tomar el valor
60+△. En este caso puede haber cambios en los costes reducidos de todas las
variables no básicas:
c

B
B
−1
N −c

N
=
= ( 0 20 60 +△ )
_
_
−2 2 −8
−2 2 −4
1.25 −0.5 1.5
_
_

_
30 0 0
_
=
=
_
5.0 + 1. 25△ 10.0 −. 5△ 10.0 + 1. 5△
_
.
La tabla ahora tomaría el siguiente aspecto:
4.2. CAMBIOS DISCRETOS 115
60 +△ 30 20 0 0 0
x
1
x
2
x
3
h
1
h
2
h
3
0 h
1
0 −2 0 1 2 −8 24
20 x
3
0 −2 1 0 2 −4 8
60 +△ x
1
1 1.25 0 0 −0.5 1.5 2
0 5 + 1.25△ 0 0 10 −0. 5△ 10 + 1. 5△ 280 + 2△
La base se mantiene óptima si se verifica que todos las componentes del vector
_
5.0 + 1. 25△ 10.0 −. 5△ 10.0 + 1. 5△
_
son no negativas:
_
_
_
5.0 + 1. 25△≥ 0
10 −0. 5△≥ 0
10.0 + 1. 5△≥ 0
=⇒
_
_
_
△≥ −
5
1.25
= −4.0
△≤ 20
△≥
−10
1.5
= −6. 666 7
=⇒
=⇒−4 ≤ △≤ 20
Es decir que c
1
puede variar entre 56 y 80 manteniéndose óptima la base y la
solución anterior.
El valor del objetivo será:
Z = (60 +△) ∗ 2 + 30 ∗ 0 + 20 ∗ 8 = 280 = 280 + 2△.
Si pasamos estos límites la solución deja de ser óptima. Supongamos que c
1
toma
el valor 100 y por tanto △= 40. La tabla sería:
100 30 20 0 0 0
x
1
x
2
x
3
h
1
h
2
h
3
0 h
1
0 −2 0 1 2 −8 24
20 x
3
0 −2 1 0 2 −4 8
100 x
1
1 1.25 0 0 −0.5 1.5 2
0 55 0 0 −10 70 360
que no es óptima.
Habría que continuar el problema a partir de esta tabla hasta obtener todos los
costes reducidos positivos.
Entra h
2
y sale x
3
, y aplicamos el algoritmo del simplex:
100 30 20 0 0 0
x
1
x
2
x
3
h
1
h
2
h
3
0 h
1
0 −2 0 1 2 −8 24
20 x
3
0 −2 1 0 2

−4 8
100 x
1
1 1.25 0 0 −0.5 1.5 2
0 55 0 0 −10 70 360
La solución óptima del nuevo problema es:
x
1
= 4, x
2
= 0, x
3
= 0, con z = 400.
116 TEMA 4. ANÁLISIS DE SENSIBILIDAD
4.2.3 Cambios en los recursos
Ahora vamos a cambiar un recurso sin cambiar la base, por lo tanto permanece
el valor de B. Revisando las formulas que nos dan la evolución de la tabla, ob-
servamos que los cambios sólo pueden darse en la última columna, ya que X
0
B
=
B
−1
· b y Z
0
= c

B
B
−1
b son las únicas fórmulas donde intervienen los recursos.
En concreto si el cambio se realiza en el segundo recurso:
Lo que varía es
X
0
B
= B
−1
· b =
_
_
1 2 -8
0 2 -4
0 -0.5 1.5
_
_
_
_
48
20 + ∆
8
_
_
=
_
_
24 + 2∆
8 + 2∆
2 −0.5∆
_
_
,
que tendría que tomar todos los valores positivos si queremos que se mantenga la
base actual.
_
_
_
24 + 2∆ ≥ 0
8 + 2∆ ≥ 0
2 −0.5∆ ≥ 0
Si no cumple la restricción anterior, por ejemplo △= 10, la tabla resultante sería
60 30 20 0 0 0
x
1
x
2
x
3
h
1
h
2
h
3
0 h
1
0 −2 0 1 2 −8 44
20 x
3
0 −2 1 0 2 −4 28
60 x
1
1 1.25 0 0 −0.5 1.5 −3
0 5 0 0 10 10 280
Esta solución es dual factible, pero no primal factible y deberemos aplicar el
algoritmo dual del Simplex para continuar la resolución del problema. Tras hacer
una iteración del algoritmo dual del simplex, se obtiene que la solución óptima del
programa modificado, con b
2
= 20 +△= 30, es la siguiente:
x
1
= 0, x
2
= 0, x
3
= 16, con z = 320.
4.2.4 Cambios en los coeficientes tecnológicos
En una columna de una variable no básica
Si en el ejemplo anterior, cambiamos la segunda columna de la matriz de coeficientes
tecnológicos, y ésta pasa a ser (5, 2, 2)
t
, con c
2
= 43, la tabla inicial quedaría:
c
B
x
1
x
2
x
3
h
1
h
2
h
3
h
1
0 8 5 1 1 0 0 48
h
2
0 4 2 1.5 0 1 0 20
h
3
0 2 2 0, 5 0 0 1 8
−60 −43 −20 0 0 0 z = 0
4.3. INCORPORACIÓN DE UNA NUEVA ACTIVIDAD 117
Esto sólo originaría un cambio en la columna 2 de la tabla final, que quedaría como
sigue:
_
_
1 2 -8
0 2 -4
0 -0.5 1.5
_
_
_
_
5
2
2
_
_
=
_
_
−7
−4
2
_
_
,
y en el coste reducido de esta columna sería:
z
2
−c
2
= (0, 20, 60) ∗
_
_
−7
−4
2
_
_
−43 = −3.
Y por tanto la tabla quedaría:
60 30 20 0 0 0
x
1
x
2
x
2
h
1
h
2
h
3
0 h
1
0 −7 0 1 2 −8 24
20 x
3
0 −4 1 0 2 −4 8
60 x
1
1 2 0 0 −0.5 1.5 2
0 −3 0 0 10 10 z = 280
En este caso cambia la base óptima, ya que hay un coste reducido negativo. Con-
tinuamos aplicando el método del Simplex, hasta obtener todos los costes reducidos
no negativos.
Si aplicamos el algoritmo del Simplex a la última tabla, obtenemos la solución
óptima del programa modificado, con los cambios en la columna de la segunda
variable. Dicha solución óptima es:
x
1
= 0, x
2
= 0, x
3
= 16, con z = 320.
Si lo que cambia es la columna de una variable básica el problema es absolutamente
distinto y más complicado, porque ya no se mantiene la matriz básica, por lo que
hay que resolver el problema completamente desde el principio.
4.3 Incorporación de una nueva actividad
Incluimos en este caso una nueva variable en el problema con sus correspondientes
características. Esto equivale a añadir una nueva columna en la tabla de simplex
inicial, que es la única que va a cambiar. Por ejemplo, añadiendo una nueva variable
x
4
con c
4
= 15 y a
t
4
= (1, 1, 1), tenemos:
118 TEMA 4. ANÁLISIS DE SENSIBILIDAD
c
B
x
1
x
2
x
3
x
4
h
1
h
2
h
3
h
1
0 8 6 1 1 1 0 0 48
h
2
0 4 2 1.5 1 0 1 0 20
h
3
0 2 1.5 0, 5 1 0 0 1 8
−60 −30 −20 −15 0 0 0
Si partimos de la misma base sólo hay que cambiar la columna nueva. Permanece
la solución si
z
4
−c
4
= c

B
B
−1
_
_
1
1
1
_
_
−15 resulta no negativo.
En este caso podemos usar la solución del dual c

B
B
−1
= (0, 10, 10). Así que
z
4
−c
4
= (0, 10, 10)
_
_
1
1
1
_
_
−15 = 5, la solución sigue siendo óptima y no hace
falta introducir la nueva actividad en la base.
Si no fuera así calcularíamos la nueva columna de coeficientes. En este caso no es
necesario calcular dicha columna. No obstante, para ilustrar lo que sería necesario
hacer si el coste reducido de la nueva actividad resultara negativo, la calculamos de
todos modos. Entonces la cuarta columna quedaría:
_
_
1 2 -8
0 2 -4
0 -0.5 1.5
_
_
_
_
1
1
1
_
_
=
_
_
−6
−2
1
_
_
.
La nueva tabla quedaría:
60 30 20 15 0 0 0
x
1
x
2
x
3
x
4
h
1
h
2
h
3
0 h
1
0 −2 0 −6 1 2 −8 24
20 x
3
0 −2 1 −2 0 2 −4 8
60 x
1
1 1.25 0 1 0 −0.5 1.5 2
0 5 0 5 0 10 10 z = 280
4.4 Incorporación de nuevas restricciones
Cuando incluimos nuevas restricciones y la solución anterior verifica las nuevas re-
stricciones, esta solución sigue siendo óptima. Las restricciones que no son verificadas
por la solución actual hay que incluirlas en la tabla.
Para ilustrarlo, proponemos el ejemplo anterior, en el que incluimos la restricción:
x
1
+x
2
+x
3
≤ 7 =⇒x
1
+x
2
+x
3
+h
4
= 7, donde h
4
es una variable de holgura.
Como la solución óptima X
B
del problema original es: x
1
= 2, x
2
= 0, x
3
= 8,
4.5. PROGRAMACIÓN PARAMÉTRICA 119
y no verifica la restricción anterior, entonces hay que incluirla.
Tabla I 60 30 20 0 0 0 0
x
1
x
2
x
3
h
1
h
2
h
3
h
4
0 h
1
0 −2 0 1 2 −8 0 24
20 x
3
0 −2 1 0 2 −4 0 8
60 x
1
1 1.25 0 0 −0.5 1.5 0 2
0 h
4
1* 1 1* 0 0 0 1 7
0 5 0 0 10 10 280
Para conservar x
1
y x
3
en la base hay que hacer nulos los elementos señalados
con asterisco en la tabla anterior. Para conseguirlo, basta restar a la fila cuarta la
suma de las dos anteriores. Posteriormente actualizamos la fila de costes reducidos,
obteniendo la Tabla II, que aparece a continuación.
Tabla II 60 30 20 0 0 0 0
x
1
x
2
x
3
h
1
h
2
h
3
h
4
0 h
1
0 −2 0 1 2 −8 0 24
20 x
3
0 −2 1 0 2 −4 0 8
60 x
1
1 1.25 0 0 −0.5 1.5 0 2
0 h
4
0 1.75 0 0 −1.5 2.5 1 −3
0 5 0 0 10 10 0 280
Para continuar el problema hay que emplear el algoritmo dual del simplex. El único
elemento que puede hacer de pivote es el señalado con un recuadro en la tabla
anterior.
Realizando las transformaciones correspondientes, llegamos a la solución óptima.
La solución óptima es x
1
= 3, x
2
= 0, x
3
= 4, Z = 260.
4.5 Programación Paramétrica
4.5.1 Parametrización de los coeficientes de coste
Dado el programa lineal:
Max Z =
_
C
t
+λC
0
t
_
· X
sujeto a AX ≤ b
X ≥ 0
El problema consiste en optimizar Z según los valores de λ.
Los valores anteriores representan:
λ parámetro real,
C coeficientes independientes de la función objetivo,
120 TEMA 4. ANÁLISIS DE SENSIBILIDAD
C
0
vector de coeficientes del parámetro en la función objetivo.
Ejemplo 54 En un problema problema paramétrico cuya función objetivo sea
Z = (3 −λ)x
1
+ (2 + 3λ)x
2
= [(3, 2) +λ(−1, 3)]
_
x
1
x
2
_
los coeficientes del objetivo, siguiendo la notación anterior son:
C =
_
3
2
_
; C
0
=
_
−1
3
_
C
t
= (3, 2); C
0
t
= (−1, 3)
Los costes reducidos para un problema paramétrico se podrán escribir de la forma
siguiente:
(
ˆ
Z
j

´
C
j
)(λ) = (C
t
B
+λC
0
t
B
)y
j
−(C
j
+λC
0
j
) = (4.1)
= C
t
B
y
j
−C
j
+λ(C
0
t
B
y
j
−C
j
) =
= Z
j
−C
j
+λ(Z
0
j
−C
0
j
).
Y el valor de la función objetivo se escribirá
ˆ
Z(λ) = (C
t
B
+λC
0
t
B
)x
B
= C
t
B
x
B
+λC
0
t
B
x
B
= Z +λZ
0
(4.2)
donde hemos denominado:
Z
0
j
−C
0
j
= C
t
0
B
y
j
−C
j
Z
0
= C
t
0
B
x
B
Vamos ahora a concretar cuales son los pasos a seguir para aplicar el algoritmo de
programación paramétrica. Este algoritmo viene sugerido por las expresiones (4.1)
y (4.2) para los costes reducidos y la función objetivo, que marcan una separación
entre la parte paramétrica y la no paramétrica.
Algoritmo de programación paramétrica.
Paso 0: Calcular la solución óptima para λ = 0 y añadir a la tabla final una
primera fila y una primera columna con los valores de C
0
. Además se incluye
una última fila con los Z
0
j
−C
0
j
≥ 0 y Z
0
.
Paso 1: Imponer a la tabla la condición de optimalidad
ˆ
Z
j

´
C
j
≥ 0 (caso max-
imizante), determinando el recorrido del parámetro para el cual la tabla per-
manece óptima.
4.5. PROGRAMACIÓN PARAMÉTRICA 121
Paso 2: Sustituir λ por aquellos valores extremos que sean finitos y aplicar el
algoritmo del simplex hallando la solución correspondiente. Introducid las
columnas no básicas con
ˆ
Z
j

´
C
j
= 0.
Paso 3: Repetir los pasos 1 y 2 hasta que no puedan hallarse nuevas soluciones.
Ejemplo 55 Resolver el programa lineal paramétrico:
Max Z = (4 +λ)x
1
+ (7 −λ)x
2
+ (3 +λ)x
3
s.a.: 2x
1
+x
2
+ 2x
3
≤ 30
x
1
+ 2 ∗ x
2
+ 2x
3
≤ 45
x
1
, x
2
, x
3
≥ 0
Tenemos que C
t
= (4, 7, 3) C
0
t
= (1, −1, 1)
Iteración 1 Paso 0: Si lo revolvemos para λ = 0, tenemos:
Max Z = 4x
1
+ 7x
2
+ 3x
3
s.a.: 2x
1
+x
2
+ 2x
3
+x
4
= 30
x
1
+ 2 ∗ x
2
+ 2x
3
+x
5
= 45
x
1
, x
2
, x
3
, x
4
, x
5
≥ 0
4 7 3 0 0
Max x
1
x
2
x
3
x
4
x
5
X
B
x
4
0 2 1 2 1 0 30
x
5
0 1 2

2 0 1 45
Z
j
−C
j
−4 −7 −3 0 0 Z = 0
min = {
30
1
,
45
2
} =
45
2
.
4 7 3 0 0
Max x
1
x
2
x
3
x
4
x
5
X
B
x
4
0 3/2

0 1 1 -1/2 15/2
x
2
7 1/2 1 1 0 1/2 45/2
Z
j
−C
j
−1/2 0 4 0 7/2 Z = 315/2
min = {
15/2
3/2
,
45/2
1/2
} = 5. Entra x
1
y sale x
4
.
Y obtenemos la tabla óptima para λ = 0 que aparece a continuación:
Tabla I C
0
t
1 −1 1 0 0
C
t
4 7 3 0 0
C
0
t
B
C
t
B
x
1
x
2
x
3
x
4
x
5
X
B
1 x
1
4 1 0 2/3 2/3 -1/3 5
−1 x
2
7 0 1 2/3 -1/3 2/3 20
Z
j
−C
j
0 0 13/3 1/3 10/3 Z = 160
Z
0
j
−C
0
j
0 0 −1 1 −1 Z(λ) = −15
122 TEMA 4. ANÁLISIS DE SENSIBILIDAD
Iteración 1 Paso 1:
Si calculamos (
ˆ
Z
j

´
C
j
)(λ) tenemos:
(
ˆ
Z
j

´
C
j
)(λ) = (Z
j
−C
j
) +λ(Z
0
j
−C
0
j
)
(
ˆ
Z
3

´
C
3
)(λ) = 13/3 + (−1)λ = 13/3 −λ ≥ 0
(
ˆ
Z
4

´
C
4
)(λ) = 1/3 + (1)λ = 1/3 +λ ≥ 0
(
ˆ
Z
5

´
C
5
)(λ) = 10/3 + (−1)λ = 10/3 −λ ≥ 0
λ ≤ 13/3
λ ≥ −1/3
λ ≤ 10/3
Para −
1
3
≤ λ ≤
10
3
la solución óptima es :
x
1
= 5, x
2
= 20, x
3
= 0, z = 160 −15λ.
Iteración 1 Paso 2:
Para λ = −1/3 hay una solución múltiple provocada por la cuarta columna, que
corresponde a una variable no básica con coste reducido nulo.
ˆ
Z
j

´
C
j
= (0, 0, 13/3 −1/3, 1/3 −1/3, 10/3 −(−1/3)) = (0, 0,
14
3
, 0,
11
3
)
Veamos la otra solución básica que corresponde a λ = −1/3. Introduciendo en
la base x
4
sale x
1
pues
y
4
=
_
2/3

−1/3
_
Tabla II C
0
t
1 −1 1 0 0
C
t
4 7 3 0 0
C
0
t
B
C
t
B
x
1
x
2
x
3
x
4
x
5
X
B
0 x
4
0 3/2 0 1 1 −1/2 15/2
−1 x
2
7 1/2 1 1 0 1/2 45/2
Z
j
−C
j
−1/2 0 4 0 7/2 Z = 315/2
Z
0
j
−C
0
j
−3/2 0 −2 0 −1/2 Z(λ) = −45/2
Iteración 2 Paso 1
(
ˆ
Z
j

´
C
j
)(λ) = (Z
j
−C
j
) +λ(Z
0
j
−C
0
j
)
(
ˆ
Z
1

´
C
1
)(λ) = −1/2 −3/2λ ≥ 0
(
ˆ
Z
3

´
C
3
)(λ) = 4 −2λ ≥ 0
(
ˆ
Z
5

´
C
5
)(λ) = 7/2 −1/2λ ≥ 0
4.5. PROGRAMACIÓN PARAMÉTRICA 123
Si λ ≤ −1/3 todos estos costes reducidos son no negativos., así que en este caso
la solución óptima es:
x
1
= 0, x
2
= 45/2, x
3
= 0, Z = 315/2 −(45/2)λ.
Iteración 2 Paso 2:
Para λ = 10/3 hay una solución múltiple provocada por la quinta columna, que
corresponde a una variable no básica con coste reducido nulo.
Z
j
−C
j
= (0, 0,
13
3

10
3
,
1
3
+
10
3
,
10
3

10
3
)) = (0, 0, 1,
11
3
, 0).
Si a partir de la Tabla I, entra en la base x
5
por x
2
pues
y
5
=
_
−1/3
2/3

_
Tabla III C
0
t
1 −1 1 0 0
C
t
4 7 3 0 0
C
0
t
B
C
t
B
x
1
x
2
x
3
x
4
x
5
X
B
1 x
1
4 1 1/2 1 1/2 0 15
0 x
5
0 0 3/2 1 −1/2 1 30
Z
j
−C
j
0 −5 1 2 0 Z = 60
Z
0
j
−C
0
j
0 3/2 0 1/2 0 Z(λ) = 15
Iteración 3 Paso 1
(
ˆ
Z
j

´
C
j
)(λ) = (Z
j
−C
j
) +λ(Z
0
j
−C
0
j
)
(
ˆ
Z
2

´
C
2
)(λ) = −5 + (3/2)λ ≥ 0
(
ˆ
Z
3

´
C
3
)(λ) = 1 ≥ 0
(
ˆ
Z
4

´
C
4
)(λ) = 2 + (1/2)λ ≥ 0
De aquí se obtiene que λ ≥ 10/3 y λ ≥ −4 (Redundante).
Así que para λ ≥ 10/3 la solución óptima es:
x
1
= 15, x
2
= 0, x
3
= 0, Z = 60 + 15λ.
Iteración 3 Paso 2:
Ya no hay más soluciones posibles.
En resumen la solución del problema paramétrico es:
Si −∞≤ λ ≤ −
1
3

_
¸
¸
_
¸
¸
_
x
1
= 0
x
2
=
45
2
x
3
= 0
Z =
315
2

45
2
λ
124 TEMA 4. ANÁLISIS DE SENSIBILIDAD
Si −
1
3
≤ λ ≤
10
3

_
¸
¸
_
¸
¸
_
x
1
= 5
x
2
= 20
x
3
= 0
Z = 160 −15λ
Si
10
3
≤ λ ≤ ∞ →
_
¸
¸
_
¸
¸
_
x
1
= 15
x
2
= 0
x
3
= 0
Z = 60 + 15λ
4.5.2 Parametrización de los recursos
Dado el programa lineal:
Max Z = C
t
· X
sujeto a AX ≤ b +λb
0
X ≥ 0
Si definimos
ˆ
X
B
(λ) = B
−1
(b +λb
0
) = B
−1
b +λB
−1
b
0
= X
B
+λX
0
B
−→X
0
B
= B
−1
b
0
ˆ
Z(λ) = C
t
B
ˆ
X
B
= C
t
B
(X
B
+λX
0
B
) = C
t
B
X
B
+λC
t
B
X
0
B
= Z +λZ
0

siendo −→Z
0
= C
t
B
X
0
B
.
Algoritmo de programación paramétrica.
Paso 0: Calcular la solución óptima para λ = 0 y añadir a la tabla final una columna
con los X
0
B
y Z
0
.
Paso 1: Imponer a la tabla la condición de factibilidad X
B
(λ) ≥ 0 (tanto para el
caso maximizante como para el caso minimizante) determinando el recorrido
del parámetro para el cual la tabla permanece óptima.
Paso 2: Sustituir λ por aquellos valores extremos que sean finitos y aplicar el
algoritmo dual del simplex a las filas con X
B
(λ) = 0.
Paso 3: Repetir los pasos 1 y 2 hasta que no puedan hallarse nuevas soluciones.
Ejemplo 56 Resolver el siguiente problema de programación paramétrica de los
recursos
Max Z = 4x
1
+ 7x
2
+ 3x
3
s.a.: 2x
1
+x
2
+ 2x
3
≤ 30 −λ
x
1
+x
2
+ 2x
3
≤ 45 −2λ
x
1
, x
2
, x
3
≥ 0
b =
_
30
45
_
b
0
=
_
−1
−2
_
4.5. PROGRAMACIÓN PARAMÉTRICA 125
Paso 0:
La tabla final con λ = 0 es la que aparece en el ejemplo anterior.
C
t
4 7 3 0 0
C
t
B
x
1
x
2
x
3
x
4
x
5
X
B
x
1
4 1 0 2/3 2/3 -1/3 5
x
2
7 0 1 2/3 -1/3 2/3 20
Z
j
−C
j
0 0 13/3 1/3 10/3 Z = 160
Tenemos por tanto que la matriz B
−1
es la siguiente:
B
−1
=
_
2/3 −1/3
−1/3 2/3
_
Y por tanto tendremos que
X
0
B
= B
−1
· b
0
=
_
2/3 −1/3
−1/3 2/3
__
−1
−2
_
=
_
0
−1
_
;
Z
0
= C
t
B
X
0
B
. =
_
4 7
_
_
0
−1
_
= −7
C
t
4 7 3 0 0
C
t
B
x
1
x
2
x
3
x
4
x
5
X
B
x
1
4 1 0 2/3 2/3 -1/3 5 0
x
2
7 0 1 2/3 -1/3 2/3 20 -1
Z
j
−C
j
0 0 13/3 1/3 10/3 Z = 160 -7
Iteración 1. Paso 1:
ˆ
X
B
(λ) = X
B
+λX
0
B
Si imponemos la condición de factibilidad
ˆ
X
B
(λ) ≥ 0 tendremos
ˆ
X
B
(λ) ≥ 0 =⇒
5 ≥ 0
20 −λ ≥ 0
_
=⇒ λ ≤ 20.
Así para λ ≤ 20 tendremos que la solución óptima será:
x
1
= 5
x
2
= 20 −λ
x
3
= 0
_
_
_
con Z = 160 −7λ.
Iteración 1. Paso 2: Para λ = 20 obtenemos que
ˆ
X
B
(λ) = (5, 0). Por lo
que hay solución múltiple. Entra en la base la variable x
4
y sale de la base x
2
. Si
Aplicamos el algoritmo dual del simplex, la nueva tabla queda:
126 TEMA 4. ANÁLISIS DE SENSIBILIDAD
C
t
4 7 3 0 0
C
t
B
x
1
x
2
x
3
x
4
x
5
X
B
X
0
B
x
1
4 1 2 2 0 1 45 -2
x
4
0 0 -3 -2 1 -2 -60 3
Z
j
−C
j
0 1 5 0 4 Z = 180 Z
0
=-8
Paso 3
Iteración 3 Paso 1. Así tendremos que imponiendo la condición de factibilidad
ˆ
X
B
(λ) ≥ 0 =⇒
45 −2λ ≥ 0
−60 + 3λ ≥ 0
_
=⇒
λ ≤ 45/2
λ ≥ 20
_
Por tanto si 20 ≤ λ ≤ 45/2. la solución óptima que se obtiene es:
x
1
= 45 −2λ
x
2
= 0
x
3
= 0
_
_
_
con z = 180 −8λ.
Iteración 2 Paso 2.
Para λ = 45/2
C
t
4 7 3 0 0
C
t
B
x
1
x
2
x
3
x
4
x
5
X
B
x
1
4 1 2 2 0 1 0
x
4
0 0 -3 -2 1 -2
15
2
Z
j
−C
j
0 1 5 0 4 Z = 0
¯
X
B
(
45
2
) =
_
x
1
x
4
_
=
_
0
15
2
_
Para λ > 45/2 ⇒45−2λ ≤ 0. Si aplicaramos el dual del simple, como la primera
fila tiene los coeficientes positivos, el dual sería no acotado y por tanto.el problema
primal sería infactible.
En resumen, la solución de este problema paramétrico es:
Si λ ≤ 20 →
_
¸
¸
_
¸
¸
_
x
1
= 5
x
2
= 20 −λ
x
3
= 0
Z = 160 −7λ
Si 20 ≤ λ ≤
45
2

_
¸
¸
_
¸
¸
_
x
1
= 45 −2λ
x
2
= 0
x
3
= 0
Z = 180 −8λ
Si λ >
45
2
→ El problema no tiene solución
Tema 5
El problema de transporte
5.1 Introducción
Este problema se plantea cuando han de distribuirse bienes o servicios que se pro-
ducen en diferentes lugares (orígenes) y que son demandados en diferentes ubica-
ciones (destinos). El propósito del problema de transporte es minimizar los gastos
que se producen al transportar los artículos desde los orígenes a los destinos.
Ilustramos el problema con el esquema del siguiente ejemplo (ver figura 5.1):
Ejemplo 57 A y B son los puntos de origen con disponibilidad de 30 y 15 unidades
para transportar. Los destinos están representados por los nodos 1, 2, 3 que deman-
dan 15, 5, 25 unidades respectivamente. Los números sobre las líneas indican el
coste que se produce al transportar una unidad por esa ruta.
También se suelen resumir los datos en una tabla, como se muestra en el ejemplo
que sigue.
Ejemplo 58 Una empresa dispone de tres almacenes que debe servir sacos de ce-
mento a cuatro clientes. La demanda de cada cliente, la capacidad de cada almacen
y el coste de enviar un saco desde cada almacen a cada uno de las clientes vienen
dados en la tabla:
Cliente 1 Cliente 2 Cliente 3 Cliente 4 Capacidad
Almacen 1 8 6 10 9 35
Almacen 2 9 12 13 7 50
Almacen 3 14 9 16 5 40
Demanda 45 20 30 30 125
127
128 TEMA 5. EL PROBLEMA DE TRANSPORTE
A
B
3
2
1 7
5
2
4
15
5
5
3
25
15
30
Figura 5.1: Diagrama de transporte.
5.2 Planteamiento como un problema de progra-
mación lineal
El problema del ejemplo 58 es balanceado o equilibrado. Esto significa que la suma
de las unidades producidas es igual a la suma de las unidades demandadas. En
este caso la producción total es 35 + 50 + 40 = 125 sacos y la demanda total es
45 + 20 + 30 + 30 = 125 sacos. El problema tiene 4 + 3 = 7 restricciones y 12
variables. Llamando x
ij
la cantidad enviada desde la planta i a la ciudad j, el
problema consiste en minimizar los costes de transporte, esto es:
min 8x
11
+6x
12
+10x
13
+9x
14
+9x
21
+12x
22
+13x
23
+7x
24
+14x
31
+9x
32
+16x
33
+5x
34
s.a.:
_
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
_
¸
¸
¸
¸
¸
¸
¸
¸
¸
¸
_
x
11
+x
12
+x
13
+x
14
= 35
x
21
+x
22
+x
23
+x
24
= 50
x
31
+x
32
+x
33
+x
34
= 40
x
11
+x
21
+x
31
= 45
x
12
+x
22
+x
32
= 20
x
13
+x
23
+x
33
= 30
x
14
+x
24
+x
34
= 30
con x
ij
≥ 0
Aunque hay 7 restricciones solo 6 de ellas son independientes (cualquiera de ellas
puede obtenerse por combinación lineal de las restantes). Por ejemplo la última
ecuación puede obtenerse restando a la suma de las tres primeras la suma de las tres
siguientes. Por este motivo la base está formada por 6 elementos. Obsérvese que por
la forma del sistema el problema dual solo tiene dos incógnitas en cada ecuación.
Este hecho es el que se utiliza para simplificar el método de Simplex dando lugar al
Algoritmo de Transporte que describiremos en este tema.
5.3. PROBLEMA NO EQUILIBRADO 129
5.3 Problema no equilibrado
Cuando el problema no es balanceado (equilibrado), se transforma en uno balanceado
creando un origen ficticio o un destino ficticio:
Si la demanda es mayor que la oferta creamos un origen ficticio con
producción = demanda total - oferta total.
Si la demanda es menor que la oferta creamos un destino ficticio con
demanda = oferta total - demanda total
Normalmente, en ambos casos se asigna un coste de transporte nulo, ya que las
unidades no se mueven desde origen ficticio o hacia destino ficticio. No obstante, en
ocasiones, pueden asignarse costes no nulos al origen ficticio, que puede interpretarse
como el coste de almacenamiento debido al exceso de oferta. De forma análoga, se
puede asignar un coste no nulo al destino ficticio, que se supone equivalente a la
estimación del gasto asociado al hecho de no atender la demanda, ya que este hecho
puede acarrear como consecuencia la pérdida de clientes.
5.4 Propiedades del problema de transporte
1. El problema de transporte tiene al menos una solución factible: x
ij
=
ai·bj
M
donde
M es la cantidad total transportada, a
i
la disponibilidad del origen i y b
j
la demanda
del destino j.
2. Si las demandas y disponibilidades son enteras se llama solución básica factible
de un problema de transporte a una solución entera que verifica las restricciones de
disponibilidad y demanda con a lo sumo m+n −1 variables distintas de cero (m =
n
o
de orígenes, n = n
o
de destinos). Este problema de transporte tiene siempre
solución básica factible.
3. Si para un problema de transporte se determina una solución básica factible
inicial, entonces todas las que se obtengan de ella por el método de simplex son
básicas factibles.
4. El problema de transporte es acotado.
5.5 Determinación de una solución inicial
Como cualquier método de simplex, el algoritmo de transporte precisa de una solu-
ción básica factible inicial. Exponemos a continuación varios métodos que nos per-
miten hallar una solución de partida.
130 TEMA 5. EL PROBLEMA DE TRANSPORTE
5.5.1 Método de la esquina Noroeste
Este método nos conduce a una solución factible con, a lo sumo, m+n−1 variables
no negativas.
Hay que aplicar el siguiente algoritmo:
1) Partiendo de la esquina superior izquierda de la tabla (la esquina Noroeste) con
i = j = 1 hacer x
ij
= min(a
i
, b
j
) y restar esta cantidad a a
i
, b
j
de modo que bien
una fila o una columna de la tabla quede satisfecha. Se elimina esta fila o columna
de la tabla.
2) Si no queda fila o columna parar. En caso contrario aplicar de nuevo el paso 1 a
la tabla resultante
3) Igualad a ceros las x
ij
que no tienen valor asignado.
Aplicamos este método al problema de transporte del ejemplo 58 de la página
127.
Ejemplo 59
Destino 1 Destino 2 Destino 3 Destino 4 Producción
Origen1 8 6 10 9 35
Origen 2 9 12 13 7 50
Origen 3 14 9 16 5 40
Demanda 45 20 30 30 125
Se comienza el algoritmo seleccionando la celda (1,1) (la esquina NO). Se asigna
a x
11
el valor 35 = min{35, 45} . Se resta este valor a a
1
= 35 y a b
1
= 45, con lo
que la disponibilidad del primer origen se agota. Los elementos recuadrados son los
que se van eliminando.
Destino 1 Destino 2 Destino 3 Destino 4 Producción
Origen 1 35 - - - 35 0
Origen 2 50
Origen 3 40
Demanda 45 10 20 30 30
Los valores de la solución inicial para las variables de la primera fila quedan ya
decididos y se deja de considerar esta fila en los siguientes pasos del algoritmo.
Destino 1 Destino 2 Destino 3 Destino 4 Producción
O r i g e n 1 3 5 - - - 3 5
Origen 2 50
Origen 3 40
Demanda 45 10 20 30 30
5.5. DETERMINACIÓN DE UNA SOLUCIÓN INICIAL 131
Ahora la esquina NO es la celda (2,1). Repitiendo el proceso obtenemos
Destino 1 Destino 2 Destino 3 Destino 4 Producción
O r i g e n 1 3 5 - - - 3 5
Origen 2 10 50 40
Origen 3 40
Demanda 45 10 0 20 30 30
Se elimina la primera columna.
D e s t i n o 1 Destino 2 Destino 3 Destino 4 Producción
O r i g e n 1 3 5 - - - 3 5
Origen 2 1 0 20 50 40 20
Origen 3 - 40
Demanda 4 5 20 0 30 30
Seleccionamos ahora la esquina NO, que es la celda (2,2). De este modo queda
eliminada la segunda columna, por quedar fijados los valores de sus variables en la
salución inicial..
D e s t i n o 1 D e s t i n o 2 Destino 3 Destino 4 Producción
O r i g e n 1 3 5 - - - 3 5
Origen 2 1 0 2 0 20 50 40 20 0
Origen 3 - - 40
Demanda 4 5 2 0 30 10 30
Continuando el algoritmo obtenemos sucesivamente las tablas:
D e s t i n o 1 D e s t i n o 2 Destino 3 Destino 4 Producción
O r i g e n 1 3 5 - - - 3 5
O r i g e n 2 1 0 2 0 2 0 - 5 0
Origen 3 - - 10 40 30
Demanda 4 5 2 0 30 10 0 30
D e s t i n o 1 D e s t i n o 2 D e s t i n o 3 Destino 4 Producción
O r i g e n 1 3 5 - - - 3 5
O r i g e n 2 1 0 2 0 2 0 - 5 0
Origen 3 - - 1 0 30 40 30 0
Demanda 4 5 2 0 3 0 30 0
132 TEMA 5. EL PROBLEMA DE TRANSPORTE
D e s t i n o 1 D e s t i n o 2 D e s t i n o 3 D e s t i n o 4 Producción
O r i g e n 1 3 5 - - - 3 5
O r i g e n 2 1 0 2 0 2 0 - 5 0
O r i g e n 3 - - 1 0 3 0 4 0
Demanda 4 5 2 0 3 0 3 0
Las casillas con guiones contendrían los valores nulos.
La solución inicial será:
35
8
0
6
0
10
0
9
10
9
20
12
20
13
0
7
0
14
0
9
10
16
30
5
Los subíndices son los costes correspondientes a la casilla.
Esta solución, que tiene 3 + 4 −1 = 6 variable no nulas, es una solución básica
factible.
El valor del objetivo para esta solución es:
8 ×35 + 9 ×10 + 12 ×20 + 13 ×20 + 16 ×10 + 5 ×30 = 1180 u.m.
5.5.2 Método de costo mínimo
En este método se tiene en cuenta el costo correspondiente a cada celda.
Consiste en la aplicación del siguiente algoritmo:
1. Localizar la celda que tenga asignado el menor costo y asignarle la mayor
cantidad posible de flujo (como se hace en la celda superior izquierda en el
método de la Esquina Noroeste). Si hay empate en el mínimo coste, elegir la
celda a la que pueda asignarse una mayor cantidad de flujo. Si hay empate en
el costo y en el flujo elegir una de estas celdas arbitrariamente.
2. Reducir la oferta y la demanda en la cantidad de flujo que se ha asignado a
la celda seleccionada y poner ceros en las restantes celdas. Los valores de la
solución inicial en esta fila o columna ya quedan decididos. Para continuar
asignando valores en las siguientes filas o columnas, se deja de considerar la
fila o columna que ya ha quedado saturada.
3. Si se han agotado todas las ofertas o demandas, igualad a cero las x
ij
que no
tienen valor asignado y ya tenemos la solución básica factible inicial. En caso
contrario, volver al paso 1.
En las siguientes tablas mostramos la aplicación de este algoritmo al caso del
ejemplo 59.
5.5. DETERMINACIÓN DE UNA SOLUCIÓN INICIAL 133
En el primer paso elegimos la celda (3,4), por ser la de coste mínimo, 5, y le
asignamos un flujo de 30,
8 6 1 0 9 35
9 1 2 1 3 7 50
1 4 9 1 6 (30)5 40 ,10
45 20 30 30 , 0
La solución de la columna cuarta queda decidida. En la siguiente tabla escribimos
está columna, con letra más pequeña para dejar de considerarla en los siguientes
pasos.
8 6 1 0 - 35
9 1 2 1 3 - 50
1 4 9 1 6 3 0 40 ,10
45 20 30 3 0
Seleccionamos ahora la (1,2), que es la celda de menor coste, 6, entre las cel-
das que permanecen, asignándole el valor 20 = min(35, 20), con lo la segunda
columna.queda decidida y deja de considerarse.
8 2 0 1 0 - 35 15
9 - 1 3 - 50
1 4 - 1 6 3 0 40 ,10
45 2 0 30 3 0
En la tabla resultante se selecciona la celda (1,1) con coste 8, asignandole el
valor 15, lo que permite eliminar la primera fila.
1 5 2 0 - - 3 5
9 - 1 3 - 50
1 4 - 1 6 3 0 10
45 30 2 0 30 3 0
Repitiendo el proceso resultan sucesivamente seleccionadas las celdas (2,1), (2,3) y
(3,3):
1 5 2 0 - - 3 5
3 0 - 1 3 - 50 20
- - 1 6 3 0 10
4 5 2 0 30 3 0
1 5 2 0 - - 3 5
3 0 - 2 0 - 5 0
- - 1 6 3 0 10
4 5 2 0 30 10 3 0
1 5 2 0 - - 3 5
3 0 - 2 0 - 5 0
- - 1 0 3 0 5 0
4 5 2 0 3 0 3 0
134 TEMA 5. EL PROBLEMA DE TRANSPORTE
Así que la solución inicial obtenida por este método es:
15
8
20
6
0
10
0
9
30
9
0
12
20
13
0
7
0
14
0
9
10
16
30
5
El valor de la función objetivo para esta solución es:
8 ×15 + 6 ×20 + 9 ×30 + 13 ×20 + 16 ×10 + 5 ×30 = 1080 u.m.
que es mejor que la solución obtenida previamente por el método de la esquina
noroeste (ENO).
5.5.3 Método de Vogel
Aunque este método requiere más esfuerzo, suele suministrar una solución inicial
más cercana a la óptima.
La aplicación del método de Vogel requiere seguir los siguientes pasos:
1. Definimos la Penalización por fila y columna como la diferencia (en valor ab-
soluto) entre los dos costes menores de esta fila o columna..
2. Elegir la fila o columna de mayor penalización (en caso de empate seleccionar
cualquiera de ellas arbitrariamente) y situar en la celda de menor coste el
mayor número posible de unidades, disminuyendo las demandas y ofertas en la
cantidad situada en esta celda. Eliminar la fila o columna cuya disponibilidad
o demanda sea 0.
3. Repetir los pasos 1 y 2 con la tabla restante.
4. Igualar a cero las incógnitas no definidas por el algoritmo anterior.
Aplicamos el método de Vogel al mismo problema 59:
1. Las penalizaciones correspondientes a las filas y columnas están indicadas en
la última columna y fila de la siguiente tabla:
D 1 D 2 D 3 D 4 Producción Pen. fil
O 1 8 6 1 0 9 35 2
O 2 9 1 2 1 3 7 50 2
O 3 1 4 9 1 6 5 40 4
Demanda 45 20 30 30
Pen. col 1 3 3 2
5.5. DETERMINACIÓN DE UNA SOLUCIÓN INICIAL 135
2. Seleccionamos la fila tercera (penalización 4) y la celda correspondiente a la
ciudad 4 cuyo coste (5) es el menor de esta fila. Aquí colocamos el valor 30 y
actuamos de forma similar al método de la esquina noroeste
D 1 D 2 D 3 D 4 Producción Pen fil
O 1 8 6 1 0 9 35 2
O 2 9 1 2 1 3 7 50 2
O 3 1 4 9 1 6 (30)5 40 10 4
Demanda 45 20 30 30 0
Pen col 1 3 3 2
Suprimo la columna cuarta y volvemos al paso 1 calculando de nuevo las pena-
lizaciones
D 1 D 2 D 3 D 4 Producción Pen fil
O 1 8 6 1 0 - 35 2
O 2 9 1 2 1 3 - 50 3
O 3 1 4 9 1 6 3 0 40 10 5
Demanda 45 20 30 3 0
Pen col 1 3 3
Seleccionamos ahora la fila tercera (penalización 5) y la celda correspondiente a
la D2, cuyo coste (9), es el menor de la fila. Aquí colocamos el valor 10, que es el
máximo posible.
D 1 D 2 D 3 D 4 Producción Pen fil
O 1 8 6 1 0 - 35 2
O 2 9 1 2 1 3 - 50 3
O 3 1 4 (10)9 1 6 3 0 40 10 0 5
Demanda 45 20 10 30 3 0
Pen col 1 3 3
Eliminamos la fila tercera y calculamos de nuevo las penalizaciones. La mayor
penalización corresponde a la columna D2 (penalización 6). Seleccionamos casilla
primera de la columna D2, su coste 6 es el mínimo de esta columna, y asignamos el
valor 10 = min(35, 10). Suprimimos despues la columna segunda.
D 1 D 2 D 3 D 4 Producción Pen fil
O 1 8 1 0 1 0 - 35 25 2
O 2 9 - 1 3 - 50 4
O 3 1 4 1 0 - 3 0 4 0
Demanda 45 2 0 30 3 0
Pen col 1 3
136 TEMA 5. EL PROBLEMA DE TRANSPORTE
En la fila 2 (mayor penalización), selecciono la D1 de coste 9, y colocamos el
valor 45, eliminando la primera columna.
D 1 D 2 D 3 D 4 Producción Pen fil
O 1 8 1 0 1 0 - 35 25 2
O 2 459 - 1 3 - 50 5 4
O 3 - 1 0 - 3 0 4 0
Demanda 45 0 2 0 30 3 0
Pen col 1 3
D 1 D 2 D 3 D 4 Producción Pen fil
O 1 - 1 0 1 0 - 35 25 0
O 2 4 5 - 1 3 - 50 5 0
O 3 - 1 0 - 3 0 4 0
Demanda 4 5 2 0 30 3 0
Pen col 3
Se asigna ahora el valor 25 en la casilla (1,3) suprimiendose depués la fila 1 que
queda saturada.
D 1 D 2 D 3 D 4 Producción Pen fil
O 1 - 1 0 25 - 35 25 0 0
O 2 4 5 - 1 3 - 50 5 0
O 3 - 1 0 - 3 0 4 0
Demanda 4 5 2 0 30 5 3 0
Pen col 3
Por último obtenemos la solución inicial de Vogel asignando el valor 5 en la
casilla (2,3):
D 1 D 2 D 3 D 4
O 1 08 106 251 0 09
O 2 459 01 2 51 3 07
O 3 01 4 109 01 6 305
El valor de la función objetivo correspondiente a la solución inicial de Vogel es:
6 ×10 + 10 ×25 + 9 ×45 + 13 ×5 + 9 ×10 + 5 ×30 = 1020 u.m.
Una vez se conoce alguna solución básica factible, obtenida por uno de los tres
métodos anteriores, o por cualquier otro, se puede iniciar, el algoritmo de transporte,
de igual forma que se hace en el método de simplex, aceptando la solución actual si
es la óptima, o hallando una solución mejorada si este no fuera el caso. Para pasar
de una solución básica a otra es importante el concepto de ciclo que se da en el
siguiente apartado.
5.6. DEFINICIÓN DE CICLO 137
5.6 Definición de Ciclo
Un ciclo es una sucesión de al menos 4 celdas cumpliendo las condiciones siguientes:
1. Dos celdas consecutivas están en la misma fila o en la misma columna.
2. Tres celdas consecutivas no están en la misma fila o columna.
3. La primera y la ultima celda están, bien en la misma fila, bien en la misma
columna.
Los esquemas que siguen representan distintos modelos de ciclos. Las celdas que
forman el ciclo son las que contienen las puntas de flecha. Se puede comenzar el
ciclo por cualquiera de estas celdas.
Ejemplos de diversos tipos de ciclos.
Teorema 10 En un problema de transporte con m orígenes y n destinos, un con-
junto de m + n − 1 celdas no contiene ciclos si y solo si las m + n − 1 variables
correspondientes a estas celdas son básicas.
5.7 Algoritmo de transporte (forma minimizante)
El algoritmo que tratamos aquí es una adaptación del método de Simplex y es
aplicable a problemas balanceados. Si el problema no fuera balanceado hay que
equilibrarlo previamente añadiendo un origen o un destino ficticio, según proceda.
Suponemos que las soluciones obtenidas en cada paso del algoritmo no son dege-
neradas, es decir que hay m+n−1 posiciones localizadas distintas de cero. La forma
de actuar en el caso de que la solución sea degenerada se tratará más adelante.
138 TEMA 5. EL PROBLEMA DE TRANSPORTE
El algoritmo de transporte consta de los siguientes pasos.
1. Construir una solución básica factible.
2. Analizar si la solución actual es la óptima o mejorarla en su caso:
(a) Resolver el sistema u
i
+v
j
−c
ij
= 0 (una ecuación para cada una de las
variables básicas de la solución actual). Las incógnitas de este sistema son
u
i
y v
j
, siendo c
ij
el coste asignado al transporte en la celda (i, j) de la
base. Dar arbitrariamente el valor 0 a una de las incógnitas.
(b) Determinar el coste reducido (u
i
+ v
j
− c
ij
) de las variables no básicas
usando las soluciones del sistema resuelto en el paso 2.a. Si todos estos
costes redocidos son no positivos (valores nulos o negativos) la solución
actual es óptima y hemos resuelto el problema. Si no es así la variable
que entra en la base es la que corresponde al mayor coste reducido.
(c) Construcción de una nueva solución básica: Partiendo de la posición de
la variable de entrada hallada en el paso anterior construir un ciclo que
incluya esta variable y alguna de las variables de la solución básica actual.
Usar a continuación sobre este ciclo el siguiente procedimiento: A la celda
de la variable de entrada le asignaremos + y a las restantes del ciclo
alternativamente los signos −, +, −, +... Localizamos la celda, entre las
señaladas con −, con menor valor para la solución Restamos este valor
a la solución de estas celdas y se lo sumamos al de las marcadas con +.
Si más de una celda tuviera este menor valor de x
ij
, elegir la de menor
costo. Con esto una variable quedará a nivel 0 y por tanto saldrá de la
base. Hemos obtenido de esta forma una nueva solución básica.
3. Ir al paso 2
Aplicamos el algoritmo de transporte al problema 59, usando como solución
inicial la que hemos hallado por el método de la esquina noroeste (ENO), que era:
D 1 D 2 D 3 D 4 Producción
O 1 35 35
O 2 10 20 20 50
O 3 10 30 40
Demanda 45 20 30 30
Esta solución tiene 3+4−1 = 6 variable no nulas, por lo tanto no es degenerada.
El valor del objetivo es:
8 ∗ 35 + 9 ∗ 10 + 12 ∗ 20 + 13 ∗ 20 + 16 ∗ 10 + 5 ∗ 30 = 1180 u.m.
Fijamos 4 posiciones en cada celda, con objeto de incorporar ordenadamente la
información que va obteniéndose a lo largo del algoritmo. Cada celda tendrá:
5.7. ALGORITMO DE TRANSPORTE (FORMA MINIMIZANTE) 139
solución coste reducido
signo precio unitario
En la última fila o columna ponemos la solución u
i
, v
j
del sistema correspondiente
formado por las siguientes 3 + 4 −1 = 6 ecuaciones:
u
1
+v
1
= 8, u
2
+v
1
= 9 , u
2
+v
2
= 12, u
2
+v
3
= 13, u
3
+v
3
= 16, u
3
+v
4
= 5
Tomando u
1
= 0, se obtiene sucesivamente:
v
1
= 8, u
2
= 1, v
2
= 11, v
3
= 12, u
3
= 4, v
4
= 1
D 1 D 2 D 3 D 4 u
i
O 1
(35)
8
5
6
2
10
-8
9
0
O 2
(10)
9
(20)
- 12

(20)
+ 13

-5
7
1
O 3
-2
14
6*
+ 9

(10)
- 16

(30)
5
4
v
j
8 11 12 1
El coste reducido máximo, que en este caso es 6, lo marcamos con un asterisco.
En esta celda va a estar la variable que entra en la base. . El coste reducido más
positivo corresponde a la posición (3,2) cuyo coste reducido es 6. Esta variable es
la que va a entrar de la base. Para determinar la variable que va a salir construyo
el ciclo, que está marcado con flechas: (3,2),(3,3),(2,3),(2,2). Los signos asignados
son respectivamente +, −, +, −. En las casillas señaladas con − la variable toma
los valores 10 y 20. Siendo 10 el menor valor. Es por tanto x
33
la variable que va
a salir de la base. Resto 10 unidades a las casillas señaladas con − y sumo 10 a las
celdas señaladas con más, obteniéndose la nueva solución.
D 1 D 2 D 3 D 4 u
i
O 1
(35)
- 8

5*
+ 6

2
10
−2
9
0
O 2
(10)
+ 9

(10)
- 12

(30)
13
1
7
1
O 3
−8
14
(10)
9
−6
16
(30)
5
−2
v
j
8 11 12 7
El sistema correspondiente a este nueva solución es:
u
1
+v
1
= 8, u
2
+v
1
= 9 , u
2
+v
2
= 12, u
2
+v
3
= 13, u
3
+v
2
= 9, u
3
+v
4
= 5
Tomando u
1
= 0, se obtiene sucesivamente:
140 TEMA 5. EL PROBLEMA DE TRANSPORTE
v
1
= 8, u
2
= 1, v
2
= 11, v
3
= 12, u
3
= −2, v
4
= 7
El valor del objetivo para esta solución es ahora:
8 ∗ 35 + 9 ∗ 10 + 12 ∗ 10 + 13 ∗ 30 + 9 ∗ 10 + 5 ∗ 30 = 1120 u.m.
Ahora el pivote está en la posición (1,2) correspondiente al coste reducido má-
ximo, y la variable que entra es x
12
, y la que sale x
22
. Restamos 10 a los valores
de las celdas (2,2), (1,1), que están señaladas con el signo menos, y sumamos 10 a
los de las celdas (1,2), (2,1) que están marcadas con el signo más. Obtenemos una
solución básica factible mejorada:
D 1 D 2 D 3 D 4
O 1 25 10
O 2 20 30
O 3 10 30
con valor del objetivo 1070 u.m.
Repitiendo el proceso llegamos a la tabla siguiente que tampoco es óptima por
tener valor 2 en la posición (1,3), con coste reducido 2, que como es el más positivo
resulta ser el pivote. El ciclo y las asignaciones de signo también están señaladas en
la tabla:
D 1 D 2 D 3 D 4 u
i
O 1
(25)
- 8

10
6
2*
+ 10

−7
9
0
O 2
(20)
+ 9

−5
12
(30)
- 13

−4
7
1
O 3
−3
14
(10)
9
−1
16
(30)
5
3
v
j
8 6 12 2
Ahora el valor mínimo de las celdas señaladas con − es 25. Este valor se resta
a las marcadas con − y se le suma a las marcadas con +, obteniéndose la nueva
solución:
D 1 D 2 D 3 D 4
O 1 10 25
O 2 45 5
O 3 10 30
El valor del objetivo es 1020 u.m.
Esta solución es ya optima, pues obtenemos, como puede verse en la siguiente
tabla, todos los costes reducidos negativos o cero.
5.8. SOLUCIONES DEGENERADAS 141
D 1 D 2 D 3 D 4 u
i
O 1
−2
8
10
6
25
10
−7
9
0
O 2
(45)
9
−3
12
5
13
−2
7
3
O 3
−5
14
(10)
9
−3
16
(30)
5
3
v
j
6 6 10 2
5.8 Soluciones degeneradas
Una solución básica se llama degenerada cuando contiene menos de m+n−1 variables
básicas no nulas.
Para aplicar el algoritmo de transporte es necesario partir de una solución no
degenerada, es decir, que contenga m+n −1 celdas no nulas. En el caso de que la
solución disponible sea degenerada, es preciso completar la base con algunas celdas
hasta completar las m+n−1 posiciones requeridas. Para ello se actúa del siguiente
modo:
Intentar construir un ciclo comenzando en una celda vacía. Asignar la variable
correspondiente a esta celda a la base si no es posible construir un ciclo. Si hay varias
posibilidades es mejor seleccionar las de precio más bajo y asignar a esta posición el
valor ε, que se supone que es un número positivo muy pequeño. Usar esta posición
y el valor de la ε asignado como si fuera una variable básica. Cuando los costes
reducidos son todos no positivos se llega igualmente a la solución óptima y entonces
damos a ε el valor 0.
Ejemplo 60 Si un problema tiene la solución inicial indicada en la tabla siguiente
(los únicos valores no nulos están indicados entre paréntesis y el coste del transporte
está indicado con el número más pequeño).
Ciudad 1 Ciudad 2 Ciudad 3 Ciudad 4
Planta 1 (5) 3 (3)4 NO1 2
Planta 2 NO1 (2)5 (7)3 7
Planta 3 2 1 1 (6)3
Completad las 5 posiciones no nulas con una nueva celda para llegar a una solución
básica factible no degenerada (con 6 elementos no nulos).
Comenzamos seleccionando una celda vacia, que se añadirá a las de la base de
forma que no puedan formarse ciclos con esta celda añadida y las 5 celdas no nulas
de la solución anterior. Las posiciones prohibidas, aquellas que permiten formar
ciclos, están indicadas (con NO) en la tabla anterior. Elegimos entre las posiciones
posibles la (3,2), que es una de las más baratas, y le daremos el valor ε, y hallamos
los costes reducidos como anteriormente.
142 TEMA 5. EL PROBLEMA DE TRANSPORTE
Ciudad 1 Ciudad 2 Ciudad 3 Ciudad 4 u
i
Planta 1
(5)
3
(3)
− 4

1
1
4*
+ 2
0
Planta 2
3
1
(2)
5
(7)
3
0
7
1
Planta 3
−2
2
(ε)
+ 1

−2
1
(6)
− 3
⇇ −3
v
j
3 4 2 6
El costo reducido más positivo es la posición (1,4). La solución a la que corre-
sponde menor el valor más pequeño entre las celdas marcadas con el signo menos
es 3, en la posición (1,2). La nueva solución está en la siguiente tabla donde tam-
bién se indican los cálculos realizados en el ciclo correspondiente en el algoritmo de
transporte.
Ciudad 1 Ciudad 2 Ciudad 3 Ciudad 4 u
i
Planta 1
(5)
− 3

−4
4
−3
1
(3)
+ 2
0
Planta 2
*7
+ 1

(2)
− 5

(7)
3
0
7
5
Planta 3
2
2
(ε + 3)
+ 1

−2
1
(3)
− 3
⇇ 1
v
j
3 0 −2 2
El mayor valor del coste reducido es 7, que está en la posición (2,1) que entrará en
la base. En el ciclo marcado los valores señalados con signo menos son (5,2,3) de los
cuales el menor coste es 2 por lo que sale de la base la variable de la posición (2,2),
quedando la nueva tabla:
Ciudad 1 Ciudad 2 Ciudad 3 Ciudad 4 u
i
Planta 1
3
− 3

−4
4
4
1
5
+ 2
0
Planta 2
2
+ 1

-7
5
7
− 3

-7
7
-2
Planta 3
2
2
ε + 5
1
*5
+ 1

(1)
− 3
⇇ -1
v
j
3 0 5 2
El pivote resulta en la celda (3,3). Esta variable entrará en la base saliendo la
de la posición (3,4) con menor valor (1) marcado con signo menos.
5.9. OTRAS VARIACIONES DEL PROBLEMA DE TRANSPORTE 143
Ciudad 1 Ciudad 2 Ciudad 3 Ciudad 4 u
i
Planta 1
2
− 3

1
4
*4
+ 1

6
+ 2
0
Planta 2
3
+ 1

-2
5
6
− 3

-7
7
-2
Planta 3
-3
2
ε + 5
1
1
1
-5
3
-4
v
j
3 5 5 2
En esta última tabla el pivote está en (1,3) que entra en la base saliendo la (1,1)
con menor valor (2) entre las marcadas con signo menos.
Ciudad 1 Ciudad 2 Ciudad 3 Ciudad 4 u
i
Planta 1
-4
3
−3
4
2
1
6
2
0
Planta 2
5
1
-2
5
4
3
-3
7
2
Planta 3
-3
2
ε + 5
1
1
1
-1
3
0
v
j
-1 1 1 2
Todos los costes reducidos son no positivos. La solución optima resulta por tanto:
Ciudad 1 Ciudad 2 Ciudad 3 Ciudad 4
Planta 1 2 6
Planta 2 5 4
Planta 3 5 1
obtenida trás poner a 0 el valor de ε.
El valor del objetivo es de 37 u.m.
5.9 Otras variaciones del problema de transporte
Si el problema de que hemos de resolver fuera similar al de transporte, pero de
maximización, se podría resolver con el algoritmo anterior sin más que cambiar
los signos de los costes unitarios en la función objetivo, lo que lo transformaría
en un problema de minimización. No obstante, y para manejar costes unitarios no
negativos se suele sustituir cada coste por la diferencia entre el mayor valor de ellos y
su propio valor, aplicando después el algoritmo minimizante del epígrafe 5.7. De esta
forma los precios unitarios serían no negativos. Esta transformación esta permitida
debido a que se cumple el siguiente teorema:
Teorema 11 En un problema de transporte se puede sumar o restar cualquier cons-
tante a los costes sin que varíe la solución óptima, aunque lo que sí varía es el valor
del objetivo.
144 TEMA 5. EL PROBLEMA DE TRANSPORTE
Demostración:
min
_

i,j
(k −c
ij
) x
ij
_
≡ min
_

i,j
_
kx
ij
) +

i,j
(−c
ij
_
x
ij
_

≡ min
_
k

i,j
(x
ij
) +

i,j
(−c
ij
)x
ij
_
≡ min
_
constante +

i,j
(−c
ij
)x
ij
_
La última igualdad se deduce del hecho de que la suma de todas las varia-
bles es igual a la oferta o demanda total. Así que el problema de minimizar
z =

i,j
(k −c
ij
) x
ij
es equivalente al problema de maximizar z

=

i,j
c
ij
x
ij
.
Ambos problemas dan lugar a la misma solución óptima para las variables x
ij
. No
obstante la relación entre las respectivas funciones objetivos es:
z =
_
k

i,j
(x
ij
) +

i,j
(−c
ij
)x
ij
_
= k

i,j
(x
ij
)+

i,j
(−c
ij
)x
ij
= k

i,j
(x
ij
)−
z

. Por lo tanto el problema de maximización tiene un valor del objetivo
z

= k

i,j
(x
ij
) −z
Otra variación de este problema se presenta cuando alguna de las rutas no tenga
asignado flujo, es decir que alguna de las rutas directas desde un cierto origen a un
destino esté prohibida. En este caso, si el problema es de minimización, se le asigna
al arco (o celda) correspondiente un coste muy alto (en relación con los restantes
costos). Si el problema es de maximización se asignará un coste muy pequeño.
5.10 El problema de transbordo
El problema de transbordo es un problema de transporte modificado, donde algunos
nodos pueden ser simultáneamente lugares de demanda de mercancía y orígenes para
otros destinos.
Ejemplo 61 En el gráfico de la figura 5.2 se muestra un ejemplo en el que los nodos
A y B son orígenes y los nodos 1 y 2 destinos con las disponibilidades y demandas que
se indican. Consideraremos además que B es a su vez un lugar de transbordo y que
el gasto por unidad transportada desde A hasta B es 2 u.m. También consideraremos
que el destino 1 es un punto de transbordo y que el gasto de transporte desde 1 a 2
es también 2 u.m.
El problema se resuelve partiendo de la tabla siguiente:
1 2 B DISP
A 2 3 2 40
B 5 7 0 50+90
1 0 2 ∞ 0+90
DEM. 35+90 55 0+90
5.10. EL PROBLEMA DE TRANSBORDO 145
Figura 5.2: Ejemplo de problema de transbordo.
Esta tabla se ha construido cumpliendo las siguientes normas:
a) Se añade como origen el destino 1 que actúa como punto de transbordo y que por
tanto puede funcionar como origen. De igual forma se añade como destino B que es
un nodo de transbordo.
b) Las disponibilidades de los puntos de transbordo, si actúan como orígenes, son
las que tienen de por sí, más la cantidad total que se transporta (35+55 = 40+50 =
90). Las demandas de los puntos de transbordo cuando actúan como destinos son las
cantidades demandadas realmente, más la cantidad total que hay que transportar.
c) Si algunos pasos no estuvieran permitidos, se pone en la casilla correspondiente
un costo grande en relación con los demás. Se supone que el transporte de un nodo
a sí mismo tiene coste nulo, si no se indica otra cosa.
Resolviendo el problema de transporte correspondiente a esta tabla se obtiene la
solución óptima siguiente.
1 2 B DISP
A 40 40
B 50 90 50+90
1 75 15 0+90
DEM. 35+90 55 0+90
Para interpretar la solución se ignoran los elementos que conectan un nodo con-
sigo mismo, que aparecen enmarcados en la tabla. Leyendo en horizontal obtenemos
la interpretación de la solución: pasamos 40 unidades desde A a 2 y 50 unidades
desde B al destino 1. Desde este destino (1) transportamos 15 unidades al destino
2.
146 TEMA 5. EL PROBLEMA DE TRANSPORTE
5.11 El problema de asignación
Este problema consiste en asignar n individuos a n tareas de modo que todos los
individuos realicen una tarea y todas las tareas se realicen. Se exige además que el
costo total sea mínimo.
Ejemplo 62 Una empresa tiene 4 máquinas y debe completar cuatro tareas. Cada
máquina puede y debe realizar una y sólo una de de las tareas. La tabla siguiente
nos da el tiempo que tarda cada máquina en completar cada trabajo.
tarea 1 tarea 2 tarea 3 tarea 4
máquina 1 11 1 2 3
máquina 2 3 12 4 5
máquina 3 8 8 1 9
máquina 4 3 4 4 10
Asignar una tarea a cada máquina de modo que la suma de los tiempos trabajados
por las cuatro máquinas sea mínimo.
Este problema se puede resolver por el algoritmo de transporte, ya que las
máquinas pueden ser interpretadas como orígenes con oferta 1 y las tareas como
destinos con una demanda de 1, puesto que cada maquina sólo hace una tarea y
todas las tareas han de ser realizadas.
Las soluciones de este problema sólo pueden tomar los valores 0 ó 1. Un 1 en
la celda (i, j) significa que al individuo i se asigna la tarea j. Aunque el problema
puede resolverse por el algoritmo de transporte, se suele presentar un alto grado
de degeneración. Para el problema de asignación es más eficiente usar el método
Húngaro, que exponemos a continuación.
5.11.1 El algoritmo Húngaro (Forma minimizante)
Partiendo de la matriz cuadrada de los tiempos se realizan los pasos siguientes:
Paso 1: Encontrar el mínimo de cada fila. Construir una nueva matriz restando de
cada fila el mínimo coste de ésta. Para esta nueva matriz realizar la misma
operación por columnas. Esta nueva matriz se llama matriz de coste reducido.
Paso 2: Considerando esta última matriz y procurando comenzar por las filas
o columnas con menor número de ceros se recuadra un cero en cada fila y
columna y se tachan los demás ceros de estas filas o columnas. Se repite este
proceso hasta que no queden ceros sin tachar o recuadrar.
Paso 3: Si el número de ceros recuadrados es igual que el número de filas (también
será igual que el número de columnas), las posiciones de los ceros recuadrados
marcan la solución óptima. Si no es así, continuar con el Paso 4.
5.11. EL PROBLEMA DE ASIGNACIÓN 147
Paso 4: Tachar con el menor número de líneas (filas o columnas) todos los ceros de
la matriz.
Para conseguirlo se puede seguir el siguiente procedimiento:
a) Se marcan la filas que no tengan ningún cero recuadrado.
b) Se marcan las columnas que tengan algún cero tachado en las filas marcadas.
c) Considerando únicamente las columnas marcadas se marcan las filas que ten-
gan algún cero recuadrado en estas columnas marcadas.
d) Se repite b y c hasta que no se puedan marcar más filas o columnas.
e) Se tachan las filas no marcadas y las columnas marcadas.
Paso 5: Se resta a todos los elementos sin tachar el menor de ellos. Los elementos
de la parte tachada se dejan igual salvo los que están tachados dos veces, a los
que se les suma ese número.
Paso 6: Volver al paso 2
5.11.2 Ejemplo de aplicación del algoritmo Húngaro
Vamos a aplicar este algoritmo al problema del ejemplo 62.
Se usarán los siguientes símbolos:
0 x = cero tachado, 0 = cero recuadrado,
xxx = fila o columna tachada, *** = fila o columna marcada.
Paso 1:
11 1 2 3 1
3 12 4 5 3
8 8 1 9 1
3 4 4 10 3
min

10 0 1 2
0 9 1 2
7 7 0 8
0 1 1 7
10 0 1 2
0 9 1 2
7 7 0 8
0 1 1 7
0 0 0 2 min

10 0 1 0
0 9 1 0
7 7 0 6
0 1 1 5
Esta última es la matriz de costes reducidos.
Paso 2 (se indica el orden en que se han seleccionado los ceros):
148 TEMA 5. EL PROBLEMA DE TRANSPORTE
10 0 3
o
1 0x
0x 9 1 0 4
o
7 7 0 1
o
6
0 2
o
1 1 5
Como hay 4 ceros recuadrados, sus posiciones marcan la solución óptima. En
este caso consiste en que la máquina 1 hace la tarea 2, la máquina 2 la tarea 4, la 3
la tarea 3 y la 4 la tarea 1. El tiempo total requerido será 1 + 5 + 1 + 3 = 10.
Con el objeto de ilustrar el resto del algoritmo lo aplicamos a la matriz del
siguiente ejemplo.
Ejemplo 63 Hallar la solución óptima en el problema de asignación cuya matriz
de costes reducidos es:
18 0 6 0
0 20 8 2
8 10 0 8
0 4 8 12
Como ya tenemos realizado el paso 1 comenzamos el siguiente.
Paso 2
18 0 2
o
6 0 x
0 3
o
20 8 2
8 10 0 1
o
8
0 x 4 8 12
Como hay menos ceros recuadrados que filas (o columnas) continuamos con el si-
guiente paso.
Paso 4 a, b, c.
Está indicado en la tabla el orden en que se han marcado las filas y columnas.
18 0 6 0 x
0 20 8 2 ***3
o
8 10 0 8
0 x 4 6 12 ***1
o
***2
o
Ya no pueden marcarse más filas ni más columnas.
Paso 4e ( los elementos marcados con ’xx’ son los que están tachados dos veces)
5.12. PROBLEMA DE EMPAREJAMIENTO 149
1 8 xx 0 6 0 x xxx
0 20 8 2
8 xx 1 0 0 8 xxx
0 x 4 8 12
xxx
Paso 5
20 0 6 0
0 18 6 0
10 10 0 8
0 2 6 10
Vuelta al paso 2.
Se indica el orden en que se han recuadrado los ceros.
20 0 4
o
6 0 x
0 x 18 6 0 3
o
10 10 0 1
o
8
0 2
o
2 6 10
Ahora hay 4 ceros recuadrados que marcan una solución óptima.
5.12 Problema de emparejamiento
Un problema de este tipo podría ser el siguiente. Disponemos de m individuos
que deben realizar n tareas. Se supone que cada individuo puede realizar algunas
de las tareas. Se pretende asignar a cada individuo una única tarea de modo que
se realicen el mayor número posible de estas. Este problema se puede interpretar
como un problema de transporte. Si se supone que cada individuo sólo va a realizar
una tarea, las demandas son todas 1 y las disponibilidades 1. Los costos de cada
celda son 1 ó 0. Un 1 significa que el individuo puede hacer esa tarea y un 0 que no
puede hacerla. El problema se transforma en uno de asignación añadiendo individuos
ficticios (que pueden hacer todas las tareas), o tareas ficticias (que puede hacerlas
cualquier individuo).
Ejemplo 64 Asignar 6 tareas a 5 individuos de modo que se realice el mayor
número posible de tareas. Las tareas que puede realizar cada individuo están mar-
150 TEMA 5. EL PROBLEMA DE TRANSPORTE
cadas con un 1.
T1 T2 T3 T4 T5 T6 Disponibilidades
1 1 1 1
2 1 1 1
3 1 1
4 1 1 1 1
5 1 1 1
Ind. ficticio 1 1 1 1 1 1 1
Demandas 1 1 1 1 1 1
Para las demandas y disponibilidades se debe tomar el valor 1. Esta es la matriz
de los costos (c
ij
= 1 si el individuo i puede realizar la tarea j y es 0 en caso
contrario). Realizar el mayor número de tareas es equivalente a maximizar

i,j
c
ij
x
ij
.
x
ij
= 1 si el individuo i realiza la tarea Tj, x
ij
= 0 si el individuo i no realiza la
tarea Tj,
En este caso el problema de transporte asociado es de maximización, que puede
convertirse en uno de minimización intercambiando los ceros de los costes con 1, ya
que minimizar

i,j
(1 −c
ij
) x
ij
, es equivalente a minimizar

i,j
(−c
ij
) x
ij
o a maximi-
zar

i,j
c
ij
x
ij
que es lo que se pretende en este caso. Esta propiedad es una aplicación
inmediata del teorema 11 cuyo enunciado aparece en la página 143.
Por lo tanto, para resolver este problema usando el algoritmo Húngaro, cam-
biamos los 1 por ceros y recíprocamente, teniendo como matriz de costo reducido
la siguiente, donde se ha indicado los ceros recuadrados (en el orden indicado) que
conducen a la solución óptima:
0 2
o
1 1 0 1 1
0 0 3
o
1 1 1 1
1 1 1 0 1
o
1 1
1 0 0 4
o
1 1 0
1 1 1 0 0 5
o
1
0 0 0 0 0 0 6
o
Así que el individuo 1 hace la tarea 1, el individuo 2 hace la tarea 2, el individuo
3 hace la tarea 4, el individuo 4 hace la tarea 3, el individuo 5 hace la tarea 5. La
tarea 6 no la realiza ninguno de los 5 individuos, ya que está asignada al individuo
ficticio.
5.13 Problema de planificación de la producción
Este es otro tipo de problemas que puede resolverse por el algoritmo de transporte.
Se dispone de un producto que puede producirse en n periodos de tiempo, y que
5.13. PROBLEMA DE PLANIFICACIÓN DE LA PRODUCCIÓN 151
puede ser inmediatamente vendido o, por el contrario, puede ser almacenado para
venderlo posteriormente. En este caso se suele asignar un coste que viene justificado
por el gasto de almacenaje, posible deterioro del producto, producto obsoleto o en
desuso, etc.
Consideraremos el ejemplo siguiente:
Ejemplo 65 Un fabricante desea planificar su producción para los cuatro meses
siguientes. La producción máxima, la demanda y el gasto de producción por unidad
en cada mes está resumido en la siguiente tabla.
Mes Gasto
Producción
Máxima
Demanda
1
o
100 2000 900
2
o
100 2500 2000
3
o
200 4000 5000
4
o
300 2500 2000
Además cada unidad no vendida en un mes tiene un encarecimiento de 100
unidades por cada mes de almacenamiento. Elaborar un plan óptimo de producción.
En la tabla de transporte siguiente se consideran los periodos de tiempo como
orígenes y destinos. Los orígenes tienen como disponibilidad la producción máxima
u oferta del periodo y los destinos una demanda que es la que corresponde a cada
periodo. Se han dividido todos los valores del problema por 100 para simplificar
la escritura. En cada celda (i, j) está indicado el costo de una unidad de producto
fabricado en el mes i y vendido en el mes j. No puede venderse un producto antes de
ser fabricado, por este motivo las celdas correspondientes tienen asignado un coste
alto (M), para que estas casillas no aparezcan en la solución, ya que el problema es
de minimización. Se ha añadido una demanda ficticia para conseguir un problema
de transporte equilibrado.
mes 1 mes 2 mes 3 mes 4 mes. Fic. Disponibilidades
mes 1 1 2 3 4 0 20
mes 2 M 1 2 3 0 25
mes 3 M M 2 3 0 40
mes 4 M M M 3 0 25
Demandas 9 20 50 20 11
Una solución inicial obtenida por el método de Vogel es:
mes 1 mes 2 mes 3 mes 4 mes. Fic.
mes 1 9 5 6 20
mes 2 20 5 25
mes 3 40 40
mes 4 14 11 25
9 20 50 20 11
152 TEMA 5. EL PROBLEMA DE TRANSPORTE
Aplicando el algoritmo de transporte, se obtiene la tabla siguiente:
mes 1 mes 2 mes 3 mes 4 mes. Fic. u
i
mes 1
(9)
- 1 2
(5)
+ 3
(6)
- 4

1*
+ 0
0
mes 2
-M
M
(20)
1
(5)
- 2 + 3 0
-1
mes 3
-M
+ M
1-M
M
(40)
2 - 3 0
-1
mes 4
-M
M
1-M
M
2-M
M
(14)
+ 3

(11)
- 0
⇇ -1
v
j
1 2 3 4 1
Tomo como pivote la posición (1,5) que es la única con coste reducido positivo.
mes 1 mes 2 mes 3 mes 4 mes. Fic.
mes 1 9 5 6 20
mes 2 20 5 25
mes 3 40 40
mes 4 20 5 25
9 20 50 20 11
Los costos reducidos correspondientes a esta solución, así como los valores de
u
i
, v
j
se dan en la siguiente tabla. Se han dejado en blanco las casillas correspon-
dientes a la presente base (como se sabe los costos reducidos de las variables básicas
son nulos).
mes 1 mes 2 mes 3 mes 4 mes. Fic. u
i
mes 1 0 −1 0
mes 2 −M −1 −1 −1
mes 3 −M 1 −M −1 −1 −1
mes 4 1 −M 2 −M 3 −M 0
v
j
1 2 3 3 0
La solución actual es óptima, ya que los costos reducidos son no positivos. Esta
solución no es única, ya que hay una variable no básica con costo reducido nulo (la de
la posición (1,2)). Introduciendo esta variable en la base pueden hallarse soluciones
alternativas.
Multiplicando la solución obtenida por 100, para recuperar la escala inicial de
los valores, se obtiene:
5.13. PROBLEMA DE PLANIFICACIÓN DE LA PRODUCCIÓN 153
mes 1 mes 2 mes 3 mes 4 mes. Fic.
mes 1 900 500 600 2000
mes 2 2000 500 2500
mes 3 4000 4000
mes 4 2000 500 2500
900 2000 5000 2000 1100
Un plan de producción óptimo, aunque no el único, consiste en:
Primer mes : fabricar 1400 unidades (las 600 unidades correspondientes a la de-
manda ficticia no se fabrican). Con ellas se cubre la demanda del primer mes
(900) y se almacena 500 unidades hasta el tercer mes.
Segundo mes : fabricar 2500 unidades, 2000 de ellas cubren la demanda del mes
y 500 se guardan para el siguiente mes.
Tercer mes : fabricar 4000 unidades y vender las almacenadas de los meses ante-
riores (500 + 500), completando la demanda que es 5000.
Cuarto mes : se fabrican 2000, que coincide con la demanda de este mes (no
se alcanza la producción máxima, ya que hay 500 unidades asignadas a una
demanda ficticia).
El coste de producción y almacenamiento con esta solución es:
900 ×100 + 2000 ×100 + 4000 ×200 + 2000 ×300 + 500 ×200 + 500 ×300 =
= 1940 000 u.m.
Si introducimos en la base la variable de la posición (1, 2) se obtiene la solución
alternativa:
mes 1 mes 2 mes 3 mes 4 mes. Fic.
mes 1 900 500 600 2000
mes 2 1500 1000 2500
mes 3 4000 4000
mes 4 2000 500 2500
900 2000 5000 2000 1100
cuyo coste es 900×100+500×200+1500×100+1000×200+4000×200+2000×300 =
1940 000 u.m. Como era de esperar, este coste es idéntico al obtenido con la primera
solución.
154 TEMA 5. EL PROBLEMA DE TRANSPORTE
Tema 6
Modelos de Redes
6.1 Redes. Conceptos básicos
Grafo: Llamaremos grafo a un par {V, A} donde V es un conjunto de elementos
llamados vértices o nodos y A ⊂ V × V otro conjunto cuyos elementos son los
arcos. Si (a, b) es un elemento de A, a se llama origen y b extremo. En la figura
6.1 está representado un grafo cuyos vértices son V = {0, 1, 2, n} y cuyos arcos son
A = {(0, 1)(0, 2)(1, 2)(2, 1)(1, n)(2, n)} .A veces se describe un Grafo por medio de
una matriz de incidencia que es una matriz con tantas columnas como arcos y
tantas filas como elementos.
Así el mismo grafo de la figura 6.1 puede también venir expresado por medio de
esta matriz de incidencia:
0
n
2
1
Figura 6.1: Ejemplo de un grafo.
155
156 TEMA 6. MODELOS DE REDES
(0,1) (0,2) (1,2) (2,1) (1,n) (2,n)
0 1 1 0 0 0 0
1 -1 0 1 -1 1 0
2 0 -1 -1 1 0 1
n 0 0 0 0 -1 -1
Cada celda se marca con 1 si el vértice de su fila es el origen del arco de su
columna y con -1 si es el extremo. Se rellenan con ceros el resto de las celdas.
Otro tipo de matriz de incidencia más simple se construye de la forma siguiente:
si existe el arco (i, j) hay un 1 en el elemento (i, j) de la matriz. En caso contrario
hay un 0
0 1 2 n
0 1 1
1 1 1
2 1 1
n
Una red es un grafo cuyos arcos tienen asociada alguna medida.
Red bilateral: es una red que admite ambas orientaciones en los arcos. En este
caso los arcos se llaman aristas. Una red sin aristas (no admite ambas orientaciones
en los arcos) se llama Red Dirigida. Una red con aristas puede transformarse en
una red dirigida por medio de la transformación indicada en la figura 6.2.
A
B
B
B’
A’ A
3
0
0
3 3
Figura 6.2: Diagrama de transformación en red dirigida.
Un vértice sin arco se llama aislado.
Un lazo es un arco cuyo origen y extremo coinciden.
6.2. CAMINOS DE LONGITUD MÍNIMA 157
Una cadena es una sucesión de arcos adyacentes (arcos consecutivos que tienen
en común un vértice).
Un camino o ruta es una sucesión de arcos adyacentes del mismo sentido (el
extremo de un arco es el origen del siguiente).
Un ciclo, circuito o camino cerrado es un camino en el cual el último extremo
coincide con el primer origen.
6.2 Caminos de longitud mínima
Suponemos que cada arco de la red tiene asociado un número que podría interpretarse
como la distancia entre su origen y extremo (longitud del arco). La longitud de un
camino es la suma de las longitudes de sus arcos. El problema dej camino de longitud
mínima consiste en seleccionar entre todos los caminos que unen dos nodos concretos,
el camino más corto para ir de uno de los nodos al otro.
En el problema de longitud mínima, el número asociado a cada arco puede tener
otras interpretaciones (tiempo, coste, etc...).
El problema de longitud mínima puede interpretarse como un problema de trans-
bordo de la forma expresada en el siguiente ejemplo.
Ejemplo 66 Una compañía quiere enviar un pedido desde la planta de producción
a un cliente. Los nodos son cruces por donde pueden circular sus camiones y los
números de los arcos el coste de enviar cada camión por el trayecto representado
por este arco. ¿Cuál es el camino más barato? La red asociada es la que aparece
en la figura 6.3.El problema de la ruta mínima puede verse como un problema de
1
3
5
2
4
6
20
10
15 10
15
15
10
Planta
Cliente
Figura 6.3: Red de distribución del ejemplo.
transbordo donde hay que transportar una unidad desde la planta de producción
(Origen) al cliente (Destino). Los cruces de carretera (Vértices de la red) son puntos
de transbordo. En este caso la tabla inicial sería:
158 TEMA 6. MODELOS DE REDES
Nodos 2 3 4 5 6 dispon.
1 20 15 M M M 1
2 0 M 15 10 M 1
3 M 0 M 15 M 1
4 M M 0 M 10 1
5 M M M 0 10 1
deman. 1 1 1 1 1
Como las disponibilidades y las demandas son siempre 1 también puede inter-
pretarse como un problema de asignación.
También puede plantearse como un problema de Programación lineal Binario:
min 20x
12
+ 15x
13
+ 15x
24
+ 10x
25
+ 15x
35
+ 10x
46
+ 10x
56
s.a.
_
¸
¸
¸
¸
¸
¸
¸
¸
_
¸
¸
¸
¸
¸
¸
¸
¸
_
x
12
+x
13
= 1 (Sólo un arco del camino parte del vértice ORIGEN)
x
46
+x
56
= 1 (Sólo un arco del camino llega al vértice FINAL)
x
12
−(x
24
+x
25
) = 0 (Si un arco del camino llega al nodo 2 ha de salir de él)
x
13
−x
35
= 0 (Idem nodo 3)
x
24
−x
46
= 0 (Idem nodo 4)
(x
25
+x
35
) −x
56
= 0 (Idem nodo 5)
x
ij
= 0, 1
El camino mínimo esta formado por los arcos cuyo valor en la solución sea 1. Es
posible que el problema tenga varias soluciones.
6.3 Algoritmos de ordenación y de etiquetación
El algoritmo de etiquetación es un algoritmo específico para calcular el camino mí-
nimo. Sólo es válido para redes dirigidas que no contengan ciclos.
Paso 1: Numerar los nodos en orden creciente 1, 2, 3,...., n. Sea 1 el origen y n
el destino. Se debe cumplir que si un arco lleva la orientación (i, j) entonces
i < j. Para ordenar los nodos podemos emplear el siguiente algoritmo de
ordenación:
a ) Partir del modelo más simple de matriz de incidencia.
b) Añadir una columna en la que anotamos el número de unos de la fila
correspondiente, anotando en su parte inferior el nodo o nodos que tienen
un cero en esta columna.
c) Se tachan en la matriz de incidencia los unos de las columnas cuyos nodos
se acaban de anotar y las filas de los nodos anotados. Si todos los vértices
han sido ya anotados ir al Paso 1.d. En caso contrario ir al Paso 1.b.
6.3. ALGORITMOS DE ORDENACIÓN Y DE ETIQUETACIÓN 159
d) Para numerar los nodos comenzamos numerando el último que se haya
anotado en la última fila, continuaremos numerando los restantes en orden
inverso al que han sido anotados.
Paso 2: Poner una etiqueta a cada vértice E
i
por orden ascendente de numeración
del modo siguiente:
E
1
= 0, E
j
= min(E
i
+d
ij
, i = 1, 2, ..j −1)
siendo a
ij
la longitud del arco que une el nodo i con el nodo j, considerando
para j sólo los arcos directamente unidos al nodo i.
Paso 3: E
n
es la longitud del camino mínimo. El camino se traza hacia atrás a
partir del nodo n. Los arcos que lo forman son los que cumplen la fórmula de
etiquetación : E
j
= E
i
+ d
ij
. Si se desea hallar caminos de longitud máxima
(que sólo tiene sentido en redes acíclicas) se emplea el algoritmo anterior sin
más que modificar en el paso 2 min por max, es decir:
E
j
= max(E
i
+d
ij
, i = 1, 2, ..j −1).
Aplicamos el algoritmo de Ordenación al siguiente ejemplo
Ejemplo 67 Ordenar el grafo de la figura 6.4.

A
B
I
E
C
F
D
H
G
J
Figura 6.4: Ejemplo de algoritmo de ordenación.
Mostramos los pasos del algoritmo en una tabla. En lugar de eliminar los unos
del nodo ya anotado, se ha incluido una nueva columna con las modificaciones. La
fila tachada se marca con ‘x’:
160 TEMA 6. MODELOS DE REDES
A B C D E F G H I J
n
o
d e
u n o s
A 1 1 2 1 0
B 1 1 2 1 0 x
C 1 1 1 3 2 1 0 x
D 1 1 0 x
E 1 1 1 1 4 3 1 0 x
F 1 1 0 x
G 1 1 2 1 0 x
H 1 1 0 x
I 1 1 2 1 0 x
J 0 x
J H
F
G
I
D E B C A
1 0 9
6
7
8
5 4 3 2 1
Los nodos F, G, I que están en la misma casilla pueden numerarse en distinto
orden, permutando los números 6, 7, 8.
Por lo tanto una ordenación posible es la de la figura 6.5.

1
3
8
4
2
6
5
9
7
10
Figura 6.5: Ejemplo de grafo ordenado.
Ejemplo 68 Hallar el camino mínimo desde el nodo 1 al 10 aplicando el algoritmo
de etiquetación. La red, incluyendo las medidas de los arcos, está representada en
la figura 6.6.
Las etiquetas resultantes de aplicar el algoritmo están indicadas en cada nodo.
6.4. ALGORITMO DE DIJKSTRA 161

0
8
13
4
3
4 8 14
11
10
1
3
8
4
2
6
5
9
7
10
8
3
5
6
2
4 7
6
5
2
4
2
4
3
1
1
2
1
Figura 6.6: Ejemplo de Algoritmo de Etiquetación.
La longitud del camino mínimo es 11 ( la etiqueta del vértice 10 ).
El camino mínimo es: 1 → 2 → 4 → 9 → 10.
6.4 Algoritmo de Dijkstra
Este algoritmo es válido para redes con arcos no negativos. No necesita ser acíclica,
aunque sí dirigida. Si no lo es, puede hacerse la transformación indicada en el
principio del tema, aunque es más sencillo sustituir los arcos de doble sentido por
dos arcos, uno para cada sentido.
Para determinar el camino mínimo de 1 a n suponiendo que 1 es el origen y n el
destino, podemos usar el siguiente algoritmo de Dijkstra:
Paso1
Asignamos al vértice Origen de camino una etiqueta permanente igual a 0.
Paso 2
Asignamos a los otros vértices etiquetas temporales igual a su distancia directa
al origen, si existe el arco directo desde el vértice a 1. Si no es así, le asignamos
la etiqueta temporal ∞.
Paso 3
Elegir como permanente la mínima de las etiquetas temporales. Si hay varias
que coincidan, elegir una de ellas arbitrariamente.
Paso 4
162 TEMA 6. MODELOS DE REDES
Sea j el vértice que ha recibido etiqueta permanente en el paso anterior. La
nueva etiqueta temporal de los vértices que no la tengan permanente, es el
mínimo entre la anterior etiqueta temporal y la suma de la etiqueta permanente
del vértice j más la distancia directa del vértice en consideración al vértice j,
si existe arco directo. Si no es así, se mantiene la anterior.
Paso 5
Hacer permanente la mínima de todas las etiquetas temporales. Si hay varias
iguales elegir una de ellas arbitrariamente. Si la última etiqueta permanente
es la n, parar. En otro caso, volver al paso 4.
La etiqueta de n es la distancia mínima. Para localizar el camino se parte del
vértice n y se resta su etiqueta de las distancia de los arcos que confluyen en
n. Cuando esta diferencia coincide con la etiqueta anterior, éste es el vértice
precedente en el camino mínimo. Aplicar esta condición sucesivamente hasta
alcanzar el origen.
Ejemplo 69 Dada la red representada en la figura 6.7. Hallar el camino mínimo
desde el nodo 0 al 5 y la longitud de este camino.
44
0 1 2 3 4 5
7 7 7 7 7
12 12 12 12
21 21 21
31
31
Figura 6.7: Ejemplo de camino mínimo.
Para mayor claridad expresamos la longitud de los distintos arcos en una tabla:
1 2 3 4 5
0 7 12 21 31 44
1 7 12 21 31
2 7 12 21
3 7 12
4 7
En las siguiente tabla puede leerse, por lineas, las evolución de las etiquetas de
los vertices cuando se aplica el algoritmo de Dijkstra. Las etiquetas temporales se
indican con ‘*’ y las permanente están recuadradas.
6.5. PROBLEMA DEL FLUJO MÁXIMO 163
0 1 2 3 4 5
0 7∗ 12∗ 21∗ 31∗ 44∗
7 12∗ 21∗ 31∗ 44∗
7 12∗, 14 21, 19∗ 31, 28∗ 44, 38∗
7 12 19∗, 19 28, 24∗ 38, 33∗
7 12 19 24∗, 26 33, 31∗
7 12 19 24 31, 31∗
7∗ 12∗ 19∗ 24∗ 31∗
Como podemos observar, 31 es la distancia mínima entre los nodos 0 y 5
A continuación esquematizamos los pasos que hay que seguir para obtener el
camino mínimo. En este caso el problema tiene varias soluciones.
Solución 1: vértice 5 (31 −7 = 24), vértice 4, (24 −12 = 12), vértice 2, (12 −12 = 0) ,
vértice 0
Camino: 0 →2 →4 →5. Longitud: 12 + 12 + 7 = 31.
Solución 2: vértice 5 (31 −12 = 19) , vértice 3, (19 −7 = 12) ,vértice 2, (12 −12 = 0) ,
vértice 0
Camino: 0 →2 →3 →5. Longitud: 12 + 12 + 7 = 31.
Solución 3: vértice 5 (31 −12 = 19) , vértice 3, (19 −12 = 7) , vértice 1, (7 −7 = 0) ,
vértice 0
Camino: 0 →1 →3 →5. Longitud: 12 + 12 + 7 = 31.
6.5 Problema del flujo máximo
En este problema se supone que hay que enviar una determinada cantidad de un
producto (Flujo) desde un nodo que denominamos Fuente a otro que denominamos
Sumidero. Se denomina Capacidad de un arco a la cantidad máxima de producto
que puede enviarse a través de éste y Flujo a la cantidad de producto realmente se
envía.
Ejemplo 70 En la red de la figura 6.8, deseamos calcular el flujo máximo que puede
enviarse de F a S.
Para formular este problema como un problema de programación lineal, tomamos
como variables el flujo que debe pasar por cada arco. Creamos el arco ficticio a =
(S, F), de capacidad ilimitada. Llamamos x
n0
el flujo que pasa por a. Queremos
maximizar la cantidad de flujo que pase por el arco ficticio a.
164 TEMA 6. MODELOS DE REDES
F S
1
3
2
2
4
1
2
3
3
x
n0
Figura 6.8: Ejemplo de flujo máximo.
max z = x
n0
s.a. :
_
0 ≤ x
ij
≤ a
ij
(El flujo de un arco no puede exceder su capacidad)

i,
x
il

j
x
lj
= 0. ∀l (El flujo que entra en cada nodo es igual al que sale)
En nuestro problema el planteamiento sería
max z = x
no
s.a.:
_
¸
¸
¸
¸
¸
¸
¸
¸
_
¸
¸
¸
¸
¸
¸
¸
¸
_
x
01
≤ 2, x
02
≤ 3, x
13
≤ 4, x
12
≤ 3, x
2n
≤ 2, x
3n
≤ 1
x
no
−(x
01
+x
02
) = 0
x
01
−(x
13
+x
12
) = 0
x
12
+x
o2
−x
2n
= 0
x
13
−x
3n
= 0
x
3n
+x
2n
−x
no
= 0
x
ij
≥ 0
Una solución óptima es x
01
= 2, x
13
= 1, x
12
= 1, x
02
= 1, x
3n
= 1, x
2n
= 2,
x
n0
= 3, así que el flujo máximo es z = 3. El problema admite otras soluciones
óptimas.
El problema de emparejamiento puede interpretarse como un problema de flujo
máximo. Veamos cómo se puede conseguir un problema de flujo máximo equivalente
al problema del ejemplo 5.12 de la página 149.
Ejemplo 71 Asignar 6 tareas a 5 individuos de modo que se realice el mayor
número posible de tareas. Las tareas que puede realizar cada individuo están mar-
6.6. ALGORITMO DE FORD-FULKERSON 165
cadas con un 1.
T1 T2 T3 T4 T5 T6
1 1 1
2 1 1
3 1
4 1 1 1
5 1 1
Ind. ficticio 1 1 1 1 1 1
El grafo correspondiente es el de la figura 6.9.Todos los arcos tienen 1 de ca-
1
2
4
3
T1
5
T2
T3
T4
T6
T5
S
F
Figura 6.9: Grafo del problema de emparejamiento.
pacidad. El problema consiste en enviar la mayor cantidad de flujo de la fuente al
sumidero.
6.6 Algoritmo de Ford-Fulkerson
6.6.1 Flujo de un corte
Si consideramos una partición (X, X

) en el conjunto de los vértices de una red, de
modo que la fuente pertenece a X y el sumidero a X

, llamamos corte al conjunto
de los arcos que unen un vértice de X con uno de X

.
Se define flujo de X a X

, f(X, X

), como la suma de los flujos de los arcos que
tienen su origen en X y su extremo en X

.
Se define capacidad del corte, q(X, X

), como la suma de las capacidades de
los arcos que tienen su origen en X y su extremo en X

.
166 TEMA 6. MODELOS DE REDES
Se cumplen las propiedades siguientes:
Teorema 12 El flujo desde la fuente al sumidero para cualquier solución factible es
menor o igual que la capacidad de cualquier corte.
Teorema 13 (de Ford Fulkerson) El flujo máximo coincide con la capacidad del
corte que tenga menor capacidad.
6.6.2 Algoritmo de Ford-Fulkerson
Dada una solución factible del problema de flujo máximo se definen como arcos A
los arcos no saturados (que no aprovechan al máximo su capacidad y podrían tomar
valores más altos) y como arcos D los arcos cuyo flujo es positivo (por lo tanto
pueden tomar valores más bajos).
El Algoritmo de Ford-Fulkerson se usa para calcular el flujo máximo que puede
circular por una red. Consiste en:
Paso 0
Obtener una solución factible. Se puede comenzar poniendo todos los flujos
x
ij
=0. Es preferible comenzar con una solución mejor que se puede conseguir
recorriendo caminos y asignando el flujo máximo permitido a sus arcos (los
arcos saturados no intervendrán en nuevos caminos a los efectos de formar
esta solución inicial).
Paso 1
Señalar los arcos con A y/o D según la regla anterior. Etiquetar la fuente con
la etiqueta (+0).
Paso 2
Etiquetar los nodos de la forma siguiente:
Si el arco (i, j) es miembro de A, el nodo i tiene etiqueta y el nodo j no la
tiene, etiquetar el nodo j con +i (arco directo).
Si el arco (i, j) es miembro de D, el nodo j tiene etiqueta y el nodo i no la
tiene, etiquetar el nodo i con −j (arco inverso).
Continuar así hasta que se etiquete el sumidero o no haya más vértices sin
etiqueta. Si no se puede alcanzar el sumidero la presente solución es óptima.
En caso contrario ir al paso 3.
Paso 3
Si se ha alcanzado el sumidero, tendremos una cadena etiquetada. Mejoramos
la solución anterior del modo siguiente: Calculamos para cada arco directo de
la cadena marcada la cantidad (a
ij
−x
ij
) en que el flujo puede ser aumentado y
para los arcos inversos la cantidad en que puede disminuir que es x
ij
. Sea k el
6.6. ALGORITMO DE FORD-FULKERSON 167
mínimo de todas estas cantidades asignadas a los arcos de la cadena. Sumamos
k al flujo de los arcos directos y se lo restamos al flujo de los arcos inversos
teniendo una nueva solución factible que mejora la anterior. Volver al paso 1
con esta nueva solución.
Resolvemos ahora el ejemplo de la figura siguiente con este algoritmo.
Partimos de una solución en que todos los flujos son nulos. En el grafo vienen
marcados los arcos A y D, y se han puesto las etiquetas que marcan el camino
F −→1 −→3 −→S.

Flujo = 0
A,2,0
A,4,0
A,1,0
A,3,0
A,3,0
A,2,0
F S
1
2
3 [+F] [+1]
[+0] [+3]
En este camino todos los arcos pueden aumentarse en 1. Por tanto, obtenemos
la solución de la figura mejorada con flujo 1.

Flujo = 1
A,D,2,1
A,D,4,1
D,1,1
A,3,0
A,3,0
A,2,0
F S
1
2
3 [+F] [+1]
[+0] [+3]
168 TEMA 6. MODELOS DE REDES
Ahora se procede a marcar el camino F −→2 −→S. Por este camino se pueden
enviar 2 unidades como máximo. Por lo tanto el flujo permitido que se puede
aumentar en este camino es de 2 unidades y como consecuencia el flujo total es
ahora 3.

Flujo = 1+2=3
A,D,2,1
A,D,4,1
D,1,1
A,D,3,2
A,3,0
D,2,2
F S
1
2
3
[+F]
[+0] [+2]
Si empleamos de nuevo el algoritmo veremos que ya no se puede alcanzar el sumidero,
puesto que el corte X = {F, 1, 2, 3} , X

= {S} tiene una capacidad 3, así que el
flujo no puede ser superior a 3. Tenemos la solución óptima indicada en la figura
anterior.
Hacemos ahora el problema de otra forma para mostrar un ejemplo del uso de
arcos inversos. Partimos de la solución de la figura:

Flujo = 2
D,2,2
A,4,0
A,1,0
A,3,0
A,D,3,2
D,2,2
F S
1
2
3
[+1]
[+0] [+2]
[+F]
Marcamos ahora la cadena F −→2 ←− 1 −→3 −→S.
6.7. CPM Y PERT 169

Flujo = 2
D,2,2
A,4,0
A,1,0
A,3,0
A,D,3,2
D,2,2
F S
1
2
3
[+F]
[+0] [+3]
[-2] [+1]
En la cadena marcada podemos añadir 1 en los arcos directos y restar 1 en los
inversos. Una vez modificados los flujos de la cadena marcada con las etiquetas
obtenemos una solución mejorada que es otra solución óptima:

Flujo = 2+1=3
D,2,2
A,D,4,1
D,1,1
A,D,3,1
A,D,3,1
D,2,2
F S
1
2
3
[+F]
[+0] [+3]
[-2] [+1]
6.7 CPM y PERT
Los modelos de redes pueden servir para esquematizar y ayudar en la planificación de
proyectos complejos que requieren la realización de un gran número de actividades,
y que se caracterizan porque antes de realizar algunas de ellas tienen que haber
sido realizadas otras (que llamaremos actividades precedentes o predecesoras). Si
170 TEMA 6. MODELOS DE REDES
se conoce con certeza la duración de estas actividades se usa el procedimiento CPM
(Critical Path Method). Si la duración de ejecución de las actividades no es conocida
con certeza, el método PERT (Program Evaluation and Review Technique) nos dará
la probabilidad de que el proyecto sea realizado en un cierto tiempo. Ambos métodos
fueron empleados en 1950 en relación con el desarrollo de los misiles Polaris. Gracias
a estos métodos, el proyecto se concluyó dos años antes de lo que en principio se
había estimado.
Para aplicar uno de estos métodos se requiere conocer la lista de las actividades
que forman el proyecto. Un proyecto está terminado cuando lo están todas sus
actividades. Para cada actividad hay un conjunto de actividades (sus predecesoras)
que deben ser completadas antes que la actividad considerada comience. Las redes
se utilizan para representar la relación de precedencia entre las actividades. En este
caso, los arcos representan las actividades. Los nodos indican el comienzo de las
actividades que tienen en él su origen y la terminación de las actividades que lo
tienen por extremo.
Las redes de proyectos han de cumplir las normas siguientes:
1. Debe haber un nodo inicial (1) que representa el comienzo del proyecto. Los
arcos que parten del nodo 1 representan las actividades que no tienen prede-
cesoras.
2. Debe haber un nodo final (n) que representa la terminación del proyecto.
3. La numeración de los nodos debe cumplir la condición de que el nodo que
representa el fin de una actividad debe ser nombrado con un número mayor
que el que representa su inicio.
4. Cada actividad estará representada en la red por un solo arco.
5. Dos nodos no pueden ser conectados por más de un arco.
Para respetar las reglas 4 y 5 a veces es necesario utilizar actividades ficticias
con duración 0.
Un ejemplo de aplicación de estas normas:
Si las actividades A y B comienzan al mismo tiempo y ambas preceden a C no
se representa en la forma:
a
a
b
c
sino de la forma:
6.7. CPM Y PERT 171
a
b
c
artificial
para cumplir la regla 5.
Ejemplo 72 (C.P.M) Para un cierto producto se requieren dos componentes y un
cierto número de trabajadores y materiales. Uno de estos componentes requiere un
cierto tiempo de secado antes de ser montado para componer el producto final. En
la siguiente relación están indicadas las actividades, su duración y las actividades
que la preceden inmediatamente.
Actividades Predecesoras Duración
a = contratar trabajadores - 24
b = conseguir el material - 36
c = producir el componente 1 a,b 32
d = producir el componente 2 a,b 28
e = tiempo de secado del componente 2 d 40
f = ensamblar ambos componentes c,e 48
Una representación del problema se da en la siguiente red.
1
2 4
3 5 6
36
0
28
24
40
32 48
b
a
art.
c
e d
f
Red del proyecto.
6.7.1 Algoritmo CPM
Para el algoritmo de CPM definimos para cada actividad los tiempos siguientes:
PC = lo más pronto que puede comenzar.
PT = lo más pronto que puede terminarse.
TC = lo más tarde que puede comenzar sin que se retrase el fin del proyecto.
172 TEMA 6. MODELOS DE REDES
TT = lo más tarde que puede terminar sin que se retrase el fin del proyecto.
El algoritmo consta de los pasos siguientes:
Paso 1: Comenzando con las actividades que parten del origen tomamos PC = 0 y
PT = su duraci´ on.
Paso 2: Proceder del modo siguiente con las demás actividades. Su valor PC es el mayor
PT de las actividades precedentes. Su valor PT = PC+duraci´ on de la actividad.
Cuando todas las actividades tengan PC y PT ir al paso 3.
Paso 3: Comenzar con las actividades que terminen en el fin del proyecto (de mayor
PT). TT es el mayor PT obtenido en el paso anterior y TC = TT − su
duraci´ on.
Paso 4: Proceder de la siguiente forma con las actividades anteriores siguiendo un orden
decreciente. Su valor TT es el menor TC de las actividades que le siguen. Su
valor TC = TT−. Cuando todas las actividades estén etiquetadas ir al paso
5.
Paso 5: Las actividades con PT = TT forman el Camino Crítico (son las actividades
que no pueden sufrir retrasos ni adelantos sin que afecte al tiempo de conclusión
del proyecto). El resto de las actividades tienen holgura (holgura = TT −PT),
y pueden adelantarse o retrasarse en el valor de la holgura sin afectar al tiempo
global de ejecución del proyecto.
Resolución del ejemplo 72 usando el presente algoritmo:
Actividades Pred. Dur PC PT TT TC Holg.
a = contratar trabajadores - 24 0 24 36 12 12
b = conseguir el material - 36 0 36 36 0 0
artificial b 0 36 36 36 36 0
c = producir el componente 1 a, art 32 36 68 104 72 36
d = producir el componente 2 a,art 28 36 64 64 36 0
e = control calidad componente 2 d 40 64 104 104 64 0
f = ensamblar componentes c,e 48 104 152 152 104 0
Las actividades que forman el camino crítico son las que tienen holgura nula.
Por lo tanto este camino es: b →act. ficticia →d →e →f. Las actividades a y
c pueden retrasarse como máximo en el valor dado por su holgura. La longitud de
este camino es 152 (tiempo mínimo necesario para terminar el proyecto).
Obsérvese que el camino crítico es el camino más largo que podemos recorrer
para ir del inicio (nodo 1) al fin del proyecto (nodo 6).
Este problema puede también resolverse por programación lineal. Sea t
j
el valor
PC de las actividades que parten de j (la hora en la que se han terminado todas las
6.7. CPM Y PERT 173
actividades que terminan en el nodo j) y t
1
la hora en que se comienza a ejecutar el
proyecto. El problema se plantearía como:
min Z = t
6
−t
1
s.a :
_
t
3
−t
1
≥ 24, t
2
−t
1
≥ 36, t
5
−t
3
≥ 32, t
4
−t
3
≥ 28
t
5
−t
4
≥ 40, t
6
−t
5
≥ 48, t
3
−t
2
≥ 0
Todas las variables sin restricciones de signo. Otra opción podría ser tomar el
origen en t
1
= 0 y todas las variables no negativas.
6.7.2 El método PERT
El algoritmo CPM presupone que la duración de cada actividad es conocida con
exactitud, aunque por lo general sólo es posible realizar algunas estimaciones sobre
la duración de las actividades. Se suele suponer que los tiempos de ejecución de
lcada actividad es una variable aleatoria (T
ij
) que sigue una distribución Beta. El
método PERT parte de tres estimaciones del tiempo empleado en realizar cada una
de las actividades:
a = duración de la actividad en las condiciones más favorables.
b = duración en las condiciones más desfavorables.
m = duración más probable (la moda).
Bajo la hipótesis de que la duración de las actividades siga una distribución Beta
la media y varianza de la variable aleatoria tiempo de duración de cada actividad,
T
ij
, puede estimarse como:
E(T
ij
) =
a+4m+b
6
var (T
ij
) =
(b−a)
2
36
.
El primer paso del método PERT es aplicar el método CPM, asignando a las ac-
tividades una duración que es la estimación de su media, E(T
ij
) . También se puede
optar por hallar el camino más largo desde el inicio al final del proyecto. Si las du-
raciones de las distintas actividades son v. a. independientes, la media y la varianza
del tiempo requerido para realizar el proyecto completo está dado por las sumas de
las duraciones medias correspondientes a las actividades críticas (suponiendo que las
fluctuaciones aleatorias en el tiempo de ejecución de las actividades no afecten al
establecimiento de las actividades que son críticas). Por tanto, si el problema tiene
un gran número de actividades se puede considerar que el tiempo total empleado en
la ejecución de las actividades que forman el camino crítico es una variable aleatoria
que se distribuye normalmente, y por tanto se puede hallar la probabilidad de que
el tiempo de ejecución del proyecto esté dentro de un intervalo dado.
Ejemplo 73 Un proyecto se compone de las actividades a, b, c, d, e, f, g, h, i,
j y k. Las relaciones entre las actividades son: a < b, b < c, c < d, b <
e, d < f, e < g, f, g < h, e < i, i < j, h, j < k. De cada actividad se
174 TEMA 6. MODELOS DE REDES
han obtenido tres estimaciones sobre su duración en semanas:
Actividad a b c d e f g h i j k
t
o
1 1 3 4 2 1 0.5 5 2 1 1
t
m
2 1.5 5 6 4 1.5 1 6 3 1.5 1
t
p
4 3 10 11 6 3 2 9 4 2 2
1. Dibujar la red del proyecto.
2. Hallar el camino crítico, la esperanza y la varianza de la duración del proyecto.
3. Si sólo se dispone de 21 semanas, ¿cuál es la probabilidad de terminar el
proyecto?
4. ¿Cuál es la probabilidad de terminar el proyecto en no más de tres semanas
después del tiempo esperado?
5. ¿De cuánto tiempo se debería disponer de manera que la probabilidad de ter-
minar el proyecto en este tiempo fuera del 90%?
1.
2 1 8 3 4 5 9
10
7 6
a b c d f h k
g
i
j
e
2. t
a
=
1 + 4 ×2 + 4
6
= 2. 166 7; t
b
=
1 + 4 ×1.5 + 3
6
= 1. 666 7;
t
c
=
3 + 4 ×5 + 10
6
= 5. 5, t
d
=
4 + 4 ×6 + 11
6
= 6. 5;
t
e
=
2 + 4 ×4 + 6
6
= 4.0; t
f
=
1 + 4 ×1.5 + 3
6
= 1. 666 7
t
g
=
0.5 + 4 ×1 + 2
6
= 1. 083 3; t
h
=
5 + 4 ×6 + 9
6
= 6. 333 3,
t
i
=
2 + 4 ×3 + 4
6
= 3.0; t
j
=
1 + 4 ×1.5 + 2
6
= 1. 5,
t
k
=
1 + 4 ×1 + 2
6
= 1. 166 7.
Hallamos el camino más largo. Las etiquetas que corresponden a los nodos
son:
6.7. CPM Y PERT 175
E(1) = 0, E(2) = 2.16, E(3) = 3.83, E(4) = 9.33,
E(5) = 7.83, E(6) = 15.83, E(7) = 17.43,
E(8) = 10.83, E(9) = 23.73, E(10) = 24.89
2. 166 7 + 1. 666 7 + 5. 5 + 6. 5 + 1. 666 7 + 6. 333 3 + 1. 166 7 = 25.0 semanas.
El camino crítico es a →b →c →d →f →h →k.
La esperanza de la duración total del proyecto sería la suma de las esperanzas
de los arcos del camino crítico (25), siempre que las fluctuaciones en la duración
de las actividades no afecten a la selección de las actividades críticas. En este
caso el número de actividades es demasiado pequeño para que la aproximación
normal sea aplicable. No obstante, supondremos que ésto es así para poder
ilustrar el método con un ejemplo que no precise de muchos datos.
La esperanza del proyecto es 25. Calculamos ahora su varianza:
V arianza = V a +V b +V c +V d +V f +V h +V k =
=
(4−1)
2
36
+
(3−1)
2
36
+
(10−3)
2
36
+
(11−4)
2
36
+
(3−1)
2
36
+
(9−5)
2
36
+
(2−1)
2
36
= 3. 6667.
La desviación típica es

3. 666 7 = 1. 914 9.
3. La probabilidad de acabar el proyecto en 21 semanas es:
P(T
p
≤ 21) = P(
T
p
−25
1. 914 9

21−25
1. 914 9
) = P(z ≤
21−25
1. 914 9
) =
= P(z ≤ −2. 088 9) = 0.018.
4. La probabilidad de que no se demore más de 3 semanas sobre el tiempo previsto
por la media es:
P(T
p
≤ 28) = 0.941 4.
5. P(T
p
≤ D) = 0.9 =⇒D = 27. 454
Se debe disponer aproximadamente de 27 semanas y media.
Dificultades de aplicación del método PERT
Algunas objeciones pueden hacerse al método PERT:
a) Que la duración de las actividades no suelen ser variables independientes.
b) Que los tiempos de duración de las actividades quizás no sigan distribuciones
Beta.
c) Que el camino crítico no siempre será el mismo (puede verse afectado por los
cambios en la duración real de las actividades).
Algunas de estas dificultades se solucionan realizando una gran cantidad de si-
mulaciones de la ejecución del proyecto por el método Montecarlo y estimando la
probabilidad pedida a partir de los resultados obtenidos en estas simulaciones (pro-
porción de simulaciones con un tiempo de terminación menor que uno prefijado).
176 TEMA 6. MODELOS DE REDES
Tema 7
Programación Entera
7.1 Introducción
Un problema de Programación entera Pura (PE) es un problema de Progra-
mación Lineal (PL) que ha de tener soluciones enteras. Si sólo algunas de las
variables han de tomar valores enteros, el problema es de Programación entera
mixta. Algunos de estos problemas sólo admiten como soluciones los valores 0,1.
Estos problemas se suelen llamar Problemas de Programación entera 0-1 o de
Programación Booleana.
La relajación de un problema de Programación Entera se obtiene suprimiendo la
condición de que las variables sean enteras.
Se cumplen las siguientes propiedades:
a) La región factible de un PE está contenida en la región factible de su relajación.
b) Si el problema relajado tiene solución entera óptima, es también solución del
problema entero correspondiente.
c) El valor del objetivo en la solución óptima de un PE (con objetivo de maxi-
mización/minimización) es menor/mayor que la solución óptima de su rela-
jación.
A continuación mostramos con un ejemplo que la solución del problema relajado
puede no ser una buena aproximación de la solución del problema de programación
entera correspondiente.
Ejemplo 74 Resolver el problema de programación entera siguiente:
max z = 10 x
1
+ 33 x
2
,
s.a : x
1
+ 3.2x
2
≤ 7, x
1
, x
2
≥ 0 y enteras.
177
178 TEMA 7. PROGRAMACIÓN ENTERA
Resolviendo el problema relajado se obtiene la solución
x
1
= 0, x
2
= 2.1875, con z = 72.1875
La solución por redondeo sería (0, 2), con valor 66 para la función objetivo, que
no es óptima, ya que puede comprobarse que (7, 0) es una solución factible para el
problema entero y su valor para la función objetivo es z = 70 que es mejor que 66.
Puede también desecharse la aproximación por exceso (0, 3) ya que no es solución
factible.
No obstante, si la solución del problema relajado fuese entera ésta sería obvia-
mente la solución óptima del problema de programación entera.
7.2 Algunos problemas de programación entera
7.2.1 El problema de la mochila
Ejemplo 75 El peso máximo que puede entrar en una mochila es de 28 Kg. Podemos
elegir los objetos siguientes con los pesos y utilidad descrita en la tabla:
objeto peso utilidad
1 11 8
2 13 11
3 9 6
4 5 4
Elegir los objetos que se han de meter en la mochila para obtener máxima utilidad.
El planteamiento del problema sería
max : 8x
1
+ 11x
2
+ 6x
3
+ 4x
4
s.a : 11x
1
+ 13x
2
+ 9x
3
+ 5x
4
≤ 28,
x
i
∈ {0, 1}
Con el mismo planteamiento se haría el problema siguiente:
Ejemplo 76 Se está considerando invertir en 4 negocios, descritos de la forma
siguiente:
tipo de negocio inversión ganancia
1 11 8
2 13 11
3 9 6
4 5 4
7.2. ALGUNOS PROBLEMAS DE PROGRAMACIÓN ENTERA 179
Si sólo disponemos de 28 millones ¿En qué negocios debemos invertir para que
la ganancia sea máxima?
El problema de la mochila es un problema de programación 0,1 con una única
restricción.
7.2.2 Problema del viajante
Ejemplo 77 Un viajante tiene que visitar n ciudades sólo una vez y volver a su
ciudad de origen. El orden en que se visiten las ciudades no es relevante. El objetivo
es minimizar la distancia total recorrida.
Las variables pueden ser x
ij
con valor 1 si viaja de i a j y 0 si no viaja por este
trayecto, c
ij
es la distancia entre la ciudad i y la ciudad j y n es el número total de
ciudades que han de visitarse. El planteamiento del problema podría ser:
min

c
ij
x
ij
sa :
_
_
_

j=1,n
x
ij
= 1 ∀ i

i=1,n
x
ij
= 1 ∀ j
x
ij
= 0, 1
con c
ii
= M para evitar x
ii
= 1.
Las primeras n ecuaciones indican que desde cada ciudad i viaja a una única
ciudad. Las segundas n restricciones indican que cada ciudad se alcanza sólo una vez.
Pero este planteamiento admite soluciones de subrutas separadas (ver ejemplo 78).
Por este motivo no se puede resolver por asignación ya que hay que imponer nuevas
condiciones para eliminar ciertas soluciones que serían válidas para un problema de
asignación pero no para el del viajante. Las restricciones que se han de añadir para
evitar obtener una solución con subrutas separadas pueden ser:
u
i
−u
j
+nxij ≤ n −1, i, j = 2, 3, 4.., n, i = j, u
i
, u
j
≥ 0 (7.1)
Ejemplo 78 Comprobar que si las ciudades son 1, 2, 3, 4, la solución x
12
= x
21
=
x
34
= x
43
= 1 con las restantes incógnitas nulas que está representada en la gráfica
de la figura 7.1 no es factible para el problema del viajante.
En efecto, la subruta de la derecha, no cumple las condiciones de las inecuaciones
7.1.
Las ecuaciones que corresponden a los arcos son:
u
3
−u
4
+4x
34
≤ 3 y u
4
−u
3
+4x
43
≤ 3. Sumando ambas inecuaciones se obtiene
4x
34
+ 4x
43
≤ 6. Como ambas incógnitas toman el valor 1, obtengo 8 ≤ 6. Por lo
tanto esta solución no sería factible para el problema del viajante.
180 TEMA 7. PROGRAMACIÓN ENTERA

1
2
3
4
Figura 7.1: Grafo de subrutas separadas.
7.2.3 Problema de costo fijo
Ejemplo 79 Un artesano fabrica tres tipos de productos de piel: monederos, bolsos
y zapatos. Para realizar estos productos necesita alquilar maquinaria adecuada. Para
hacer monederos debe alquilar una máquina que supone un gasto de 200 euros por
semana, para hacer bolsos una máquina por 150 euros por semana y para los zapatos
el gasto en maquinaria es de 100 euros por semana. El tiempo y la piel empleada
en cada tipo de producto viene dada por la tabla:
costo precio de venta horas de trabajo piel empleada
monederos 4 8 2 3
bolsos 10 20 3 4
zapatos 8 15 6 5
Dispone de 140 horas de trabajo y de 160 metros cuadrados de piel. Se pretende
maximizar los beneficios semanales.
Se llaman costes fijos a los costes de alquiler de maquinaria. Estos costes no
dependen del número de productos de cada tipo que se fabriquen, sino del hecho que
se fabrique o no el producto que precisa cada tipo de máquina.
Tomamos como variables x
i
e y
i
. Las variables x
i
indican el numero de produc-
tos de cada clase que se fabrican. Las variables y
i
toman el valor 1 si se fabrican
productos de la clase i, (en este caso es necesario alquilar la maquinaria correspon-
diente) y toman el valor 0 si no se fabrican (no es preciso alquilar la maquinaria
correspondiente).
El planteamiento de este problema puede ser:
Max (8x
1
+ 20x
2
+ 15x
3
) −(4x
1
+ 10x
2
+ 8x
3
) −(200y
1
+ 150y
2
+ 100y
3
)
sujeto a:
2x
1
+ 3x
2
+ 6x
3
≤ 140
7.3. EL ALGORITMO DE RAMIFICACIÓN Y ACOTACIÓN 181
3x
1
+ 4x
2
+ 5x
3
≤ 160
x
i
enteros y
i
∈ {0, 1}.
Además hay que añadir una restricción que garantice que se alquile la maquinaria
necesaria para cada tipo de producto que se fabrique, es decir que siempre que x
i
sea mayor que 0, y
i
ha de ser 1. Con este objeto añadimos las restricciones:
x
i
≤ M
i
y
i
, donde M
i
es un número positivo suficientemente grande.
7.3 El algoritmo de ramificación y acotación
Si el problema entero tiene una región factible acotada el número de soluciones
posibles es finito, así que existe la posibilidad de explorar uno a uno cada punto. Pero
este procedimiento, aparte de ser poco eficiente, no es aplicable si la región factible no
fuera acotada. Un método de resolución de los problemas de programación Entera
es el algoritmo de Ramificación y Acotación que básicamente opera dividiendo la
región factible en zonas, y excluyendo las zonas donde no puede estar la solución.
Una propiedad que hay que tener en cuenta al aplicar este algoritmo es que si el
problema relajado tiene soluciones enteras, ésta será también solución del PE.
Explicaremos el algoritmo de ramificación aplicándolo al ejemplo siguiente:
Ejemplo 80 Resolver el problema de programación lineal entera
max z = 5x
1
+ 6x
2
sa : 10x
1
+ 3x
2
≤ 52
2x
1
+ 3x
2
≤ 18
x
1
, x
2
≥ 0 y enteras
Conviene seguir el procedimiento de resolución de este problema mirando el es-
quema de la figura 7.4 en la página 184. Los números de los problemas indican el
orden en que se han ido planteando y la letra el orden en que se han resuelto.
En primer lugar resolvemos el problema relajado. En este caso el problema
relajado es:
Problema 1
max z = 5x
1
+ 6x
2
sa : 10x
1
+ 3x
2
≤ 52
2x
1
+ 3x
2
≤ 18
x
1
, x
2
≥ 0
La solución de este problema es x
1
=
17
4
, x
2
=
19
6
, z = 40.25.
La región factible de este problema es la de la figura 7.2.
182 TEMA 7. PROGRAMACIÓN ENTERA
Figura 7.2: Región factible del problema relajado.
Elegimos una variable con solución no entera. Sea ésta la variable x
1
=
17
4
= 4.25.
Consideremos los dos valores enteros más cercanos a esta solución (4 y 5). Dividimos
la región factible en tres partes correspondiente a las regiones x
1
≤ 4, 4 < x
1
< 5 y
x
1
≥ 5. La región intermedia, que corresponde a 4 < x
1
< 5, no ha de considerarse
puesto que no puede contener ningún punto con x
1
entera. Ramificar un problema
quiere decir dividir su región factible en partes y hallar la solución de cada una de las
partes. Como una de las regiones no contiene soluciones factibles solamente tenemos
que resolver los dos subproblemas siguientes:
Problema 2
max z = 5x
1
+ 6x
2
sa : 10x
1
+ 3x
2
≤ 52
2x
1
+ 3x
2
≤ 18
x
1
≤ 4
x
1
, x
2
≥ 0
y
Problema 3
max z = 5x
1
+ 6x
2
sa : 10x
1
+ 3x
2
≤ 52
2x
1
+ 3x
2
≤ 18
x
1
≥ 5
x
1
, x
2
≥ 0
La región factible de estos dos subproblemas está representada en la figura 7.3.
La solución del problema primitivo será la mayor de las soluciones de los dos
problemas en que hemos ramificado.
Elegimos como para continuar resolver el problema 2. Resolviéndolo, obtenemos
la solución x
1
= 4, x
2
= 3.
´
3, z = 40. Como esta solución no es entera volvemos a
ramificar con respecto a la variable x
2
que no es entera. Es decir, que dividimos el
problema 2 en dos subproblemas:
a) Problema 4 = Problema2 + restricción x
2
≤ 3.
b) Problema 5 = Problema2 + restricción x
2
≥ 4.
La solución del problema 4 es x
1
= 4, x
2
= 3, z = 38. Como es entera la
registramos como solución candidata y el valor z = 38 como cota inferior de la
función objetivo. Decimos que el problema 4 es un problema terminal (no hay que
7.3. EL ALGORITMO DE RAMIFICACIÓN Y ACOTACIÓN 183
Figura 7.3: Regiones factibles de los problemas 2 y 3.
seguir ramificando). Resolviendo el problema 5 obtenemos la solución x
1
= 3, x
2
=
4, z = 39. Por tanto la consideramos solución candidata y registramos su valor como
cota inferior del objetivo ya que mejora la anterior cota que era 38. También este
problema es terminal. Con esto hemos terminado todos los problemas de esta rama.
Volvemos ahora al problema 3. Su solución es x
1
= 5, x
2
=
2
3
, z = 29. Como
tenemos una solución candidata anterior con mejor valor para el objetivo (29 < 39),
declaramos el problema como terminal y no seguimos ramificando. Cuando ningún
nuevo problema puede ramificarse (porque se han declarado todos como terminales)
se selecciona la solución óptima: la solución candidata con mejor valor para la función
objetivo. En nuestro caso la solución óptima del problema entero planteado es por
tanto x
1
= 3, x
2
= 4, z = 39.
7.3.1 Resumen
Reglas de Ramificación:
• Se ramifica a partir de una variable no entera.
• Se elige el siguiente problema a resolver arbitrariamente.
• Cuando lleguemos a un problema terminal para elegir el que se resuelve a
continuación se usa algún criterio. En el ejemplo hemos seleccionado el último
problema creado no resuelto. También se usa a veces el criterio de resolver
primero el problema con mejor cota para la función objetivo.
Reglas de Acotación (caso maximizante):
Son problemas terminales los siguientes:
• Los problemas Infactibles.
184 TEMA 7. PROGRAMACIÓN ENTERA

Problema 1.A
x
1
= 17/4, x
2
= 9/6, Z = 161/4
cota =0
x
1
≤ 4 x
1
≥5
Problema 2.B
x
1
= 4, x
2
= 10/3, Z = 40

Problema 4.C
x
1
= 4, x
2
= 3, Z = 38
cota = 38
Solución candidata.
Problema terminal
Problema 5.D
x
1
= 3, x
2
= 4, Z = 39
cota=39
Solución candidata.
Problema terminal

Problema 3.E
x
1
= 5, x
2
= 2/3, Z = 29
cota = 39
Terminal por ser superado por la
cota del problema D
x
2
≥4
x
2
≤3
Figura 7.4: Diagrama de resolución del P.E. Método de Ramificación y Acotación
7.4. ALGORITMO DE CORTE O DE GOMORY 185
• Aquellos problemas con solución entera (Candidata). Cuando tenemos una
solución candidata registramos su valor de z como cota inferior para z. Esta
cota inferior se revisará cuando encontremos otra solución candidata con mayor
valor que la registrada anteriormente.
• Aquellos cuyo valor de z en la solución candidata es superada por la cota
inferior para z registrada actualmente.
La solución óptima final es la mejor solución candidata.
7.3.2 Programación entera mixta
Para resolver problemas de Programación Entera Mixta puede usarse también el
algoritmo de ramificación, pero sólo se ramifica con respecto a las variables que han
de ser enteras.
7.4 Algoritmo de corte o de Gomory
El algoritmo de corte o de Gomory es otro procedimiento de resolución de proble-
mas de programación entera. Este algoritmo elimina en la región factible porciones
donde está la solución del problema relajado pero no puede estar la solución entera
óptima. Para explicar la filosofía de este algoritmo lo usamos para resolver de nuevo
el problema del ejemplo 80.
Ejemplo 81 Resolver por el algoritmo de Corte o de Gomory el P.E.
max z = 5x
1
+ 6x
2
sa : 10x
1
+ 3x
2
≤ 52
2x
1
+ 3x
2
≤ 18
x
1
, x
2
≥ 0, x
1
, x
2
∈ Z
Resolvemos el problema relajado por el método de simplex. La tabla óptima es:
x
1
x
2
h
1
h
2
x
1
1 0
1
8

1
8
17
4
x
2
0 1 −
1
12
5
12
19
6
0 0
1
8
15
8
Para aplicar el algoritmo de Gomory seleccionamos un contraste en el que la
variable básica tome un valor fraccionario. Tomamos, por ejemplo, la primera res-
tricción:
x
1
+
1
8
h
1

1
8
h
2
=
17
4
186 TEMA 7. PROGRAMACIÓN ENTERA
Definimos parte entera de x, E[x] , como el mayor entero que es menor o igual
que x. Si x = E[x] +f [x], f [x] es la parte fraccionaria de x.
Aplicamos esta descomposición a todos los números que aparecen en la ecuación
anterior obteniéndose:
x
1
+ (0 +
1
8
)h
1
+ (−1 +
7
8
)h
2
= 4 +
1
4
Separando los términos con parte no entera tenemos:
x
1
−h
2
−4 = −
1
8
h
1

7
8
h
2
+
1
4
Imponiendo la condición de que el segundo miembro de esta igualdad sea no
positivo, se obtiene un corte en la región factible:

1
8
h
1

7
8
h
2
+
1
4
≤ 0
Este corte tiene las siguientes propiedades:
(1) La solución primitiva del problema relajado ha sido eliminada con este corte de
la región factible.
(2) Ninguna solución entera del problema original es eliminada por este corte.
En efecto, la condición 1 se cumple ya que los valores de h
1
y h
2
son nulos para la
solución del problema relajado. Sustituyendo en la inecuación del corte estos valores
obtenemos
1
4
≤ 0. Por tanto la solución primitiva no cumple la condición impuesta
por el corte. También se cumple la segunda propiedad ya que para soluciones enteras
ambos miembros de la igualdad
x
1
−h
2
−4 = −
1
8
h
1

7
8
h
2
+
1
4
han de ser enteros. El segundo término de la igualdad será siempre menor o igual
que
1
4
, y por ser entero ha de ser menor o igual que cero.
En este ejemplo hay que resolver el problema que resulta de añadir el corte a
las restricciones iniciales del problema, obteniéndose ya una solución entera. El
problema conviene resolverlo a partir del anterior por el simplex dual:
x
1
x
2
h
1
h
2
s
3
x
1
1 0
1
8

1
8
0
17
4
x
2
0 1 −
1
12
5
12
0
19
6
s
3
0 0 −
1
8
∗ −
7
8
1 −
1
4
0 0
1
8
15
8
0
7.4. ALGORITMO DE CORTE O DE GOMORY 187
Usando el algoritmo Dual del Simplex resulta que hay que pivotear sobre el
elemento marcado. Se obtiene la tabla siguiente:
x
1
x
2
h
1
h
2
s
3
x
1
1 0 0 −1 1 4
x
2
0 1 0 1 −
2
3
10
3
h
1
0 0 1 7 −8 2
0 0 0 1 1
La solución es x
1
= 4, x
2
= 10/3, z = 40.
Representamos ahora el corte. Expresando previamente h
1
y h
2
en función de
las variables de partida: h
1
= 52 −10x
1
−3x
2
, h
2
= 18 −2x
1
−3x
2
y sustituyendo
en la inecuación del corte se obtiene:

1
8
h
1

7
8
h
2
+
1
4
= −
1
8
(52 −10x
1
−3x
2
) −
7
8
(18 −2x
1
−3x
2
) +
1
4
=
= −22.0 + 30x
1
+ 3x
2
Por lo tanto la restricción del corte es equivalente a:
3 x
1
+ 3 x
2
≤ 22 =⇒x
1
+x
2

22
3
Añadiendo esta restricción en la gráfica se obtiene la nueva región factible (ver
figura 7.5), algo menor que región factible inicial, ya que se ha eliminado una pequeña
porción de ella.
Figura 7.5: Región factible. Corte I del algoritmo de Gomory.
Como la solución aún no es entera realizamos ahora otro corte usando la segunda
ecuación, ya que la primera solución es entera:
188 TEMA 7. PROGRAMACIÓN ENTERA
x
2
+h
2

2
3
s
3
=
10
3
=⇒x
2
+h
2
+
_
−1 +
1
3
_
s
3
= 3 +
1
3
=⇒
x
2
+h
2
+ (−1) s
3
−3 = −
1
3
s
3
+
1
3
Por tanto el nuevo corte es −
1
3
s
3
+
1
3
≤ 0
Añadiendo esta nueva restricción a las anteriores obtenemos la siguiente tabla de
simplex:
x
1
x
2
h
1
h
2
s
3
s
4
x
1
1 0 0 −1 1 0 4
x
2
0 1 0 1 −
2
3
0
10
3
h
1
0 0 1 7 −8 0 2
s
4
0 0 0 0 −
1
3
∗ 1 −
1
3
0 0 0 1 1 0
Aplicando de nuevo el método Dual de Simplex obtenemos:
x
1
x
2
h
1
h
2
s
3
s
4
x
1
1 0 0 −1 0 3 3
x
2
0 1 0 1 0 −2 4
h
1
0 0 1 7 0 −24 10
s
3
0 0 0 0 1 −3 1
0 0 0 1 0 3
La solución actual es entera y óptima: x
1
= 3, x
2
= 4, z = 39.
La expresión respecto a las variables primitivas de este segundo corte es la si-
guiente: x
1
+x
2
≤ 7.
La representación gráfica de la región factible que origina este nuevo corte aparece
en la figura 7.6.
Gomory ha demostrado que se llega a una solución entera en un número finito
de cortes.
7.4.1 Resumen del algoritmo de Gomory
El algoritmo tiene los siguientes pasos:
1. Hallar una solución óptima para al problema relajado. Si la solución es entera
tenemos la solución óptima. Si no es así ir al paso 2.
7.5. PROGRAMACIÓN 0-1. ALGORITMO DE ENUMERACIÓN 189
Figura 7.6: Región factible. Corte II del algoritmo de Gomory.
2. Elegir un contraste en la tabla óptima del simplex cuyo término independiente
no sea entero. (Se recomienda elegir aquel cuya parte fraccionaria sea lo más
cercana posible a 0.5). Este contraste se usará para generar el corte.
3. Reescribir este contraste sustituyendo cada coeficiente por su parte entera más
su parte fraccionaria.
4. Trasponer hacia la derecha los términos con coeficientes fraccionarios.
5. El corte se obtiene imponiendo la condición de que la expresión de la derecha
sea menor igual que 0.
6. Use el dual del simplex para resolver el problema que resulta de añadir, al
problema relajado, la restricción correspondiente al corte. Si la solución hal-
lada es entera, es la solución óptima buscada. En caso contrario, ir al paso 2
para realizar un nuevo corte en el problema actual.
7.5 Programación 0-1. Algoritmo de enumeración
Es un procedimiento que permite hallar la solución de los problemas de programación
Binaria (0-1). Es de notar que cualquier problema de programación entera puede in-
terpretarse como un problema de programación 0-1, siempre que las variables enteras
estén acotadas. Para ello basta considerar cada variable como un número expresado
en base 2; y como incógnitas los valores de sus cifras. Por ejemplo cualquier número
menor que 8 puede expresarse en la forma:
x = 2
2
y
1
+ 2y
2
+y
3
, y
i
= 0, 1
190 TEMA 7. PROGRAMACIÓN ENTERA
No obstante no suele emplearse esta opción, a causa de que el número de variables
crece considerablemente.
El algoritmo de Enumeración que presentamos requiere que se modifique el pro-
blema inicial para que los coeficientes de la función objetivo sean positivos y estén
ordenados. Para conseguirlo se ordenan los términos de la función objetivo por el
valor absoluto del coeficiente. A continuación se realiza el cambio x
i
por y
j
si su
coeficiente es positivo y por 1 −y
j
si es negativo tal como se muestra en el ejemplo
que sigue.
Ejemplo 82 Preparar el problema que sigue para resolverlo por el algoritmo de
enumeración
max z = 3x
1
+x
2
+ 2x
3
−x
4
+x
5
sa : 2x
1
+x
2
−3x
4
≤ 1
x
1
+ 2x
2
−3x
3
−x
4
+ 2x
5
≥ 2
x
i
∈ {0, 1}
Reordenando la función objetivo por el valor absoluto de sus coeficientes
z = −x
4
+x
2
+x
5
+ 2x
3
+ 3x
1
y tomando
x
4
= 1 −y
1
, x
2
= y
2
, x
5
= y
3
, x
3
= y
4
, x
1
= y
5
.
Se obtiene el problema equivalente:
max z = y
1
+y
2
+y
3
+ 2y
4
+ 3y
5
−1
s.a. : 3y
1
+y
2
+ 2y
5
≤ 4
y
1
+ 2y
2
+ 2y
3
−3y
4
+y
5
≥ 3
y
i
∈ {0, 1}.
Cuando se va a aplicar el algoritmo de enumeración se suprime la constante (-1
en este caso) de la función objetivo.
El algoritmo de Enumeración es una modificación del algoritmo de Ramificación
y Acotación.
Reglas que han de seguirse:
1. Se realiza la transformación detallada en el ejemplo previo para conseguir una
función objetivo con coeficientes positivos y ordenados de menor a mayor.
2. El problema relajado se define ahora suprimiendo todas las restricciones de las
variables, excepto las que imponen que las variables sean binarias.
3. En el nodo de partida se dan los valores mas favorables para las variables (todos
los valores 1 si el problema es de maximización y 0 si es de minimización). Se
7.5. PROGRAMACIÓN 0-1. ALGORITMO DE ENUMERACIÓN 191
comprueba si estos valores cumplen las restricciones. Si es así, tenemos la
solución óptima. En caso contrario se ramifica el problema.
4. La ramificación se hace comenzando con la variable x
1
= 0, x
1
= 1 siguiendo
un orden ascendente en la variable de ramificación en los nodos sucesivos y
fijando estos valores en los nodos que correspondan a la misma rama.
5. En el problema relajado correspondiente a cada nodo se dan a las variables,
con valor no fijado de antemano, los valores más favorables que no den lugar a
soluciones ya analizadas previamente. Se calcula el valor de su función objetivo.
Se comprueba si esta solución es factible y si es así se registra como solución
candidata y el subproblema como terminal. El valor del objetivo se registra
como cota inferior(CI).
6. Cuando analicemos un subproblema cuya cota superior (mejor valor del obje-
tivo) sea superada por CI, este subproblema será declarado terminal.
7. Si el subproblema tratado no es declarado terminal lo ramificamos con respecto
a la siguiente variable no fijada anteriormente. La variable con respecto a la
que ramificamos queda fijada en los problemas sucesivos de la misma rama.
Cuando el árbol queda terminado la solución óptima es la solución candidata con
mejor valor para el objetivo.
Algunos autores incluyen procedimientos para declarar algunos problemas in-
factibles, pero no vamos a considerar aquí estos procedimientos.
Ejemplo 83 En el árbol del la figura 7.7 de la página 192 se muestra el esquema
del procedimiento seguido para resolver el problema del ejemplo 82. (Suponemos que
hemos resuelto en primer lugar los problemas que están marcados como A, B, C ;
OPT)
La solución óptima es (y
1
, y
2
, y
3
, y
4
, y
5
) = (0, 1, 1, 0, 1). Hay otros problemas
que alcanzan también el valor z = 5 pero las soluciones ensayadas no son factibles.
Trasladando este resultado al problema primitivo se obtiene:
(x
1
, x
2
, x
3
, x
4
, x
5
) = (1, 1, 0, 1, 1) con valor para z = 3 +1 +2 ×0 −1 +1 = 4.
Ejemplo 84 Dado el problema de programación lineal entero 0-1, resolverlo uti-
lizando el algoritmo de enumeración.
max z = 9x
1
+ 5x
2
+ 6x
3
+ 4x
4
sa : 6x
1
+ 3x
2
+ 5x
3
+ 2x
4
≤ 10
x
3
+x
4
1
−x
1
+x
3
0
−x
2
+x
4
0
192 TEMA 7. PROGRAMACIÓN ENTERA
Figura 7.7: Resolución del problema de P. E. usando el algoritmo de Enumeración.
7.5. PROGRAMACIÓN 0-1. ALGORITMO DE ENUMERACIÓN 193
x
i
∈ {0, 1} i = 1, 2, 3, 4
Ordenando la función objetivo por el valor absoluto de sus coeficientes, y tomando
x
4
= y
1
, x
2
= y
2
, x
3
= y
3
, x
1
= y
4
,
se obtiene el problema equivalente:
max z

= 4y
1
+ 5y
2
+ 6y
3
+ 9y
4
sa : 2y
1
+ 3y
2
+ 5y
3
+ 6y
4
≤ 10
y
1
+y
3
1
y
3
−y
4
0
y
1
−y
2
0
y
i
∈ {0, 1} i = 1, 2, 3, 4
El esquema de resolución de este problema puede verse en la figura 7.8 de la
página 194.
La solución óptima resulta y
1
= 0, y
2
= 1, y
3
= 0, y
4
= 1, con z

= 14.
Deshaciendo el problema transformado tenemos que la solución óptima del problema
inicial es:
x
1
= 1, x
2
= 1, x
3
= 0, x
4
= 0, con z = 14.
194 TEMA 7. PROGRAMACIÓN ENTERA

1111; z=24; CI=0
1011; z=19; 0111; z=20;
1101; z=18;
1001; z=13;
Terminal;
z=13<CI=14
x
1
=0 x
1
=1
x
2
=1
x
2
=0
x
2
=0 x
2
=1
0101; z=14;
Terminal; CI=14
Candidata y óptima
0011; z=15;
0001; z=9;
Terminal; z=9<CI=14
0010; z=6;
Terminal; z=6<CI=14
x
3
=0 x
3
=1
1100; z=9;
Terminal 9<14
1110;
z=15;
Infactible y
final de la
rama
x
3
=0
x
3
=1
Figura 7.8: Algoritmo de Enumeración aplicado al ejemplo 84.
Tema 8
Teoría de Colas
8.1 Introducción
Para un Ingeniero informático es interesante saber que una de las herramientas
matemáticas más poderosas para realizar análisis cuantitativos de las redes de orde-
nadores es la teoría de colas. Esta técnica se desarrolló primeramente para analizar
el comportamiento estadístico de los sistemas de conmutación telefónica, sin em-
bargo, desde entonces, también ha sido aplicada para resolver muchos problemas de
redes.
Se pueden utilizar sistemas de colas para modelar procesos en los cuales los
clientes van llegando, esperan su turno para recibir el servicio, reciben el servicio y
luego se marchan. Ejemplos de sistemas de colas se encuentran en las cajas regis-
tradoras de los supermercados, en las ventanillas de las entidades bancarias, en las
salas de espera de los consultorios médicos, etc..
Los sistemas de colas pueden definirse mediante cinco componentes (ver figura
8.1):
1. La función de densidad de probabilidad del tiempo entre llegadas.
2. La función de densidad de probabilidad del tiempo de servicio.
3. El número de servidores.
4. La disciplina de ordenamiento en las colas.
5. El tamaño máximo de las colas.
La densidad de probabilidad del tiempo entre llegadas describe el intervalo de
tiempo entre llegadas consecutivas. Podríamos imaginarnos que contratáramos a
alguna persona (por ejemplo, a un estudiante de ingeniería informática) para ob-
servar la llegada de los clientes. A cada llegada de un nuevo cliente, el observador
registraría el tiempo transcurrido desde que ocurrió la llegada del anterior cliente.
195
196 TEMA 8. TEORÍA DE COLAS
Sistemas de Colas
Llegadas
Disciplina de l a cola
mecanismo de
servicio
Col a Salidas
Figura 8.1: Esquema de un sistema de colas.
Después de que hubiese transcurrido un tiempo suficientemente largo de estar re-
gistrando los intervalos de tiempo entre llegadas consecutivas, estos datos podrían
clasificarse y agruparse. La densidad de probabilidad de estas muestras caracteriza
el proceso de llegadas.
Cada cliente requiere cierta cantidad de tiempo, el que precise el servidor para
realizar el servicio que este cliente demanda. El tiempo de servicio requerido por
cada cliente es tiempo de trabajo activo para el servidor y varía entre un cliente y
otro. Por ejemplo, en la caja de un supermercado un cliente puede presentar un carro
lleno de artículos y el siguiente puede traer únicamente una lata de refresco. Por
eso.para analizar un sistema de colas, además de conocer la densidad de probabilidad
de los tiempos entre llegadas, debe conocerse también la función de densidad de
probabilidad del tiempo empleado en prestar servicio.
La cantidad de servidores se explica a través de los ejemplos siguientes: Muchos
bancos, por ejemplo, tienen una sola cola larga para todos sus clientes y, cada vez
que uno de los cajeros se libera, el cliente que se encuentra primero en la cola se
dirige a la caja que ha quedado libre. A este sistema se le denomina sistema de cola
multiservidor. En otros bancos, cada cajero o cajera, tiene su propia cola particular.
En este caso tendremos un conjunto de colas independientes de un solo servidor, y
no un sistema multiservidor.
La disciplina de una cola describe el orden según el cual los clientes van siendo
atendidos. Los supermercados utilizan el método de servir primero al cliente que ha
llegado antes. En las salas de urgencia de los hospitales se utiliza, más a menudo,
el criterio de atender primero al que esté más grave. El primero en ser atendido no
es el que haya llegado antes. En una oficina, ante la fotocopiadora, es frecuente que
se despache primero al que tenga menor trabajo, esto es, entra primero el que tenga
que hacer menos fotocopias.
La capacidad de la cola es el número de clientes máximo que puede contener. No
todos los sistemas de colas poseen una capacidad ilimitada de recepción de clientes.
Cuando hay demasiados clientes que quieren hacer cola, pero sólo existe un número
finito de lugares de espera, algunos de estos clientes pueden no ser admitidos en la
cola.
En resumen: Las colas o líneas de espera son situaciones bastante corrientes.
8.1. INTRODUCCIÓN 197
Clientes esperando servicio en un banco, alumnos que esperan matricularse, pro-
ductos en una línea de producción esperando ser procesados. Los sistemas que se
caracterizan por elementos que tienen que esperar para recibir un servicio se llaman
Fenómenos de Espera. Las colas se pueden caracterizar por los momentos de lle-
gadas de los clientes y por los momentos de salida de éstos, cuando ya han recibido
el servicio solicitado. Las llegadas suelen describirse por medio de una distribución
de probabilidad para los intervalos de tiempo entre las llegadas de dos clientes conse-
cutivos. Igualmente, los tiempos empleados en prestar cada servicio siguen también
una cierta distribución de probabilidad. Además, un sistema de espera soporta dos
costes: El de dar servicio y el de tener elementos esperando.
8.1.1 Costos de los sistemas de colas
Un sistema de colas puede dividirse en sus dos componentes de mayor importancia,
la cola y la instalación de servicio. Las llegadas son las unidades que entran en el
sistema para recibir el servicio.
Los elementos que llegan se unen primero a la cola, salvo que no haya línea de
espera en ese instante. En ese caso se dice que la cola está vacía. Desde la cola, las
llegadas van a la instalación de servicio de acuerdo con la disciplina de la cola, es
decir, de acuerdo con la regla para decidir cuál de las llegadas se sirve después del
que está actualmente recibiendo servicio. Que el primero en llegar sea el primero
en ser servido es una regla común, pero podría servirse con prioridades, o siguiendo
alguna otra regla. Una vez que se completa el servicio, las llegadas se convierten en
salidas.
Ambas componentes del sistema tienen costos asociados que deben de conside-
rarse.
Costo de Espera.
Esperar significa desperdicio de algún recurso activo que bien se podría aprovechar
en otra cosa. El coste medio de una cola por unidad de tiempo esta dado por C×L,
donde C es el costo de espera por cliente y unidad de tiempo y L =Número promedio
de clientes en cola.
Costo de Servicio.
Este costo es el que está asociado a la compra de las instalaciones de servicio, así
como los gastos de ponerlas en uso como pueden ser los gastos de mantenimiento y
personal.
Sistema de costo mínimo.
Aquí hay que tomar en cuenta que tasas bajas de servicio normalmente darán
lugar a largas colas y costos de espera muy altos. Conforme aumenta el servicio
disminuyen los costos de espera, pero aumenta el costo de servicio. Entonces el
propósito es encontrar el balance adecuado para que el costo total sea el mínimo.
198 TEMA 8. TEORÍA DE COLAS
8.1.2 Estructuras típicas.
Las llegadas pueden ser de personas, cartas, carros, incendios, ensambles intermedios
en una fábrica, etc... En la siguiente tabla se muestran algunos ejemplos de varios
sistemas de colas.
Ejemplos de sistemas de colas
Situación Llegadas Colas Servicio
Autobús viajeros en las paradas viaje en autobús
Hospital Enfermos sala de espera consulta asistencia
Aeropuerto Aviones Aviones espera Pista, Controladores, ...
Dpto. Bomberos Alarma incendios Incendios Mecanismo extinción
Cía. telefónica N
o
marcado Llamadas espera Conmutador
Lavado coches Coches Coches en cola Mecanismo de lavado
Juzgados Casos Casos atrasados Juez: Sentencias,...
Oficina correos Cartas Buzón Empleados correos
Servidor Web Petición archivos Cola peticiones Transferir datos
Permitiendo que varíen el número de colas y el número de servidores, pueden
hacerse los diagramas de los cuatro tipos de sistemas de la figura 8.2. Cada línea de
espera individual y cada servidor individual se muestra por separado.
El primer sistema que se muestra en la figura 8.2, se llama un sistema de un
servidor y una cola o puede describir un lavado de coches automático. El segundo,
una línea con múltiples servidores, es típico de una peluquería o una panadería en
donde los clientes toman un número al entrar y se les sirve cuando llega el turno. El
tercer sistema, aquel en que cada servidor tiene una línea separada, es característico
de los bancos y las tiendas de autoservicio. El cuarto sistema es una línea con
servidores en serie, puede describir por ejemplo el comportamiento de una cadena
de montaje en una fábrica.
8.2 Terminología
8.2.1 Características físicas
Servidor: Elemento que presta el servicio solicitado por los clientes.
Cola: Elementos esperando recibir servicio.
Sistema: Incluye cola, servidor y el elemento que está siendo servido.
Cadena: Número de líneas de cola del sistema. Los sistemas de colas son mono
o multicadenas. En los casos más simples el número de cadenas es el número de
servidores en paralelo.
Número de fases: Es el número de servicios diferentes que hay que esperar antes de
8.2. TERMINOLOGÍA 199
Figura 8.2: Distintos tipos de sistemas de colas
200 TEMA 8. TEORÍA DE COLAS
(b)
(c)
(d)
(a)
Figura 8.3: Modelos de sistemas de colas.
completar el servicio total. En los casos más simples es el número de servidores en
serie.
Con objeto de clarificar estos últimos conceptos proponemos los siguientes ejem-
plos. En la figura ?? pueden verse esquemas de cada uno de estos modelos.
(a) Una cadena y una sola fase: Una taquilla de un cine
(b) multi-cadena y una sola fase: Cajeros en un banco.
(c) Una cadena y multi-fase: Una línea de montaje con distintos elementos que
hay que fabricar.
(d) multi-cadena y multi-fase: Automóviles esperando paso en distintos semá-
foros.
:
8.2.2 Características de funcionalidad
Aparte de estas características físicas de las colas, consideramos otros aspectos que
afectan a su funcionamiento o dinámica como son: la distribución del intervalo de
tiempo entre llegadas, la distribución de los tiempos de servicio, o tiempos empleados
por el servidor para prestar los servicios requeridos por cada uno de los clientes, las
distintas formas en que se reorganizan las colas en el supuesto de que haya varias
cadenas o varias fases y la disciplina de la cola que es la forma en que los clientes
que están esperando acceden al servidor. Frecuentemente se considera que el primero
que ha llegado es el primero al que se le presta servicio. No obstante en algunas
circunstancias esto no es así. Otras disciplinas de colas pueden ser aleatorias, como
la forma en que suben al tren los viajeros que esperan en una estación. En este caso,
el orden de entrada depende de lo cerca que haya quedado la puerta de cada viajero.
También puede haber algunas prioridades en determinados servicios, etc...
También se ha de considerar si existe abandono de la cola, es decir, elementos que
al ver una cola demasiado larga no se deciden a esperar, o elementos que habiendo
esperado un cierto tiempo no desean esperar más y abandonan la cola.
8.3. MODELOS DE LLEGADAS Y DE TIEMPO DE SERVICIO 201
El sistema se dice que tiene una capacidad limitada si sólo admite, como máximo,
un cierto número de elementos.
8.2.3 Parámetros de los sistemas de colas
Si la cola es de comportamiento aleatorio no podemos saber exactamente la situación
que tendremos en cada momento. Por eso para describir su comportamiento se em-
plean promedios y probabilidades. Entre los parámetros más usuales consideraremos
los siguientes:
Probabilidad de que no haya elementos en la cola.
Probabilidad de que haya un cierto número de unidades en el sistema.
Probabilidad de que un elemento que llega tenga que esperar para recibir servicio.
Número promedio de elementos en cola.
Número promedio de elementos presentes en el sistema.
Tiempo medio que ha de esperar cada elemento que accede a la cola.
Tiempo promedio que un elemento pasa en el sistema.
8.3 Modelos de llegadas y de tiempo de servicio
Los clientes o elementos pueden acceder al sistema de una forma determinada de
antemano porque se sabe exactamente cuando van a venir cada uno de ellos (por
ejemplo a intervalos de tiempo de 3 segundos) o bien, puede ocurrir que los intervalos
de llegada sigan una variable aleatoria, es decir, que aunque no sepamos exactamente
en qué momento va a llegar cada uno de los elementos, si conocemos la distribución
de probabilidad de los intervalos de tiempo entre llegadas consecutivas. En el primer
caso hablamos de distribución de llegada determinista, en el segundo decimos que
los tiempos de llegada siguen una distribución aleatoria.
La distribución que se usa más frecuentemente para modelar los intervalos de
tiempos entre dos llegadas consecutivas es la distribución exponencial. Suponemos
que en un instante sólo puede haber una llegada. Notamos por t
i
la hora a la que
llega el cliente i, y por T
i
= t
i+1
− t
i
el tiempo transcurrido entre dos llegadas
consecutivas. Suponemos que los valores de T
i
son independientes, que T
i
es una
variable continua y que el estado es estacionario, es decir, admitimos la hipótesis de
que la distribución que modela la cola (probabilidad de que haya un cierto número
de elementos en la cola) es la misma a todas las horas del día. Normalmente esto no
es estrictamente cierto, pero puede cumplirse aproximadamente considerando ciertos
intervalos horarios cada día.
Si admitimos el modelo exponencial para la distribución de la variable aleatoria
T
202 TEMA 8. TEORÍA DE COLAS
f(t) = λexp(−λt) ; λ > 0, t > 0
la probabilidad de que una llegada ocurra en un tiempo t < c unidades después que
la anterior es:
P (t < c) =
c
_
0
f(t) dt =
c
_
0
λexp(−λt) dt
Se puede comprobar que la media de esta distribución es 1/λ, y la varianza
1
λ
2
.
El parámetro λ hay que interpretarlo como el número promedio de elementos que
llegan al sistema por unidad de tiempo.
Ejemplo 85 El número promedio de llegadas por hora al consultorio de un hospital
es de 60 pacientes. Si acaba de llegar un paciente, ¿cuál es la probabilidad de que el
siguiente venga dentro del siguiente minuto. ¿Y de que tarde más de 4 minutos?
Tomamos para λ =
60 pacientes
hora
=
60 pacientes
60 minutos
= 1
paciente
minutos
P (t < 1) =
1
_
0
e
−t
dt = −e
−t
¸
¸
1
0
= 1 −e
−1
= 0.632;
P (t > 4) =

_
4
exp(−t) dt = 0 −(−e
−4
) = 0.0183.
Es conveniente resaltar que la distribución exponencial cumple la siguiente relación
P (t ≤ h) = P (t ≤ c +h/t ≥ c) .
Esta propiedad significa que en todo momento, la probabilidad de que el siguien-
te elemento venga en un intervalo de h segundos no depende del momento concreto,
c, sino exclusivamente del intervalo de tiempo, h, considerado. Esta probabilidad no
cambia con el tiempo y es independiente de lo que haya pasado antes. Por eso esta
propiedad se suele enunciar diciendo que la función exponencial carece de memoria.
Esto quiere decir que la distribución no guarda información sobre lo que ha pasado
antes de c y por tanto no se necesita tener información del pasado para predecir el
futuro.
8.3. MODELOS DE LLEGADAS Y DE TIEMPO DE SERVICIO 203
8.3.1 Relación entre la distribución de Poisson y la exponen-
cial
El siguiente teorema nos da la relación existente entre la distribución del intervalo
de tiempo entre llegadas (bajo la hipótesis de distribución exponencial) y el número
de clientes que accede al sistema en cada intervalo de tiempo t.
Teorema 14 Los intervalos entre llegadas siguen una distribución exponencial de
parámetro λ si y sólo si el número de llegadas que ocurren en un intervalo de tiempo
t sigue una distribución de Poisson de parámetro λt.
Si la distribución de los intervalos entre llegadas es exponecial de parámetro λ, y
N
t
es la variable aleatoria que indica el número de llegadas en el intervalo de tiempo
t, la probabilidad de que el número de llegadas en este intervalo sea n es:
P (N
t
= n) =
(λt)
n
exp(−λt)
n!
, n = 1, 2, 3....
E(N
t
) = V ar(N
t
) = λt
Cuando el número de llegadas sigue una distribución de Poisson se cumplen las
siguientes propiedades:
a) Las llegadas ocurridas en intervalos de tiempos que no se solapan son inde-
pendientes.
b) Para intervalos pequeños de tiempo (∆t) la probabilidad de que una llegada
ocurra en el intervalo (t, t + ∆t) es λ∆t +o(∆t)
1
.
c) La probabilidad de más de una llegada en el intervalo ∆t es o(∆t).
Ejemplo 86 El número de personas que entra en un comercio sigue una distribu-
ción de Poisson con una media de 30 personas por hora.
a) Hallar la probabilidad de que entren exactamente 50 personas entre las 10 a
las 12 de la mañana.
b) Hallar la probabilidad de que el intervalo de tiempo entre dos llegadas esté
entre 2 y 4 minutos.
a) El intervalo de tiempo es de 2 horas, por lo tanto λt = 30 ×2 = 60
P (N
t
= 50) =
(60)
50
exp(−60)
50!
= 0.02327 .
1
o(∆t) denota un infinitésimo de orden superior a ∆t
204 TEMA 8. TEORÍA DE COLAS
b) Los clientes acuden a la tienda a razón de 30 personas por hora, así que la fun-
ción densidad de la exponencial asociada es 30 exp(−30t). Por tanto, la probabilidad
es :
4/60
_
2/60
30 exp(−30t)dt = −exp(−30t)|
4/60
2/60
= −exp(−30t)|
4/60
2/60
= e
−1
−e
−2
= 0.23254
Si hiciéramos los cálculos en minutos: Los clientes acuden a la tienda a razón
de 30/60 = 0.5 personas por minuto, así que la función densidad de la exponencial
asociada es 0.5 . exp(−0.5t). Por tanto, la probabilidad es:
4
_
2
0.5. exp(−0.5t)dt = −exp(−0.5t)|
4
2
= e
−1
−e
−2
= 0.23254.
8.3.2 Otra distribución de las llegadas. La distribución de
Erlang
A veces se modelan los intervalos de llegadas con una distribución de Erlang, inge-
niero danés que aplicó a principios del siglo XX esta distribución al estudio de las
aglomeraciones que se producían en las llamadas telefónicas. La función de densidad
de esta distribución viene dada por dos parámetros:
f(t) =
R(Rt)
k−1
exp(−Rt)
(k−1)!
, t ≥ 0 , donde E(t) =
k
R
y V ar(t) =
k
R
2
Si tomamos R = Kλ, tenemos esta otra expresión para la función de densidad:
f(t) =
kλ(kλt)
k−1
exp(−kλt)
(k −1)!
, t ≥ 0 (8.1)
siendo en este caso E(t) =
1
λ
y V ar(t) =
k
(kλ)
2
=
1

2
Si k = 1, la distribución es una exponencial de parámetro λ. La representación
gráfica de la función 8.1. puede tomar muy diversas formas para los distintos valores
de los dos parámetros, por lo que es adaptable a distintas situaciones reales. Puede
demostrarse que la distribución de Erlang es la distribución de la suma de k variables
exponenciales independientes de parámetro λ. Por tanto cuando los intervalos entre
llegadas consecutivas se modelan con una función exponencial de parámetro λ, el
intervalo entre k llegadas consecutivas sigue una distribución Erlang de parámetros
k y λ.
8.4. LA NOTACIÓN DE KENDALL 205
8.3.3 Modelos de duración de los servicios
Se suelen emplear los mismos modelos que para los intervalos entre llegadas; es decir,
la distribución exponencial o la de Erlang. A veces puede ocurrir que la duración
del servicio sea determinista. Por ejemplo, si todos los clientes vienen a solicitar un
mismo servicio que tarda en realizarse una cantidad de tiempo constante.
8.4 La notación de Kendall
Se realiza sobre el esquema 1/2/3/4/5/6, expresando en los lugares ocupados por
los números la siguiente información:
En el lugar del 1 se indica la distribución de las llegadas, que se representa de la
siguiente forma:
M = intervalos entre llegadas independientes e idénticamente distribuidos (iid)
que se rigen por la distribución exponencial.
D = iid y deterministas.
Ek = iid y Erlang con parámetro k.
GI = iid y gobernados por una distribución general.
En lugar del 2 se indica la distribución de los servicios: M, D, Ek o GI, con
idéntico significado que en las distribuciones de llegadas.
En el lugar 3 se indica el número de servidores en paralelo.
En el lugar 4 se indica la disciplina de la cola, que suele ser:
FCFS (first come first served), que significa que el primero que llega es el primero
en ser servido, (también denominada FIFO = first in first out).
LCFS (last come first served), que significa que el último en llegar es el primero
en ser servido, (también denominada LIFO = last in first out).
SIRO (service in random order), que significa que se atiende en orden aleatorio.
GD (general queue discipline), que significa que la cola tiene una disciplina
genérica.
En el lugar 5 se indica el número máximo de elementos que puede admitir el
sistema (incluyendo los clientes que estén siendo atendidos).
Por último en el lugar 6 se indica el número máximo de clientes potenciales.
206 TEMA 8. TEORÍA DE COLAS
Si un sistema de cola se representa con el esquema M/M/1/fcfs/∞/∞significa:
que los intervalos entre llegadas consecutivas y los tiempos empleados en prestar el
servicio demandado se distribuyen con distribuciones exponenciales; que hay un solo
servidor; que la disciplina de cola consiste en atender primero al que haya llegado
antes al sistema; que el sistema puede recibir un número ilimitado de individuos, y
que el número de clientes potenciales es infinito (muy grande).
8.5 Estudio de una cola M/M/1
Sobreentenderemos en este caso que la cola es del tipo M/M/1/fcfs/ ∞/ ∞.
Llamaremos Estado del sistema en t al número de elementos presentes en el
instante de tiempo t. Para t = 0, el estado del sistema sería el número de elementos
que están en el sistema inicialmente. Suponemos también que el sistema ha llegado
al Estado Estacionario, que se caracteriza porque la probabilidad de cada estado
no varía con el tiempo. Llamaremos P
j
a la probabilidad de que el sistema esté en
el estado j. También puede interpretarse como la fracción de tiempo en que hay
j elementos en el sistema.
Un sistema de colas M/M/1/fcfs/∞/∞ sigue las leyes siguientes:
1. La probabilidad de un llegada entre t y t + ∆t, puede darse por λ∆t +
o(∆t). Una llegada incrementa el estado del sistema en 1.
2. La probabilidad de una salida entre t y t+∆t (siempre que haya algún elemento
recibiendo servicio en el instante t) puede darse por µ∆t +o(∆t). Una salida
disminuye en 1 el estado del sistema.
3. Las llegadas y salidas son sucesos independientes.
4. El Estado Estacionario se alcanza si λ < µ, siendo λ y µ respectivamente
las tasas de llegada y servicio (número de llegadas o servicios por unidad de
tiempo).
5. Dos o más sucesos (llegadas o salidas) no pueden ocurrir simultáneamente (esto
es una forma de decir que la probabilidad de ocurrencia de más de un suceso
en el tiempo ∆t es un infinitésimo de orden superior a ∆t).
8.5.1 Probabilidad de que el sistema esté en cierto estado
Para calcular la probabilidad de que el sistema esté en el estado j en el instante
t + ∆t, calculamos esta probabilidad a partir de su estado en el tiempo t.
Vamos a desarrollar primero el caso de P
0
(t+∆t) = Probabilidad de que no haya
nadie en el sistema en el instante t + ∆t. Se dará esta circunstancia en uno de los
supuestos siguientes:
8.5. ESTUDIO DE UNA COLA M/M/1 207
1. No había nadie en el sistema en el instante t y no ha venido nadie en este
intervalo.
La probabilidad de que ocurra este supuesto es
P
0
(t) (1 −λ∆t +o(∆t)).
2. Había 1 elemento en el instante t, no ha venido nadie en ese intervalo y se ha
ido el que estaba.
La probabilidad es ahora:
P
1
(t) (µ∆t +o(∆t))(1 −λ∆t +o(∆t)).
3. Los casos restantes requieren que al menos dos sucesos (entradas o salidas)
ocurran en el intervalo de tiempo ∆t. Según la propiedad 5, esta probabilidad
es de orden superior a ∆t.
Por lo tanto
P
0
(t +∆t) = P
0
(t) (1 −λ∆t +o(∆t)) +P
1
(t) (µ∆t +o(∆t))(1 −λ∆t +o(∆t)) +
o(∆t) ⇒
P
0
(t + ∆t) = P
0
(t) (1 −λ∆t +o(∆t)) +P
1
(t) (µ∆t +o(∆t)) +o(∆t) ⇒
P0(t+∆t)−P0(t)
∆t
= −λP
0
(t) +µP
1
(t) +
o(∆t)
∆t
.
Si ∆t →0 obtenemos en el primer miembro la derivada de P
0
(t) . Si considera-
mos que estamos en Estado Estacionario P
0
es constante, y por tanto su derivada es
0. El último sumando del segundo término también tiende a 0 puesto que el orden
del numerador es mayor que el del denominador (el numerador tiende a cero “más
rápidamente” que el denominador). Por tanto ha de cumplirse cuando ∆t →0:
0 = −λP
0
+µP
1
,
de donde se deduce que
P
1
=
λ
µ
P
0
= ρP
0
En el caso general, tras agrupar todos los infinitésimos de orden superior a ∆t
se tiene:
P
j
(t) (t + ∆t) = P
j−1
(t) (λ∆t))(1 −µ∆t) +Pj(t) (1 −λ∆t)(1 −µ∆t)+
+P
j+1
(t)(µ∆t)(1 −λ∆t) +o(∆t).
208 TEMA 8. TEORÍA DE COLAS
Procediendo de forma análoga a la empleada para obtener la expresión de P
1
se
obtiene:
P
j
(λ +µ) = λP
j−1
+µP
j+1
En concreto si j = 1
P
1
(λ +µ) = λP
0
+µP
2
Sustituyendo P
1
=
λP
0
µ
obtenemos :
λP0
µ
(λ +µ) = λP
0
+µP
2
y despejando P
2
P
2
=
λ
2
P
0
µ
2
= ρ
2
P
0
Por inducción, se obtendría para el estado j :
Pj =
λ
j
P
0
µ
j
Como los posibles estados del sistema son: 0, 1, 2, 3,...

i=0
P
i
= 1 = P
0
+ρP
0

2
P
0
+.... = P
0
(1 +ρ +ρ
2
+....) = P
0
_
1
1−ρ
_
La serie representa la suma de los términos de una progresión geométrica de
razón ρ. Si el estado es estacionario ρ =
λ
µ
< 1 y en este caso
1 +ρ +ρ
2
+.... =
1
1−ρ
Luego
P
0
_
1
1−ρ
_
= 1
de donde se deduce que P
0
= 1 −ρ, y por tanto
P
j
= (1 −ρ) ρ
j
8.6. TEOREMA DE LITTLE 209
8.5.2 Número medio de elementos en el sistema
Para calcular L, número medio de elementos en el sistema, usamos el concepto de
esperanza matemática
L = E(j) =

j=0
jP
j
=

j=0
j(1 −ρ)ρ
j
= (1 −ρ)

1

j
= (1 −ρ)S
siendo S =

1

j
y j la variable aleatoria que denota el número de elementos en el
sistema.
Para hallar S se parte de la igualdad S − ρS =
ρ
1−ρ
, de donde se deduce S =
ρ
(1−ρ)
2
. Sustituyendo esta expresión en la de L obtenemos para el número medio de
elementos en el sistema
L =
ρ
1−ρ
8.5.3 Número medio de elementos en cola
En este caso hay que hallar la media de j, que es la variable aleatoria que denota el
número de elementos en la cola. Su promedio es
L
q
= 0 (P
0
+P
1
) + 1P
2
+ 2P
3
+ 3P
4
+...=

j=1
(j −1)P
j
=

j=1
(j −1)(1 −ρ)ρ
j
=
= (1 −ρ)ρ

1
(j −1)ρ
j−1
= (1 −ρ)ρS =
ρ
2
1−ρ
.
El número de elementos recibiendo servicio, es la diferencia entre los que están
en el sistema y los que están en la cola. Su valor medio, L
s
, es por tanto
L
s
= L −L
q
=
ρ
1 −ρ

ρ
2
1 −ρ
=
ρ(1 −ρ)
1 −ρ
= ρ
Este valor, ρ, también puede interpretarse como la fracción de tiempo en que el
servidor está ocupado.
8.6 Teorema de Little
Para cualquier sistema de colas en estado estacionario se verifica:
L = λW, L
q
= λWq, L
s
= λWs
210 TEMA 8. TEORÍA DE COLAS
Donde las W son, respectivamente, los tiempos medios de espera en el sistema,
en cola y recibiendo servicio.
Explicación intuitiva: Supongamos que llega al sistema un elemento que per-
manece en éste exactamente el tiempo promedio W. Cuando este cliente salga del
sistema permanecen aún en él los elementos que han llegado detrás durante el inter-
valo de tiempo W. Por promedio su número será λW, puesto que λ es el número de
llegadas por unidad de tiempo, es decir L = λW.
Usando el teorema de Little se pueden obtener expresiones para los tiempos
medios de estancia en el sistema, en la cola o recibiendo servicio.
W =
ρ
1−ρ
λ
=
λ
µ
1−
λ
µ
λ
=
1
µ −λ
,
W
q
=
ρ
2
1−ρ
λ
=
(
λ
µ
)
2
1−
λ
µ
λ
=
λ
µ(µ −λ)
W
s
=
Ls
λ
=
ρ
λ
=
1
µ
Ejemplo 87 En un aeropuerto el número de personas que accede por minuto es 10.
Las revisiones de equipaje se realizan a razón de 12 por minuto. Responder a las
siguientes cuestiones:
1. ¿Cuál es la probabilidad de que un pasajero tenga que esperar antes de que le
revisen el equipaje?
2. Por término medio, ¿cuántos pasajeros esperan en cola?
3. ¿Cuánto tiempo total tienen que esperar los pasajeros por término medio?
1. Un pasajero tiene que esperar si, cuando llega, hay alguien en el sistema; es
decir, si el número de personas en el sistema no es 0.
Así que la solución es 1 −P
0
= 1 −(1 −ρ) = ρ = 10/12 = 0. 833 333.
2. L
q
=
ρ
2
1−ρ
=
λ
2
µ(µ −λ)
=
10
2
12(12 −10)
= 4.16 667 es el número medio de
individuos en la cola.
3. W =
1
µ −λ
=
1
12 −10
= 0.5 minutos tendrán que esperar los pasajeros por
término medio.
8.7 Sistemas con capacidad limitada
Son los modelos de espera que sólo admiten un número máximo c de clientes en
el sistema. En este epígrafe se tratará el modelo de una cola, que con arreglo a la
notación de Kendall se representa como M/M/1/fcfs/c/∞.
8.7. SISTEMAS CON CAPACIDAD LIMITADA 211
Para hallar la probabilidad de cada uno de los estados se pueden repetir los
razonamientos del párrafo 8.5.1, pero hay que tener en cuenta que el estado del
sistema nunca será mayor que c.
Se tiene por tanto
P
j
=
λ
j
P
0
µ
j
si 0 < j ≤ c
P
j
= 0 si j > c
En este caso el estado estacionario puede lograrse aunque ρ no sea menor que 1
ya que el sistema se autorregula por el número máximo c de clientes en la cola. Los
posibles estados del sistema son: 0, 1, 2, 3,...., c. por lo tanto
c

i=0
P
i
= 1 = P
0
+ρP
0

2
P
0
+.... +ρ
c
P
0
= P
0
_
ρ
c+1
−1
ρ−1
_
si ρ = 1
Esta expresión, sólo es válida si ρ = 1, es decir, λ no es igual que µ. En este
caso, despejando P
0
, obtenemos que
P
0
=
ρ−1
ρ
c+1
−1
y P
j
=
(ρ−1)

c+1
−1)
ρ
j
Por tanto
L = E(j) =
c

j=0
jP
j
=
c

j=0

j ρ−1
ρ
c+1
−1
=
(ρ−1)
ρ
c+1
−1
c

1

j
=
(ρ−1)
ρ
c+1
−1
S

siendo j el número de elementos en el sistema y S

=

c
1

j
S

−ρS

=
ρ
c+1
−ρ
ρ−1
−cρ
c+1
luego
S

=
ρ
c+1
−ρ−cρ
c+2
+cρ
c+1
(ρ−1)
2
,
y por tanto
L =
ρ−(c+1) ρ
c+1
+cρ
c+2
(ρ−1)(ρ
c+1
−1)
El número de medio de elementos recibiendo servicio es :
L
s
= 0 ×P
0
+ 1(P
1
+P
2
+... +P
c
) = 1 −P
0
212 TEMA 8. TEORÍA DE COLAS
El número medio de elementos en la cola, L
q
se puede hallar restando las expre-
siones L y L
s
y obtenemos L
q
= L −L
s
.
En el caso particular de ser ρ = 1 , o λ = µ, teniendo en cuenta la expresión
anterior P
j
=
λ
j
P0
µ
j
se deduce que todos los estados tendrían la misma probabilidad,
P
0
, así que 1 = (c + 1)P
0
y por tanto
P
0
=
1
c+1
= P
1
= P
2
= P
3
= ... = P
c
L = 0 ×P
0
+ 1P
1
+ 2P
2
+... +cP
c
) =
= P
0
(1 + 2 + 3 +.... +c) = P
0
1+c
2
c =
1
c+1
1+c
2
c =
c
2
Para cualquier sistema de colas en estado estacionario se verifica el teorema de
Little:
L = λW, Lq = λWq, Ls = λWs
No obstante, λ debe sustituirse en este caso por la tasa media real de llegada

R
) , que será menor que λ, puesto que está limitada la afluencia de clientes. La
tasa real se obtendrá ahora restando del promedio de llegadas por unidad de tiempo
λ el promedio de entradas en el sistema que se pierden por exceder su capacidad.
El promedio de llegadas perdidas es λP
c
ya que P
c
se puede interpretar como la
proporción de llegadas por unidad de tiempo que no ingresan en el sistema. Es decir
que:
λ
R
= λ −λP
c
Por tanto en este caso de sistemas con capacidad limitada se tiene:
L = λ(1 −P
c
) W, L
q
= λ(1 −P
c
) W
q
, L
s
= λ(1 −P
c
) W
s
Ejemplo 88 La afluencia de clientes a una peluquería es, por termino medio, de
20 clientes por hora. El peluquero admite en su peluquería un máximo de 10 clientes
y tarda en atenderlos un promedio de 12 minutos por cliente. Calcular: a ) Número
promedio de clientes atendidos por hora. b) Número medio de personas en la pelu-
quería. c) ¿Cuál es el tiempo medio de permanencia en la peluquería para los clientes
que entran?
a) Todos los clientes que entran son atendidos, por lo tanto coincide con la tasa
real de llegadas a la peluquería. λ(1 −P
c
) = 20(1 −P
10
), P
j
=
(ρ−1)

c+1
−1)
ρ
j
, así que
P
10
=
(4−1)
(4
11
−1)
4
10
= 0.75. Por lo tanto el número medio de clientes atendidos por
hora es 20(1 −0.75) = 5.
Por promedio, cada hora hay 15 clientes que no pueden entrar en la peluquería.
8.8. MODELO CON S SERVIDORES 213
b) Para determinar el número medio de clientes en la peluquería, calculamos:
ρ =
λ
µ
=
20
5
= 4
L =
ρ−(c+1) ρ
c+1
+cρ
c+2
(ρ−1)(ρ
c+1
−1)
=
4−(11) 4
11
+10×4
12
(4−1)(4
11
−1)
= 9.67
Por lo que el número medio de clientes en la peluquería es 9.67 clientes.
c) El tiempo medio de espera en el sistema será:
L
20(1 −P
10
)
= 9.67/5 = 1.93 horas.
8.8 Modelo con s servidores
Desarrollamos detalladamente el caso en que s = 2, omitiendo los infinitésimos de
orden superior a ∆t.
8.8.1 Cálculo de la probabilidad de los diferentes estados del
sistema
También ahora se cumple para el estado 0 que
P
0
(t + ∆t)=P
0
(t)(1 −λ∆t) +P
1
(t)µ∆t(1 −λ∆t)
Si el estado del sistema es estacionario (se puede conseguir el estado estacionario
para el caso de 2 servidores si λ < 2µ y en general si λ < sµ), P
0
es constante, y
por tanto la derivada es 0 , así que
λP
0
= µP
1
y por tanto
P
1
=
λP
0
µ
Para el estado 1 se cumple:
P
1
(t + ∆t) = P
0
(t)λ∆t +P
1
(t)(1 −λ∆t))(1 −µ∆t) +P
2
(t)2µ∆t(1 −λ∆t)
Procediendo análogamente a lo hecho en el caso anterior, se iguala a 0 la derivada
de P
1
(t)) y se, sustituye el valor de P
1
obtenido. De esta forma se obtiene:
214 TEMA 8. TEORÍA DE COLAS
λP
0

λ
2
P
0
µ
−λP
0
+ 2µP
2
= 0
y despejando P
2
:
P
2
=
λ
2
P0

2
=
1
2
ρ
2
P
0
Para obtener un expresión similar para P
3
, se parte de la expresión:
P
2
(t + ∆t) =
= P
1
(t)λ∆t(1 −µ∆t) +P
2
(t)(1 −λ∆t)(1 −2µ∆t) +P
3
(t)2µ∆t(1 −λ∆t) ⇒
λP
1
−(λ +µ) P
2
+ 2µP
3
= 0
Sustituyendo los valores anteriores para P
1
y P
2
, obtenemos:
P
3
=
λ
3
P0

3
=
1
4
ρ
3
P
0
.
En general, para el caso de dos servidores
P
j
=
λ
3
P0

3
=
1
2
j−1
ρ
j
P
0
si j = 0.
8.8.2 Cálculo de P
0

i=0
P
i
= 1 = P
0
+ρP
0
+
1
2
ρ
2
P
0
+.... +
1
2
j−1
ρ
j
P
0
+... =
= P
0
_
1 +ρ +
1
2
ρ
2
+.... +
1
2
j−1
ρ
j
+...
_
El paréntesis, omitiendo el primer término, es la suma de los infinitos términos
de una progresión geométrica de razón
ρ
2
que es menor que 1, ya que para el estado
estacionario λ < 2µ. Realizando la suma de la serie se obtiene
P
0
_
1 +
ρ
1 −
ρ
2
_
= P
0
_
2 +ρ
2 −ρ
_
= 1
entonces
P
0
=
2 −ρ
2 +ρ
.
Por tanto:
P
j
=
1
2
j−1
ρ
j
P
0
=
1
2
j−1
ρ
j
2 −ρ
2 +ρ
.
8.8. MODELO CON S SERVIDORES 215
8.8.3 Cálculo de los parámetros
El número medio de elementos en cola es
L
q
= 0(P
0
+P
1
+P
2)
+ 1P
3
+ 2P
4
+. . . =


j=1
jP
j+2
=


j=1
j
1
2
j+1
ρ
j+2
P
0
=
= P
0
ρ
2
2


j=1
j
_
ρ
2
_
j
= P
0
ρ
2
2
ρ
2
(1−
ρ
2
)
2
= P
0
ρ
3
(−2+ρ)
2
=
ρ
3
(−2+ρ)
2
2 −ρ
2 +ρ
= −
ρ
3
(2+ρ)(−2+ρ)
=
ρ
3
4−ρ
2
En el sumatorio se ha sustituido una expresión hallada previamente en 8.5.2
(tomando
ρ
2
en lugar de ρ)
L
s
= 0.P
0
+ 1.P
1
+ 2(P
2
+P
3
+P
4
+...) = P
1
+ 2(1 −P
0
−P
1
) =
= ρ
2 −ρ
2 +ρ
+ 2
_
1 −
2 −ρ
2 +ρ
−ρ
2 −ρ
2 +ρ
_
= ρ
Intuitivamente podíamos también argumentar que la mitad de las llegadas irían a
parar a cada uno de los servidores, ya que los clientes entran en uno u otro servidor.
En ese caso la media de clientes atendidos por cada uno sería
λ
2
µ
=
1
2
λ
µ
=
1
2
ρ. Por
tanto entre ambos atenderían una media 2 ×
1
2
ρ = ρ.
Para calcular el número promedio de elementos en el sistema empleamos la si-
guiente expresión:
L = L
q
+L
s
=
ρ
3
4−ρ
2
+ρ =

4−ρ
2
.
Para calcular los tiempos medios se pueden emplear las fórmulas de Little:
W
q
=
L
q
λ
, W =
L
λ
, W
s
=
L
s
λ
=
1
µ
8.8.4 Sistemas de colas de tipo M/M/s/FCFS/∞/∞. Expre-
siones para el caso de s servidores
P
0
=
1

s−1
i=0
ρ
i
i!
+
ρ
s
s!(1−
ρ
s
)
P
j
=
_
ρ
j
j!
P
0
si j = 1, 2, 3, . . . , s
ρ
j
s!s
j−s
P
0
si j ≥ s
216 TEMA 8. TEORÍA DE COLAS
L
q
=
ρ
s+1
s · s!
_
1 −
ρ
s
_
2
P
0
Se pueden aplicar también las fórmulas de Little:
W
q
=
L
q
λ
L
s
= ρ ⇒ W
s
=
L
s
λ
L = L
q
+L
s
⇒ W =
L
λ
Ejemplo 89 Consideremos una sucursal bancaria con dos cajeros. Los clientes
acuden al banco a razón de 80 por término medio cada hora. Cada cajero tarda una
media de 1.2 minutos en servir a un cliente. Hallar:
a) Número medio de clientes en el banco.
b) Tiempo promedio de espera en el banco por cliente.
c) Fracción del tiempo en que un cajero determinado está ocupado.
En este caso λ= 80 clientes por hora y µ = 60/1.2 = 50 clientes por hora es
capaz de atender cada uno de los dos servidores.
a) El número medio de clientes en el banco es
L =

4−ρ
2
=

80
50
4−(
80
50
)
2
=
6.4
1. 44
= 4. 444 4
b) El tiempo medio de espera en el banco es
W =
L
λ
=
4. 444 4
80
horas = 5. 555 5 ×10
−2
horas = 3.33 minutos
c) La probabilidad de que un determinado cajero esté desocupado es:
P
0
+ 0.5P
1
=
2−
80
50
2+
80
50
+ 0.5 ×
80
50
×
2−
80
50
2+
80
50
= 0. 111 11 + 8. 888 9 ×10
−2
= 0. 2,
así que la probabilidad de que ese cajero esté ocupado es 1 −0.2 = 0. 80.
Si se pidiera la probabilidad de que al menos uno de los cajeros esté desocupado
(sin concretar quién) se calcularía como:
P
0
+P
1
=
2−
80
50
2+
80
50
+
80
50
×
2−
80
50
2+
80
50
= 0. 288 89.
8.9 El coste de un sistema de colas
Por lo general un sistema de colas tiene dos costes: El de tener clientes esperando
y el de tener elementos sirviendo a éstos. Ilustramos esta situación en el siguiente
ejemplo.
8.9. EL COSTE DE UN SISTEMA DE COLAS 217
Ejemplo 90 En una línea de producción es frecuente que haya un almacén para las
herramientas más caras. Los trabajadores que necesitan alguna de ellas esperan a que
un empleado del almacén se las suministre. Si hay muchos trabajadores solicitando
herramientas se formarán colas y se perderá tiempo de trabajo, lo que conlleva un
gasto. Esto se resolvería poniendo más empleados en el almacén, pero este arreglo
también supondría un mayor gasto en sueldos de estos empleados. El problema es
diseñar un sistema que minimice los costes. Suponemos que las llegadas de empleados
al almacén siguen una distribución de Poisson de razón de llegada λ = 15 (número
de personas que llegan por unidad de tiempo) y de razón de servicio µ = 18 (número
de elementos que pueden ser servidos en cada unidad de tiempo). Se supone que los
trabajadores que esperan a que el empleado les suministre las herramientas ganan 10
u. m. por hora, y los empleados que se las suministran tienen un sueldo de 9 u.m.
por hora.
Para resolver este problema consideramos los siguientes casos, obtenidos variando
el número de servidores (empleados en el almacen que se ocupan de suministrar las
herramientas).
1. Caso de emplear sólo un servidor:
El número medio de trabajadores en el sistema es
L =
ρ
1−ρ
=
λ
µ−λ
=
15
18−15
= 5.0
Coste por hora = 5 ×10 + 9 ×1 = 59 u.m.,
ya que si por término medio hay 5 trabajadores en el sistema supone un gasto
de 5×10 =50 u.m. por hora, a lo que hay que añadir el gasto del servidor que
es 9 u. m. por hora.
2. Caso de dos servidores:
L =

4−ρ
2
=

15
18
4−(
15
18
)
2
= 1. 008 4
Coste por hora = 1.008 ×10 + 9 ×2 = 28. 08 u.m.
3. Caso de 3 servidores:
P
0
=
1

s−1
i=0
ρ
i
i!
+
ρ
s
s!(1−
ρ
s
)
=
1

3−1
i=0
(
15
18
)
i
i!
+
(
15
18
)
3
3!

1−
(
15
18
)
3

= 0. 432 13
L
q
=
ρ
s+1
s ×s!
_
1 −
ρ
s
_
2
P
0
=
_
15
18
_
3+1
3 ×3!
_
_
_1 −

15
18

3
_
_
_
2
×0.43213 =
=
625
12 168
×0.43213 = 0.0 221 96
L = 0.0222 + 15/18 = 0. 855 533
Coste por hora = 0.855533 ×10 + 3 ×9 = 35. 555 u.m.
218 TEMA 8. TEORÍA DE COLAS
4. Con más de tres servidores el gasto es siempre superior a 9 ×4 = 36 u.m., ya
que éste es el gasto del sueldo de 4 servidores.
Por lo tanto lo más económico es emplear dos servidores con un coste por hora
de 28. 08 u.m.
Tema 9
Introducción a la Simulación
9.1 Simulación. Generalidades
La Simulación es una técnica para el análisis y estudio de sistemas complejos. Esta
técnica se emplea cuando, o bien no se conocen soluciones analíticas del problema
planteado, o conociendo algún modelo analítico su aplicación al estudio de dicho
problema impone demasiadas simplificaciones a la realidad, por lo que la solución
obtenida se va a apartar sustancialmente de la verdadera.
La simulación pretende imitar el comportamiento del sistema real, evolucionando
como éste. Lo más frecuente es estudiar la evolución del sistema en el tiempo. Para
ello se formula un modelo de simulación que tiene en cuenta los elementos que vamos
a considerar del modelo real y las relaciones entre estos. Una vez determinados los
objetos y las relaciones que vamos a tomar en consideración, se formula la evolución
del sistema por medio de un algoritmo. Este algoritmo, establecido el estado inicial
del sistema, ha de permitir generar muestras simuladas de su comportamiento. Son
estas muestras las que se usan para estudiar el problema tratado y dar una solución
aproximada de éste. Por lo general estos algoritmos se implemetan en un lenguaje de
programación. Ejecutando el programa obtenido las veces deseadas se puede obtener
tantas muestras del comportamiento del sistema como queramos. Estas muestras
nos permiten obtener estimaciones cada vez más próximas a la realidad, siempre que
el modelo la refleje adecuadamente.
Entre los muchos problemas a los que se han aplicado técnicas de Simulación
citamos los siguientes.
1) Simulación del trafico de vehículos en cruces de vías con mucho tráfico con el
objeto de estudiar si la colocación de nuevas señales de tráfico o de determinadas
modificaciones en el flujo de vehículos mejorarían o empeorarían la circulación.
2) Simulación de la conducta de un modelo de inventarios. Es decir se pretende
determinar la ganancia que se obtendría si los pedidos de las diferentes mercancías
219
220 TEMA 9. INTRODUCCIÓN A LA SIMULACIÓN
de un comercio se realizaran en determinada cantidad y se usaran ciertos criterios
para determinar los momentos más convenientes para efectuar estos pedidos. El
objetivo es realizar esta operación de la forma más conveniente para el comerciante.
3) Simulación de los movimientos sísmicos con el objeto de actuar de la mejor
forma posible para paliar los efectos de estos fenómenos.
4) Simulación de las condiciones de vuelo de los aviones con el objetivo de entrenar
a los futuros pilotos.
5) Simulación de las urgencias clínicas que suelen producirse en una ciudad con
el objetivo de gestionar los recursos de los servicios de urgencia de manera óptima.
Ventajas y desventajas de la simulación:
Ventajas:
a) Modelos más fáciles de aplicar, por lo que se pueden acometer problemas más
complejos sin imponer demasiadas simplificaciones, acercándonos más al problema
real.
b) Una vez que el modelo se ha construido sirve para estudiar distintas estrategias
y para determinar todos los parámetros del sistema. En un modelo analítico la teoría
y el desarrollo puede ser distinta para cada parámetro a determinar.
c) Facilidad de experimentación, con el consiguiente ahorro económico. Además
las pruebas están libres de las posibles situaciones de peligro que son inherentes a
algunas situaciones reales.
Desventajas:
a) Son generalmente más lentos que los cálculos analíticos
b) Suelen ser métodos que dan soluciones aproximadas.
De todas formas no se debe establecer una competencia entre modelos analíticos
y simulados. Por lo general han de complementarse mutuamente.
Desarrollamos a continuación un sencillo ejemplo que nos va servir para mostrar
de una forma simple en qué consiste esta técnica de Simulación.
9.2 Un ejemplo muy sencillo
Ejemplo 91 Consideramos el caso de una cadena de tiendas que se dedica a vender
pescado por cajas. Por experiencia se sabe que la demanda es de 3 a 8 cajas diarias.
Cada una de estas cajas se compra por 25 euros y se vende en 40 euros, pero las cajas
que no se vendan al final del día, hay que venderlas en unas drásticas rebajas, a 10
euros cada una. Si la demanda supera a la oferta suponemos que hay una pérdida de
15 euros por cada unidad que no se puede ofrecer al cliente (en concepto de perdida
de prestigio, fuga de clientes a otras tiendas, etc..). Se sabe que la demanda se puede
clasificar en alta media y baja, con probabilidades 0.3, 0.45 y 0.25 respectivamente.
9.2. UN EJEMPLO MUY SENCILLO 221
La distribución de la demanda por categorías aparece en la tabla:
Demanda Alta (0.3) Media (0.45) Baja (0.25)
3 0.05 0.10 0.15
4 0.10 0.20 0.25
5 0.25 0.30 0.35
6 0.30 0.25 0.15
7 0.20 0.10 0.05
8 0.10 0.05 0.05
Por ser un producto perecedero, el comerciante ha decidido adquirir diariamente 5
cajas. Se desea simular el comportamiento de la demanda durante 10 días calculando
la ganancia media por día y determinar el número óptimo de cajas que se deben
adquirir diariamente para maximizar los beneficios. ¿Cómo se puede resolver este
problema por simulación?
Con el objeto de ilustrar el procedimiento vamos a hacer una simulación manual,
es decir sin emplear ordenador. Para ello generamos números aleatorios. Los orde-
nadores tienen una función para generar estos números, pero como de momento no
vamos a emplear ordenador puede emplearse una tabla de números aleatorios o una
lista de premios de la lotería. También podemos recurrir a realizar un sorteo con
un juego de Bingo. Necesitamos una secuencia de 20 números, diez para generar el
tipo de demanda de cada uno de los diez días y otros diez para generar la cantidad
demandada. Vamos a utilizar los siguientes, que se han obtenido con una tabla de
números aleatorios comprendidos entre 00 y 99.
69 56 30 32 66 79 55 24 80 35 10 98 92 92 88 82 13 04 86 31
Para respetar los valores de la probabilidad indicada en la tabla anterior realiza-
mos la siguiente asignación, haciendo corresponder a cada probabilidad una cantidad
de números proporcional a ésta.
Demanda Alta (00 a 29) Media (30 a 74) Baja (75 a 99)
3 0.05 (00 a 04) 0.10 (00 a 09) 0.15 (00 a 14)
4 0.10 (05 a 14) 0.20 (10 a 29) 0.25 (15 a 40)
5 0.25 (15 a 39) 0.30 (30 a 59) 0.35 (41 a 74)
6 0.30 (40 a 69) 0.25 (60 a 84) 0.15 (75 a 90)
7 0.20 (70 a 89) 0.10 (85 a 89) 0.05 (90 a 94)
8 0.10 (90 a 99) 0.05 (90 a 99) 0.05 (95 a 99)
Generamos la demanda para el primer día: usando el primer número aleatorio (69)
que está entre 30 y 74, con lo que obtenemos para el día 1 una demanda media.
Ahora tendremos que determinar la cantidad demandada. Para generar el número
de cajas demandada en este día empleamos el segundo número (56). Mirando la
columna que corresponde a la demanda media vemos que está entre 30 y 59, así que
seleccionamos una demanda de 5 cajas para el primer día. La ganancia obtenida en
este caso será 40 ×5 −25 ×5 = 75 euros, ya que en este día la demanda es igual que
222 TEMA 9. INTRODUCCIÓN A LA SIMULACIÓN
la oferta. De forma similar se obtiene la ganancia de los días siguientes, según está
indicado en la siguiente tabla.
DIA:
Compra al
principio
del día
Sorteo tipo
de demanda
Sorteo
demanda
Ganancia día
1 5 69 media 56 (5) 40×5 - 25×5 = 75
2 5 30 media 32 (5) 40×5 - 25×5 = 75
3 5 66 media 79 (6) 40×5 - 25×5-15×1 = 60
4 5 55 media 24 (4) 40×4 - 25×5+10×1 = 45
5 5 80 baja 35 (4) 40×4 - 25×5+10×1 = 45
6 5 10 alta 98 (8) 40×5 - 25×5-15×3 = 30
7 5 92 Baja 92 (7) 40×5 - 25×5-15×2 = 45
8 5 88 Baja 82 (6) 40×5 - 25×5-15×1 = 60
9 5 13 Alta 04 (3) 40×3 - 25×5+10×2 = 15
10 5 86 baja 31 (4) 404 - 255+101 = 45
Sumando la ganancia obtenida en estos diez días y dividiendo por el número de
estos se obtiene la ganancia diaria media:
Media = 490/10 = 49 euros por día
De momento hemos realizado la simulación con un pedido de 5 cajas durante 10
días. Si queremos responder a la pregunta de cuál es la cantidad de cajas por pedido
que produce a la larga una ganancia máxima, podemos actuar de forma similar a
como hemos hecho para el pedido de 5 cajas con todas las cantidades razonables de
pedido (de 3 a 8 cajas son las demandas posibles). Es conveniente no obstante hacer
simulaciones más largas, para que el valor medio de la ganancia sea más estable.
Por ejemplo, podíamos hacer la simulación durante un año (365 días). En este caso
la simulación manual, que hemos realizado anteriormente sería demasiado laboriosa.
Por eso las simulaciones se realizan frecuentemente en ordenador.
El algoritmo que hay que implementar puede resumirse de la siguiente forma:
Para cada pedido (3 a 8)
Para cada día (1 a 365) se realizan los siguientes pasos:
paso 1
Determinar el tipo de demanda (alta media, baja)
Se genera un número aleatorio entre 0 y 1. Si este número es menor
que 0.30 la demanda es alta, si está entre 0.30 y 0.75 la demanda es
media. Demanda baja en otro caso.
paso 2
Se genera otro numero aleatorio.
9.3. MÉTODO MONTECARLO 223
Generar la demanda del día seleccionando el valor correspondiente
según los valores indicados en la tabla, en la columna que corresponde
al tipo de demanda obtenida en el Paso 1.
paso 3
Se calcula el beneficio que corresponde a este día.
Se calcula la media de los beneficios obtenidos en los 365 días.
Como este valor medio se realiza para todos los pedidos (de 3 a 8 cajas) se puede
estimar cuál es la mejor elección.
Con un programa realizado en FORTRAN, y con una simulación de 365 días,
hemos estimado la ganancia media diaria en función del número de cajas pedidas,
llegando a los resultados siguientes:
Cajas del
pedido
3 4 5 6 7 8
Beneficio
medio
10.119 36.04 53.71 58.56 51.70 39.78
Estos resultados nos permiten decidir que un pedido de 6 cajas diarias es el que
reportaría mayor beneficio diario medio.
9.3 Método Montecarlo
Aunque las técnicas de Simulación pueden ser deterministas, es decir que se pueden
simular fenómenos que no sean aleatorios, lo más frecuente, como ocurre en el ejem-
plo anterior, es que el fenómeno que se pretende simular tenga algún componente
aleatorio. En este caso decimos que se usa el método Montecarlo. La esencia del
método Montecarlo es la experimentación con números aleatorios. El procedimiento
usado consiste en diseñar juegos de azar con estos números, esperando obtener de
su observación conclusiones útiles para la resolución del problema que se esté estu-
diando. Aunque se han publicado algunos trabajos relacionados con el método de
Montecarlo que no han precisado el uso de ordenadores, lo cierto es que la utilidad
del método de Montecarlo se ha visto enormemente incrementada con el uso de las
modernas computadoras.
Resulta difícil creer que basándose en el puro azar puedan obtenerse conclusiones
que merezcan la pena y, de hecho, algunos investigadores desconfían todavía de las
estimaciones que se consiguen con este método, a pesar de sus múltiples éxitos en el
campo de la Investigación Operativa, de la Física y de otras ramas de las Ciencias,
como la Biología, la Química, e incluso la Medicina.
Los métodos de Montecarlo suelen clasificarse en dos tipos: probabilistas y de-
terministas.
224 TEMA 9. INTRODUCCIÓN A LA SIMULACIÓN
En el Montecarlo probabilista se simulan con números aleatorios fenómenos que
son aleatorios en la realidad. Los números se eligen de tal forma que reproduzcan la
distribución de probabilidad de la población estudiada y, de su observación, se de-
ducen características de ésta. Por ejemplo, la Física Nuclear suministra las funciones
que rigen el movimiento de los neutrones. Reproduciendo estas leyes con números
aleatorios se puede simular un reactor nuclear y “experimentar” con él, evitando los
problemas de dinero, tiempo y seguridad que implicaría la experimentación con un
reactor nuclear verdadero.
En el Montecarlo determinista se resuelven problemas que no son aleatorios en la
realidad, asociándolos con algún experimento aleatorio diseñado expresamente con
este propósito. Un ejemplo de este tipo es el cálculo numérico de integrales definidas.
9.4 Notas históricas sobre el Método Montecarlo
El nombre y el comienzo del desarrollo sistemático del método Montecarlo datan
aproximadamente de 1944, época en la que se realizaron las investigaciones rela-
cionadas con las primeras bombas atómicas. En tales investigaciones, llevadas a
cabo principalmente en el laboratorio americano de Los Álamos, los procesos de ab-
sorción de neutrones se simularon mediante un conjunto de ruletas adecuadamente
graduadas, que originaron el nombre de “Montecarlo” con el que Von Neuman y sus
colaboradores designaron a esta técnica.
Sin embargo, ya desde el siglo XVIII es posible encontrar algunos vestigios de
las ideas que subyacen en el método Montecarlo. En 1777 el conde de Buffon hizo
un estudio del juego siguiente, de moda por aquella época: una aguja de longitud
L se arroja sobre un plano en el que hay dibujadas varias rectas paralelas con una
distancia d (d > L) entre ellas. Se gana si la aguja cae sobre alguna de las rectas
paralelas. El conde de Buffon determinó la probabilidad (P) de ganar experimen-
talmente (a base de tirar la aguja una gran cantidad de veces), y analíticamente,
calculando para P la expresión:
P = 2L/πd
Años mas tarde, en 1886, Laplace sugirió que este procedimiento podría ser útil
para calcular experimentalmente el valor del número π. Este momento es conside-
rado en ocasiones como el punto de partida de las aplicaciones “serias” del método
Montecarlo.
Otros trabajos pioneros sobre Montecarlo fueron los de Thompson (Lord Kelvin)
en 1901, sobre la evaluación de algunas integrales de uso en la teoría de los gases.
Gosset -con el seudónimo de Student- aplicó el método Montecarlo para obtener la
distribución del coeficiente de correlación (1908). En 1930 Fermi empleó el método
Montecarlo para sus trabajos sobre difusión y transporte de los neutrones, que re-
sultaron esenciales para el desarrollo de las bombas y centrales nucleares.
Como ya se ha apuntado, durante la segunda guerra mundial se trabajó en estos
9.5. GENERACIÓN DE NÚMEROS ALEATORIOS 225
temas. Aparte de Von Neuman, ya citado, cabe resaltar las aportaciones de Fermi,
Ulam y Metrópolis. Durante esa época, la aparición de las primeras computadoras
digitales dio un fuerte impulso al desarrollo del método Montecarlo. Paradójicamente
estos trabajos propiciaron a la vez un cierto descrédito del método, pues se aplicó a
casi cualquier cosa, sin tener en cuenta para nada los problemas de eficiencia que le
son inherentes.
En los últimos años, debido al avance experimentado en el campo de los orde-
nadores, a la aparición de diversas técnicas para reducir la varianza de las estima-
ciones obtenidas, y al muestreo de Metrópolis, el método de Montecarlo parece haber
entrado en un nuevo periodo de florecimiento.
9.5 Generación de números aleatorios
Ya que casi siempre la simulación es aleatoria normalmente necesitamos un genera-
dor de estos números. Los ordenadores suelen tener un comando para generarlos.
Con el nombre de números aleatorios designamos, en esta ocasión, a las muestras
procedentes de una distribución uniforme en el intervalo [0,1].
Los método de generación de números aleatorios pueden clasificarse en las cate-
gorías siguientes:
a) Métodos manuales: Loterías, Ruletas. Suelen ser lentos y no reproducibles.
Durante bastante tiempo se creyó que era el único procedimiento para producir
verdaderos números aleatorios.
b) Métodos analógicos. En este caso los números se obtienen de algún experi-
mento físico que pueda recibirse en el ordenador. Se pueden generar rápidamente,
pero no son reproducibles.
c) Tablas de números aleatorios: Es el procedimiento que hemos empleado en el
ejemplo. Es un procedimiento lento y presenta el inconveniente de que la tabla puede
ser insuficiente para una simulación larga. La primera tabla de números aleatorios
fue preparada por Tippett (1927). Un método que se ha usado es preparar la tabla
y almacenerla en la memoria del ordenador. En 1955 se publicó la Tabla de la
Rand Corporation con un millón de dígitos. Para realizar estas tablas se usaron
métodos analógicos: los datos se extrajeron del “ruido“ de un generador de pulsos
electrónicos.
d) Algoritmos para ordenador. Estos métodos están basados en generar números
usando un programa de ordenador. El algoritmo usado es determinístico, así que
estrictamente hablando los números generados no serían aleatorios, pero se compor-
tan como si lo fueran ya que cumplen los test de independencia y de aleatoriedad,
así que se pueden usar en lugar de éstos. Se conocen con el nombre de números
pseudoaleatorios.
226 TEMA 9. INTRODUCCIÓN A LA SIMULACIÓN
9.5.1 Propiedades de un buen generador de números aleato-
rios
Un generador de números aleatorios debe tener las propiedades siguientes:
a) Debe generar números aleatorios (uniformemente distribuidos e independien-
tes).
b) Debe generarlos rápidamente.
c) No debe requerir mucho lugar de almacenamiento en el ordenador.
d) No debe formar en ciclos, o al menos que los ciclos sean de periodo suficien-
temente largo.
f) La secuencia de números ha de ser reproducible. Es decir que se pueda repe-
tir, si se considera conveniente, una secuencia de números que se haya producido
anteriormente. De esta forma se podría repetir exactamente cualquier prueba ya
realizada. En los programas de ordenador esto se consigue usando la misma semilla
(número que inicializa el algoritmo).
9.5.2 Método del centro del cuadrado
Von Neumann sugirió el método del centro del cuadrado: Partiendo de un número
de n cifras, generalmente un número par de cifras, realizar su cuadrado (suponemos
que tiene 2n cifras) y extraemos el número formado por las n cifras centrales. Los
números sucesivos se obtienen tomando el cuadrado del número precedente y ex-
trayendo los dígitos centrales. Por ejemplo si se partía del número 5332, para obtener
el siguiente se hallaba 5232
2
=27373824. El siguiente número era el subrayado. Este
procedimientones lento, tiende a formar ciclos cortos y si se obtiene un número con
tres ceros en el centro no podemos conseguir ya números distintos.
9.5.3 Método de las congruencias
Fueron sugeridos por Lehmer en 1949. Se basan en calcular los residuos módulo m
de una transformación lineal.
La relación de congruencia fundamental es:
X
i+1
≡ (aX
i
+c) (mod m)
siendo a, c y m enteros no negativos. Los métodos que usan esta relación se llaman
congruenciales mixtos.
Dado un valor inicial llamado semilla X
0
, se obtienen diferentes números todos
ellos menores que m. Obviamente la cantidad de números distintos generados de
esta forma es menor o igual que m. Por ejemplo, para a = 5, c = 0 y X
0
= 3 y
m = 8 la secuencia generada es 3, 7, 3, 7. Esta secuencia es cíclica con periodo
2 < 8.
9.5. GENERACIÓN DE NÚMEROS ALEATORIOS 227
Por supuesto elegimos m tan grande como podamos. Si p es el periodo y p = m
la sucesión se llama de periodo completo.
Puede demostrarse que una sucesión es de periodo completo si y solo si
a) c y m son primos entre sí.
b) a ≡ 1(mod g), siendo g cualquier factor primo de m.
c) a ≡ 1 (mod 4), si m es múltiplo de 4.
m estará limitado por el ordenador . Si este es binario m = 2
β
como máximo,
donde β depende del ordenador (β = longitud de la palabra más larga − 1).
Se consigue una sucesión de 2
β
elementos tomando c impar y
a ≡ 1(mod 4).
Los valores m = 2
35
, a = 2
7
+1 y c = 1 dan buenos resultados para un ordenador
cuya palabra máxima tenga 36 bits.
El caso particular de que c sea nulo se habla de un generador multiplicativo.
X
i+1
≡ (aX
i
) (mod m)
En este caso no puede obtenerse un periodo completo.
Los métodos congruenciales tienen la ventaja de ser muy rápidos y ocupar poca
memoria, dar números que soportan bien los test de adherencia de ajuste. Sin em-
bargo suelen presentar problemas de autocorrelación. También se observa que los
últimos dígitos no siguen una distribución uniforme. Estos problemas suelen ar-
reglarse con rutinas que hacen algunas modificaciones a los métodos congruenciales:
usar las primeras cifras, barajar los números, formar un número de varias cifras
uniendo las primeras de varios números generados anteriormente, etc. Rutinas de
este tipo son las incluidas en el capítulo 7 de Numerical Recipes. La última de
ellas Ran3 de Knuth es una buena rutina de generación de números aleatorios. La
mostramos a continuación.
C ––––––––––––––––––––-
C – SUBPROGRAMA RND –
C – CALCULA UN NUMERO ALEATORIO COMPRENDIDO ENTRE 0 Y 1 –
C – MIDUM = SEMILLA DE CUATRO CIFRAS –––––––-
C – TOMADA DE LA PAG 199 DE *NUMERICAL RECIPES* ––––-
C ––––––––––––––––––––-
SUBROUTINE RND(MIDUM,RAN)
IMPLICIT REAL*8(A-H,O-Z)
228 TEMA 9. INTRODUCCIÓN A LA SIMULACIÓN
PARAMETER (MBIG=1000000000,MSEED=161803398,MZ=0,FAC=1./MBIG)
DIMENSION MA(55)
DATA IFF /0/
IDUM=-MIDUM
IF(IDUM.LT.0.OR.IFF.EQ.0)THEN
IFF=1
MJ=MSEED-IABS(IDUM)
MJ=MOD(MJ,MBIG)
MA(55)=MJ
MK=1
DO 11 I=1,54
II=MOD(21*I,55)
MA(II)=MK
MK=MJ-MK
IF(MK.LT.MZ)MK=MK+MBIG
MJ=MA(II)
11 CONTINUE
DO 13 K=1,4
DO 12 I=1,55
MA(I)=MA(I)-MA(1+MOD(I+30,55))
IF(MA(I).LT.MZ)MA(I)=MA(I)+MBIG
12 CONTINUE
13 CONTINUE
INEXT=0
INEXTP=31
IDUM=1
ENDIF
INEXT=INEXT+1
IF(INEXT.EQ.56)INEXT=1
INEXTP=INEXTP+1
9.6. MÉTODO DE LA TRANSFORMACIÓN INVERSA 229
IF(INEXTP.EQ.56)INEXTP=1
MJ=MA(INEXT)-MA(INEXTP)
IF(MJ.LT.MZ)MJ=MJ+MBIG
MA(INEXT)=MJ
RAN=MJ*FAC
MIDUM=-IDUM
RETURN
END
9.6 Método de la transformación inversa
Los números generados por la función RANDOMIZE (o análogas) de los ordenadores
siguen una distribución uniforme, es decir cualquier número, en el intervalo conside-
rado, tiene la misma probabilidad de ser generado. No obstante, a veces queremos
generar números cuya distribución de probabilidad no sea uniforme. Para ello hay
una gran variedad de métodos. Describimos únicamente el método llamado de la
transformación inversa.
Si queremos generar valores de una variable aleatoria, con función densidad
f(x) > 0, se usa el hecho conocido de que si denotamos su función de Distribu-
ción por F(x), F(ξ) = η se distribuye uniformemente en el intervalo (0,1).
Por lo tanto se pueden generar números aleatorios uniformemente distribuidos
en (0,1) actuando del modo siguiente:
a) Se generan valores de con una distribución uniforme en el intervalo (0,1).
b) Se calcula el número generado con la relación ξ = F
−1
(η).
Este método presenta dos dificultades de tipo práctico: Calcular y resolver la
ecuación F(ξ) = η, lo que, en muchos casos, no es tarea fácil.
9.6.1 Método de la transformación inversa aplicado a la dis-
tribución exponencial
En este caso el método anteriormente descrito es de fácil aplicación. Mostramos la
forma de generar muestras procedentes de una distribución eponencial.
La función de densidad es f(x) = h.exp(−hx) :
F(x) =
_
x
0
h.exp(−hx)dx = η = 1 −exp(−hx) donde η ∈ U[0, 1]
Despejando x se obtiene:
230 TEMA 9. INTRODUCCIÓN A LA SIMULACIÓN
x = −
1
h
L(1 −η).
Como 1 − η sigue la misma distribución que η, tambien se puede calcular cada
elemento de la muestra usando la expresión:
x = −
1
h
Lη.
9.7 Simulación de una cola M/M/1
Los sistemas de colas suelen modelarse con la distribución exponencial. En este caso
puede hacerse uso de la expresión anterior, lo que nos va a permitir contrastar los
resultados analíticos con los obtenidos por medio de una simulación de la cola. Por
este motivo incluiremos ahora un ejemplo de simulación de una cola de este tipo
(modelo exponencial).
A veces es posible estudiar los fenómenos de espera analíticamente, pero esto
ocurre solamente en los casos más simples, así que es frecuente acometer el análisis y
estudio de los sistemas de colas por simulación. El siguiente ejemplo es lo suficiente-
mente sencillo como para que pueda realizarse analíticamente, lo que nos permitirá
contrastar los resultados obtenidos en la simulación con los que se obtienen por vía
teórica.
Ejemplo 92 Simular una cola de una sola línea y un solo servidor siendo la razón
de llegada λ=15 (número de personas que llegan por unidad de tiempo) y la razón
de servicio µ = 18 (número de elementos servidos en cada unidad de tiempo).
Comenzamos generando números aleatorios. Para transformarlos en elementos
de una distribución exponencial de los intervalos entre llegadas usaremos la trans-
formación:
ξ
1
= −
1
15
lnη
1
,
expresando el intervalo entre llegadas en horas. Si se expresa en minutos sería
ξ
1
= −
1
15
lnη
1
×60,
y para los tiempos empleados en despachar las herramientas, también en minutos
quedaría
ξ
2
= −
1
18
lnη
2
×60.
Si la sucesión de números aleatorios que generamos para intervalos entre llegadas
es:
9.7. SIMULACIÓN DE UNA COLA M/M/1 231
1.83156×10
−2
, 4,97871×10
−2
, 0.22313, 4.08677×10
−3
y para tiempos de servicios
6.09675×10
−3
, 4.51658×10
−3
, 0.011109, 2.47875×10
−3
, 4.97871×10
−2
entonces el primer intervalo entre llegadas que se obtiene es:
ξ
1
= −
1
15
lnη
1
×60 = −
1
15
ln(1.83156 ×10
−2
) ×60 = 16.0 minutos.
Continuando las operaciones con los siguientes números aleatorios obtendríamos
los valores de la siguiente tabla que representa los intervalos entre llegadas consecuti-
vas y el tiempo de estancia en el servidor de los primeros elementos que van llegando
al sistema.
tiempo entre llegadas 0 16 12 6 22
tiempo de servicio 17 18 15 20 10
Para simular el sistema podemos seguir el cambio de las variables definidas en
la tabla siguiente. Cada renglón puede representar el estado del sistema. En el
ejemplo, comenzamos la simulación (reloj a 0) con la primera llegada, aunque esto
no es imprescindible.
tipo Tiempo libre=1 ncola = tiproll = tiproser =
de de long hora hora
suceso suceso reloj ocupado=0 de la cola próx llegada próx partida
0 Inicio 0 1 0 0 9999
1 llegada 0 0 0 16 17
2 llegada 16 0 1 28 17
3 partida 17 0 0 28 35
4 llegada 28 0 1 34 35
5 llegada 34 0 2 56 35
6 partida 35 0 1 56 50
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
El algoritmo correspondiente puede seguir el diagrama de flujo de la figura 9.1
(las variables tienen el nombre y significado descrito en las tablas).
232 TEMA 9. INTRODUCCIÓN A LA SIMULACIÓN

Tiproll ≤ duración
y
Tiproser ≤ duración

STOP
tiproll < tiproser
Tipo=llegada
(un individuo entra
en el sistema)
reloj =
=reloj+tiproll
Tipo=partida
(un individuo sale
del sistema)
reloj =
=reloj+tiproser
Ncola =0
Ser=0
Ser=1
Tiproser=9999
Ncola=ncola+1
Tiproser=reloj+ts
Ser=0
Tiproser=reloj+ts
Ser=0
Ncola=ncola-1
Tiproll = reloj+tell

NO SI
SI
NO
SI
NO
SI NO
Inicio
Reloj=0
N1li0oc=1
Ncola=0
Tiproll=0
Tiproser=9999
Figura 9.1: Diagrama de flujo del programa de simulación de una cola M/M/1.
9.7. SIMULACIÓN DE UNA COLA M/M/1 233
9.7.1 Programa FORTRAN
c ***este programa simula una cola con una unica cadena y una sola fase
c . las demandas de servicio siguen la distribucion de poisson
c los tiempos de servicio se distribuyen con una exponencial negativa
c el modelo estima el tiempo de utilizacion del servidor, longitud media de la cola,
c numero medio de clientes en el sistema, tiempo medio de
c espera antes de recibir servicio, y la probabilidad de que haya que
c esperar para ser atendido. Esta estima ción se basa en una simulacion,
c cuya duracion es introducida como dato ***
c––––––––––––––––––––––––––––––––––-
c ***informacion del modelo ***
INTEGER NLLEGA,NESPERA,NCOLA
CHARACTER*10 TIPO
OPEN(6,FILE=’COLA.RES’)
c
WRITE(*,*)’****Introduce media de clientes que llegan por hora*****’
READ(*,*)VLLPORH
WRITE(*,*)’ *** MEDIA DE CLIENTES ATENDIDOS POR HORA *** ’
READ(*,*) SERPORH
WRITE(*,*)’ *** DURACION DE LA SIMULACION EN HORAS ***’
READ(*,*)TITOT
WRITE(*,*)’ *** SEMILLA *** ’
WRITE(*,*)’(NUMERO NATURAL DE UN MAXIMO DE 4 CIFRAS) ’
READ(*,*)IX
NSEMILLA=IX
WRITE(6,*)’ SIMULACION DE UNA COLA’
WRITE(6,*)’ –––––––-’
WRITE(6,*)’ ’
WRITE(6,*)’ DATOS DE LA COLA:’
WRITE(6,*)’ ’
234 TEMA 9. INTRODUCCIÓN A LA SIMULACIÓN
WRITE(*,*)’ SIMULACION DE UNA COLA’
WRITE(*,*)’ –––––––-’
WRITE(*,*)’ DATOS DE LA COLA:’
WRITE(*,*)’ ’
c ***valores de inicializacion ***
30 NLLEGA=0
RELOJ=0
NESPERA=0
N1LI0OC=1
TISEROC=0
TIESPERA=0
NCOLA=0
TIPO=’ INICIO’
c
c ***calcula el tiempo de llegada al sistema del primer cliente
c demandando servicio***
CALL RND(IX,YFL)
TIPR0LL=-ALOG(1.-YFL)/VLLPORH
c ***como no hay nadie en la cola el tiempo en que se termina el servicio
c se toma como arbitrariamente grande. una eleccion conveniente es la
c duracion de la simulacion***
TIPR0SER=TITOT
c
c *** el tiempo del proximo suceso se toma como el minimo del tiempo
c de llegada, tiempo de completar el servicio , y el tiempo de
c terminar la simulacion***
WRITE(6,100)VLLPORH,SERPORH,TITOT,NSEMILLA
WRITE(6,*)’ TIPO RELOJ NCOLA N1LI0OC TIPR0LL TIPR0SER’
WRITE(6,50)TIPO, RELOJ ,NCOLA ,N1LI0OC, TIPR0LL, TIPR0SER
60 TIPSUC=AMIN1(TIPR0LL,TIPR0SER,TITOT)
9.7. SIMULACIÓN DE UNA COLA M/M/1 235
c
c ***calcula el total del tiempo ocupado del servidor y
c el de espera de los que esperan servicioe. luego el reloj
c se adelanta hasta el tiempo del proximo suceso***
TISEROC=TISEROC+N1LI0OC*(TIPSUC-RELOJ)
TIESPERA=TIESPERA+NCOLA*(TIPSUC-RELOJ)
RELOJ=TIPSUC
c
c ***va a 90 si el proximo suceso es parar la simulacion,
c o va a 80 si el siguiente suceso es completar un servicio***
c
IF (TIPSUC.EQ.TITOT) GO TO 90
IF (TIPSUC.EQ.TIPR0SER) GO TO 80
c
c ***en otro caso el propio suceso es una llegada
c . modifica el numero total de llegadas
c y genera el tiempo en que vendra el siguiente cliente***
c
NLLEGA=NLLEGA+1
CALL RND(IX,YFL)
TIPR0LL=RELOJ-ALOG(1.-YFL)/VLLPORH
c
c ***va a 70 si el servidor esta libre; si no es asi
c modifica el numero de los que han tenido que esperar y
c el numero de los que estan esperando ahora y vuelve al principio
c para determinar de que tipo es el siguiente suceso***
IF (N1LI0OC.EQ.1) GO TO 70
NESPERA=NESPERA+1
NCOLA=NCOLA+1
TIPO =’ LLEGADA’
236 TEMA 9. INTRODUCCIÓN A LA SIMULACIÓN
WRITE(6,50)TIPO, RELOJ ,NCOLA ,N1LI0OC, TIPR0LL, TIPR0SER
50 FORMAT(A10,F10.2,I10,I10,F10.2,F10.2)
GO TO 60
c
c ***modifica el estado del servidor, genera el tiempo de
c duracion del servicio el numero de los que estan esperando ahora
c y vuelve al principio para determinar de que tipo
c es el siguiente suceso***
70 N1LI0OC=0
CALL RND(IX,YFL)
TIPR0SER = RELOJ - ALOG(1.-YFL)/SERPORH
TIPO =’ LLEGADA’
WRITE(6,50)TIPO, RELOJ ,NCOLA ,N1LI0OC, TIPR0LL, TIPR0SER
GO TO 60
c ***ha terminado un servicio. va a 85 si
c alguien esta esperando, pues el servidor ha quedado libre ***
C
80 IF (NCOLA.GT.0) GO TO 85
c
c ***si no hay nadie esperando, registra que el servidor esta libre
c y el tiempo de la siguiente partida la pone en un valor
c arbirariamente alto.
c luego vuelve para determinar el tipo del siguiente suceso***
N1LI0OC=1
TIPR0SER=TITOT
TIPO=’ LLEGADA’
WRITE(6,50)TIPO, RELOJ ,NCOLA ,N1LI0OC, TIPR0LL, TIPR0SER
GO TO 60
c
c ***DISMINUYE LA LONGITUD DE LA COLA
9.7. SIMULACIÓN DE UNA COLA M/M/1 237
c GENERA EL TIEMPO DE COMPLETAR EL SERVICIO Y VUELVE
c PARA DETERMINAR DE QUE TIPO ES EL SIGUIENTE SUCESO ***
85 NCOLA=NCOLA-1
CALL RND(IX,YFL)
TIPR0SER=RELOJ-ALOG(1.-YFL)/SERPORH
TIPO=’ PARTIDA’
WRITE(6 ,50)TIPO, RELOJ ,NCOLA ,N1LI0OC, TIPR0LL, TIPR0SER
GO TO 60
c ***se ha terminado el tiempo de la simulacion
c se calculan los estadisticos
c se prepara la salida de la informacion*****
90 ACTIV=(TITOT-TISEROC)/TITOT
VMNCOLA=TIESPERA/TITOT
VMPES=VMNCOLA+ACTIV
VMTEC=TIESPERA/NLLEGA
PRESPE=1.*NESPERA/NLLEGA
WRITE(6,*)’ ’
WRITE(6,*)’ ’
WRITE(*,100)VLLPORH,SERPORH,TITOT,NSEMILLA
WRITE (*,110)ACTIV,VMNCOLA,VMPES,VMTEC,PRESPE
WRITE(6,*)’ RESUMEN DE LA SIMULACION:’
WRITE(6,*)’ ––––––––’
WRITE(6,*)’ ’
WRITE (6,110)ACTIV,VMNCOLA,VMPES,VMTEC,PRESPE
100 FORMAT (
1 ’ MEDIA DE LLEGADAS POR HORA: ’,F7.2/
2 ’ MEDIA DE CLIENTES ATENDIDOS POR HORA: ’,F7.2/
3 ’ DURACION DE LA SIMULATION, HORAS: ’,F7.2/
4 ’ SEMILLA: ’,I5/)
110 FORMAT (’ % DE ACTIVIDAD DEL SERVIDOR: ’,F7.2/
238 TEMA 9. INTRODUCCIÓN A LA SIMULACIÓN
1 ’ LONGITUD MEDIA DE LA COLA: ’,F7.2/
2 ’ NUMERO MEDIO DE PERSONAS EN EL SISTEMA: ’,F7.2/
3 ’ TIEMPO MEDIO DE ESPERA EN LA COLA: ’,F7.2/
4 ’ PROBABILIDAD DE TENER QUE ESPERAR: ’,F7.2/)
WRITE(*,*)’ LOS RESULTADOS INTERMEDIOS DE ESTA SIMULACION’
WRITE(*,*)’ ESTAN GUARDADOS EN EL FICHERO COLA.RES’
STOP
END
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Salida de resultados de una simulación
SIMULACION DE UNA COLA
DATOS DE LA COLA:
MEDIA DE LLEGADAS POR HORA: 15.00
MEDIA DE CLIENTES ATENDIDOS POR HORA: 18.00
DURACION DE LA SIMULACION, HORAS: 8.00
SEMILLA: 65
TIPO RELOJ NCOLA N1LI0OC TIPR0LL TIPR0SER
INICIO 0.00 0 1 0.02 8.00
LLEGADA 0.02 0 0 0.13 0.05
PARTIDA 0.05 0 1 0.13 8.00
LLEGADA 0.13 0 0 0.17 0.20
LLEGADA 0.17 1 0 0.18 0.20
LLEGADA 0.18 2 0 0.35 0.20
PARTIDA 0.20 1 0 0.35 0.21
PARTIDA 0.21 0 0 0.35 0.24
LLEGADA 0.24 0 1 0.35 8.00
...............
...............
9.7. SIMULACIÓN DE UNA COLA M/M/1 239
TIPO RELOJ NCOLA N1LI0OC TIPR0LL TIPR0SER
LLEGADA 7.75 7 0 7.77 7.76
PARTIDA 7.76 6 0 7.77 7.81
LLEGADA 7.77 7 0 7.84 7.81
PARTIDA 7.81 6 0 7.84 7.90
LLEGADA 7.84 7 0 7.90 7.90
LLEGADA 7.90 8 0 7.90 7.90
LLEGADA 7.90 9 0 7.91 7.90
PARTIDA 7.90 8 0 7.91 7.91
LLEGADA 7.91 9 0 8.00 7.91
PARTIDA 7.91 8 0 8.00 7.93
PARTIDA 7.93 7 0 8.00 7.95
PARTIDA 7.95 6 0 8.00 8.04
En las dos tablas anteriores se presenta la evolución de la cola en los primeros y
en los últimos momentos de una simulación de 8 horas.
RESUMEN DE LA SIMULACION (8 horas):
––––––––
ACTIVIDAD DEL SERVIDOR (fracción): 0 .73
LONGITUD MEDIA DE LA COLA: 2.10
NUMERO MEDIO DE PERSONAS EN EL SISTEMA: 2.84
TIEMPO MEDIO DE ESPERA EN LA COLA: 0.14
PROBABILIDAD DE TENER QUE ESPERAR: 0.78
La tabla siguiente presenta un resumen de la simulación de 8 horas y de otra de
10000 horas. Se comparan con los resultados analíticos, observándose la similitud de
estos valores con los obtenidos en la simulación más larga. A veces las simulaciones
cortas, como en este ejemplo, no son suficientes para obtener una precisión aceptable
debido, no sólo a la escasez de datos, sino también a que no se ha llegado a obtener
aún el régimen estacionario.
Duración
de la
Simulación
Actividad
del
Servidor
Longitud
media de
la cola
N
o
medio de
personas en
el sistema
Tiempo medio
de espera
en la cola
8 horas 0.73 2.10 2.84 0.14
10000 horas 0.84 4.23 5.07 0.28
Resultados
analíticos
λ
µ
= 0.833
λ
2
µ(µ−λ)
= 4.16.
λ
µ−λ
= 5
λ
µ(µ−λ)
= 0.277
240 TEMA 9. INTRODUCCIÓN A LA SIMULACIÓN
9.8 Integración Montecarlo. Método de éxito-fracaso
En el modelo de simulación de la cola, hemos aplicado un Montecarlo Probabilista.
Consideremos ahora un ejemplo de aplicación del Montecarlo Determinista: el cál-
culo de una integral definida. Tratamos ahora el problema de calcular la integral
unidimensional I =
_
b
a
g(x)dx. El procedimiento que se empleará, método de éxito-
fracaso, no es el más eficiente, aunque sí es el más intuitivo.
Se supondrá que el integrando, g(x), es una función acotada (ver figura 9.2):
0 ≤ g(x) ≤ c, x ∈ [a, b]
Sea Ω el rectángulo
Ω = {(x, y) ∈ R
2
x ∈ [a, b], y ∈ [0, c]} = [a, b] ×[0, c]
y sea (X, Y ) una variable aleatoria uniformemente distribuida sobre Ω con función
de densidad:
f
XY
=
_
1
c(b−a)
si (x, y) ∈ Ω
0 en otro caso
¿Cuál es la probabilidad P de que el vector aleatorio (x, y) caiga en el área
situada por debajo de la curva g(x) ?
Denotemos por S = {(x, y)| y < g(x)}. Se observa que el área bajo g(x) es igual
al área de S, que a su vez coincide con el valor de la integral
I =
_
b
a
g(x)dx.
Con ayuda de la figura, se puede deducir que:
P =
area S
area Ω
=

b
a
g(x)dx
c(b−a)
=
I
c(b−a)
Por tanto
I = c(b −a)P
9.8. INTEGRACIÓN MONTECARLO. MÉTODO DE ÉXITO-FRACASO 241
g(x) g(x) g(x) g(x)
a b
* Fracaso
* Exito
c
x
S
Ω ΩΩ Ω
Método MC de éxito-fracaso.
Figura 9.2:
Para estimar el valor de P generamos N puntos aleatorios independientes:
(x
1
, y
1
), (x
2
, y
2
).....(x
N
, y
N
)
dentro del rectángulo Ω.
La probabilidad P puede ser estimada por:
´
P =
N
h
N
siendo N
h
el número de estos puntos que se verifica g(x
i
) > y
i
(es decir, que caen
dentro del área que quiere calcularse). Por lo tanto un valor aproximado de I puede
obtenerse de la forma siguiente
I = c(b −a)P
Si el extremo del vector aleatorio “cae” en S se interpreta como un éxito, y si no
pertenece a S como un fracaso, de ahí el nombre del método.
Este método, que presentamos aquí por su simplicidad, no suele ser muy eficiente,
existiendo diversos procedimientos alternativos que permite reducir los errores en las
estimaciones de la integral. De todos formas, conviene tener en cuenta que el método
Montecarlo no es el más indicado para el cálculo de integrales unidimensionales,
siendo sin embargo uno de los más eficientes cuando el número de variables del
integrando es bastante elevado.
242 TEMA 9. INTRODUCCIÓN A LA SIMULACIÓN
9.9 Ejemplos de programas de simulación
Describimos algunos programas de simulación que han sido realizados por algunos
alumnos, y que pueden servir para sugerir la realización de otros similares y para
mostrar que estas simulaciones son susceptibles de ser realizadas dentro del ámbito
académico.
Ejemplo 1
PROPÓSITO:
Aplicar el método de integración Montecarlo, éxito-fracaso, de forma práctica.
Se limita a funciones polinómicas de 2
o
grado.
UN EJEMPLO DE APLICACIÓN
En la salida del programa siguiente se puede observar que el programa obtiene
como valor aproximado de
_
2
−2
(x
2
+ 2x + 3)dx
usando 250 puntos 17.072. Obsérvese que el valor exacto es 17.333...

OPERATORIA
Se sigue el orden siguiente :
(1) Introducir los límites de integración a y b.
(2) Indicar los coeficientes de la función polinómica de 2
o
grado.
9.9. EJEMPLOS DE PROGRAMAS DE SIMULACIÓN 243
(3) Introducir el valor inicial de la semilla, para la generación de números aleato-
rios.
(4) Establecer el número de puntos a generar en cada ejecución.
Pulsando el botón DIBUJAR se obtiene la gráfica de la función en el intervalo
indicado y desde los valores máximo y mínimo que en él alcanza.
Cada vez que pulse AZAR, se representa el número de puntos indicado en (4),
calculando el valor estimado del área. Puede COPIAR el gráfico en el portapapeles
Windows, para incorporar en documentos (razón por la que se habilita el acceso a
Paintbrush desde el menú de opciones).
Ejemplo 2
PROPÓSITO: Estimar la probabilidad de que el determinante de una matriz de
orden 3 por 3, cuyos elementos son números naturales pertenecientes a un cierto
intervalo, sea nulo.
El programa muestra los determinantes generados según se muestra en la siguien-
te figura.
Ejemplo 3
PROPÓSITO: Calcular los parámetros de una cola con una sola línea de espera
y un solo servidor (distribuciones exponenciales).
El programa presenta una evolución visual de la cola, como se ve en la siguiente
figura.
244 TEMA 9. INTRODUCCIÓN A LA SIMULACIÓN
A continuación se presenta el resumen de los parámetros del sistema.
Ejemplo 4
PROPÓSITO: Estudio detallado de diversos sistemas de colas, con intervalos
entre llegadas y tiempos de servicios generados por distintas distribuciones.
9.9. EJEMPLOS DE PROGRAMAS DE SIMULACIÓN 245
FUNCIONALIDAD DEL PROGRAMA:
1) Tipos de problemas planteados
Sistemas con c- canales de servicio
Sistemas con c canales de servicio y capacidad restringida
Sistemas con infinitos canales de servicios.
La selección se realiza en el menú de la figura 9.3.
Figura 9.3:
2) Distribuciones de llegada y de servicio empleadas. Se puede seleccionar
cualquiera de las distribuciones de la ventana dada en la figura 9.4.
3) Gráfico de la evolución de los parámetros del sistema para verificar la esta-
cionariedad del sistema.
Si se ha elegido el seguimiento gráfico se presenta una gráfica que permite decidir
si se ha alcanzado el estado estacionario del sistema. Cuando se alcanza este estado
se inicia la simulación del sistema, respetando su estado actual, hasta obtener los
parámetros de la cola.
4) Cálculo de los parámetros del sistema.
Como resultado final aparecen los parámetros del sistema dados en una ventana
cuya presentación puede verse en la figura 9.5.
APLICACIÓN A CASOS PRÁCTICOS
Caso 1: En un aeropuerto con tres pistas de aterrizaje se ha contrastado que los
246 TEMA 9. INTRODUCCIÓN A LA SIMULACIÓN
Figura 9.4:
Figura 9.5:
9.9. EJEMPLOS DE PROGRAMAS DE SIMULACIÓN 247
tiempos entre las llegadas de los aviones se distribuyen según una ley exponencial
(0,04 min-1) y que los tiempos de maniobra en el aterrizaje se distribuyen como una
uniforme (14 min., 20 min) en la pista 1, exponencial (0.02 min-1) en la pista 2 y
una Erlang (15, 6.5 min) en la pista 3. Si se produce una llegada y las pistas están
ocupadas, el avión se mantendrá en vuelo en espera de aterrizar.
Mostramos a continuación los resultados obtenidos por el programa para este
problema usando simulaciones cada vez más largas. Puede observarse que los pará-
metros de la cola son bastante estables.
No. de eventos 100000 200000 500000 800000
Tiempo simulado 1239722 2486862 6245916 9982817
Media de aviones en el sistema 1.4152 1.4127 1.4040 1.4044
Media de aviones en espera 0.0931 0.0917 0.0888 0.0889
Tiempo medio en el sistema 35.0896 35.1320 35.0767 35.0514
Tiempo medio de espera 2.3084 2.2800 2.2184 2.2195
Caso 2. En este caso se ha realizado una simulación con llegadas y tiempo
de servicios exponenciales, para poder contrastar las salidas del programa con los
resultados obtenidos analíticamente. También aquí se constata la precisión de los
resultados obtenidos.
Nodo de llegada exp. (1)
G/G/3/7 Nodos de servicio (1,2,3) exp. (0.1666)
Eventos 200000 400000 800000 Teórico
L 6.0711 6.0693 6.0615 6.0631
Lq 3.0999 3.0982 3.0910 3.0920
W 12.3350 12.3175 12.2391 12.2444
Wq 6.2981 6.2877 6.2412 6.2442
248 TEMA 9. INTRODUCCIÓN A LA SIMULACIÓN

2

Índice General
Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

I

TEORÍA
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11
13 13 14 16 16 17 18 19 20 25 26 28 32 33 33 38 39 43 48 51 55 57 62 64 66 67 68 72 76 77

1 Introducción a la teoría de optimización 1.1 Orígenes y desarrollo . . . . . . . . . . . . . . 1.1.1 Orígenes de la Investigación operativa 1.1.2 La Teoría de Juegos . . . . . . . . . . 1.1.3 La Programación Lineal . . . . . . . . 1.1.4 La Investigación Operativa . . . . . . 1.2 Modelización de un problema de P. L. . . . . 1.2.1 Formulación de los modelos . . . . . . 1.3 Modelización de diversos problemas de I.O. . 1.4 Modelos de programación matemática . . . . 1.5 El método geométrico . . . . . . . . . . . . . 1.5.1 Descripción del método geométrico . . 1.5.2 Resumen del método geométrico . . .

2 Programación Lineal 2.1 Modelo general de programación lineal . . . . . . . . . . . . . . . . . 2.2 Nociones previas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Definiciones sobre las soluciones de un problema . . . . . . . . . . . 2.4 Algunos resultados sobre las soluciones . . . . . . . . . . . . . . . . . 2.5 El algoritmo del Simplex . . . . . . . . . . . . . . . . . . . . . . . . . 2.6 Algoritmo del Simplex en forma de tabla (max) . . . . . . . . . . . . 2.7 Algoritmo del Simplex en forma de tabla (min) . . . . . . . . . . . . 2.8 Búsqueda de soluciones iniciales . . . . . . . . . . . . . . . . . . . . . 2.8.1 Método de las Penalizaciones . . . . . . . . . . . . . . . . . . 2.9 Algoritmo del Simplex en forma matricial . . . . . . . . . . . . . . . 2.9.1 Método del Simplex en forma matricial (caso maximizante) . 2.10 Adaptación algebraica del algoritmo del Simplex . . . . . . . . . . . 2.10.1 Algoritmo del Simplex (enfoque algebraico) . . . . . . . . . . 2.10.2 Método del Simplex en forma de tabla (Usando zj − cj en la última fila) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.11 Otros algoritmos de programación lineal . . . . . . . . . . . . . . . . 2.11.1 Método de las dos fases . . . . . . . . . . . . . . . . . . . . . 3

4

ÍNDICE GENERAL 2.11.2 Algoritmo revisado del Simplex (Caso maximizante) . . . . . 79 85 85 85 88 91 92 94 105 107 111 111 112 112 114 116 116 117 118 119 119 124 127 127 128 129 129 129 130 132 134 137 137 141 143 144 146 146 147 149 150

3 Dualidad en programación lineal 3.1 Formas de la dualidad . . . . . . . . . . . . . . . . 3.1.1 Forma canónica maximizante de la dualidad 3.1.2 Forma estándar maximizante de la dualidad 3.1.3 Reglas para escribir el problema dual . . . . 3.1.4 Forma canónica minimizante de la dualidad 3.2 Propiedades de la relación de dualidad . . . . . . . 3.3 Interpretación económica de la dualidad . . . . . . 3.4 Algoritmo Dual del Simplex. (Caso maximizante) .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

4 Análisis de sensibilidad 4.1 Introducción gráfica . . . . . . . . . . . . . . . . . . . 4.2 Cambios discretos . . . . . . . . . . . . . . . . . . . . 4.2.1 Variación en un coste de una variable no básica 4.2.2 Variación en un coste de una variable básica . . 4.2.3 Cambios en los recursos . . . . . . . . . . . . . 4.2.4 Cambios en los coeficientes tecnológicos . . . . 4.3 Incorporación de una nueva actividad . . . . . . . . . 4.4 Incorporación de nuevas restricciones . . . . . . . . . . 4.5 Programación Paramétrica . . . . . . . . . . . . . . . . 4.5.1 Parametrización de los coeficientes de coste . . 4.5.2 Parametrización de los recursos . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

5 El problema de transporte 5.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Planteamiento como un problema de programación lineal 5.3 Problema no equilibrado . . . . . . . . . . . . . . . . . . . 5.4 Propiedades del problema de transporte . . . . . . . . . . 5.5 Determinación de una solución inicial . . . . . . . . . . . 5.5.1 Método de la esquina Noroeste . . . . . . . . . . . 5.5.2 Método de costo mínimo . . . . . . . . . . . . . . . 5.5.3 Método de Vogel . . . . . . . . . . . . . . . . . . . 5.6 Definición de Ciclo . . . . . . . . . . . . . . . . . . . . . . 5.7 Algoritmo de transporte (forma minimizante) . . . . . . . 5.8 Soluciones degeneradas . . . . . . . . . . . . . . . . . . . . 5.9 Otras variaciones del problema de transporte . . . . . . . 5.10 El problema de transbordo . . . . . . . . . . . . . . . . . 5.11 El problema de asignación . . . . . . . . . . . . . . . . . . 5.11.1 El algoritmo Húngaro (Forma minimizante) . . . . 5.11.2 Ejemplo de aplicación del algoritmo Húngaro . . . 5.12 Problema de emparejamiento . . . . . . . . . . . . . . . . 5.13 Problema de planificación de la producción . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . 210 8. . . . . . . .6. . .6 Teorema de Little . . . . . . . . . . . . . . . . . 7. . . . . . . . . .2. . . . . . . . . . . . .3 Problema de costo fijo . . . 195 8. . .2 Problema del viajante . .3. . . . . . . . . . . . . 209 8. .1 Flujo de un corte . . 7. . . . . 7. . . . . . . . . . . . . . . . . . . . . . .2. . . . . . . Conceptos básicos . . . . . . .2 Caminos de longitud mínima . . . 7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6. . 7. . 6.1 Costos de los sistemas de colas . . . . . . . . .3 Algoritmos de ordenación y de etiquetación 6. 198 8. . . .1 Resumen .ÍNDICE GENERAL 6 Modelos de Redes 6. . . . . . . . . 209 8. . . . . . . . . . . . 7. . . 7 Programación Entera 7. . .1.1 Probabilidad de que el sistema esté en cierto estado . . . . . . . . . . . . . . . . 6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6. . . . . . . . . 7. . .7 CPM y PERT .2 El método PERT . . . .8. . 198 8. . . .1 Cálculo de la probabilidad de los diferentes estados del sistema 213 . . . . . . . . . . .5. . . . . . . . . . . . . . . . . . . . . . . . .2 Estructuras típicas. . . . . . . . . . . . 6. . . . . . .1 Redes. . . . . . Algoritmo de enumeración 8 Teoría de Colas 195 8. . . . . . . . 204 8. .6 Algoritmo de Ford-Fulkerson . . . . . .7. . . . . . . . . . . . . . . . . . . . . . . 7. . . . . . . .4 Algoritmo de corte o de Gomory . .7. . . . 200 8. . . . . . . .1 Introducción . . . .2 Algunos problemas de programación entera . . .5. . . . . . . . . . . . . . . . . . . 6. . . . . . . . . . . . . . . . . . . . . . . . . 205 8. . .2 Algoritmo de Ford-Fulkerson .4. . . . . . . . . . . . . .2. . . . . . . . . . . . . . . . 198 8. . . .3. . . .1 Resumen del algoritmo de Gomory . .3.3 Modelos de duración de los servicios .4 Algoritmo de Dijkstra . . .3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3. . . . . 205 8. . . . . . . . . . . . . . . . . . . . 209 8. . . . . . 6. . . . . .2. .2 Terminología . . . . . . . . . 6. . . . . . . . . . . . . . . .5. . . . . . . . . . . . .3 Modelos de llegadas y de tiempo de servicio . . .2. . 213 8. . . . . . La distribución de Erlang . . . . . . . . . . . . . . . .5 Estudio de una cola M/M/1 . . . .1 Características físicas . . . . . . . . . . 206 8. . . . . . . . . . . . . 203 8. . . . 201 8. .1 Relación entre la distribución de Poisson y la exponencial . . . . .8 Modelo con s servidores . . . . . . . . . .4 La notación de Kendall . .3 Parámetros de los sistemas de colas . . . .2.1 El problema de la mochila . . .2 Número medio de elementos en el sistema . . . . . . . . . . . . . . . . . . . . . . . 197 8. . . . . . . . . . . . . . .2 Características de funcionalidad . . . 7. 6. . . . . . . . . . . . . . . . . . . .7 Sistemas con capacidad limitada . .3 Número medio de elementos en cola . . . . . . . . . . .5 Problema del flujo máximo . . . . . . . . . . 201 8. . . . . . . . . . . .2 Programación entera mixta . . . . . . . . . . . 5 155 155 157 158 161 163 165 165 166 169 171 173 177 177 178 178 179 180 181 183 185 185 188 189 . . . . . . . . . 7. .2 Otra distribución de las llegadas. 206 8. . . . . . . . . . .3 El algoritmo de ramificación y acotación . . . .1 Algoritmo CPM . . . .5 Programación 0-1. . . 6. . . . .1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1. . . .

. . . . . . . .4 Notas históricas sobre el Método Montecarlo . . 330 3. . . . . . . .1 Ejercicios Resueltos . . 9. . 9. .2 Ejercicios Propuestos . . . . 275 2 Programación lineal 283 2. . . . . . . . . . . . . . . . . . . . 335 4. . . . . . . . . . . . . . . . . . . . . . . . . . Expresiones para el caso de s servidores . . . . . . . . . . . . 9. . . . . . . . . . . . . . . . . . . . . . . .3 Método de las congruencias . . . 315 3. . . . .8.3 Soluciones de los Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . .8. . . . . . . . . . . . . . . . . . . . . . . . .4 ÍNDICE GENERAL Cálculo de P0 . . . . . 8. . . . . . . .5. . . . . . . . . . . . . . 283 2. . . . . . . . . . . . . . . . . . . . . .6 8. 9. . . . .5. .3 Método Montecarlo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.9 El coste de un sistema de colas . .3 8. 310 3 Dualidad en programación lineal 315 3. . . . . . . . . . . . . . . . . . . . . Sistemas de colas de tipo M/M/s/FCFS/∞/∞. . .1 Ejercicios Resueltos . . . . . . . 367 . . . . . . . . . . . . . . . . . .9 Ejemplos de programas de simulación . . . . . . . . . . . . . . . . . . . . . . . . . . . 9. . . . . . . . . . . . . .1 Ejercicios Resueltos . . Generalidades . 266 1. . . . . . . . . . . . .2 Ejercicios Propuestos . . . . . 362 4. . . . . . . . . . . .2 Ejercicios Propuestos . . . . 9. . . . . . . . . . . . II EJERCICIOS 249 1 Introducción a la optimización 251 1. . . . . . . . . . 9. . . . . .1 Ejercicios Resueltos . .3 Soluciones de los Ejercicios Propuestos .1 Simulación. . . . . . . . . . . . . . . . . .2 8. . . . . . . . 9. . . . . . 214 215 215 216 219 219 220 223 224 225 226 226 226 229 229 230 233 240 242 9 Introducción a la Simulación 9. . . . . . . . . . . . . .6 Método de la transformación inversa . . . . . . . . . . . . .3 Soluciones de los Ejercicios Propuestos . . . 9. . . . . . . . .5 Generación de números aleatorios . . . . . . . .7. .7 Simulación de una cola M/M/1 . . . . . . . . . . 251 1. .6.1 Método de la transformación inversa aplicado a la distribución exponencial . . . . . . 9. . 9. . . . . . . . . . . . . . Cálculo de los parámetros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 2. . . . . . . . . . . . . . . . .5.2 Un ejemplo muy sencillo . . . . . . . . . . . . . . . . . . . . . . .3 Soluciones de los Ejercicios Propuestos .1 Programa FORTRAN .2 Ejercicios Propuestos . 9. . . . . . . .8 Integración Montecarlo. . . . . . . . . . . . . . . . . . . . .8. . . . . . . . 332 4 Análisis de sensibilidad 335 4. Método de éxito-fracaso . . . . . . . . . . .1 Propiedades de un buen generador de números aleatorios . . . . .2 Método del centro del cuadrado . . . .

. . . . . . .ÍNDICE GENERAL 7 5 El Problema de transporte 371 5. . . . . . . . . . . . . . . . . . . . . . . . . . 383 5. . 3. . .1 Ejercicios Resueltos . . . . . . . . . . . . . . . . .2 Formato abreviado de LINGO . . . . . . .3 Soluciones de los Ejercicios Propuestos . . . . . . . . . . . . . . . .2 Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . .1 Ejercicios resueltos . . . . . . . . . . . . 3 El problema de transporte 3. . . . 401 7 Programación entera 403 7.4 Problema de planificación de la producción 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 III PRÁCTICAS CON ORDENADOR 431 1 Programación lineal I 433 1. . . . 426 9 Introducción a la Simulación 427 9. . . . . . . . . . . . . . .1 Ejercicios Resueltos .1 Problema de transporte . . . . . . . . . . . . . . . . . . 391 6. . . . . . . . . .2 Ejercicios Propuestos . . . . . . . . . . . . . . . . . . 388 6 Problemas de redes 391 6. . . 396 6. . . . . . . . . . . . . . .1 Problema de programación lineal con LINGO . . . . . . . . . . 3. . . . . . . . . . . . . . . . . . . . . . 427 9. . . . . . . . . .3 Otros problemas . . . . . . . . . . . . . . . . . . . . . . .2 Problema de asignación . . . 433 1. . . . . . .5 Otros problemas . . . . . . . .3 Soluciones de los Ejercicios Propuestos . . . . . . . . . .1 Ejercicios Resueltos . . . . . . . . . . . . . . . . .3 Recapitulación . . . . . . . . . . . . . . . . . . . . . . . 436 1. . . . . . . . . . . . . . . . . . . . . . .1 Ejercicios Resueltos . . . . . . . . . . . . .1 Comandos de salida de ficheros . . . . .2 Análisis de sensibilidad con LINGO .3 Soluciones de los Ejercicios Propuestos . . 416 8 Teoría de colas 419 8. . . . . 437 2 Programación lineal II 2. . . . . . . . . . . . . . . . . . . . . . . . . . .2 Ejercicios Propuestos . . . . . . . . . . . . . . . . 424 8. . . . . . . . . . . . . . . . . . . . . . . . . . . 371 5. . . . . . . . . . . . . . 414 7. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 Ejercicios Propuestos . . . . . . . . . . . . . . 2. . . . .3 Soluciones de los Ejercicios Propuestos . . . . 3. . . . . . . . . . . . . 2. . . . . . . . . . 403 7. . . . 445 445 448 449 453 453 455 457 459 460 . . . . . . . . . . . . . .2 Ejercicios Propuestos . . . . . . . .3 Problema de emparejamiento . . . . . 419 8. . . .

. . . . . . . . . . . . . . . . . . . . . . 5. . . . . . . . . . . . . . . BIBLIOGRAFÍA y libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 Variable entera . . . . . . . . . . 4. .3 Variable libre . . . . . . . . . . . . . . . . acotada 5. . . . . . . . . . . . . . . 5. . . . 5. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2 Flujo máximo . 5. . . . . . . . . . . . 4.1 Camino mínimo . . . . . .8 4 Problemas de redes 4. . . . . . . . . . . . . . . . . . . 5 Variable entera. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 Variable binaria . . . . . . .2 Variable acotada . . . . . . .3 CPM . . . . . . . . . . . . . .5 Otros problemas . . . . . . .4 Otros problemas ÍNDICE GENERAL 463 463 468 470 472 475 475 476 477 478 480 499 . . 4. . . . . . . . . . . . . . . . .

contiene una sección de ejercicios totalmente resueltos y otra de ejercicios propuestos con su solución. que se inicien en el estudio de las distintas técnicas que la Investigación Operativa nos suministra para el estudio de los problemas de optimización que surgen a diario en el mundo de la empresa y de la administración. problemas que pretenden dar el máximo rendimiento a los recursos disponibles y. incluyéndose el problema de transporte. así como otro que trata los temas más básicos de las Técnicas de Simulación. ambos profesores de Estadística e Investigación Operativa de la Escuela Superior de Ingeniería de la Universidad de Cádiz. Los siguientes temas están dedicados a algoritmos especiales de optimización. LOS AUTORES 9 . Está especialmente diseñado para alumnos de las Escuelas de Ingeniería o para estudios de Ciencias Económicas y Empresariales y es fruto de la experiencia de los autores. ilustrando todos los aspectos mencionados con abundantes ejemplos. La tercera parte contiene diversos problemas realizados con el Programa LINGO publicado por LINDO SYSTEMS. dedicada a problemas sobre los temas tratados en la teoría. En los cuatro primeros temas se trata la Programación Lineal. El libro está organizado en tres secciones: Una primera parte teórica donde se recogen sobre todo los conceptos fundamentales y los algoritmos más usuales en la resolución de problemas de optimización. De esta forma. Esperamos que los lectores encuentren útil este manual para el estudio y las aplicaciones de la Investigación Operativa y sean capaces de resolver los problemas que se les planteen en este campo. problemas de redes y programación con variable entera o binaria. incluyendo instrucciones de uso de los comandos de este programa. veremos cumplido nuestro objetivo. El libro contiene también un capítulo de Teoría de Colas. Los destinatarios de este texto son las personas. limitados. la Dualidad en Programación Lineal y los problemas de Sensibilidad del algoritmo de Simplex. por lo general. La segunda parte..INTRODUCCIÓN Este libro está concebido con el propósito de cubrir los conceptos y técnicas básicas de la Investigación Operativa y pone el mayor énfasis en sus aplicaciones a problemas reales. incluyendo programas en Fortran y en otros lenguajes de Programación. INC. estudiantes o profesionales.

.

Parte I TEORÍA 11 .

.

los métodos de lo que actualmente llamamos programación lineal y la potencialidad que de ellos se deriva. el matemático ruso Leonodas Vitalyevich Kantarovitch publica una extensa monografía titulada Métodos matemáticos de organización y planificación de la producción en la que por primera vez se hace corresponder a una extensa gama de problemas una teoría matemática precisa y bien definida llamada. sobre todo. debemos remontarnos al año 1939 para encontrar nuevos estudios relacionados con los métodos de la actual programación lineal. quien en 1776 se interesó por problemas de este género. estudiado independientemente por Koopmans y Kantarovitch. Posteriormente el matemático francés Jean Baptiste-Joseph Fourier (1768-1830) fue el primero en intuir. En 1941-1942 se formula por primera vez el problema de transporte. grandes matemáticos como Newton. razón por la cual se suele conocer con el nombre de problema de Koopmans-Kantarovitch. Lagrange.Tema 1 Introducción a la teoría de optimización 1. aunque de forma imprecisa. Bernoulli y. se ocuparon de obtener máximos y mínimos condicionados de determinadas funciones. Tres años más tarde. 13 . G. Leibnitz. En este año. Si exceptuamos al matemático Gaspar Monge (1746-1818). que tanto habían contribuido al desarrollo del cálculo infinitesimal. Stigler plantea otro problema particular conocido con el nombre de régimen alimenticio optimal. hoy en día. programación lineal.1 Orígenes y desarrollo En los siglos XVII y XVIII.

instrumentos que harían posible la resolución y simplificación de los problemas que se estaban gestando. iniciando el bloqueo de Berlín. tantas como se transportaban por carretera y ferrocarril antes del corte de las comunicaciones. Se adoptó la decisión de programar una demostración técnica del poder aéreo norteamericano. se organizó un gigantesco puente aéreo para abastecer la ciudad: en diciembre de 1948 se estaban transportando 4500 toneladas diarias. hizo lo mismo cuando entró en guerra. El gobierno estaba explorando cualquier método para defender el país. que su resolución y simplificación pasaba necesariamente por los modelos de optimización que resuelve la programación lineal. El gobierno convocó a media docena de científicos de diversas disciplinas para resolver este problema. Inglaterra organizó equipos similares para resolver otros problemas militares. Los primeros resultados importantes se consiguieron durante la II Guerra Mundial. Se continuó con infinidad de aplicaciones de tipo preferentemente militar.) es una ciencia relativamente joven.14 TEMA 1. Los ingleses tenían una fuerza aérea hábil. pero disponía de radares. Una de las primeras aplicaciones de los estudios del grupo SCOOP fue el puente aéreo de Berlín. se llegó a las 8000 toneladas. Paralelamente a los hechos descritos se desarrollan las técnicas de computación y los ordenadores. Dantzing. En 1946 comienza el largo período de la guerra fría entre la antigua Unión Soviética (URSS) y las potencias aliadas (principalmente. a tal efecto. En estos años posteriores a la Segunda Guerra Mundial. Así diseñaron una nueva técnica. en marzo de 1949. Inglaterra y Estados Unidos). En la batalla de Inglaterra el ejército alemán sometió a los británicos a un duro ataque aéreo. 1947).1. A los aliados se les plantearon dos posibilidades: o romper el bloqueo terrestre por la fuerza. aunque pequeña. Uno de los episodios más llamativos de esa guerra fría se produjo a mediados de 1948 cuando la URSS bloqueó las comunicaciones terrestres desde las zonas alemanas en poder de los aliados con la ciudad de Berlín. la Investigación Operativa. en Estados Unidos se asumió que la eficaz coordinación de todas las energías y recursos de la nación era un problema de tal complejidad.UU. EE. que es el tema del que nos ocuparemos al principio del libro. o llegar a Berlín por el aire. En la planificación de los suministros se utilizó la programación lineal. En 1952 un ordenador SEAC del National Bureau of Standars proporcionó la primera solución de un problema de programación lineal. (El 12 de mayo de 1949. Se plantearon sacarle al radar el máximo rendimiento. INTRODUCCIÓN A LA TEORÍA DE OPTIMIZACIÓN 1.1 Orígenes de la Investigación operativa La Investigación Operativa (I.O. Se obtuvieron soluciones para los problemas de determinar la altura óptima a la que deberían volar los aviones para localizar los . que duplicó la efectividad del sistema de defensa aérea mediante una localización óptima para las antenas y una mejor distribución de las señales. Alentados por este éxito. creándose el proyecto (SCOOP Scientific Computation of Optimum Programs) que desarrolló el algoritmo Simplex (George B. los soviéticos levantaron el bloqueo).

etc. catedrático de la Universidad de Princenton de Estados Unidos. ORÍGENES Y DESARROLLO 15 submarinos enemigos. En este aspecto los resultados de la Investigación Operativa multiplicaron por cinco la eficacia de la fuerza aérea.1. desde 1930. lo que contribuyó a que la Investigación Operativa se desarrollara extraordinariamente entre los años 50 y 60. pero lo que aportó la II Guerra Mundial fue el desarrollo de métodos sistemáticos para afrontar estos problemas. discípulo de David Hilbert en Gotinga y. . otro motor importantísimo del desarrollo de la Investigación Operativa ha sido el ordenador que permite resolver problemas reales en que intervienen un gran número de variables en un tiempo razonable. rebajó un 11% los gastos respecto a los costes previstos. problemas de grafos y redes. quien en 1928 publicó su famoso trabajo Teoría de Juegos. Los fundamentos matemáticos de la programación lineal se deben al matemático norteamericano de origen húngaro Janos von Neuman (1903-1957). Como ya hemos comentado anteriormente. principalmente el método Simplex. equipos. además resolvieron el problema del reparto de fondos entre combustible. También tiene aplicaciones en agricultura y ganadería dando respuestas que permitan la mejor distribución de los cultivos o la alimentación más económica para el ganado. Ésta resuelve problemas tales como el uso adecuado de los equipos de trabajo y de personal. En la sociedad civil ya se habían planteado anteriormente diversos problemas propios de la Investigación Operativa en un disciplina que se conoció como Investigación de Empresas o Análisis de Empresas. problemas de colas. El plan óptimo de transporte. En este problema había 10 puntos de partida y 230 de llegada.1. a pesar de que nuestra industria estaba muy atrasada. . Estos métodos se aplicaron posteriormente a problemas comerciales y de la industria. En España el Instituto de Estadística de Madrid comenzó sus cursos en 1950 con una conferencia sobre aplicaciones de la Investigación Operativa. Se publicó a partir de 1950 una revista especializada: “Trabajos de Estadística en Investigación Operativa” con un nivel similar al de otros países europeos. etc. justo cuando apareció el libro de Morse-Kimbal en el que se exponían los trabajos de los equipos científicos que se constituyeron en la guerra. localización y volumen de sucursales. En 1947 conjetura la equivalencia de los problemas de programación lineal y la teoría de matrices desarrollada en sus trabajos. hace que otros investigadores se interesaran paulatinamente por el desarrollo riguroso de esta disciplina. calculado con el ordenador Strena en 10 días del mes de junio. En 1958 se aplicaron los métodos de la programación lineal a un problema concreto: el cálculo del plan óptimo de transporte de arena de construcción a las obras de edificación de la ciudad de Moscú. La influencia de este respetado matemático. campañas de publicidad. instrumentos. transporte de mercancías. Adelantándose a otros paises se creó un Instituto de Investigación Opera- . El campo de las aplicaciones no bélicas de la Investigación Operativa es muy amplio. armamento. También se determinó la profundidad a la que había que enviar las cargas para alcanzar a los submarinos enemigos con mayor efectividad.

3 La Programación Lineal La Programación Lineal es una técnica reciente de la Matemática Aplicada que permite considerar un cierto número de variables simultáneamente y calcular la solución óptima de un problema dado considerando ciertas restricciones. Destacamos asimismo a Sixto Ríos que ha jugado un papel fundamental en el campo de la Estadística y la Investigación Operativa en España. Su nombre se debe a que en un principio trataba de resolver problemas que se planteaban en términos matemáticos con funciones lineales. • Álgebra Computacional. la probabilidad e incluso el teorema del punto fijo de Brouwer para demostrar que existe un único plan de acción “estable" o racional que representa la estrategia óptima. INTRODUCCIÓN A LA TEORÍA DE OPTIMIZACIÓN tiva que colaboró con las empresas españolas a introducir la Investigación Operativa en la resolución de sus problemas. En la actualidad se aplica también a problemas no lineales. por lo que es preciso resaltar algunos aspectos que la caracterizan: • Teoría de Juegos.2 La Teoría de Juegos Así como la Teoría de la Probabilidad surgió del estudio de los juegos de azar y del deseo de los jugadores profesionales de encontrar formas de mejorar sus ventajas. 1.1. La Teoría de Juegos utiliza herramientas básicas de las matemáticas. . En el siglo XX se produce la aparición de nuevas ramas de las matemáticas. Actualmente se aplica en Economía y en la Estrategia Militar. El estudio matemático de los juegos ofrece la posibilidad de nuevas formas de comprensión y precisión en el estudio de la Economía. incluidos sus propios hijos. que han contribuido y contribuyen al desarrollo de la Estadística y la Investigación Operativa en las universidades españolas.16 TEMA 1. y como consecuencia se incorporó a los planes de estudio de facultades y escuelas universitarias. También se puede destacar el gran número de discípulos de este profesor. • La Programación Lineal. en concreto las matrices. aportando un gran número de trabajos y publicaciones. el Algebra. • La Investigación Operativa. De esta forma.1. se reconoció la importancia de esta materia. 1. la teoría de juegos nace al intentar dar precisión a la noción de “comportamiento racional".

Dantzig. Desde que finalizó la guerra se ha utilizado con éxito para resolver problemas de ámbito empresarial. Estos métodos emplean un “teorema dual" mediante el cual un problema de maximización lleva emparejado uno de minimización. 1. sus orígenes se remontan al siglo XVII. en logística militar y en la actualidad las aplicaciones también se dirigen hacia el área industrial. la Teoría de Matrices y está relacionada con la Estadística y la Teoría de Juegos. Kantorovitch concebía y aplicaba la programación lineal a la planificación. mientras que Erlang establecía la de las “líneas de espera”. Pascal y Fermat. negocios. en 1938. Pero también el resurgir de nuevas ramas como es la Investigación Operativa.4 La Investigación Operativa Una característica importante del siglo XX es el desarrollo de las distintas ramas de las Matemáticas y el descubrimiento de los vínculos entre ellas. W. La Programación Lineal se ha convertido en una herramienta de las Matemáticas tanto teóricas como aplicadas que utiliza el Algebra.1. estadísticos y economistas. a la resolución de problemas de producción. industrial. La respuesta se puede encontrar por varios métodos.1. fue llamado para reunir el primer equipo de investigadores operativos. Posteriormente. Koopmans. El más general es el diseñado por Dantzig. Von Neumann. En vísperas de la II Guerra Mundial. Cooper y Charnes entre otros matemáticos. ya le habían precedido personalidades en dicho campo. que utilizó para la concepción de redes telefónicas. Borel (18711956) presentó la Teoría matemática de los Juegos en la Academia de Ciencias de París. que desempeñaron un papel tan decisivo en la “Batalla de Inglaterra”. se traduce a un modo algebraico. y empieza a desarrollarse en la II Guerra Mundial. etc. que habían inventado el concepto de esperanza matemática. Se utiliza en problemas de transportes. que se denomina método del Simplex. etc. inician los estudios de Investigación Operativa junto con Jacques Bernoulli y Waldegrave al intentar resolver problemas de decisión en el campo de la incertidumbre.1. Monge (1746-1818) se propuso y logró resolver un problema económico de naturaleza combinatoria: el de los desmontes y rellenos. Por ello cuando el físico inglés Blackett. ORÍGENES Y DESARROLLO 17 La teoría de la Programación Lineal ha sido desarrollada por Gohn. Es justo señalar que el desarrollo de la investigación operativa ha sido posible . Blackett tuvo el mérito de encontrar la fórmula que le permitió tratar de forma rápida y con éxito la difícil cuestión de la implantación óptima de los radares de vigilancia británicos. se analizan las restricciones y se busca el óptimo dependiendo del criterio que se quiera aplicar. El proceso para encontrar la solución óptima es el siguiente: Se plantea el problema. Aunque debe su nombre a su aplicación a las operaciones militares.

Debido al éxito de la Investigación Operativa en el campo militar. L. la Investigación Operativa ya se había introducido por completo en la industria británica y estaba en proceso de hacerlo en la estadounidense.) ilustrándolo con el siguiente ejemplo: Ejemplo 1 Alimentación del ganado Nos proponemos alimentar el ganado de una granja de la forma que sea la más económica posible. INTRODUCCIÓN A LA TEORÍA DE OPTIMIZACIÓN gracias al desarrollo de los medios informáticos que son los que posibilitan resolver los problemas en la práctica. en gran medida gracias a la ayuda del ordenador que. En 1951. constituyendo una materia universitaria con entidad propia. Introduciremos las líneas generales del modelo de Programación Lineal (P.18 TEMA 1. La cantidad.D. etc. como gestión de grandes conjuntos económicos. Teoría de Colas. organización sistemática de tareas complejas o controlar toda una red eléctrica nacional. Teoría de Inventarios. logrando una abstracción de los elementos esenciales para que pueda buscarse una solución que concuerde con los objetivos del que toma decisiones. Actualmente la Investigación Operativa incluye gran cantidad de ramas como la Programación Lineal y No Lineal. • El desarrollo de una solución. Según Hillier y Lieberman (1991). Teoría de Grafos. 1. que lleva el valor óptimo de la medida de lo que se espera del sistema. Desde entonces. La alimentación debe contener cuatro tipos de nutrientes que llamamos A. los industriales recurrieron a ésta para solucionar los problemas generados por la complejidad y especialización que iba en aumento dentro de sus organizaciones. Programación Dinámica. incluyendo la teoría matemática si es necesario.C.B. su desarrollo ha sido muy rápido. desde el momento de su aparición. a la Estadística y especialmente a la propia Investigación Operativa y aumentó enormemente las posibilidades de la Ciencia. Estos componentes se encuentran en dos tipos de piensos M y N.L. con aplicaciones en campos muy variados y en particular muy unida a la Economía y a la Informática y por supuesto a la Estadística y Teoría de Probabilidad. en gramos. en esencia la contribución del enfoque de la Investigación Operativa proviene principalmente de: • La estructuración de una situación de la vida real como un modelo matemático.2 Modelización de un problema de P. • El análisis de la estructura de tales soluciones y el desarrollo de procedimientos sistemáticos para obtenerlas. queda irremediablemente unido a la Teoría de la Probabilidad. Simulación. y se encuentra muy difundida. de cada componente por kilo de estos piensos viene dada .

1. Paso 4: Determinar la función objetivo. del componente C y 1. que sean enteras. etc.) En este ejemplo los cantidades de pienso no pueden tomar valores negativos por lo tanto. ¿Qué cantidades de piensos M y N deben adquirirse para que el gasto de comida sea el menor posible? Para resolver el problema construimos un modelo matemático del mismo. 6 ≥ 2 ≥ 1. en la tabla siguiente: 19 A B C D M 100 100 200 N 100 200 100 Un animal debe consumir diariamente al menos 0.): En En En En componente componente componente componente A B C D 0. 1x1 + 0. x2 ≥ 0 ≥ 0.2. 1x2 0. 7 Paso 3: Expresar todas las condiciones implícitamente establecidas por la naturaleza de las variables (que no puedan ser negativas. L. 1x1 0x1 0.1 Formulación de los modelos Paso 1: Determinar las variables de decisión o de entrada y representarlas algebraicamente. 2x2 + 0. No imponemos otras restricciones al tipo de variables. El objetivo de este problema es: Minimizar gasto = M in Z = 20x1 + 8x2 . 2x1 + 0.: 0. 6 ≥ 2 ≥ 1. 2x2 0. El modelo por tanto es el siguiente: Min Z = 20x1 + 8x2 s. MODELIZACIÓN DE UN PROBLEMA DE P. del componente D. 1x1 0. La construcción de este modelo puede hacerse siguiendo el proceso que se describe a continuación: 1. Las restricciones se deducen de la composición requerida para la dieta (en Kg. x2 ≥ 0. 1x1 + 0x2 0x1 + 0. que sólo pueden tomar determinados valores. 4 ≥ 0. 2 Kg. 1x2 ≥ 0. Paso 2: Determinar las restricciones expresándolas como ecuaciones o inecuaciones de las variables de decisión. 2x1 + 0x2 + 0. 0.a. El compuesto M cuesta 20 pts/kg y el N 8 pts/kg. 4 ≥ 0. 7 .6 Kg del componente B. Tomamos en este caso las variables: x1 = cantidad de pienso M(en Kg) x2 = cantidad de pienso N(en Kg).4 Kg del componente A.7 Kg.2. 1x2 + 0. 1x2 x1 . deberíamos imponer que sean x1 ≥ 0.

En el parque de la base se dispone de 4 tipos de vehículos A. ha de transportarse hasta una posición estratégica importante.6. Vamos a modelizar ahora diversos problemas que se pueden plantear en la Investigación Operativa (I.O. ¿Cuántos vehículos de cada tipo habrá que utilizar para que el gasto de gasolina sea el menor posible? P1) xi = no vehículos de cada tipo que se usen. 80. Un fabricante desea despachar varias unidades de un artículo a tres tiendas T1. A y B. INTRODUCCIÓN A LA TEORÍA DE OPTIMIZACIÓN 1.3 Modelización de diversos problemas de I. Dispone de dos almacenes desde donde realizar el envío. El número de personas que cada vehículo puede transportar es 10. enteros. xi son enteros.D. P2) 3x1 + x2 + 2x3 + 3x4 2x1 + x2 + x3 + 2x4 x1 + 2x2 + 2x3 + 3x4 4x1 + 3x2 + x3 + x4 P3) xi ≥ 0.: 3x1 + x2 + 2x3 + 3x4 2x1 + x2 + x3 + 2x4 x1 + 2x2 + 2x3 + 3x4 4x1 + 3x2 + x3 + x4 xi ≥ 0 . 36 especialistas dinamiteros.) que enunciamos a continuación: Ejemplo 2 Transporte de tropa. Un destacamento militar formado por 40 soldados de Ingenieros.20 TEMA 1. T3.a. En el ≥ 40 ≥ 36 ≥ 88 ≥ 120 .9 de la forma en que se detalla en la siguiente tabla: Ingenieros 3 1 2 3 Dinamiteros 2 1 1 2 Antiguerrillas 1 2 2 3 Infantes 4 3 1 1 A B C D Los gastos de gasolina de cada vehículo hasta el punto de destino se estiman en 160.O. acondicionados para el transporte de tropas. Si queremos ahorrar gasolina. T2.7. 40 y 120 litros respectivamente. Ejemplo 3 Transporte de mercancías. 88 antiguerrilleros y 120 infantes como tropa de apoyo.B.C. ≥ 40 ≥ 36 ≥ 88 ≥ 120 P4) Minimizar gasto gasolina = 160x1 + 80x2 + 40x3 + 120x4 Min Z = 160x1 + 80x2 + 40x3 + 120x4 s.

Los gastos de transporte de un artículo desde cada almacén a cada tienda están expresados en la tabla: A B T1 1 3 T2 2 2 T3 4 1 ¿Cómo ha de realizar el transporte para que sea lo más económico posible? xi = no de unidades transportadas. perales y manzanos. necesitando cada naranjo de 30 horas al año. Problema equilibrado (Oferta=Demanda): T1 x1 x4 8 T2 x2 x5 5 T3 x3 x6 2 Disponibilidad 5 10 A B Demanda Min Z = x1 + 2x2 + 4x3 + 3x4 + 2x5 + x6 s. x3 = número de manzanos.: x1 + x2 + x3 = 5 x4 + x5 + x6 = 10 x1 + x4 = 8 x2 + x5 = 5 x3 + x6 = 2 xi enteros y no negativos. x1 = número de naranjos.1. La demanda de cada tienda es 8. 25 y 20 unidades monetarias respectivamente por cada naranjo. cada peral 5 y cada manzano 10. peral y manzano respectivamente. x2 = número de perales.a. Los beneficios unitarios son de 50.3. . 5 y 2 unidades respectivamente. 21 primero dispone de 5 unidades de este artículo y el segundo 10. MODELIZACIÓN DE DIVERSOS PROBLEMAS DE I. Ejemplo 4 Árboles frutales. Se pregunta de qué forma repartirá la superficie de la parcela entre las tres variedades para conseguir el máximo beneficio sabiendo que: Cada naranjo necesita un mínimo de 16 m2 . Un agricultor tiene una parcela de 640 m2 para dedicarla al cultivo de árboles frutales: naranjos. Dispone de 900 horas de trabajo al año.O. cada peral 4 m2 y cada manzano 8 m2 .

4. 1m3 por peral y 1m3 por manzano cada año. ¿Sigue siendo válida la solución? 1.: 16x1 + 10x2 + 8x3 30x1 + 15x2 + 10x3 xi ≥ 0 . Se compra una parcela contigua de 160m2 . ¿Cuál será ahora la situación? 4. Si se produce un incremento del precio de los naranjos que hace elevar el beneficio de cada naranjo a 120. enteros.: 16x1 + 4x2 + 8x3 30x1 + 5x2 + 10x3 xi ≥ 0 . ≤ 640 ≤ 900 ≤ 640 ≤ 900 . 16x1 + 4x2 + 8x3 ≤ 800 6. Si desciende el beneficio de los perales hasta situarse en 10. Z ′ = 120x1 + 25x2 + 20x3 2. ¿Cómo repercute esta nueva situación en la solución inicial? 5. enteros.a. proporcionando un beneficio de 30 u. para el tratamiento óptimo de los perales se necesitan 10m2 y 15 horas de mano de obra anuales. A causa de la sequía. el agricultor tiene restricciones para el riego: Le han asignado 200m3 de agua anuales.m. Max Z = 50x1 + 25x2 + 20x3 + 30x4 s.22 TEMA 1. ¿Se modificará la solución del problema? 3. De acuerdo con un estudio técnico. Z ′′ = 50x1 + 10x2 + 20x3 3. enteros. Ejemplo 5 Árboles frutales (II). 20 horas anuales de mano de obra. Nueva restricción: 2x1 + x2 + x3 ≤ 200 5. ¿Sigue siendo válida la solución? 2. x4 = número de limoneros. El programa lineal se escribirá: Z = 50x1 + 25x2 + 20x3 s.a. Al agricultor se le plantea la posibilidad de cultivar limoneros que necesitan 12m2 de tierra. ≤ 640 ≤ 900 1. ¿Cuál será en este caso la nueva solución? 6.a. Las necesidades son de 2m3 por naranjo. INTRODUCCIÓN A LA TEORÍA DE OPTIMIZACIÓN Max Z = 50x1 + 25x2 + 20x3 s.: 16x1 + 4x2 + 8x3 + 12x4 30x1 + 5x2 + 10x3 + 20x4 xi ≥ 0 .

. Los dos estados de esta acción son 0 (si no se asigna) y 1 (si se asigna). 1} Ejemplo 7 Camino mínimo.1. realizando el mismo trabajo todos ellos en cada una de las máquinas. Ejemplo 6 Asignación de personal. Está estudiando usando el mapa de carreteras cuál debe ser el trayecto más corto. Los puestos de trabajo consisten en manejar 4 máquinas diferentes (un trabajador para cada máquina). Las carreteras y sus distancias están en la figura 1. MODELIZACIÓN DE DIVERSOS PROBLEMAS DE I.O. xij ǫ{0. La empresa ha probado a los cinco trabajadores en las 4 máquinas. 23 Una empresa ha preseleccionado 5 candidatos para ocupar 4 puestos de trabajo en la empresa.3. Min Z = + + + 10x11 + 8x21 + 8x31 + 9x41 + 8x51 + 6x12 + 7x22 + 6x32 + 7x42 + 7x52 + 6x13 + 3x23 + 5x33 + 7x42 + 6x53 + 5x14 + 6x24 + 6x34 + 6x44 + 5x54 ≤ ≤ ≤ ≤ ≤ = = = = 1 1 1 1 1 1 1 1 1 s.: x11 + x21 + x31 + x41 x21 + x22 + x23 + x24 x31 + x32 + x33 + x34 x41 + x42 + x43 + x44 x51 + x52 + x53 + x54 x11 + x21 + x31 + x41 + x51 x21 + x22 + x23 + x24 + x52 x31 + x32 + x33 + x34 + x53 x41 + x42 + x43 + x44 + x54 xij ≥ 0.1.a. Una persona tiene que desplazarse a diario de un pueblo 1 a otro 7. La variable xij representa la acción “el trabajador i se asigna a la máquina j”. se obtuvieron los siguientes tiempos: Trabajo 1 2 3 4 5 Máquina 1 10 8 8 9 8 Máquina 2 6 7 6 7 7 Máquina 3 6 6 5 7 6 Máquina 4 5 6 6 6 5 Determinar qué trabajadores debe seleccionar la empresa y a qué máquinas debe asignarlos.

: x12 + x13 x24 + x25 − x12 − x42 − x52 x34 + x36 − x13 − x43 − x63 x42 + x43 + x45 − x24 − x34 − x54 x52 + x54 + x57 − x25 − x45 x63 + x67 − x36 −x57 − x67 xij ≥ 0 . Una empresa tiene la exclusiva para la distribución de un producto en 4 poblaciones. y el cero que no se produce.24 TEMA 1. Min Z = 12x12 + 4x13 + 5x24 + 3x25 + 2x34 + 10x36 + 5x42 + 2x43 + 10x45 + 3x52 + 10x54 + + 2x57 + 10x63 + 4x67 = 1 = 0 = 0 = 0 = 0 = 0 = −1 s. INTRODUCCIÓN A LA TEORÍA DE OPTIMIZACIÓN Figura 1. indicando el uno que se produce tal desplazamiento. xij ∈ {0. En un estudio de mercado se ha determinado la demanda potencial: Población 1 3000 unidades Población 2 2000 unidades Población 3 2500 unidades Población 4 2700 unidades Se sabe que los costes de transporte son de dos pesetas por Km y unidad transportada. 1}.a. La variable xij representa la acción “desplazarse del pueblo i al j”.1 Mapa de carreteras de los pueblos 1 al 7. . Ejemplo 8 Localización. La distancia entre los pueblos es la que figura en la tabla siguiente: 1 2 3 4 1 2 25 3 35 20 4 40 40 30 - Para abaratar los costes de transporte se decide instalar un almacén con capacidad para 6000 unidades en dos de estas cuatro ciudades.

. Min Z = 50x12 + 70x13 + 60x14 + 50x21 + 40x23 + + 80x24 + 70x31 + 40x32 + 60x34 + 60x41 + + 80x42 + 60x43 ≥ ≥ ≥ ≥ = ≤ ≤ ≤ ≤ 3000 2000 2500 2700 2 0 0 0 0 s. se llama programación entera.a... Toma el valor 0 en caso contrario.. la clase de modelos de optimización en los que se optimiza una función de las variables de decisión.. xn ≥ 0... ... (≤=≥) b1 (≤=≥) bm donde tanto la función objetivo como las restricciones son funciones lineales... Los modelos de programación lineal se incluyen en una clase más amplia. sujeta a un conjunto de limitaciones o restricciones sobre las variables de decisión... x2 ≥ 0. .. .. denominada función objetivo.. yi ∈ {0.. 1.: x11 + x21 + x31 + x41 x12 + x22 + x32 + x42 x13 + x23 + x33 + x43 x14 + x24 + x34 + x44 y1 + y2 + y3 + y4 x11 + x12 + x13 + x14 − 6000y1 x21 + x22 + x23 + x23 − 6000y2 x31 + x32 + x33 + x34 − 6000y3 x41 + x42 + x43 + x44 − 6000y4 xij ≥ 0 . MODELOS DE PROGRAMACIÓN MATEMÁTICA 25 Determinar en qué poblaciones deben instalarse los almacenes para que el coste de distribución sea mínimo..4 Modelos de programación matemática La modelización general de un problema de programación lineal es: Max(Min): Z = c1 x1 + c2 x2 · · · + cn xn sujeto a: a11 x1 + a12 x2 + · · · + a1n xn .. e yi toma el valor 1 si se selecciona la ciudad i para localizar el almacén.. La variable xij representa la cantidad enviada del almacén i a la población j. En el caso particular de un problema de programación lineal en el que las variables de decisión tomen valores enteros... am1 x1 + am2 x2 + · · · + amn xn x1 ≥ 0. Cuando las variables sólo toman valores 0. 1}.. Si la función objetivo y/o las restricciones no fueran funciones lineales diremos que el problema es de programación no lineal.1 se llama programación booleana. . En la programación cuadrática la función objetivo es de segundo grado y las restricciones si existen son lineales.4...1..

: 5x1 + 2x2 3x1 + 5x2 x1 . xn ) = c1 x1 + · · · + cn xn = C t X gj (x1 . La región factible está marcada en la figura siguiente: . .5 El método geométrico En algunos casos sencillos vamos a poder resolver problemas de programación lineal usando el método geométrico. m donde. . . xn ) ≤ 0. . b es el vector de términos constantes y X el vector de variables de decisión. y tenemos unas restricciones caracterizadas por las desigualdades sobre (g1 . x2 ≥ 0. A es la matriz de coeficientes tecnológicos. Ilustramos este método con el ejemplo siguiente: Ejemplo 9 Max Z = 2x1 + x2 s. . . g2 . . Esta región se conoce con el nombre de región factible. . . Se representa la región del plano que verifica simultáneamente todas las restricciones. . La única restricción que tendremos que considerar es que tenga dos variables de decisión. En el caso de la programación lineal la función objetivo y las restricciones son lineales en las variables de decisión: f(x1 . xn ) son las variables de decisión. . . 1. xn ) = aj1 x1 + · · · + ajn xn − bj A · X ≤ b en notacion matricial. . . C es el vector coeficientes del objetivo. INTRODUCCIÓN A LA TEORÍA DE OPTIMIZACIÓN La formulación general de un problema de optimización es: Opt Z = f (x1 . donde. . . . . . x2 . . j = 1. . 5x1 + 2x2 = 10 −→ 3x1 + 5x2 = 15 −→ x1 = 0 x2 = 5 x1 = 2 x2 = 0 x1 = 0 x2 = 3 x1 = 5 x2 = 0 Paso 2. . . (x1 . xn ) sujeto a gj (x1 . . x2 .a. f es la función objetivo. x2 . gm ).26 TEMA 1. . . . ≤ 10 ≤ 15 Paso 1: Representamos en un sistema de coordenadas adecuadas las rectas que corresponden a las restricciones. .

que es el punto de corte de las dos rectas: 5x1 + 2x2 3x1 + 5x2 = 10 = 15 15x1 + 6x2 −15x1 − 25x2 = 30 = −75 Si sumamos ambas.2 Dibujo de la Región Factible. Paso 3. obtenemos el punto A. −19x2 = −45 −→ . Así la paralela a 2x1 + x2 = 0 que pasa por (1. 0) es 2x1 + x2 = 2 y nos da un valor del objetivo Z = 2 · 1 + 0 = 2. 2x1 + x2 = 0 −→ x1 = 0 x2 = 0 x1 = 1 x2 = −2 Si desplazamos la recta paralelamente hacia arriba el valor de Z va aumentando. Lo más alto que podemos desplazar la recta sin dejar la región factible es hasta el punto A.5. Representamos la recta correspondiente al valor 0 de la función objetivo: Z = 2x1 + x2 = 0.1. EL MÉTODO GEOMÉTRICO 27 Figura 1. Ejemplo 9. con coordenadas: x2 x1 = 45/19 = 20/19.

. 2) Representar las regiones del plano que cumplen cada una de las restricciones. Se elegirá una escala adecuada (no necesariamente la misma en ambos ejes).a. En los problemas de maximización la solución será el punto de la región factible que nos de un Z mayor. INTRODUCCIÓN A LA TEORÍA DE OPTIMIZACIÓN En el punto A se obtiene el óptimo. 1. x2 ≥ 0. La intersección de estas regiones nos daría la región de soluciones o región factible (si la intersección es ∅ el problema no tiene solución). tendremos que representar la recta r ≡ c1 x1 + c2 x2 = 0 y estudiar la variación de Z al desplazarnos dentro de la región factible mediante rectas paralelas a r ≡ c1 x1 + c2 x2 = 0.5. Representar las rectas correspondientes a las distintas restricciones. en los de minimización el que nos proporcione un Z menor. incluidas las de no negatividad. Ver figura 1.: 5x1 + 2x2 3x1 + 5x2 x1 . cuyo valor en la función objetivo vale Z =2× 20 19 + 45 19 = 85 19 = 4.1 Descripción del método geométrico 1) Dibujar un sistema de coordenadas cartesianas en el que las variables de decisión corresponden a los ejes. Ejemplo 10 Max Z = 6x1 + 10x2 s. Paso 1. 473 7.28 TEMA 1. x1 = 0 x2 = 5 x1 = 2 x2 = 0 x1 = 0 x2 = 3 x1 = 5 x2 = 0 x1 = 0 x2 = 0 x1 = 1 x2 = − 3 5 ≤ 10 ≤ 15 5x1 + 2x2 = 10 −→ 3x1 + 5x2 = 15 −→ 6x1 + 10x2 = 0 −→ Paso 2. 3) Si la función objetivo es Z = c1 x1 + c2 x2 .3.

Ejemplo 11 Min Z = x1 − 4x2 s. Paso 3. Tiene soluciones múltiples pues. 0) es 6x1 + 10x2 = 6 con valor del objetivo Z = 6 · 1 + 10 · 0 = 6.: x1 + x2 x1 − 2x2 −4x1 + 3x2 x1 . La recta paralela a 6x1 + 10x2 = 0 que pasa por (1. 19 19 y B(0.a. x2 ≥ 0 ≤ 6 ≤ 2 ≤ 12 . Ejemplo 10. son paralelas y.5. en todos los puntos desde A hasta B se obtiene el mismo valor para la función objetivo. las dos rectas: 3x1 + 5x2 6x1 + 10x2 = 15 = 0 tienen la misma pendiente.1. EL MÉTODO GEOMÉTRICO 29 Figura 1. A 20 45 .3 Dibujo de la Región Factible. 3) El valor del objetivo en el segmento AB es Z = 6 · 0 + 10 · 3 = 30.

Ver figura 1.4.0) sería x1 − 4x2 = 1 con Z = x1 − 4x2 = 1 · 1 − 4 · 0 = 1.30 Paso 1. Paso 3. . INTRODUCCIÓN A LA TEORÍA DE OPTIMIZACIÓN x1 + x2 = 6 −→ x1 − 2x2 = 2 −→ x1 = 0 x2 = 6 x1 = 6 x2 = 0 x1 = 0 x2 = −1 x1 = 2 x2 = 0 x1 = 0 x2 = 4 x1 = −3 x2 = 0 x1 = 0 x2 = 0 x1 = 4 x2 = 1 −4x1 + 3x2 = 12 −→ x1 − 4x2 = 0 −→ Paso 2.4 Dibujo de la región factible. TEMA 1. Ejemplo 11. Figura 1. La recta paralela a x1 − 4x2 = 0 que pasa por (1.

EL MÉTODO GEOMÉTRICO 31 Tengo que ir hacia arriba porque el término independiente ha aumentado y lo que tengo que hacer es minimizar.5. El punto donde se obtiene el óptimo es el punto A.1. con coordenadas: A x1 + x2 = 6 −4x1 + 3x2 = 12 donde. 0). ≤ 2 ≤ 16 x1 − x2 = 2 −→ x1 = 0 x2 = −2 x1 = 2 x2 = 0 5x1 − 2x2 = 16 −→ x1 = 2 x1 = 16 5 x2 = −3 x2 = 0 2x1 − x2 = 0 −→ x1 = 0 x2 = 0 x1 = 1 x2 = 2 Paso 2. 7 Y la solución óptima es: Z = x1 − 4x2 = − 138 . 7 x2 = 36 . Ejemplo 12 Max Z = 2x1 − x2 s. . x2 ≥ 0 Paso 1.5. Ver figura 1. 7 Nota: Si el programa hubiese estado escrito en forma maximizante.4.a. como puede verse en la figura 1. 6 x1 = .: x1 − x2 5x1 − 2x2 x1 . el óptimo se obtendría en el punto B(2.

Si en el problema hubiésemos tenido que minimizar la solución sería ilimitada. x1 = 4. x2 = 2. Luego la solución óptima es el punto A. La recta paralela a 2x1 −x2 = 0 que pasa por (1. y por tanto la solución óptima vale Z = 8 − 2 = 6. que se obtiene como: A x1 − x2 = 2 5x1 − 2x2 = 16 donde. que puede ser única o múltiple.5. 0) toma el valor Z = 2·1−0 = 2. • Si la región factible es no acotada entonces puede ocurrir que haya: — Solución finita (única o múltiple). Y la función objetivo vale Z = 2x1 − x2 .2 Resumen del método geométrico • Si la región factible es ∅ el programa lineal no tiene solución factible. Paso 3.32 TEMA 1. Ejemplo 12. 1. INTRODUCCIÓN A LA TEORÍA DE OPTIMIZACIÓN Figura 1.5 Dibujo de la Región factible. . — Solución ilimitada. • Si la región factible es acotada entonces siempre hay solución finita.

x3 ≥ 0 33 .: Z = 3x1 + 2x2 − x3  2x1 + x2 − 3x3 = 4  3x1 − 2x2 − x3 = 2  x1 . m son positivos o nulos.. bm Todos los cj son conocidos.. .1 Modelo general de programación lineal Un programa lineal consiste en encontrar un vector X = (x1 . .a.. s. Decimos que un programa lineal está en forma estándar si todas las restricciones son de igualdad y todos los bi con i = 1. . xn ) que optimice una función lineal Z. . x2 . a los aij coeficientes tecnológicos y a los bi coeficientes de recursos. (≤ = ≥) b1 b2 . 2. .. . .                (≤ = ≥) (≤ = ≥) . am1 x1 + am2 x2 + · · · + amn xn xi ≥ 0 i = 1. Las coordenadas de este vector están sujetas a ciertas restricciones que se expresan en ecuaciones o inecuaciones lineales. Veamos un ejemplo de un programa lineal en forma estándar: Ejemplo 13 Problema en forma estándar Max s.Tema 2 Programación Lineal 2. .a. . 2. también los aij y los bi . . x2 . Programa lineal en forma estándar... . Opt. n.. A los coeficientes cj se les denomina coeficientes de coste.. .: Z = c1 x1 + c2 x2 + · · · + cn xn a11 x1 + a12 x2 + · · · + a1n xn a21 x1 + a22 x2 + · · · + a2n xn . .

.a. xn      ..a.. También puede aparecer en forma vectorial: Opt. . . . .  . cn  am1 . Ejemplo 15 Forma canónica maximizante Max s.:  Z = ct X  AX = b  X≥0  b1 b2 .. −1)  x2  x3 2 x1 + 3 X≥0 1 −2 x2 + −3 −1 x3 = 4 2  Opt.a. s. . . .: Programa lineal en forma canónica maximizante. Decimos que un programa lineal está en forma canónica maximizante si todas las restricciones son de desigualdad del tipo ≤ y el programa es de maximizar. .. s. . . amn     . s. PROGRAMACIÓN LINEAL A veces puede aparecer en forma matricial: Opt. 2. x2 . b =         y donde aj es la j− ésima columna de la matriz A.:  Z = ct X  a1 x1 + a2 x2 + · · · + an xn = b  X≥0 a1n .. . x3 ≥ 0 .: Z = 3x1 + 2x2 − x3  2x1 + x2 − 3x3 ≤ 4  3x1 − 2x2 − x3 ≤ 2  x1 .34 TEMA 2. X =      x1 x2 .a. bm donde   A= a11 .   c=   c1 c2 . . Ejemplo 14 El modelo anterior en forma vectorial sería:  x1 Z = (3.

si ≥ 0 ti ≥ 0 aij xj ≥ bi =⇒ aij xj − ti = bi .a. Paso 2: Si la variable xr no tiene condición de no negatividad.a. x3 ≥ 0 ¿Cómo pasar cualquier modelo a forma estándar? Paso 1: Si algún bj es negativo se multiplica la restricción por −1.2. x4  = 8  = 20  ≥0 .a. expresarla como diferencia de dos variables positivas de la forma: xr = x′ − x′′ .: Z = 3x1 + x2 x1 + 2x2 + x3 2x1 + 5x2 + x4 x1 . x′ ≥ 0. Ejemplo 16 Forma canónica minimizante Min s. Decimos que un programa lineal está en forma canónica minimizante si todas las restricciones son en desigualdad (≥) y el programa es de minimizar. x2 . Ejemplo 17 Pasar a forma estándar el programa lineal: Max s. x3 . Paso 3: Max s. x2 ≥ 0 Los pasos 1 y 2 no son necesarios en este caso. MODELO GENERAL DE PROGRAMACIÓN LINEAL 35 Programa lineal en forma canónica minimizante.1. x′′ ≥ 0 r r r r Paso 3: Las desigualdades se convierten en igualdades mediante la introducción de variables de holgura positivas de la forma: n n aij xj ≤ bi n =⇒ n aij xj + si = bi .: Z = 3x1 + x2  x1 + x2 ≤ 8  2x1 + 5x2 ≤ 20  x1 . x2 .: Z = 3x1 + 2x2 − x3  2x1 + x2 − 3x3 ≥ 4  3x1 − 2x2 − x3 ≥ 2  x1 .

36

TEMA 2. PROGRAMACIÓN LINEAL

Ejemplo 18 Pasar a forma estándar el programa lineal: Max s.a.: Z = x1 + x2  x1 + 5x2 ≤ 5  2x1 − x2 ≤ −4  x1 , x2 ≥0

Paso 1: 2x1 − x2 ≤ −4 ↔ −2x1 + x2 ≥ 4 Paso 2: Son mayores que cero. Paso 3: Max s.a.:

Ejemplo 19 Pasar a forma estándar el programa lineal: Min s.a.:

Z = x1 + x2  x1 + 5x2 + x3 = 5  −2x1 + x2 − x4 = 4  x1 , x2 , x3 , x4 ≥ 0

Paso 1: No es necesario.

Z = 5x1 + 2x2  6x1 + x2 ≥ 6    4x1 + 3x2 ≤ 5 x1 ≥ 0    x2 sin restriccion

Paso 2: x2 = x′ − x′′ ; x′ , x′′ ≥ 0 2 2 2 2 Paso 3: Min s.a.: Z = 5x1 + 2x′ − 2x′′ 2 2 ′ 6x1 + x2 − x′′ − x3 2 4x1 + 3x′ − 3x′′ + x4 2 2 x1 , x′ , x′′ , x3 , x4 2 2  = 6  = 5  ≥ 0

Cambiar el sentido de optimización. Un problema de maximización puede pasarse a otro de minimización y viceversa:
n n

Max z =
n

cj xj cj xj

⇐⇒ ⇐⇒

Min z ′ =
n

(−cj )xj (−cj )xj

; ;

z = −z ′ z = −z ′

Min z =

Max z ′ =

2.1. MODELO GENERAL DE PROGRAMACIÓN LINEAL Cambiar el sentido de una desigualdad.
n n

37

aij xj ≤ bi
n

=⇒
n

(−aij )xj ≥ −bi (−aij )xj ≤ −bi

aij xj ≥ bi

=⇒

Convertir igualdades en desigualdades.
n n

aij xj

= ↔

bi


n

n

aij xj aij xj

aij xj (−aij )xj

n

≤ bi ≤ −bi

≤ bi ↔ ≥ bi ↔

n

(−aij )xj n aij xj

≥ −bi ≥ bi

Ejemplo 20 Dado el programa lineal: Min s.a.: Z = 3x1 + 2x2 − x3  x1 − 2x2 = 4  3x1 + x3 = 3  x1 ≤ 0, x2 , x3 ≥ 0

pasarlo a forma canónica maximizante, y forma canónica minimizante. Como la variable primera no cumple la condición de no negatividad se realizará el cambio de variable x1 = −x′ ≥ 0. 1 Forma canónica maximizante: Max Z’ = 3x′ − 2x2 + x3 1 ≤ 4 ↔ ≥ 4 ≤ 3 ↔ ≥ 3 −x′ − 2x2 1 x′ + 2x2 1 ≤ 4 ≤ −4 ≤ 3 ≤ −3

−x′ − 2x2 = 4 ↔ 1

−x′ − 2x2 1 −x′ − 2x2 1 −3x′ + x3 1 −3x1 + x3

−3x′ + x3 = 3 ↔ 1 Max s.a.:

−3x1 + x3 3x1 − x3

Z’ = −3x′ − 2x2 + x3 1  −x′ − 2x2 ≤ 4  1   x′ + 2x2 ≤ −4   1 ′ ≤ 3 −3x1 + x3  3x′ − x3 ≤ −3   1   ′ x1 ≥ 0, x2 , x3 ≥ 0

38 Forma canónica minimizante: Min s.a.:

TEMA 2. PROGRAMACIÓN LINEAL

Z = 3x′ + 2x2 − x3 1 ′ x1 + 2x2 −x′ − 2x2 1 3x′ − x3 1 −3x′ + x3 1 x′ ≥ 0, x2 , x3 ≥ 0 1

2.2

Nociones previas

 ≥ −4    ≥ 4   ≥ −3  ≥ 3    

Decimos que {a1 , a2 , ..., an } es un conjunto de vectores linealmente dependiente si existen α1 , α2 , ....αn constantes no todas nulas de forma que se cumple α1 a1 + α2 a2 + α3 a3 + ... + αn an = 0. Son vectores linealmente independientes si la igualdad anterior sólo se cumple para α1 = α2 = ... = αn = 0. Decimos que el vector v se puede expresar como combinación lineal convexa de los vectores {a1 , a2 , ..., an } si existen constantes positivas λ1 , λ2 , ...λn de forma que se verifique: v = λ1 a1 + λ2 a2 + ... + λn an y λ1 + λ2 + ... + λn = 1. Sean A1 y A2 dos puntos de IRn ; se llama segmento lineal cerrado de extremos A1 y A2 al conjunto: {A ∈ IRn /A = λA1 + (1 − λ)A2 ; 0 ≤ λ ≤ 1}

Un conjunto C ⊂ IRn es un conjunto convexo cuando dados dos puntos cualesquiera de C el segmento lineal cerrado determinado por esos puntos está contenido en C. Decimos que un punto x de un conjunto convexo C es un punto extremo o vértice de C si no existen dos puntos x1 , x2 ∈ C , x1 = x2, de forma que x = λx1 + (1 − λ)x2 para algún λ / 0 < λ < 1. Se llama semiespacio cerrado al conjunto de puntos de I n que cumple R α1 x1 + α2 x2 + ... + αn xn ≤ α Se llama poliedro al conjunto intersección de una cantidad finita de semiespacios cerrados. Teorema 1 Todo semiespacio cerrado es un conjunto convexo. Demostración: Sea S = {(x1 , x2 , ...xn ) ∈ IRn / α1 x1 + α2 x2 + ... + αn xn ≤ α}. Sean Y y Z dos puntos de S, entonces se cumple:

2.3. DEFINICIONES SOBRE LAS SOLUCIONES DE UN PROBLEMA Y = (y1 , y2 , ...yn ) ∈ S Z = (z1 , z2 , ...zn ) ∈ S ⇐⇒ ⇐⇒ α1 y1 + α2 y2 + ... + αn yn ≤ α. α1 z1 + α2 z2 + ... + αn zn ≤ α. ; 0≤λ≤1

39

Demostraremos que cualquier punto del segmento Y Z verifica la condición: λY + (1 − λ)Z ∈ S Pero λY + (1 − λ)Z = λ(y1 , y2 , . . . , yn ) + (1 − λ)(z1 , z2 , . . . , zn ) = = (λy1 + (1 − λ)z1 , λy2 + (1 − λ)z2 , . . . , λyn + (1 − λ)zn )

Ahora sustituimos y comprobamos que sea menor o igual a α.

α1 [λy1 + (1 − λ)z1 ] + α2 [λy2 + (1 − λ)z2 ] + · · · + αn [λyn + (1 − λ)zn ] = = α1 λy1 + α1 (1 − λ)z1 + α2 λy2 + α2 (1 − λ)z2 + · · · + αn λyn + αn (1 − λ)zn = = λ(α1 y1 + α2 y2 + · · · + αn yn ) + (1 − λ)(α1 z1 + α2 z2 + · · · + αn zn ) ≤ ≤ λα + (1 − λ)α = λα + α − λα = α Luego λY + (1 − λ)Z ∈ S. Corolario 1 Un poliedro es un conjunto convexo. Teorema 2 Si C es un conjunto convexo acotado con un número finito de puntos extremos, entonces cualquier punto de C puede expresarse como combinación lineal convexa de los puntos extremos. Esto es: A1 , A2 , . . . , Ak puntos extremos de C , A ∈ C =⇒ A = λ1 A1 + λ2 A2 + · · · + λk Ak siendo λ1 + λ2 + · · · + λk = 1.

2.3

Definiciones sobre las soluciones de un problema

Vamos a dar a continuación algunas definiciones sobre las soluciones de un problema de programación lineal.

Decimos que un programa lineal no tiene solución. que sea cuadrada y rango m (determinante no nulo). + θmn xn = un sistema de ecuaciones del tipo: b1 b2 . Si hacemos igual a cero las n − m variables asociadas a los vectores columnas de A que no están en B. Es decir. Las “n − m” variables que se han igualado a cero se denominan variables no básicas.. + θ2n xn = . Se denominan variables básicas a las variables del vector XB formado por las m variables del sistema BXB = b.. . . + θ1n xn =   θ21 x1 + .. la solución del sistema formado por estas variables nulas y la solución del sistema resultante BXB = b de m ecuaciones con m variables se denomina solución básica asociada a la matriz básica B. a la cantidad Z ∗ = C t X ∗ se le llama valor óptimo del programa lineal... A = (θ ij ) . o que es infactible cuando no existen valores para las variables xi que verifiquen las restricciones. Matriz básica: Supongamos   θ11 x1 + . PROGRAMACIÓN LINEAL Se llama solución factible a cualquier vector x que verifique Ax = b. Decimos que un programa lineal es no acotado cuando no tiene valor óptimo finito: Max Z → +∞ o Min Z → −∞. F = ∅.... bn Denotamos por A la matriz de los coeficientes. Llamamos Base asociada a la matriz básica B a los vectores cuyas coordenadas son cada una de las columnas de B.40 TEMA 2.. la región factible es vacía. La matriz B se llama matriz básica. Esto es: Caso de Maximización Z ∗ = C t X ∗ Z = C tX ≤ C tX ∗ = Z ∗ Caso de Minimización Z = C tX ≥ C tX ∗ = Z ∗ Z∗ = CtX∗ cualquier otro X ∈ F =⇒ cualquier otro X ∈ F =⇒ Sea X ∗ la solución óptima del programa lineal.. x ≥ 0} Decimos que X ∗ es una solución factible óptima si optimiza en el sentido deseado a la función objetivo.    θ m1 x1 + . tomamos cualquier submatriz B de A. Si suponemos que r(A) = m. x ≥ 0 Se llama región factible al conjunto de todas las soluciones factibles F = {x ∈ IRn / Ax = b.

DEFINICIONES SOBRE LAS SOLUCIONES DE UN PROBLEMA Ejemplo 21 Encontrar las soluciones básicas de: x1 + 2x2 + x3 2x1 + x2 + 5x3 1 2 1 2 1 5 = 4 = 5 41 A= . 2 1 Para calcular la solución básica correspondiente a la matriz B igualamos a 0 la variable no básica. BXB = b .3. Escogemos como matriz básica B= θ1 θ2 = 1 2 2 1 En este caso las variables básicas son x1 y x2 . θ3 = 1 1 2 5 . La base está formada por los 1 2 vectores y . r(A) = 2.2. Podríamos haber escogido como submatriz B= y por tanto x2 = 0 1 1 2 5 x1 x2 = 4 5 =⇒ x1 + x3 2x1 + 5x3 = 4 = 5 θ1 . x3 = 0. x2 = 1. x3 = 0. =⇒ 1 2 2 1 = 4 = 5 x1 x2 = 4 5 =⇒ x1 + 2x2 2x1 + x2 XB = B −1 b −→ x1 x2 = 1 2 2 1 −1 4 5 = 2 1 Una solución básica del sistema sería: x1 = 2.

Soluciones básicas factibles adyacentes son dos soluciones básicas factibles que tienen en común m − 1 variables básicas. Si XB es una solución básica y se cumple que los valores de las variables básicas son mayores o iguales que cero. En el ejemplo anterior 3 = 3. tendrá básicas como máximo. 3 3 Resumiendo. decimos que la solución es factible básica degenerada. alguna de las variables básicas vale cero. PROGRAMACIÓN LINEAL XB = B −1 b =⇒ x1 x3 = 1 1 2 5 −1 4 5 = 5 −1 Una solución básica del sistema sería: x1 = 5. x3 = −1 x2 = 5 . θ3 = 2 1 1 5 XB = B −1 b =⇒ x2 x3 = 2 1 1 5 −1 4 5 = 5/3 2/3 . x2 = 0. x3 = . decimos que la solución es básica factible y que la base B es una base factible. A veces este número máximo de soluciones básicas no se alcanza porque algunas de las submatrices tienen determinante nulo. las soluciones básicas de este ejemplo son: Variables básicas x1 = 2. Si en una solución factible básica. x3 = −1. hay 3 soluciones básicas exactamente. . x3 = 2 3 3 Variables no básicas x3 = 0 x2 = 0 x1 = 0 n m soluciones Si A es una matriz de dimensión m × n y n > m. x2 = . x2 = 1 x1 = 5. Una solución básica del sistema sería: 5 2 x1 = 0.42 TEMA 2. y como hemos visto 2 anteriormente. Otra submatriz B= y por tanto x1 = 0 θ2 .

a2 . . Ax2 = b. sin pérdida de generalidad. . x2 . Un vector X es una solución básica factible si y solo si X es punto extremo de F . x2 = 1 x1 = 5. Demostración =⇒ Supongamos. x ≥ 0} 0≤λ≤1 x1 . 0. x2 ∈ F ⇐⇒ x2 ≥ 0 x1 ≥ 0 Como x = λx1 + (1 − λ)x2 ∈ F si cumple que AX = b. 0. . .4 Algunos resultados sobre las soluciones Vamos a estudiar ahora algunos resultados relacionados con las soluciones de un problema de programación lineal. 0) es una solución básica factible. x2 ∈ F probaremos que x = λx1 + (1 − λ)x2 ∈ F . . x3 = −1 x2 = 5 . Luego se verifica que λx1 + (1 − λ)x2 ∈ F. que X = (x1 . Veamos que x ≥ 0 λx1 + (1 − λ)x2 ≥ 0 son sumas de dos productos ≥ 0. . x3 = 2 3 3 Variables no básicas x3 = 0 Solución básica factible x2 = 0 Solución básica no factible x1 = 0 Solución básica factible 43 2. Teorema 3 El conjunto F de las soluciones factibles es convexo. ALGUNOS RESULTADOS SOBRE LAS SOLUCIONES Ejemplo 22 Con referencia al ejemplo anterior: Variables básicas x1 = 2. Sea F el conjunto convexo formado por los vectores X que cumplen AX = b con X ≥ 0. am } la base asociada a esta solución. y B = {a1 . . . . por tanto es ≥ 0.2. Demostración Suponemos F = {x ∈ IRn / Ax = b. x1 ∈ F ⇐⇒ Ax1 = b. Luego F es convexo. xm . . Teorema 4 Sea A una matriz m × n con r(A) = m y sea b un vector m × 1. . .4. . esto es: A[λx1 + (1 − λ)x2 ] = Aλx1 + A(1 − λ)x2 = λAx1 + (1 − λ)Ax2 = = λb + (1 − λ)b = λb + b − λb = b.

zm . . . . 1) con y = z. . . . como y. . 0) = = (λy1 + (1 − λ)z1 . . Por definición sabemos que los escalares tienen que ser cero. . zm . . zn ). Si operamos tenemos: (x1 . . . . . . . . . Luego   λym+1 + (1 − λ)zm+1 = 0 ·····················  λyn + (1 − λ)zn = 0 =⇒   ym+1 = 0 =⇒ ······  yn = 0   zm+1 = 0 ······  zn = 0 y puesto que no puede haber soluciones negativas. ym+1 . . 0) = = λ(y1 . λym + (1 − λ)zm . xm . . . z = (z1 . am } forman una base. y2 . yn ) De esta forma tenemos: (x1 . . para algún λ ∈ (0. zm+1 . ym . . yn ) + (1 − λ)(z1 . . . . . a2 . . . existen dos puntos y. zn ). z son de la forma: y = (y1 . . . PROGRAMACIÓN LINEAL Supongamos que X no es punto extremo. . λym+1 + +(1 − λ)zm+1 . z ∈ F que verifican: X = λy + (1 − λ)z Además y. . z ∈ F se cumple y1 a1 + y2 a2 + · · · + ym am z1 a1 + z2 a2 + · · · + zm am Si restamos ambas expresiones nos queda: = b = b (y1 − z1 )a1 + (y2 − z2 )a2 + · · · + (ym − zm )am = 0. . . . . . zm+1 . xm . . y razonaremos por reducción al absurdo. 0. . . . . z2 . . λy2 + (1 − λ)z2 . . pues {a1 . y por tanto son linealmente independientes. x2 . . . 0. . . . por lo que se deduce: . . . y2 . λyn + (1 − λ)zn ). . . ym+1 .44 TEMA 2. . z2 . Si X no es punto extremo. Además tenemos. . . ym . . . x2 . .

. x2 − ǫλ2 . entonces: ǫλ1 a1 + ǫλ2 a2 + · · · + ǫλk ak = 0 Si sumamos (2. . . . . . xk − ǫλk . . 0) Ambos son solución de AX = b. . z verifican el sistema y además son mayores o iguales a cero.2) tenemos: (x1 − ǫλ1 )a1 + (x2 − ǫλ2 )a2 + · · · + (xk − ǫλk )ak = b Si llamamos y. λ2 . . 0. .1) Vamos a probar que {a1 . . Si tomamos ǫ suficientemente pequeño: xi + ǫλi ≥ 0 xi − ǫλi ≥ 0 y≥0 z≥0 (2.2) tenemos: (x1 + ǫλ1 )a1 + (x2 + ǫλ2 )a2 + · · · + (xk + ǫλk )ak = b Si restamos (2. xk + ǫλk . Suponemos sin pérdida de generalidad que son las k primeras X = (x1 . . . 0. ak } son linealmente independientes.2) Por tanto y. esto implica que X es punto extremo. λk no todos nulos tal que: λ1 a1 + λ2 a2 + · · · + λk ak = 0 Si multiplicamos por ǫ > 0. . entonces y. . Supongamos que no son linealmente independientes. . x2 + ǫλ2 . ALGUNOS RESULTADOS SOBRE LAS SOLUCIONES  = 0    = 0    = 0  z1    z2    = zm = = 45 y1 − z1 y2 − z2 ······ ym − zm =⇒ y1 y2 ······ ym =⇒ y = z. . . xk . 0) z = (x1 − ǫλ1 . x2 . 0. . . Como tiene que verificar el sistema tendremos: x1 a1 + x2 a2 + · · · + xk ak = b (2.4. . .1) y (2. ⇐= Supongamos que X es un punto extremo de F que tiene k componentes estrictamente mayores que 0. . . z a los vectores: y = (x1 + ǫλ1 . Pero esto es absurdo pues habíamos supuesto que y = z. . Y por tanto hemos llegado a una contradicción. 0).1) y (2. . entonces existen λ1 . z ∈ F . . . . .2. a2 . . . . Vamos a razonar por reducción al absurdo.

a2 .46 Pero si calculamos 1 1 y+ z 2 2 1 1 y + z tenemos: 2 2 TEMA 2. . x2 + ǫλ2 . . E2 . 0 + (2. xk − + 2 2 2 2 2 = (x1 . ct E2 . Sea ahora X ∈ F un punto cualquiera de la región factible. Pueden ocurrir dos cosas: • Si k = m forman base. . . x2 − ǫλ2 . . . . / λ1 + λ2 + · · · + λk = 1. . . . . . . Si llamamos M = max{ct E1 . . . . . PROGRAMACIÓN LINEAL 1 1 1 1 1 x1 + ǫλ1 . ak } son vectores linealmente independientes y k ≤ m.3) 2 1 ǫλk . ct Ek }. x2 . . . . y entonces X es solución básica factible. . . • Si k < m se completan las columnas que faltan formando una base. Teorema 5 Dado un programa lineal en forma estándar factible acotado. 0. . . 0) = X = 1 ǫλk .a. . xk + 2 2 2 2 2 1 1 1 1 1 x1 − ǫλ1 . . . 0. . . xk . Demostración Sea el programa lineal  M ax z = ct X  s. el valor óptimo del programa lineal se obtiene en un punto extremo de la región factible. usando el teorema anterior tendremos: X = λ1 E1 + λ2 E2 + · · · + λk Ek Entonces: Z = ct X = ct (λ1 E1 + λ2 E2 + · · · + λk Ek ) = = λ1 ct E1 + λ2 ct E2 + · · · + λk ct Ek ≤ λ1 M + λ2 M + · · · + λk M = (λ1 + λ2 + · · · + λk ) · M = 1 · M = M. entonces será solución básica factible degenerada. . . . Luego {a1 . . 0 = 2 Pero esto contradice que X sea punto extremo de F . . . . Ek } puntos extremos. AX = b  X≥0 y sean {E1 . 0. .

Teorema 6 Sean x1 . . Ejemplo 23 Hallar la solución óptima del programa lineal: Max s.a. . . Max s. entonces el punto de la región factible que me da el mayor valor es el valor extremo. . x3 ≥ 0 Variables no básicas x3 = 0 x2 = 0 x1 = 0 Objetivo z=1 No factible z=5/3 Variables básicas x1 = 2. . ALGUNOS RESULTADOS SOBRE LAS SOLUCIONES 47 Así tenemos que M es el valor de la función objetivo en algún punto extremo. ct Ek }. eso implica que la solución óptima es: x1 = 0 x2 = 5/3 x3 = 2/3. . x2 . y evaluamos Z. .L. x2 . obtenemos: Z = = = = ct X = ct (λ1 x1 + λ2 x2 + · · · + λk xk ) = λ1 ct x1 + λ2 ct x2 + · · · + λk ct xk = λ1 M + λ2 M + · · · + λk M = (λ1 + λ2 + · · · + λk ) · M = 1 · M = M. .2.: Z = 2x1 − 3x2 + 10x3  x1 + 2x2 + x3 = 4  2x1 + x2 + 5x3 = 5  x1 . Ejemplo 24 Resolver el siguiente P.: z = 3x1 + 3x2  x1 ≤ 4    x1 + x2 ≤ 6 x2 ≤ 3    x1 . Luego X también es óptima. xk también son soluciones óptimas. sólo que hay que buscar el mínimo y tendremos que Z ≥ m. x3 = 2/3 El valor máximo de Z es Z = 5/3. x3 = −1 x2 = 5/3. entonces las combinaciones lineales convexas de x1 . ct E2 . Si llamamos X = λ1 x1 + λ2 x2 + · · · + λk xk . x2 . x2 = 1 x1 = 5.4. . ∀x ∈ F el valor de la función objetivo Z ≤ M. . siendo m = min{ct E1 .a. . . xk soluciones óptimas de un programa lineal en forma estándar. La demostración para el caso minimizante es idéntica. x2 ≥ 0 .

E(0. 2). parar.48 TEMA 2. x2 = 0 Objetivo z = 0 Solución básica factible z = 9 Solución básica no factible z = 18 Solución óptima z = 18 Solución óptima z = 12 Solución básica factible Luego B y C son soluciones óptimas. Los pasos básicos del algoritmo son los siguientes: 1. Si es así. PROGRAMACIÓN LINEAL Los puntos extremos son A(4. 2.1: Soluciones óptimas multiples Variables básicas x1 = 0. Comprobar si esta solución es óptima. x2 = 0 x1 = 0. B(4. 3). D(0. x2 = 3 x1 = 3. x2 = 3 x1 = 4.5 El algoritmo del Simplex El algoritmo del Simplex es una técnica general de resolución de problemas de programación lineal. y por tanto todos los puntos del segmento lineal BC también son soluciones óptimas. Partir de una solución básica factible (un vértice de la región factible). 2. . Figura 2. ir al paso 3. x2 = 2 x1 = 4. 3). En caso contrario. 0). 0) que aparecen en la siguiente figura. C(3.

a. 0) Valor de la función objetivo 0 2 10 3 4 3 Por lo tanto el valor óptimo va a ser C con un valor óptimo de 4 para la función objetivo. 0.5. A. EL ALGORITMO DEL SIMPLEX 49 3.L. 0) (0. Los valores anteriores cumplen . Explicaremos la forma en que se realizan estos pasos con el siguiente ejemplo. 6. 6) con un valor para z = x1 + x2 = 0. Hallar una nueva solución básica adyacente a la anterior que mejore el valor de la función objetivo. Ir al paso 2.2. Las coordenadas de los vértices y los valores de la función objetivo de cada uno de ellos son: Vértice O A B C D Coordenadas (0. D. dejando para más adelante una exposición más detallada del algoritmo. 8) 3 3 (2. B. h3 ) = (0.a. 2. x2 . y damos a las no básicas x1 y x2 el valor cero tenemos la solución básica factible de partida (x1 . Si tomamos como variables básicas las variables de holgura. Se puede comprobar que la región factible es el polígono de vértices O. En este caso es muy fácil partir de una solución básica factible.: z = x1 + x2  −x1 + x2 ≤ 2    x1 + 2x2 ≤ 6 2x1 + x2 ≤ 6    x1 . x2 ≥ 0 Como el problema tiene sólo dos variables podría resolverse por el procedimiento geométrico. Ejemplo 25 Resolver el siguiente P. Max s. h2 . introduciendo variables de holgura: Max s. C. 2) (3. (Un vértice de la región factible). Ahora queremos resolver este problema por un procedimiento analítico. Lo primero que vamos a hacer es formular el problema en forma estándar.: z = x1 + x2  +x2 +h1 = 2  −x1   x1 +2x2 +h2 = 6 +x2 +h3 = 6  2x1   x1 ≥ 0 x2 ≥ 0 h1 ≥ 0 h2 ≥ 0 h3 ≥ 0 Paso 1 Partir de una solución básica factible.2) (2. h1 .

De esta forma se obtiene el sistema siguiente: . −x1 +x2 +h1 x1 +2x2 +h2 +x2 +h3 2x1 −x2 −x1 x1 ≥ 0 x2 ≥ 0 h1 ≥ 0 h2 ≥ 0 h3 ≥ 0 = = = = 2 6 6 0 z Puede observarse que todos los valores de las variables básicas. x2 . 5. PROGRAMACIÓN LINEAL el siguiente sistema que se ha conseguido añadiendo al anterior una última ecuación conseguida trasponiendo términos en la función objetivo. que es 2 (pivote). Puesto que z = x1 + x2 = 0. Por lo tanto la variable h3 saldrá de la base entrando en su lugar x1 . Si tomamos x1 = 3. h3 ) = (3. Así que la solución actual no es óptima. 0. La nueva solución es (x1 . 0. Para que se cumplan las otras dos ha de ser x1 ≤ 6 y x1 ≤ 6 = 3 Por lo tanto el mejor valor 2 para x1 cumpliendo todas las condiciones de factibilidad es 3. Paso 3 Hallar una nueva solución básica adyacente a la actual que mejore el valor de la función objetivo. Con el objeto de que la actual solución aparezca de nuevo en el lugar de los términos independientes del sistema realizamos las transformaciones adecuadas para que los coeficientes de x1 del sistema sean 0. mejorándose por tanto el valor de z. 3. 0. 1. y realizamos las transformaciones del método de Gauss a las restantes ecuaciones. de modo que los restantes coeficientes de x1 sean nulos. que eran los coeficientes que antes tenía h3 . h2 . 0) con un valor para z = x1 + x2 = 3 + 0 = 3. y también el valor de z. Supongamos que introducimos x1 en la base aumentando su valor dentro de las condiciones de factibilidad y manteniendo x2 como variable no básica (x2 = 0). Podremos mejorarla si logramos introducir en la base la variable x1 ó x2 .50 TEMA 2. h1 . Se deberá pues cumplir: −x1 +h1 = 2 x1 +h2 = 6 2x1 +h3 = 6 x1 ≥ 0 h1 ≥ 0 h2 ≥ 0 h3 ≥ 0 es decir h1 h2 h3 = 2 + x1 = 6 − x1 = 6 − 2x1 ≥0 ≥0 ≥0 Como x1 ≥ 0 la primera restricción se cumple siempre. puesto que puede mejorarse aumentando el valor de x1 . aparecen en los términos independientes de este sistema. Para ello dividimos la tercera ecuación por el coeficiente de x1 . h3 = 6 − 2x1 = 0 . Paso 2 Comprobar si esta solución es óptima.

2 ≥ x2 . h1 . ALGORITMO DEL SIMPLEX EN FORMA DE TABLA (MAX) 51 z + 1 h3 2 +h2 − 1 h3 2 x1 + 1 h3 2 + 1 h3 2 x1 ≥ 0 x2 ≥ 0 h1 ≥ 0 h2 ≥ 0 h3 ≥ 0 3 2 x2 3 2 x2 + 1 x2 2 − 1 x2 2 +h1 = = = = 5 3 3 3 Ir paso 2 La solución actual es (x1 . y todos los . En efecto. todas las restriciones del tipo ≤. h2 = 3 − x2 ≥ 0. 6 ≥ x2 3 Estas condiciones se cumplen para x2 ≤ 2 Paso 3 Dando a x2 el valor 2 se mejora lo más posible el valor de z. Esta solución ya es óptima. h2 . Por lo tanto la solución actual (2. si despejamos z de la última ecuación del sistema obtenemos z = 4− 1 h2 − 1 h3 . Sustituyendo este valor para x2 y h3 por 0. que es 3 3 2 . Esta variable entra en la base. 0) no puede mejorarse. h3 ) = (3. y xk la variable que pasa a ser básica. x1 = 3 − x2 ≥ 0 2 2 2 Por lo tanto 5 3 2 ≥ x2 . 3 3 2 ≥ x2 . 2. x2 . 0) .2. Dividiendo esta segunda ecuación por 2 y haciendo las transformaciones de Gauss adecuadas para anular el resto de los coeficientes de x2 el sistema toma el siguiente aspecto. El valor de 2 2 z puede mejorar si podemos aumentar el valor de x2 que toma en la solución básica actual el valor 0. 0) ¿Es óptima? Despejamos z de la última ecuación obteniendose z = 3 + 1 x2 − 1 h3 . 3.6. Como h2 y h3 no pueden tomar valores negativos 3 3 el mejor valor para estas variables es cero. 0. Impondremos las condiciones de factibilidad: 3 3 1 h1 = 5 − x2 ≥ 0.6 Algoritmo del Simplex en forma de tabla (max) Vamos a describir el Algoritmo del simplex en forma de tabla aplicable al caso de que el problema sea de maximización. 2. 0. se obtiene h2 = 0 que es la variable que entra en la base. 10 ≥ x2 . 3 1 2 ≥ x2 . 2. Si denominamos pivote al elemento alk siendo xl la variable que deja de ser básica. h1 . el pivote es ahora el coeficiente de x2 de la segunda ecuación. 5. 2. −h2 +h3 2 x2 + 3 h2 − 1 h3 3 x1 − 1 h2 + 2 h3 3 3 + 1 h2 + 1 h3 3 3 x1 ≥ 0 x2 ≥ 0 h1 ≥ 0 h2 ≥ 0 h3 ≥ 0 h1 = = = = 2 2 2 4 z La nueva solución básica es (x1 . x2 . 2. h3 ) = (2. h2 . Conviene mantener para h3 el valor 0. 0.

+xn+1 +xn+2 .52 TEMA 2. i = 1. 2. 0. . Construir la tabla inicial: Esta tabla se construye tomando en cada fila los coeficientes de cada restricción seguido del correspondiente término independiente de la forma estándar.. xn . . . xn+2 . am1 x1 + am2 x2 + · · · + amn xn ≤ xi ≥ 0. Partir de una solución básica factible: Considerar la solución inicial. .. ... n. c1 x1 a11 a21 . (x1 . . Añadimos una última fila con los coeficientes que resultan si se trasponen los términos de la función objetivo hasta igualarlos a cero. 0. Opt. . . xn+1 xn+2 . ... = bm 0. . n. xn+2 . bm Pasamos en primer lugar el problema a forma estándar añadiendo m variables de holgura xn+1 . En la parte superior de la tabla aparecen los costes y las variables.8).. cn xn a1n a2n . PROGRAMACIÓN LINEAL recursos no negativos.. xn+m ) = (0. .. ... . .a. .. . .a. b2 . bi ≥ 0. c2 x2 a12 a22 . . . .. En la parte izquierda de la tabla aparecen estos mismos datos referentes a las variables básicas. . ... . . 2.. b1 . . . x2 .. am2 −c2 . . objetivo variables b1 b2 .. . bm ) 1. s. .. . . . . . . . bm 0 0 am1 −c1 Tomamos la solución inicial que corresponde a una base canónica ( La correspondiente matriz básica es la identidad).. . ≤ +xn+m = = b1 b2 : . La tabla inicial presentaría el siguiente aspecto: Opt. xn+m . . .. . 0 0 1 0 0 xn+m 0 0 coef. xn ) que optimice una función lineal. amn −cn 0 xn+1 1 0 0 0 0 xn+2 0 1 . Para aplicar el algoritmo en otras situaciones se harán las transformaciones necesarias para poner el problema en esta forma (ver epígrafe 2.                b1 b2 : . De esta forma el problema tomará la forma: Opt.: Z = c1 x1 + c2 x2 + · · · + cn xn a11 x1 + a12 x2 + · · · + a1n xn ≤ a21 x1 + a22 x2 + · · · + a2n xn ≤ ··· : ··· : . s. . . . . . . Consideremos el problema (o programa) lineal que consiste en encontrar un vector X = (x1 . xn+m 0 0 .: Z = c1 x1 + c2 x2 + · · · + cn xn a11 x1 + a12 x2 + · · · + a1n xn a21 x1 + a22 x2 + · · · + a2n xn ··· : ··· : am1 x1 + am2 x2 + · · · + amn xn xi ≥ 0 i = 1. . . xn+1 . . .. x2 . . está solución es.

.. . Regla de la variable de entrada Seleccionar para entrar en la base la variable xj con rj más negativo. En general usaremos la siguiente notación: Opt.. Se realizan transformaciones lineales similares a las que se usan en el método de Gauss.. Estos costes reducidos cumplen la siguiente relación: rj = cb1 y1j + cb2 y2j + . . 3. . Con esta nueva solución y esta nueva tabla ir al paso 2. La solución actual es óptima si todos los costes reducidos. xb m Z0 Los términos de la matriz de los coeficientes se designan en general por yij y los términos independientes por xb . Sea ésta la xk . . . .. .. . 3 b. objetivo variables xb 1 xb 2 . . Comprobar si esta solución es óptima. 4. ym n+2 rn+2 1 Como se verá la tabla va evolucionando durante el algoritmo. .. el yik problema es no acotado) −→ Fin . . (Si todos los yik ≤ 0... . cn xn y1n y2n ymn rn . son no negativos (positivos o nulos).. En caso contrario ir al paso 4. . xbm cb1 cb2 . . Realizar transformaciones en la tabla para conseguir una nueva matriz unitaria tomando ylk como pivote. x2 ≥ 0 0 xn+1 y1 n+1 y2 n+1 . cbm ymj − cj = zj− cj (2.2. .. .. . Cuando hay varias variables que tienen este mismo valor.. coeficientes de la última fila. . De esta forma obtenemos una nueva solución básica factible adyacente a la anterior (para la última fila se puede optar por usar la relación 2. .4 de la página 53). . se selecciona arbitrariamente una cualquiera de éstas.. . . Sea la fila l. En otro caso ir al paso 3. . hasta conseguir que la columna k tenga el valor 1 en el lugar del elemento pivote y 0 en los restantes. ALGORITMO DEL SIMPLEX EN FORMA DE TABLA (MAX) 53 2. . . ym n+1 rn+1 0 xn+2 y1 n+2 y2 n+2 . xb1 xb2 . . .. Hallar una nueva solución básica adyacente a la actual que mejore el valor de la función objetivo (leer nota a pie de página1 ): 3a.. Ejemplo 26 Resolver ahora el problema anterior: Max s.6. ym1 r1 c2 x2 y12 y22 . 0 xn+m y1 n+m y2 n+m ym n+m rn+m coef.4) . i Los coeficientes ri que aparecen en la última fila se suelen llamar costes reducidos de la variable correspondiente. cbm c1 x1 y11 y21 .. Si es así. parar.a. Regla de la variable de salida Seleccionar para salir de la base la variable de la fila i que haga mínimo xb el cociente i para los yik > 0. .. ym2 r2 ..: z = x1 + x2  −x1 + x2 ≤ 2    x1 + 2x2 ≤ 6 2x1 + x2 ≤ 6    x1 .

6. h3 ) = (3. Paso 3 a Seleccionamos la primera como variable de entrada k = 1. aparecen en los términos independientes de este sistema. Paso 4 Hallar una nueva solución básica adyacente a la actual que mejore el valor de la función objetivo.54 TEMA 2. 0. Paso 2 Comprobar si esta solución es óptima. 2 Paso 3 a Seleccionamos x2 como variable de entrada. Pivoteando se obtiene la siguiente tabla: 1 x1 0 0 1 0 1 x2 3 2 3 2 1 2 0 0 1 h1 h2 x1 −1 2 0 h1 1 0 0 0 0 h2 0 1 0 0 0 h3 −1 2 1 2 1 2 1 2 5 3 3 3 La nueva solución es (x1 . h2 . 5. por lo tanto k = 2. 6) con un valor para z = x1 + x2 = 0 + 0 = 0. En este caso el valor mínimo se yik alcanza cuando: min 6 . h1 . Así 1 2 que l = 3. La variable de salida es h3 . x2 . 2. y también el valor de z. 3) = 3. . h2 . 0) con un valor para z = 3. Ir paso 2 ¿Es óptima? No porque algún coste reducido es negativo (el que corresponde a la variable x2 que vale − 1 . Paso 3 b Seleccionamos como variable de salida la que aparezca en la fila correspondienxB te al mínimo cociente i para los yik > 0. x2 . h1 . 6 = min (6. La solución básica factible inicial es: (x1 . 0. Corresponde a la tercera fila. Puede observarse que todos los valores de las variables básicas. PROGRAMACIÓN LINEAL empleando el algoritmo de Simplex en forma de tabla Paso 0 La tabla inicial es (introduciendo variables de holgura): 1 x1 -1 1 2 -1 1 x2 1 2 1 -1 0 h1 1 0 0 0 0 h2 0 1 0 0 0 h3 0 0 1 0 0 0 0 h1 h2 h3 2 6 6 0 Paso 1 Partimos de una base canónica. h3 ) = (0. 3. No es óptima puesto que hay valores no negativos de los costes reducidos (los que corresponden a las variables x1 y x2 ambos con valor −1. Por lo tanto el elemento pivote es y31 = 2.

x2 . Por lo tanto 3 el elemento pivote es y22 = 3 . Corresponde a la segunda fila. 2. 2 Paso 4 Hallar una nueva solución básica adyacente a la actual que mejore el valor de la función objetivo. En este caso las dos últimas restricciones están saturadas por lo que los recursos segundo y tercero se agotan y. 3 = 3 3 1 2 2 2 yik min 10 .7 Algoritmo del Simplex en forma de tabla (min) Si el problema es de minimización un procedimiento que puede seguirse es transformar la función objetivo de maximización en otra de minimización tal como se ha indicado anteriormente: n n Min z = cj xj ⇐⇒ Max z ′ = (−cj )xj . A continuación indicamos las modificaciones que habría que hacer en el algoritmo de la forma de maximización para obtener un algoritmo minimizante de Simplex. sobran 2 unidades del primer recurso. Los valores de las variables de holgura (h1 = 2. h3 = 0) sirven para saber qué restricciones están saturadas (se cumple la igualdad sustituyendo la solución hallada en la restricción primitiva). 0) con un valor para z = 4.7. La variable de salida es h2 . 2. . que se consigue con ligeras modificaciones del anterior. porque ningún coste reducido es negativo. También cabe la posibilidad de usar un algoritmo específico para este caso. pues h1 = 2. En este caso min 5 .2. 6 = 2. x2 = 2. 0. h2 . h1 . h2 = 0. Así que l = 2. Pivoteando se obtiene la siguiente tabla: 1 x1 0 0 1 0 1 x2 0 1 0 0 0 h1 1 0 0 0 0 h2 -1 2 3 -1 3 1 3 0 0 1 h1 x2 x1 0 h3 1 −1 3 2 3 1 3 2 2 2 4 La nueva solución es (x1 . 3 . z = −z ′ De esta forma ya se podría aplicar el algoritmo en la forma maximizante. 2. 2. en cambio. h3 ) = (2. Ir paso 2 ¿Es óptima? Sí. Por lo tanto la solución óptima de este problema es x1 = 2. ALGORITMO DEL SIMPLEX EN FORMA DE TABLA (MIN) 55 Paso 3 b Seleccionamos como variable de salida la que aparezca en la fila correspondix0 ente al mínimo cociente i para los yik > 0. Estas variaciones se reducen a cambios de signo en los costes reducidos.

x4 .: Z = x2 − 3x3 + 2x5  x1 + 3x2 − x3 + 2x5 = 7    −2x2 + 4x3 + x4 = 12 −4x2 + 3x3 + 8x5 + x6 = 10    x1 . Sea ésta la xk . Sumo a la fila 1 la fila 2. = = 3. Y 12 10 12 deja de ser básica x4 pues min . x6 ) Construimos la tabla del Simplex: T abla I x1 x4 x6 0 x1 0 1 0 0 0 0 0 1 −3 0 x2 x3 x4 3 −1 0 −2 4 1 −4 3 0 −1 3 0 2 0 x5 x6 2 0 0 0 8 1 −2 0 sol. Seleccionar para entrar en la base la variable con rj más positivo. básica factible 7 12 10 Z0 = 0 La variable que pasa a ser básica es x3 por ser r3 el más positivo de los rj . La solución actual es óptima si todos los costes reducidos son no positivos (todos son negativos o nulos). se selecciona arbitrariamente una cualquiera de éstas. PROGRAMACIÓN LINEAL El paso 2 sería: Comprobar si esta solución es óptima.56 TEMA 2. En otro caso ir al paso 3. Si es así. Obtenemos la siguiente tabla: . x4 .a. Ejemplo 27 Dado el programa lineal: Min s. parar. El paso 3a quedaría: Regla de la variable de entrada. Cuando hay varias variables que tienen este mismo valor. x5 . 4 3 4 Si hacemos las transformaciones: Multiplico la fila 2 por 1/4. x6 ≥ 0 resolverlo usando el algoritmo del Simplex en forma minimizante. x3 . Tomamos como variables básicas: (x1 . Resto a la fila 3 la fila 2 multiplicada por 3. El resto del algoritmo permanecería inalterado. x2 .

En los tres últimos los recursos pueden ser negativos.: • Primer caso: Hay desigualdades (≤) y bi ≥ 0. • Segundo caso: Hay igualdades y bi ≥ 0.8 Búsqueda de soluciones iniciales Vamos a considerar varios casos. Si hacemos las transformaciones: Multiplico la fila 1 por 2/5. la solución es: x1 = 0 x2 = 4 x3 = 5 x4 = 0 x5 = 0 x6 = 11 . Sumo a la fila 3 la fila 1.2. Sumo a la fila 2 la fila 1 multiplicada por 1/5.8. ˜ Z = −11. Y sale x1 pues es el único yi2 que es positivo. Obtenemos la siguiente tabla: T abla III x2 x3 x6 1 −3 0 0 1 x1 x2 2/5 1 1/5 0 1 0 −1/5 0 −3 0 2 0 x3 x4 x5 x6 0 1/10 4/5 0 1 3/10 2/5 0 0 −1/2 10 1 0 −4/5 −12/5 0 sol. • Quinto caso: Hay igualdades y bi ≤ 0. 2. • Tercer caso: Hay desigualdades (≥) y bi ≥ 0 • Cuarto caso: Hay desigualdades (≤) y bi ≤ 0. BÚSQUEDA DE SOLUCIONES INICIALES 57 T abla x1 x3 x6 0 x1 0 1 −3 0 0 0 0 II 1 −3 0 2 0 x2 x3 x4 x5 x6 5/2 0 1/4 2 0 −1/2 1 1/4 0 0 −5/2 0 −3/4 8 1 1/2 0 −3/4 −2 0 sol. básica factible 4 5 11 ˜ Z = −11 La solución asociada a esta base es óptima pues todos los rj ≤ 0. básica factible 10 3 1 ˆ = −9 Z Entra en la base x2 por ser el más positivo de los rj . Los tres primeros corresponden a recursos no negativos. • Sexto caso: Hay desigualdades (≥) y bi ≤ 0 .

y una de holgura que se suma a la función objetivo con coeficiente nulo. quinto y sexto caso. n j=1 n aij xj ≥ bi =⇒ j=1 aij xj − ti + ri = bi donde ri son las variables artificiales. lo que permite eliminarla. y ti son las variables de holgura. Es decir ahora tenemos dos variables nuevas. sumamos una nueva variable positiva que llamamos variable artificial: n n aij xj = bi j=1 =⇒ j=1 aij xj + ri = bi donde ri son las variables artificiales A la función objetivo le añadimos un nuevo término formado por esta variable artificial que tendrá coeficiente negativo y valor absoluto "muy grande" si el problema es de maximización y con coeficiente coeficiente positivo y valor absoluto "muy grande" si el problema es de minimización. Cuarto.58 TEMA 2. En este caso. PROGRAMACIÓN LINEAL Primer caso (Desigualdades ≤ y bi ≥ 0. En el caso de que aparezca un signo de igualdad en alguna restricción.). Tercer caso (Desigualdades (≥) y bi ≥ 0) Si el signo de la restricción es de (≥) restamos en primer lugar una variable de holgura positiva para transformarla en una igualdad. A continuación aplicamos algunas de estas reglas en varios ejemplos: . las desigualdades se convierten en igualdades introduciendo variables de holgura positivas que tienen coeficiente nulo en la función objetivo. Cuando ya tenemos una igualdad sumamos una variable artificial tal como hemos explicado en el párrafo anterior. (Se reducen a los tres primeros casos). una artificial que se añadira a la función objetivo con un coeficiente "muy grande" si el problema es de minimización (o "muy pequeño" si es de maximización). Con ello se consigue que la variable artificial salga de la base y sea nula. el quinto se transforma en el segundo y el sexto en el primero. Segundo caso (Igualdades y bi ≥ 0). Cambiando el signo de las restricciones el cuarto caso se transforma en el tercero. Este caso ya se ha tratado en la presentación del algoritmo de simplex.

BÚSQUEDA DE SOLUCIONES INICIALES Ejemplo 28 Dado el programa lineal: Max s. x4 . Y sale x6 pues: min 9 10 12 . x2 . . básica factible 10 9 12 Z0 = 0 Z0 = 0  = 10    = 9 = 12    Entra en la base x1 por ser el más negativo de los rj . x3 ≥ 0 59 Si introducimos las variables de holgura positivas tendremos el programa equivalente: Max s.2. x3 .: Z = 3x1 + 2x2 + x3 x1 + 2x2 + x3 + x4 x1 + x2 + 2x3 + x5 + 3x3 + x6 2x1 x1 . Por tanto una solución básica factible inicial es: x1 = 0 x2 = 0 x3 = 0 x4 = 10 x5 = 9 x6 = 12 .: Z = 3x1 + 2x2 + x3  x1 + 2x2 + x3 ≤ 10    x1 + x2 + 2x3 ≤ 9 2x1 + 3x3 ≤ 12    x1 .a. x2 . sumo a la fila 2 la fila 3 multiplicada por (-1/2).a. Obtenemos la siguiente tabla: . x6 ≥ 0 Tomamos como variables básicas las de holgura: x4 . Construimos la tabla del Simplex: T abla I x4 x5 x6 3 x1 0 1 0 1 0 2 -3 2 1 0 x2 x3 x4 2 1 1 1 2 0 0 3 0 −2 −1 0 0 x5 0 1 0 0 0 x6 0 0 1 0 sol. x5 . 2 Si hacemos las transformaciones: Multiplico la fila 3 por 1/2. x6 .8. x5 . Sumo a la fila 1 la fila 3 multiplicada por (-1/2). 1 1 2 = 12 = 6.

Ejemplo 29 Dado el programa lineal: Max s. b sica x6 factible −1/4 2 −1/4 1 1/2 6 ˜ 1 Z = 22 La solución asociada a esta base es óptima pues todos los rj ≥ 0.60 TEMA 2. Y sale x4 3 4 4 pues: min . x2 . 1 2 2 Si hacemos las transformaciones: Multiplico la fila 1 por 1/2. x2 ≥ 0 Si introducimos las variables de holgura positivas tendremos el programa equivalente: Max s. la solución es: x1 = 6 x2 = 2 x3 = 0 .: Z = x1 + 2x2  x1 − 2x2 + x3 = 4  x1 − 5x2 + x4 = 8  x1 . = = 2. El valor para la variable de holgura x5 = 1 significa que una unidad del segundo recurso no se ha gastado. x3 . básica x6 factible −1/2 4 −1/2 3 1/2 6 3/2 Z = 18 Entra en la base x2 porque le corresponde el más negativo de los rj .a. PROGRAMACIÓN LINEAL T abla II x4 x5 x1 0 0 3 3 x1 0 0 1 0 2 x2 2 1 0 -2 1 0 x3 x4 −1/2 1 1/2 0 3/2 0 7/2 0 0 x5 0 1 0 0 0 sol. ˜ Z = 22. x4 ≥ 0 .: Z = x1 + 2x2  x1 − 2x2 ≤ 4  x1 − 5x2 ≤ 8  x1 . Las variables de holgura no se han incluido en la solución óptima. Sumo a la fila 2 la fila 1 multiplicada por (-1/2). Obtenemos la siguiente tabla: T abla III x2 x5 x1 2 0 3 3 x1 0 0 1 0 2 x2 1 0 0 0 1 0 0 x3 x4 x5 −1/4 1/2 0 3/4 −1/2 1 3/2 0 0 3 1 0 0 sol.a.

En el caso en que todas las variables artificiales que se tengan que introducir sean nulas el programa equivalente al inicial. x6 ≥ 0 De esta forma hemos construido un programa no equivalente. y una variable artificial x6 tendremos el programa no equivalente: Min s. x2 . El problema se resuelve usando . Sustituyendo en el sistema el valor x1 = 0 obtenemos una de estas direcciones:  0  x1 =   x2 = x2  x3 = 4 + 2x2   x4 = 8 + 5x2 Nota: Este programa lineal puede resolverse usando el método geométrico estudiado en el Tema 1.: Z = 3x1 + 5x2  x1 ≤ 4    x2 ≤ 6 3x1 + 2x2 ≥ 18    x1 . x3 . x4 . x2 ≥ 0 Si introducimos las variables de holgura positivas. básica factible 4 8 Z0 = 0 61 La solución es no acotada o ilimitada pues todos los yi2 < 0 ya que y11 = −2 < 0. Ejemplo 30 Dado el programa lineal: Min s.: Z = 3x1 + 5x2 + mx6  x1 + x3 = 4    x2 + x4 = 6 3x1 + 2x2 − x5 + x6 = 18    x1 . x5 .a.8.a. Construimos la tabla del Simplex: T abla I x3 x4 1 2 0 x1 x2 x3 0 1 −2 1 0 1 −5 0 −1 -2 0 0 x4 0 1 0 sol. con una variable artificial. BÚSQUEDA DE SOLUCIONES INICIALES Y por tanto una solución básica factible inicial es: x1 = 0 x2 = 0 x3 = 4 x4 = 8. Puede observarse entonces que la región factible es no acotada y el valor de la z puede mejorar tanto como queramos. y12 = −5 < 0. Podemos hallar una dirección (Rayo Óptimo) cuyos puntos son todos soluciones factibles y la función objetivo mejora cuando aumenta el valor de las variables.2.

y con valor positivo. 2.8. Caso Minimizante. A las variables artificiales se les pone costo muy alto (m) −→ +∞ en la función objetivo (Z). continuamos con el ejemplo 30. A las variables artificiales se les pone costo muy bajo (−m) −→ −∞ en la función objetivo (Z). básica factible 4 6 18 Z0 = 18m . usando el método de las penalizaciones: La solución básica factible inicial era: x1 = 0 x2 = 0 x3 = 4 x4 = 6 x5 = 0 x6 = 18. Para conseguirlo podemos sumar a la última fila la tercera multiplicada por m. básica x5 x6 factible 0 0 4 0 0 6 −1 1 18 0 −m 0 Z0 = 18m Para que x6 pueda actuar como variable básica tendría que tener un cero en su coste reducido. para que salgan rápidamente de la base. Construimo la tabla inicial del Simplex. La tabla inicial del Simplex es: T abla I 3 5 0 M in x1 x2 x3 x3 0 1 0 1 x4 0 0 1 0 x6 m 3 2 0 −3 −5 0 rj 0 x4 0 1 0 0 0 m sol. si alguna de las variables artificiales es básica. entonces el problema original es no factible. Ejemplo 31 Resolver el problema dado en el ejemplo 30 . Teorema 7 Dado un programa lineal con variables artificiales y dada la solución básica factible óptima XB = B −1 · b. Para ilustrar este método y este teorema realizamos dos ejemplos.62 TEMA 2.1 Método de las Penalizaciones Caso Maximizante. obteniéndose: 3 5 0 T abla I Min x1 x2 x3 x3 0 1 0 1 x4 0 0 1 0 x6 m 3 2 0 3m − 3 2m − 5 0 rj 0 x4 0 1 0 0 0 m x5 x6 0 0 0 0 −1 1 −m 0 sol. para que salgan rápidamente de la base. PROGRAMACIÓN LINEAL el método de las penalizaciones (o de la “m grande”). En el primero. que estudiamos en el siguiente epígrafe.

8. que en el caso en que todas las variables artificiales sean nulas. . x5 tendremos el programa no equivalente: Min s. x3 ≥ 0 Si introducimos las variables artificiales x4 . será un programa equivalente al inicial. x2 = 3 . básica factible 4 6 6 Z = 6m + 12 Entra en la base x2 por ser r2 el mayor.a. básica x5 x6 factible 0 0 4 1/2 −1/2 3 −1/2 1/2 3 ˆ = 27 −5/2 5/2 − m Z z = 27.2. x3 . y sale de la base x6 pues es el que hace mínimo el cociente 6/1 y 6/2. x2 .a. x4 . Ejemplo 32 Dado el programa lineal: Min s.: Z = x1 − 2x2 + 3x3  −2x1 + x2 + 3x3 = 2  2x1 + 3x2 + 4x3 = 1  x1 . pues hace mínimo el cociente 4/1 y 18/3. y quedan 3 unidades. Si construimos la nueva tabla del Simplex obtenemos: T abla II M in x1 3 x4 0 x6 m rj 3 x1 1 0 0 0 5 0 0 x2 x3 x4 0 1 0 1 0 1 2 −3 0 2m − 5 −3m + 3 0 0 m x5 x6 0 0 0 0 −1 1 −m 0 sol. con La variable de holgura x4 = 3 se interpreta como que el segundo recurso no se gasta. BÚSQUEDA DE SOLUCIONES INICIALES 63 Esta tabla puede escribirse también directamente si calculamos la última fila usando la expresión de los costes reducidos dada en 2. x2 . Así.4 de la página 53. Si construimos la nueva tabla del Simplex: T abla III M in x1 3 x4 0 x2 5 rj 3 x1 1 0 0 0 5 x2 0 0 1 0 0 0 x3 x4 1 0 3/2 1 −3/2 0 −9/2 0 0 m sol.: Z = x1 − 2x2 + 3x3 + mx4 + mx5  −2x1 + x2 + 3x3 + x4 = 2  2x1 + 3x2 + 4x3 + x5 = 1  x1 . x5 ≥ 0 Así hemos construido un programa no equivalente con variables artificiales. entra en la base x1 por ser r1 el mayor coste reducido y sale de la base x3 . La solución óptima es x1 = 4.

Construimos la tabla del Simplex: T abla I 1 −2 3 m M in x1 x2 x3 x4 x4 m −2 1 3 1 x5 m 2 3 4 0 rj −1 4m + 2 7m − 3 0 m x5 0 1 0 sol. y tiene un valor positivo x4 = 5/4. PROGRAMACIÓN LINEAL El sistema es equivalente al inicial si las variables artificiales son nulas: x4 = x5 = 0. que las n primeras columnas de A corresponden a la matriz básica B asociada a una solución básica factible. básica factible 2 1 Z0 = 3m Z0 = 3m Así... .a.. . amn Si partimos de la forma matricial Opt. . s.  a1n . am1  . .  . que N es .X =     x1 x2 ... . cn      .64 TEMA 2. xn      . . . A= . básica factible 5/4 1/4 3 Z = 5m + 4 Así. . sin pérdida de generalidad. . y la variable artificial x4 no ha salido de la base. . pues hace mínimo el cociente 2/3 y 1/4. bm      a11  . entra en la base x3 por ser r3 el mayor y sale de la base a5 . Si construimos la nueva tabla del Simplex obtenemos: T abla II Min x4 m x3 3 rj 1 x1 −7/2 1/2 7 1 − m+ 2 2 −2 x2 −5/4 3/4 5 17 − m+ 4 4 3 x3 0 1 0 m x4 1 0 0 m x5 −3/4 1/4 7 3 − m+ 4 4 sol.b =     y y considerando.: siendo   c=   c1 c2 . La solución básica factible inicial es: x1 = 0 x2 = 0 x3 = 0 x4 = 2 x5 = 1.9 Algoritmo del Simplex en forma matricial  Z = c′ X  AX = b  X≥0 b1 b2 . 2. el problema original es no factible. porque he llegado a la tabla óptima. . .

Así. Z. cB .:  XB ′ Z = (c′ . N B B N Dependiendo de los valores de los elementos de la matriz c′ B −1 N − c′ el B N valor de la función objetivo. los costes de las variables básicas y los costes de la variables no básicas.9. por lo que las dos últimas expresiones tomarán la forma: 0 XB = B −1 b = XB y Z = c′ B −1 b = Z 0 B que son los valores de las variables básicas y de la función objetivo correspondiente a una solución básica factible inicial. si el problema fuera de maximización. B N B En el caso particular de la solución básica asociada a esta matriz B. XN . se obtiene: B −1 BXB + B −1 N XN = B −1 b y por tanto XB = B −1 b − B −1 N XN Sustituyendo en la función objetivo este valor de XB tenemos: Z = (c′ . Z = Z 0 + c′ − c′ B −1 N XN = Z 0 − c′ B −1 N − c′ XN . se podrá mejorar o no. c′ ) XN = cB XB + c′ XN  B N N XB B N XN = BXB + N XN = b  X≥0 Multiplicando por B −1 el sistema formado por las restricciones. aumentando el valor del xj ∈ XN dentro de las condiciones 0 de factibilidad XB − B −1 N XN 0. las no básicas. c′ ) B N XB XN = c′ XB + c′ XN = c′ B −1 b − B −1 N XN + c′ XN = B N B N = c′ B −1 b + c′ − c′ B −1 N XN . en general se cumplirá para cualquier otra solución factible: 0 XB = XB − B −1 N XN . cN son. respectivamente. . las matrices formadas por las variables básicas.2. entonces el problema puede expresarse en la forma: Max s. Por lo tanto. se podría mejorar la solución anterior si algún elemento de esta matriz fuera negativo.a. ALGORITMO DEL SIMPLEX EN FORMA MATRICIAL 65 la matriz formada por las restantes columnas y que XB . XN = 0.

′ Paso 2 Si c′ − cB B −1 N ≥ 0 la solución actual es óptima.B .a. Paso 3a Regla de la variable de entrada: Seleccionar para entrar en la base la variable no básica de XN cuyo coeficiente en c′ B −1 N − c′ sea B N lo menor posible. . PROGRAMACIÓN LINEAL 2. . N = (a3 ) = 1 5 B = (a1 . −1 N .66 TEMA 2. . . . x3 ≥ 0 1 2 2 1 −1/3 2/3 2/3 −1/3 =⇒ .B .B .: Z = 2x1 − 3x2 + 10x3  x1 + 2x2 + x3 = 4  2x1 + x2 + 5x3 = 5  x1 . . Vamos a aplicar este enfoque del método del Simplex al ejemplo que aparece a continuación. x2 . = B −1 B . (el más negativo). −1 N . a2 ) = =⇒ B −1 = Ordenamos los cálculos de la forma siguiente: . −1 b 1 2 2 1 .9.B . Ejemplo 33 Dado el programa lineal: Max s. Paso 3b Regla de la variable de salida: Se selecciona la variable de salida de forma que la variable de entrada considerada anteriormente pueda tomar el mayor valor posible dentro de las condiciones de factibilidad 0 XB − B −1 N XN 0.N . . Paso 4 Tomando ahora esta nueva matriz básica ir al paso 1.1 Método del Simplex en forma matricial (caso maximizante) 0 Paso 1 Partir de una solución básica factible XB = B −1 b = XB y Z = c′ B −1 b = B Z 0. Fin. −1 b = I .b B −1 B . Si no es así ir al N paso 3 Paso 3 . 2 1 1 5 4 5 1 0 0 1 3 -1 2 1 2 1 =1 −1/3 2/3 2/3 −1/3 0 XB = B −1 · b = = Z 0 = c′ B −1 b = B 2 −3 .

3 c′ B −1 N − c′ = B N −3 10 Por lo tanto la solución actual x1 = 0. Si damos este valor. la solución puede mejorar. 3 5 = . ADAPTACIÓN ALGEBRAICA DEL ALGORITMO DEL SIMPLEX ¿Es esta solución óptima? 3 −1 67 c′ B −1 N − c′ = N B 2 −3 − (10) = (9 − 10) = (−1) . x2 = 5/3. Las condiciones de factibilidad son: 0 XB − B −1 N XN = 2 1 − 0. 2 1 1 3 1 3 1 3 1 3 B= 1 3 1 3 0 3 1 −1 0 1 3 -1 = 2 1 = 1 0 1 0 0 1 5 3 2 3 1 0 1 0 x2 x3 0 0 = XB = B −1 · b = 5 3 2 3 . Entra en la base x3 . x3 = 2/3. El mejor valor para x3 = 2 . ya que 1 + x3 es siempre mayor o igual que Ha de cumplirse que 2 − 3x3 cero si lo es x3 .2. la variable x1 = 0 3 y sale de la base.10 Adaptación algebraica del algoritmo del Simplex Definimos algunas magnitudes y concretamos algunos conceptos: . 5 3 2 3 Z0 = c′ B −1 b = B 1 3 1 3 −3 10 − 2 = 1. Partiendo ahora de la matriz transformada resultante 1 0 0 1 3 -1 −1 3 −1 x3 = 2 − 3x3 1 + x3 0. 2.10. es óptima. Por ser negativo. z = 5/3. Las nuevas variables básicas son x2 y x3 .

1 Algoritmo del Simplex (enfoque algebraico) Partimos de una solución factible básica inicial.. .: donde r(A) = m y B = (a1 .68 Sea el programa lineal: TEMA 2. de la forma:   y1j  y  donde yj =  2j  aj = y1j a1 + y2j a2 + · · · + ymj am = B · yj  . y a partir de ella se pasa a otra solución básica factible adyacente que se consigue cambiando una sola columna de la base. Este cambio se hace mediante un criterio lógico basado en: • Mejorar lo más posible la función objetivo. y que xj es variable no básica. a2 . am ). entonces podemos expresarlo como combinación lineal de los vectores de B.. . Suponemos que la base B = (a1 . pues yj = B −1 · aj . Para ello necesitamos: • Regla para la variable de salida (Mantener la factibilidad). Demostración de la Regla para la variable de salida. . ′ Definimos el escalar zj como zj = ct · yj . PROGRAMACIÓN LINEAL  Z = ct X  AX = b  X≥0 Opt. Si las variables toman los valores: x1 = x0 1 x2 = x0 2 x3 = x0 3 xj = 0. . x3 .  ymj Así tenemos un procedimiento. Hay un caso particular muy importante. s. . Supongamos que las variables básicas son x1 . a2 . • Regla para la variable de entrada (Mejorar la función objetivo). = cB B −1 · aj . x2 . B 2. Si tenemos algún aj que no está en la base B. a3 ) y aj es el vector que no está en B y que va a entrar en la nueva base.10.a. cuando la base inicial coincide con la matriz identidad tendremos que B = I y por tanto yj = aj . • Mantener la factibilidad (no deben salir soluciones básicas no factibles).

9) . Para las que cumplen que yij > 0 tendremos que como x1 . y x0 . x2 .6) en (2. y por tanto de (2. x3 debe ser cero. 69 siendo alguna de las variables x1 . x2 .5) tenemos: x0 a1 + x0 a2 + x0 a3 = x1 a1 + x2 a2 + x3 a3 + θ(y1j a1 + y2j a2 + y3j a3 ) ˆ ˆ ˆ 1 2 3 x0 a1 + x0 a2 + x0 a3 = (x1 + θy1j )a1 + (x2 + θy2j )a2 + (x3 + θy3j )a3 ˆ ˆ ˆ 1 2 3  0  0 ˆ ˆ  x1 = x1 + θy1j  x1 = x1 − θy1j 0 0 x = x2 + θy2j ˆ x2 = x2 − θy2j ˆ y despejando queda  2  0 x0 = x3 + θy3j ˆ x3 = x3 − θy3j ˆ 3 x0 − θy1j = 0 1 o equivalentemente θ= x0 1 y1j θ= x0 2 y2j θ= x0 3 y3j (2. esto es: ˆ ˆ ˆ Como θ ha de ser positivo o cero.2.8) x0 − θy2j = 0 2 x0 − θy3j = 0 3 (2. x0 .10. x0 lo son.7) donde algún x1 . Como ambas soluciones deben ser factibles tendrá que cumplirse: x0 a1 + x0 a2 + x0 a3 1 2 3 x1 a1 + x2 a2 + x3 a3 + θaj ˆ ˆ ˆ = b = b =⇒ (2.6) (2. x3 han de ser ˆ ˆ ˆ mayores o iguales que cero. tendremos que: aj = y1j a1 + y2j a2 + y3j a3 Si sustituimos (2. podemos desechar las columnas 1 2 3 para las que yij ≤ 0. x3 igual a cero y el resto son mayores o iguales a cero.7) deducimos que:  x0 − θy1j ≥ 0  1 x0 − θy2j ≥ 0 2  x0 − θy3j ≥ 0 3 x0 1 y1j x0 θ≤ 2 y2j x0 θ≤ 3 y3j θ≤ =⇒                (2. ADAPTACIÓN ALGEBRAICA DEL ALGORITMO DEL SIMPLEX Al introducir aj en la nueva base tendremos: x1 = x1 ˆ x2 = x2 ˆ x3 = x3 ˆ xj = θ ≥ 0. x2 .5) 0 x0 a1 + x0 a2 + x3 a3 = x1 a1 + x2 a2 + x3 a3 + θaj ˆ ˆ ˆ 1 2 Como aj es combinación lineal de los vectores de la base.

Demostración de la Regla para la variable de entrada.8) y (2. la actual solución es óptima si B zj − cj ≥ 0 para toda columna aj de A. Veamos: ˆ Z Z0 − θ(zj − cj ) ˆ =⇒ Z ≤ Z0 . ˆ ˆ ˆ ˆ  x3 = x3   xj = θ.70 TEMA 2. a2 .   y1j  y  pues ya hemos definido que zj = ct · yj siendo yj =  2j . =⇒ 2 1 2 3  0 x3 = x3 Al introducir aj en la nueva base tendremos:  ˆ  x1 = x1   x2 = x2 ˆ ˆ =⇒ Z = c1 x1 + c2 x2 + c3 x3 . yij Como regla de la variable de salida tenemos que dada la solución básica factible XB = B −1 · b. yij > 0 para algún i. siendo el vector aj que entra en la base.10) = c1 (x0 − θy1j ) + c2 (x0 − θy2j ) + c3 (x0 − θy3j ) + θcj = 3 1 2 = c1 x0 + c2 x0 + c3 x0 − θc1 y1j − θc2 y2j − θc3 y3j + θcj = 1 2 3 = Z0 − θ(c1 y1j + c2 y2j + c3 y3j − cj ) = Z0 − θ(zj − cj ). ˆ Z Si usamos las relaciones obtenidas anteriormente (2. Si las variables toman los valores:   x1 = x0 1 x2 = x0 Z0 = c1 x0 + c2 x0 + c3 x0 . Sea B = (a1 . siendo xj la variable de entrada en la base. yij yij > 0 . B  ···  ymj De la expresión (2.7) tendremos: (2.9) tendremos: θ = min x0 i . a3 ) y sea aj que no está en la base B. entonces saldrá de la base aquel vector ak que verifique: x0 k = min ykj x0 i . PROGRAMACIÓN LINEAL Como pretendemos que θ cumpla (2. = y como θ ≥ 0 y zj − cj ≥ 0 =⇒ . yij yij > 0 Y ésta es la regla para la variable de salida. aquella que hace mínimo el cociente x0 i tal que yij > 0.10) se obtienen dos conclusiones: • Para el caso maximizante: Dada la solución básica factible XB = B −1 · b con un valor para la función objetivo Z0 = ct · XB .

si para alguna columna aj no básica es zj − cj < 0 con yij ≤ 0 para todo i.11) . x3 = x0 . y que éstos son los tres primeros. • Para el caso minimizante: Dada la solución básica factible XB = B −1 · b con t un valor para la función objetivo Z0 = cB · XB .10. Soluciones óptimas alternativas. Teorema 9 Dada XB = B −1 · b solución básica factible. aj no está en la base B. Y por tanto concluimos como regla para la variable de entrada: Dada la solución factible básica XB = B −1 · b. a3 ) aj no b˘sico a ≤ 0 y2j ≤ 0 y3j ≤ 0. Teorema 8 Dada la solución básica factible XB = B −1 ·b óptima. el problema es no acotado. zj − cj < 0 y Pero como el vector aj se puede expresar como combinación lineal de B entonces: aj = y1j a1 + y2j a2 + y3j a3 Sea la solución básica factible: x1 = x0 1 . Por tanto concluimos como regla para la variable de entrada: 71 Dada la solución factible básica XB = B −1 · b. a2 . la variable de entrada será aquella que proporcione un valor más negativo de zj − cj . no podemos sacar ninguna ai de la base. Caso particular: Si zj − cj = 0. 3 . pero no hay ningún yij > 0. En el caso maximizante tenemos que hay algún zj − cj < 0 y aj es un vector que no está en la base y todos los yij ≤ 0. Demostración: Supongamos que la base consta de 3 vectores. la variable de entrada será aquella que proporcione un valor más positivo de zj − cj . Cuando ésto ocurre decimos que hay un rayo óptimo (una serie de variables que pueden tomar valores infinitos pero que dan unos valores finitos en la tabla). 0 x2 = x2 (2. la actual solución es óptima si zj − cj ≤ 0 para toda columna aj de A. Soluciones no acotadas. ADAPTACIÓN ALGEBRAICA DEL ALGORITMO DEL SIMPLEX Y por tanto Z0 es el valor máximo. si existe algún aj fuera de la base para el que se cumpla que zj − cj = 0.2. el problema tiene soluciones alternativas. Así: B y1j = (a1 .

. .. . . . x0 m Z0 Opt..2 Método del Simplex en forma de tabla (Usando zj − cj en la última fila) c1 x1 y11 y21 . ..13) Así obtenemos una solución del sistema de restricciones: x1 x2 x3 xj = = = = x0 − αy1j 1 x0 − αy2j 2 x0 − αy3j 3 α que es una solución factible no básica. .. 1 2 (2. . . .. . . Si buscamos la solución óptima: ˆ Z 0 c1 (x0 − αy1j ) + c2 (x0 − αy2j ) + c3 (x3 − αy3j ) + cj α = 1 2 0 c1 x0 + c2 x0 + c3 x3 − αc1 y1j − αc2 y2j − αc3 y3j + αcj = 1 2 Z0 − α(c1 y1j + c2 y2j + c3 y3j − cj ) = Z0 − α(zj − cj ) como α > 0 y zj − cj < 0 =⇒ ˆ > Z0 .. =⇒ Z = = = = Como α es arbitrario... ym2 z2 − c2 . . ... . x1 x2 ... . . ymn zn − cn coef.. .. . .. .72 TEMA 2.. objetivo variables x0 1 x0 2 . .. ym1 z1 − c1 =⇒ c2 x2 y12 y22 . .. .... . . .12) (2.(2... .. . . La solución óptima aumentará al aumentar α.10. . . . es decir no acotarlo. cm cj yj = B −1 · aj = aj ..12) . . xm zj − Si B = Im c1 c2 ... .13) obtenemos: 0 (x0 − αy1j )a1 + (x0 − αy2j )a2 + (x3 − αy3j )a3 + αaj = b. . .11) por α > 0 entonces: αy1j a1 + αy2j a2 + αy3j a3 = αaj Si restamos (2. PROGRAMACIÓN LINEAL Expresándolo vectorialmeante tenemos: x0 a1 + x0 a2 + x0 a3 = b 1 2 3 Si multiplicamos la expresión (2.... 2. .... cn xn y1n y2n .. .. puedo hacerlo tan grande como quiera..

Max s. Ejemplo 34 Resolver el programa lineal. Si no es así.14) Paso 5: Volver al paso 2. ir al paso ci yij − cj (2. Paso 1: Considerar la solución actual. el problema es no acotado) −→ 4.2. (Si todos los yik ≤ 0. Sea ésta la ak . los pasos a seguir son: Paso 0: Construir la tabla inicial y la solución inicial. Paso 3a: Fin 73 Seleccionar para entrar en la base la columna con zj − cj más negativo. ir al paso 3.a. x4 ≥ 0 B = (a3 . a4 ) = I2 Tomamos como base: . x2 .: Z = 3x1 + 2x2 − 2x3 + x4  2x1 + 3x2 + x3 = 12  2x1 + x2 + x4 = 8  x1 . la solución es óptima −→ Si zj − cj < 0 para alguna variable.10. usando el método del Simplex en forma de tabla. Paso 2: Si todos los zj − cj ≥ 0. Calcular zj − cj usando la expresión m i=1 x0 i para los yik > 0. Paso 4: Realizar transformaciones en la tabla para conseguir una nueva matriz unitaria tomando yrk como pivote. ADAPTACIÓN ALGEBRAICA DEL ALGORITMO DEL SIMPLEX Una vez que tengamos la tabla (caso maximizante). yik Fin . x3 . Paso 3b: Seleccionar para salir de la base el que haga mínimo el cociente Sea la fila r.

3 1 = 12 = 4. Resto a la fila 1 la fila 2 por 2/3. 3} = 3. . Obtenemos la siguiente tabla: T abla II x2 x4 zj − 2 1 cj 3 2 x1 x2 2/3 1 4/3 0 -1/3 0 −2 1 x3 x4 1/3 0 −1/3 1 7/3 0 Sol. 3 Si hacemos las transformaciones siguientes: Divido la fila 1 por 3 (multiplico por 1/3). Resto a la fila 2 la fila 1. Y sale a3 pues min 12 8 . 2/3 4/3 Y por tanto sale de la base a4 . básica factible 12 8 Z0 = −16 Entra en la base a2 por ser el más negativo.74 Construimos la tabla del Simplex: T abla x3 x4 zj − 3 2 x1 x2 −2 2 3 1 2 1 cj −5 −7 I TEMA 2. PROGRAMACIÓN LINEAL −2 1 x3 x4 1 0 0 1 0 0 Sol. = min{6. básica x3 x4 factible 1/2 −1/2 2 −1/4 3/4 3 9/4 1/4 Z = 13 La solución asociada a esta base es óptima pues todos los zj − cj ≥ 0. Hacemos las transformaciones siguientes: Multiplico por 3/4 la fila 3. Como variable de salida hacemos: 4 4 min . ˜ Z = 13. la solución x1 = 3 x2 = 2 x3 = 0 x4 = 0 . Obtenemos la siguiente tabla: T abla III x2 x1 zj − es: 2 1 cj 3 x1 0 1 0 2 x2 1 0 0 −2 1 Sol. básica factible 4 4 Z = 12 Entra en la base a1 por ser z1 − c1 < 0 el único negativo.

a. Y sale a4 pues min 12 10 . ADAPTACIÓN ALGEBRAICA DEL ALGORITMO DEL SIMPLEX La base óptima es B = (a2 . básica factible 7 12 10 Z0 = 0 Tomamos como base: Entra en la base a3 por ser el más positivo de los zj − cj . Obtenemos la siguiente tabla: .10. a1 ) = 3 2 1 2 =⇒ B −1 = 1/2 −1/2 −1/4 3/4 75 Si observamos la Tabla III del Simplex tenemos que la matriz B −1 son las columnas que formaban la base inicial. x5 .2. x4 . 4 Si hacemos las transformaciones siguientes: Multiplico la fila 2 por 1/4. a6 ) = I3 Construimos la tabla del Simplex: T abla x1 x4 x6 zj − cj I 0 x1 0 1 0 0 0 0 0 1 −3 0 x2 x3 x4 3 −1 0 −2 4 1 −4 3 0 −1 3 0 2 0 x5 x6 2 0 0 0 8 1 −2 0 Sol. Sumo a la fila 1 la fila 2. Ejemplo 35 Resolver el programa lineal. Min s. a4 . usando el método del Simplex en forma de tabla. x6 ≥ 0 B = (a1 . Resto a la fila 3 la fila 2 multiplicada por 3. x3 . 4 3 = 12 = 3. también podemos obtener el algoritmo correspondiente para el caso minimizante. Haciendo las transformaciones adecuadas.: Z = x2 − 3x3 + 2x5  x1 + 3x2 − x3 + 2x5 = 7    −2x2 + 4x3 + x4 = 12 −4x2 + 3x3 + 8x5 + x6 = 10    x1 . x2 .

1 −1/2 1  ˜ Z = −11. a3 .11 Otros algoritmos de programación lineal Vamos a estudiar ahora otros algoritmos de programación lineal: .14. Sumo a la fila 3 la fila 1. Obtenemos la siguiente tabla: T abla x2 x3 x6 zj − cj es: III 1 −3 0 0 1 x1 x2 2/5 1 1/5 0 1 0 −1/5 0 −3 0 2 0 x3 x4 x5 x6 0 1/10 4/5 0 1 3/10 2/5 0 0 −1/2 10 1 0 −4/5 −12/5 0 Sol.76 TEMA 2. La base óptima es  3 −1 0 B = (a2 . PROGRAMACIÓN LINEAL T abla x1 x3 x6 zj − cj 0 x1 0 1 −3 0 0 0 0 II 1 −3 0 2 0 x2 x3 x4 x5 x6 5/2 0 1/4 2 0 −1/2 1 1/4 0 0 −5/2 0 −3/4 8 1 1/2 0 −3/4 −2 0 Sol. Por ejemplo: z2 − c2 = 0 × 5 1 −3× − 2 2 +0× − 5 2 −1 = 1 2 Entra en la base a2 por ser el más positivo de los zj − cj . básica factible 4 5 11 ˜ Z = −11 La solución asociada a esta base es óptima pues todos los zj − cj ≤ 0. 2. Y sale a1 pues es el único yi2 que es positivo. Sumo a la fila 2 la fila 1 multiplicada por 1/5. básica factible 10 3 1 ˆ = −9 Z La fila de los costes reducidos se obtiene por medio de la expresión 2. a6 ) =  −2 4 0  −4 3 1  =⇒ B −1  2/5 1/10 0 =  1/5 3/10 0  . Si hacemos las transformaciones que aparecen a continuación: Multiplico la fila 1 por 2/5. la solución x1 = 0 x2 = 4 x3 = 5 x4 = 0 x5 = 0 x6 = 11 .

y una variable artificial x6 tendremos el programa no equivalente: . En caso contrario el problema no tiene solución (es infactible). elegir xi como variable de salida. añadiendo variables artificiales. Paso 5: Si en la función objetivo del paso 3 hubiera variables artificiales. con la función objetivo descrita en el paso 1. el problema original es no factible −→ Fin . con coeficiente cj = 0 para las variables artificiales que aparezcan en la base óptima del paso 2.: Z = 3x1 + 5x2  x1 ≤ 4    x2 ≤ 6 3x1 + 2x2 ≥ 18    x1 . Fase 2: Paso 3: Considerar la función objetivo original. En esta primera fase todas las variables artificiales han de resultar nulas. y por tanto sería necesario añadir variables artificiales. Paso 1: Considerar la función objetivo Z ′ {minimizante o maximizante}. Fase 1: Paso 0: Escribir el programa en forma estándar. Paso 4: Si en la función objetivo del paso 3 no hay variables artificiales aplicar el algoritmo del Simplex al nuevo programa hasta obtener la solución óptima. Ejemplo 36 Resolver el programa lineal usando el método de las dos fases. Paso 2: Aplicar el algoritmo del Simplex. ir a la fase 2. Si en la solución óptima aparecen variables artificiales con valor positivo.11. Se prescindirá de las variables artificiales no básicas y se actualizarán los zj − cj . Consta de dos fases: La primera de ellas consiste en minimizar la suma de las variables artificiales. e yik como pivote. aplicar el algoritmo del Simplex con esta modificación en la variable de salida: Si xk es la variable de entrada e yik < 0 para alguna variable artificial xi . Si no ocurre. que se obtiene incorporando al objetivo las variables artificiales con coeficientes {1 o -1} y asignando coeficiente cero al resto. Min s.11.a. OTROS ALGORITMOS DE PROGRAMACIÓN LINEAL 77 2.2. x2 ≥ 0 Si introducimos las variables de holgura positivas.1 Método de las dos fases Este algoritmo suele utilizarse cuando hay igualdades o desigualdades del tipo ≥.

Si construimos la nueva tabla del Simplex: T abla M in x1 x4 x2 zj − cj Fase 2 Como en la base óptima no aparece ninguna variable artificial. x3 . T abla Min x3 x4 x6 zj − cj 0 x1 0 1 0 0 1 3 3 I 0 x2 0 1 2 2 0 x3 1 0 0 0 0 x4 0 1 0 0 0 1 x5 x6 0 0 0 0 −1 1 −1 0 Z = 3x1 + 5x2  x1 + x3 = 4    x2 + x4 = 6 3x1 + 2x2 − x5 + x6 = 18    x1 . Así la nueva tabla queda: III 3 0 5 0 x1 1 0 0 0 0 x2 0 0 1 0 0 0 x3 x4 1 0 3/2 1 −3/2 0 0 0 0 1 x5 x6 0 0 1/2 −1/2 −1/2 1/2 0 −1 Z 4 3 3 =0 . según el paso 3. x5 . prescindimos de esta variable. entra en la base a1 por ser z1 − c1 el mayor y sale de la base a3 .a. y sale de la base a6 pues es el que hace mínimo el cociente 6/1 y 6/2. x2 . x4 .78 TEMA 2. Si construimos la nueva tabla del Simplex obtenemos: T abla Min x1 x4 x6 zj − cj II 0 0 1 0 x1 1 0 0 0 0 x2 0 1 2 2 0 0 x3 x4 1 0 0 1 −3 0 −3 0 0 1 x5 x6 0 0 0 0 −1 1 −1 0 4 6 6 Z =6 Entra en la base a2 por ser z2 − c2 el mayor. vamos a resolverlo ahora usando el método de las dos fases: Fase 1: Construimos la tabla del Simplex como indica el paso 1. pues hace mínimo el cociente 4/1 y 18/3.: Este ejemplo ya lo hemos resuelto anteriormente usando el método de las penalizaciones. El objetivo es minimizar la variable artificial x6. PROGRAMACIÓN LINEAL Min s. x6 ≥ 0 4 6 18 Z0 = 18 Así.

Ejemplo 37 Dado el programa lineal: Max s.2. x2 .11.2 Algoritmo revisado del Simplex (Caso maximizante) Este algoritmo tiene ventajas desde el punto de vista de la implementación. yik Paso 4: Sustituir en B el vector ar por ak . Calcular. Vamos a resolver el siguiente ejemplo usando el algoritmo revisado del Simplex.: Z = 3x1 + 2x2 − 2x3 + x4  2x1 + 3x2 + x3 = 12  2x1 + x2 + x4 = 8  x1 . Volver al paso 1. los zj − cj = s · aj − cj . con z = 27.11. La variable de holgura x4 = 3. la solución es óptima −→ Fin . Paso 2: Seleccionar el vector que entra en la base. Paso 1: Evaluar B −1 y el vector multiplicador s = c′ · B −1 . 2. porque las operaciones se realizan siempre con los datos originales.a. Si todos son mayores o iguales a cero. para las B variables no básicas. Paso 3: Evaluar yk = B −1 · ak y XB = B −1 · b y seleccionar el vector que sale de xi la base. que será el que proporcione un valor más negativo de zj − cj . x3 . Paso 0: Escribir el problema en forma estándar y obtener una matriz básica inicial. ya que ocupa menos posiciones de memoria. OTROS ALGORITMOS DE PROGRAMACIÓN LINEAL 79 T abla M in x1 x4 x2 zj − cj IV 3 0 5 3 x1 1 0 0 0 5 x2 0 0 1 0 0 0 x3 x4 1 0 3/2 1 −3/2 0 −9/2 0 0 x5 0 1/2 −1/2 ˆ −5/2 Z 4 3 3 = 27 La solución óptima es x1 = 4 x2 = 3 . Sea ar . Sea éste ak . a4 ) = I2 . Además no acumula errores. será el que haga mínimo el cociente para los yik > 0. Este programa lineal ya se ha resuelto anteriormente en el ejemplo 34. x4 ≥ 0 =⇒ B −1 = I2 Tomamos como base: B = (a3 .

. B B B Si calculamos los zj − cj tendremos: z1 − c1 = (−2. 1) · Si calculamos los zj − cj tendremos: z1 − c1 = (1/3. xB = B −1 · b = b = 12 8 Entra en la base a2 por ser el más negativo. PROGRAMACIÓN LINEAL s = c′ · B −1 = c′ · I2 = c′ = (−2. 3 1 = 12 = 4. 1). 1). 1) 1 0 2 2 − 3 = 8/3 − 3 = −1/3 − (−2) = 1/3 + 2 = 7/3. 1/3 0 −1/3 1 = (1/3. 1) 2 2 3 1 − 3 = −2 − 3 = −5 − 2 = −5 − 2 = -7 Si calculamos yk = B −1 · ak y xB = B −1 · b tenemos: y2 = B −1 · a2 = I2 · a2 = a2 = 3 1 . 1) z3 − c3 = (1/3. 3 Iteración 1 La nueva base es: B = (a2 . a4 ) = 3 0 1 1 =⇒ B −1 = 1/3 0 −1/3 1 El vector multiplicador del Simplex es: s = cB · B −1 = (2. Y sale a3 pues min 12 8 .80 El vector multiplicador del Simplex es: TEMA 2. Si calculamos yk = B −1 · ak y xB = B −1 · b tenemos: y1 = B −1 · a1 = xB = B −1 · b = 1/3 0 −1/3 1 1/3 0 −1/3 1 · · 2 2 12 8 = = 2/3 4/3 4 4 . . 1) z2 − c2 = (−2.

a1 ) = 3 2 1 2 =⇒ B −1 = 1/2 −1/2 −1/4 3/4 ˜ Z = 13 Ejemplo 38 Aplicar el procedimiento anterior al programa lineal: Max s. 5/4) La solución ya es óptima. 5/4) z4 − c4 = (1/4. La base óptima es B = (a2 . 2/3 4/3 Y por tanto sale de la base a4 . OTROS ALGORITMOS DE PROGRAMACIÓN LINEAL 81 Entra en la base a1 por ser z1 − c1 < 0 el único negativo. 1/2 −1/2 −1/4 3/4 = (1/4. es: La solución asociada a esta base es óptima pues todos los zj − cj ≥ 0. 5/4).11.2. 3) · Si calculamos los zj − cj tendremos: z3 − c3 = (1/4. = min{6. Si calculamos xB = B −1 · b tenemos: xB = B −1 · b = 1/2 −1/2 −1/4 3/4 · 12 8 = 2 3 1 0 0 1 − (−2) = 1/4 + 2 = 9/4 − 1 = 5/4 − 1 = 1/4. 3} = 3.a. x3 ≥ 0 . a1 ) = 3 2 1 2 =⇒ B −1 = 1/2 −1/2 −1/4 3/4 El vector multiplicador del Simplex es: s = cB · B −1 = (2.: Z = 2x1 − 3x2 + 10x3  x1 + 2x2 + x3 = 4  2x1 + x2 + 5x3 = 5  x1 . Iteración 2 La nueva base es: B = (a2 . la solución x1 = 3 x2 = 2 x3 = 0 x4 = 0 . x2 . Como variable de salida hacemos: 4 4 min .

y3 = B −1 · a3 = −1/3 2/3 2/3 −1/3 · 1 5 = 3 −1 = y13 y23 Veamos qué variable tendrá que salir (usando la regla de variable de salida) x0 3 = min yk3 Al salir de la base a1 tenemos: B = (a2 . a2 ) = 1 2 2 1 =⇒ B −1 = −1/3 2/3 2/3 −1/3 La solución asociada a esta base es factible pues: XB = =⇒ B −1 · b = x1 −1/3 2/3 = x2 2/3 −1/3 x1 = 2 x2 = 1 x3 = 0. PROGRAMACIÓN LINEAL Este programa lineal ya lo hemos resuelto anteriormente usando el método del Simplex en forma matricial. · 4 5 = 2 1 =⇒ Si calculamos los zj − cj usando que zj = ct · yj obtenemos: B z1 − c1 = (2. . Como estamos en un problema de maximizar. −3) z2 − c2 = (2. entra en la base a3 (según la regla de la variable de entrada). (ver ejemplo 33 en la página 66). tenemos que si tomamos como base: B = (a1 . yi3 yi3 > 0 Como y13 = 3 y y23 = −1. La solución asociada a esta base es factible pues: XB = B −1 · b = 5/3 2/3 =⇒ x1 = 0 x2 = 5/3 x3 = 2/3. sólo puede salir de la base a1 pues y23 es negativo. Si lo resolvemos ahora usando el algoritmo revisado del Simplex. −3) z3 − c3 = (2. a3 ) = 2 1 1 5 =⇒ B −1 = 5/9 −1/9 −1/9 2/9 x0 i .82 TEMA 2. −3) 0 1 3 −1 1 0 −2=2−2=0 − (−3) = −3 + 3 = 0 − 10 = 9 − 10 = −1.

2. la solución ya es óptima. x1 = 0 x2 = 5/3 x3 = 2/3 . 10) z2 − c2 = (−3. . −1) = (1. 10) z3 − c3 = (−3. Veamos qué variable tendrá que salir (usando la regla de variable de salida).: Z = x1 − x2 + 10x3 − 6x4  x1 + 2x3 + 5x4 = 10  x2 + 5x3 + 3x4 = 15  x1 . −1) 2 5 5 3 − 10 = −3 − 10 = −13 − (−6) = 2 + 6 = 8.a.11. x2 . Como estamos en un problema de maximizar. OTROS ALGORITMOS DE PROGRAMACIÓN LINEAL Si calculamos los zj − cj usando que zj = ct · yj obtenemos: B z1 − c1 = (−3. a2 ) = Así. 10) 1/3 1/3 1 0 0 1 − 2 = 7/3 − 2 = 1/3 − (−3) = −3 + 3 = 0 − 10 = 10 − 10 = 0. x3 . directamente obtengo una solución básica factible asociada a esta base pues: XB = B −1 · b = 10 15 =⇒ x1 = 10 x2 = 15 x3 = 0 x4 = 0. 83 Como estamos en un problema de maximizar. entra en la base a3 (según la regla de la variable de entrada). Si calculamos los zj − cj usando que zj = ct · yj obtenemos: B z1 − c1 z2 − c2 z3 − c3 z4 − c4 = 0 = 0 = (1. y todos los zj − cj ≥ 0. por la regla de parada. x4 ≥ 0 1 0 0 1 =⇒ B −1 = I2 = 1 0 0 1 Tomamos como base: B = (a1 . 3 3 3 Ejemplo 39 Resolver el programa lineal usando el algoritmo revisado del Simplex: Max s. 5 2 5 Z = 0 + (−3) + 10 = .

84 TEMA 2. Al cambiar de y23 =⇒ B −1 = 1 −2/5 0 1/5 1 2 0 5 La solución asociada a esta base es factible pues: XB = B −1 · b = 4 3 =⇒ x1 = 4 x2 = 0 x3 = 3 x4 = 0. 2 5 = min{5. Z = 4 − 0 + 10(3) − 0 = 34. 3} = 3. la solución ya es óptima. y todos los zj −cj ≥ 0. x0 2 . y por tanto sale de la base a2 . por la regla de parada. −2/5 1/5 − (−1) = 8/5 + 1 = 13/5 Como estamos en un problema de maximizar. x0 3 == min yk3 Luego el mínimo corresponde a base tenemos: B = (a1 . yi3 yi3 > 0 en nuestro caso j = 3. a3 ) = 10 15 . . PROGRAMACIÓN LINEAL x0 3 = min yk3 Como y13 = 2 y y23 = 5: x0 i . x1 = 4 x2 = 0 x3 = 3 x4 = 0 . 10) 19/5 3/5 − (−6) = 49/5 + 6 = 79/5. 10) = 0 = (1. Si calculamos los zj − cj usando que zj = ct · yj obtenemos: B z1 − c1 z2 − c2 z3 − c3 z4 − c4 = 0 = (1.

El vector columna Y. que contiene las variables del problema. 85 . C y C t .1.1 3. b y bt son matrices traspuestas entre sí.Tema 3 Dualidad en programación lineal 3. se llama Programa Dual del mismo al programa lineal: Min W = bt · Y sujeto a At · Y ≥ C Y ≥0 donde At y A . ha de ser de dimensión m × 1.1 Formas de la dualidad Forma canónica maximizante de la dualidad Dado el programa lineal: Max Z = C t · X sujeto a AX ≤ b X ≥0 donde. A es una matriz de dimensión m × n C es un vector columna de dimensión n × 1 b es un vector columna de dimensión m × 1 X es un vector columna de dimensión n × 1 llamado Programa Primal.

y1 variable dual asociada a la primera restricción. y2 variable dual asociada a la segunda restricción. 2. −1. una forma de hallar su dual es transformarlo previamente a su forma canónica maximizante.a. 24) 2  1 At · Y =   1 2   3 4  · 2  1 y1 y2  2  −1   ≥  2  1  2 1 1 2 3 4 2 1 ct = (2. y1 y2 así que el programa dual es Min W = 18y1 + 24y2 s. y2 ≥ 0 En la práctica resulta util emplear la tabla de simplex en la forma siguiente: Min y1 y2 ≥ Max x1 2 3 2 x2 1 4 -1 x3 1 2 2 x4 2 1 1 ≤ 18 24 Para escribir el dual se leen los coeficientes de las restricciones y de la función objetivo por columnas.86 TEMA 3. 3. DUALIDAD EN PROGRAMACIÓN LINEAL Ejemplo 40 Obtener el programa dual de: Max Z = 2x1 − x2 + 2x3 + x4 s.: 2y1 + 3y2 ≥ 2 y1 + 4y2 ≥ −1 y1 + 2y2 ≥ 2 2y1 + y2 ≥ 1 y1 . i = 1. 4 Sean: A= Por lo tanto W = bt · Y = (18. 2. Recordamos que cuando se trata del problema primal se leen por filas. .: 2x1 + x2 + x3 + 2x4 ≤ 18 3x1 + 4x2 + 2x3 + x4 ≤ 24 xi ≥ 0. Si el problema no estuviera expresado en forma canónica maximizante. 1) b = 18 24 .a. como haremos en el siguiente ejemplo.

FORMAS DE LA DUALIDAD Ejemplo 41 Obtener el programa dual de: Max Z = 3x1 + 8x2 + 2x3 − 4x4 s. y4 ≥ 0 Si se hacen los siguientes cambios: ′ y2 ′ y3 = y2 − y3 = −y3 tenemos: ′ ′ Min W = 5y1 − y2 + 46y3 ′ s.3.a. y3 .: y1 + y2 ≥ 3 ′ y1 − y2 ≥ 8 ′ 2y1 + y3 ≥ 2 ′ 3y1 − y3 ≥ −4 ′ ′ y1 ≥ 0. i = 1. 4 87 Transformamos las restricciones segunda y tercera en desigualdades de signo ≤ x1 − x2 = −1 ⇔ x1 x1 − x2 − x2 ≤ −1 ⇔ ≥ −1 x1 −x1 − x2 + x2 ≤ −1 ≤ 1 x3 − x4 ≥ 46 ⇔ −x3 + x4 ≤ −46. 2.: x1 + x2 + 2x3 + 3x4 ≤ 5 x1 − x2 = −1 x3 − x4 ≥ 46 xi ≥ 0. y3 ≤ 0 . y2 no restringida. 3.: y1 + y2 − y3 ≥ 3 y1 − y2 + y3 ≥ 8 2y1 − y4 ≥ 2 3y1 + y4 ≥ −4 y1 . Por lo tanto el problema se expresa en forma canónica maximizante de la siguiente forma: Max x1 1 1 −1 0 3 Min y1 y2 y3 y4 ≥ x2 1 −1 1 0 8 x3 2 0 0 −1 2 x4 3 0 0 1 −4 ≤ 5 −1 1 −46 Min W = 5y1 − y2 + y3 − 46y4 s. y2 .1.a.a.

Y ≥ 0 · Y1 Y2 ⇔ ≥ C. . s. At . · Y1 Y2 A t −A · Y1 Y2 ≥ C. 3. ′ y2 variable dual asociada a la segunda restricción. s. ≥ C. En efecto. Y no restringida. X ≥ 0 Según la definición de dualidad su dual es Min W = (b∗ )t · Y ∗ . DUALIDAD EN PROGRAMACIÓN LINEAL y1 variable dual asociada a la primera restricción. a. a. s.: At Y1 − At Y2 . ′ y3 variable dual asociada a la tercera restricción.88 TEMA 3. si el programa lineal está en forma estándar Max Z = C t · X sujeto a Ax = b. Y1 . Y ≥ 0 Realizando operaciones Min W = Min W = b t −b A −A Ax ≤ b ⇐⇒ Ax ≥ b Ax ≤ b −Ax ≤ −b y b∗ = b −b · Y1 Y2 . pasando la forma estándar a forma canónica maximizante obtenemos: Ax = b ⇐⇒ Llamando A∗ = El problema se transforma en Max Z = C t · X sujeto a A∗ x ≤ b∗ . Y ≥ 0 ⇔ bt . Como puede verse la matriz de los coeficientes del problema dual es la traspuesta de la matriz correspondiente del problema primal.a. −At Min W = bt Y1 − bt Y2 . X ≥ 0 su dual puede expresarse en la forma siguiente: Min W = bt · Y. sujeto a At · Y ≥ C. −bt . Y2 ≥ 0.1. sujeto a (A∗ )t · Y ≥ C.2 Forma estándar maximizante de la dualidad La dualidad se puede expresar en diferentes formas. Por ejemplo.

x2 ≤ 0. x3 libre Para ponerlo en forma canónica maximizante realizamos primero los cambios necesarios para que todas las variables sean no negativas: x2 = −x′ . resultando que el programa dual puede expresarse en la forma: Min W = bt · Y. 3 Su dual es x′ ≥ 0 4 Min W = 3y1 − 2y2 + y3 − y4 s. Ejemplo 42 Hallar el dual del siguiente programa lineal: Max Z = 2x1 + 3x2 + 4x3 s.a.: x1 + x2 + x3 ≤ 3 x1 − x2 ≥ 2 x1 + x2 = 1 x1 ≥ 0.1. Y no restringida. 3 x′ ≥ 0 4 Realizamos ahora las transformaciones para que todas las restricciones sean de signo ≤ Max Z = 2x1 − 3x′ + 4x′ − 4x′ 2 3 4 s. x2 ≥ 0.: x1 − x2 + x3 − x′ ≤ 3 4 x1 + x′ ≥ 2 2 x1 − x′ = 1 2 x1 ≥ 0. x′ ≥ 0. x2 ≥ 0. x′ ≥ 0.: x1 − x′ + x′ − x′ ≤ 3 2 3 4 ′ −x1 − x2 ≤ −2 ′ x1 − x2 ≤1 −x1 + x′ ≤ −1 2 x1 ≥ 0.a.3.a. sujeto a At · Y ≥ C.a. y3 .: y1 − y2 + y3 − y4 ≥ 2 −y1 − y2 − y3 + y4 ≥ −3 y1 ≥ 4 −y1 ≥ −4 y1 . FORMAS DE LA DUALIDAD 89 Definiendo Y = Y1 − Y2 con Y1 . 2 x3 = x′ − x′ 3 4 ′ Max Z = 2x1 − 3x2 + 4x′ − 4x′ 3 4 ′ ′ s. y2 . Y2 ≥ 0 hacen que Y no esté restringida en signo.y4 ≥ 0 Realizando los cambios .

: 3x1 + 4x2 + 2x3 ≤ 3 3x1 − 2x2 − x3 ≤ 7 x1 ≥ 0.: 3y1 + 3y2 ≥ 2 4y1 − 2y2 ≥ 3 −4y1 + 2y2 ≥ −3 −2y1 + y2 ≥ 1 y1 .a. x′ ≥ 0 2 3 Min y1 y2 ≥ Max x1 3 3 2 x′ 2 4 -2 3 x′′ 2 -4 2 -3 x′ 3 -2 1 1 ≤ 3 7 Min W = 3y1 + 7y2 s. x2 no restringida.a.90 TEMA 3. y2 ≤ 0.a.: 3x1 + 4x′ − 4x2 − 2x′ ≤ 3 2 3 3x1 − 2x′ + 2x′′ + x′ ≤ 7 2 2 3 ′ x1 .a. x′′ . DUALIDAD EN PROGRAMACIÓN LINEAL ′ y3 − y4 = y3 . y2 ≥ 0 Buscamos el programa dual: −2y1 + y2 ≥ 1 ⇔ 2y1 − y2 ≤ −1 . x3 ≤ 0 Hago los siguientes cambios: x2 x3 = x′ − x′′ 1 2 = −x′ 3 Max Z = 2x1 + 3x′ − 3x′′ + x′ 2 2 3 ′′ s. ′ y2 = −y2 Obtenemos que el problema dual es: ′ ′ Min W = 3y1 + 2y2 + y3 ′ ′ s.: y1 + y2 + y3 ≥ 2 ′ y1 − y2 + y3 ≤ 3 y1 = 4 ′ ′ y1 ≥ 0. y3 libre Ejemplo 43 Obtener el programa dual de: Max Z = 2x1 + 3x2 − x3 s. x2 .

a. Signo de las restricciones y de las variables.3 Reglas para escribir el problema dual Con el objeto de no tener que realizar todas estas transformaciones en cada problema conviene tener una serie de reglas para escribir el problema dual conociendo el primal. (a) Los coeficientes de coste del dual son los términos independientes de las restricciones del primal.3. Función objetivo: (a) El dual de un problema de maximización es un problema de minimización. 4.1. 5. 3. (b) El número de restricciones del dual es el número de incógnitas del primal. Las reglas para escribir los signos de las restricciones y de las variables correspondientes vienen resumidas en la tabla siguiente: . y2 ≥ 0 3. Las reglas de conversión son las siguientes: 1. (b) El dual de un problema de minimización es un problema de maximización. 2. FORMAS DE LA DUALIDAD 91 4y1 4y1 − 2y2 − 2y2 ≥ 3 ≤ 3 ⇔ 4y1 − 2y2 = 3 El programa dual quedaría: Min W = 3y1 + 7y2 s. (b) Los términos independientes de las restricciones del dual son los coeficientes de coste del primal.1. Coeficientes de coste y términos independientes de las restricciones. Número de incógnitas y de restricciones: (a) El número de incógnitas del dual es el número de restricciones del primal. Las matrices tecnológicas del primal y dual son traspuestas entre sí.: 3y1 + 3y2 ≥ 2 4y1 − 2y2 = 3 2y1 − y2 ≤ −1 y1 . A cada restricción de un problema viene asociado una variable del otro.

X ≥ 0 su dual es Max W = bt · Y. Y ≥ 0. y2 . DUALIDAD EN PROGRAMACIÓN LINEAL Primal de Maximización   ≤ restricción ≥   =  ≥0 ≤0 variable  libre Dual de Maximización Dual de Minimización  ≥0  ≤0 variables  libre  ≥  ≤ restricción  = Primal de Minimización 3.: y1 + 2y2 + 3y3 ≤ 3 −y1 + y2 − y3 ≤ 9 y1 . sujeto a At · Y ≤ c.4 Forma canónica minimizante de la dualidad La siguiente expresión enuncia la dualidad en forma canónica minimizante.92 TEMA 3. Dado el programa lineal Min Z = ct · X. x2 ≥ 0 El problema dual que se obtiene con ayuda de la siguiente tabla y de las reglas de signo de variables y restricciones es: Max x1 1 2 3 3 Min y1 y2 y3 ≤ x2 -1 1 -1 9 ≥ 1 3 5 Max W = y1 + 3y2 + 5y3 s. sujeto a At · X ≥ b. Se puede comprobar que en este enunciado se cumplen las reglas para determinar el programa dual dadas en la tabla anterior. Ejemplo 44 Obtener el dual del problema: Min Z = 3x1 + 9x2 s.: x1 − x2 ≥ 1 2x1 + x2 ≥ 3 3x1 − x2 ≥ 5 x1 .a. Compro- .a. y3 ≥ 0 Ejemplo 45 Hallar el dual del problema siguiente realizando previamente las transformaciones necesarias para expresarlo en la forma canónica minimizante.1.

x2 no restringida Llamamos x2 = x′ − x′′ : 2 2 Min Z = 2x1 − x′ + x′′ 2 2 ′ s. y2 ≤ 0 ′ 7y1 − 4y2 ′ 7y1 − 4y2 ≥ −1 ≤ −1 ′ ⇔ 7y1 − 4y2 = −1 El dual será: .1. y2 ≥ 0 ′ Si llamamos y1 = −y1 tenemos: ′ Max W = 10y1 + 8y2 ′ s.a. FORMAS DE LA DUALIDAD bar a posteriori que se cumplen las reglas de los signos.a. x′ .: − 4y1 + 3y2 ≤ 2 −7y1 − 4y2 ≤ −1 7y1 + 4y2 ≤ 1 y1 .a.: 4x1 + 7x2 − 7x′′ ≤ 10 2 3x1 − 4x′ + 4x′′ ≥ 8 2 2 x1 .: 4x1 + 7x2 ≤ 10 3x1 − 4x2 ≥ 8 x1 ≥ 0.: 4y1 + 3y2 ≤ 2 ′ 7y1 − 4y2 ≤ −1 ′ −7y1 + 4y2 ≤ 1 y1 ≤ 0. x′′ ≥ 0 2 2 ′ 4x1 + 7x′ − 7x′′ ≤ 10 ⇔ −4x1 − 7x2 + 7x′′ ≥ −10 2 2 2 93 Escribimos ahora el dual Max x1 -4 3 2 Min y1 y2 ≤ x′ 2 -7 -4 -1 x′′ 2 7 4 1 ≥ -10 8 Max W = −10y1 + 8y2 s.3.a. Min Z = 2x1 − x2 s.

Demostración.. DUALIDAD EN PROGRAMACIÓN LINEAL ′ Max W = 10y1 + 8y2 ′ s.a. no obstante si las aplicáramos se obtendría este resultado de inmediato. y2 ≥ 0 En la siguiente tabla están indicados los cambios efectuados:  a  1 ≤ restricción del dual  a 2 = y2 ≥ 0 variable del dual ′ y1 ≤ 0 Dual de Maximización  x1 ≥ 0  variables del primal  x2 libre ≥ 2a restricción del primal ≤ 1a Primal de Minimización 3. Max Z = C t · X sujeto a AX ≤ b X≥0 donde A es una matriz de dimensión m × n y X un vector de dimensión n × 1.El dual del dual es el primal.94 TEMA 3. Así tendremos que el problema dual de este último es el primitivo: Max Z = C t · X Max Z = C t · X t t sujeto a (A ) X ≤ b ⇔ sujeto a AX ≤ b X ≥0 X ≥0 A continuación exponemos una demostración de esta propiedad. Su dual es: Min W = bt · Y sujeto a At Y ≥ C Y ≥0 Como no hemos demostrado las reglas de los signos su uso no puede ser considerado una demostración.2 Propiedades de la relación de dualidad 1.: 4y1 + 3y2 ≤ 2 ′ 7y1 − 4y2 = −1 ′ y1 ≤ 0. Para calcular el dual de min W = bt · Y sujeto a At Y ≥ C y≥0 .

.2) . entonces se cumple que C t · x0 ≤ bt · y0 . Demostración.Teorema de dualidad débil. Si x0 e y0 son soluciones factibles para el programa primal y el programa dual respectivamente. y0 ≥ 0 t Si multiplico (3.2.3.1) Como x0 es factible se verifica: Ax0 ≤ b. max Z = C t · X sujeto a AX ≥ b X≥0 2.1) por la izquierda por y0 tenemos: (3. x0 ≥ 0 Como y0 es factible se cumple: At y0 ≥ c. lo expresamos en forma canónica maximizante W ′ = −W = −bt · Y 95 max W’=max (-W) = −bt · Y sujeto a − At Y ≤ −C y≥0 Su dual es: min (-Z) = −C t · X sujeto a − AX ≤ −b X≥0 es decir: que es el problema primitivo. Los problemas son:   Max Z = ct · X sujeto a AX ≤ b Primal  X≥0   Min W = bt · Y sujeto a At · Y ≥ c Dual  y≥0 (3. PROPIEDADES DE LA RELACIÓN DE DUALIDAD que es el dual del primitivo.

. x.3) Si multiplico (3.. y2 .   0 0 0 y0 b = (y1 . También se deducen las siguientes propiedades c) Si el primal es factible y no acotado.. en aplicación del teorema de dualidad debil se cumpliría que C t x < bt y0 .96 TEMA 3.. d) Si el dual es factible y no acotado. b) Cualquier valor que tenga la función objetivo dual es cota superior para la función objetivo primal.ym )     b1 b2 · · bm       = (b1 . Esta desigualdad tiene las consecuencias inmediatas siguientes: a) Cualquier valor que tenga la función objetivo primal es cota inferior para la función objetivo dual. La demostraremos por Reducción al Absurdo: Si el dual fuera factible e y0 una solución. b2 . entonces el dual es no factible. DUALIDAD EN PROGRAMACIÓN LINEAL t t y0 Ax0 ≤ y0 b (3.5) y t t y0 Ax0 ≤ y0 b.5) y (3.3) ct x0 ≤ y0 Ax0 t Por tanto ct x0 ≤ y0 b = bt y0 puesto que (3.4) tenemos: t y0 Ax0 ≥ ct x0 t Considerando (3.bm )       0 y1 0 y2 · · 0 ym )     = bt · y0   Consecuencias del teorema de dualidad débil. contradiciéndose la hipótesis de no acotación del primal. Por tanto el primal estaría acotado por bt y0 .2) por xt tenemos: 0 xt At y0 ≥ xt c 0 0 Si hallo la traspuesta de (3. entonces para toda solución factible del primal.4) (3.. entonces el primal es no factible. Demostración.

.Teorema de dualidad principal. Separando los costes reducidos de las variables primitivas y de las variables de holgura tenemos: t CB B −1 A − C t ≥ 0. e2 . 3.2. Dual: Sea y cualquier otra solución factible entonces ct x∗ ≤ bt y =⇒ bt y∗ ≤ bt y ∀y. Primal: Sea x cualquier otra solución factible entonces ct · x ≤ bt y ∗ = ct · x∗ =⇒ ct x ≤ ct x∗ ∀x. Max Z = C t · X sujeto a Ax ≤ b X ≥0 Min W = bt · Y y su dual sujeto a At · Y ≥ C y≥0 bt y ∗ es el valor mínimo al que llega la función objetivo por tanto y ∗ es óptima. e) Si existen soluciones factibles para los problemas primales y duales que dan el mismo valor para las respectivas funciones objetivo entonces dichas soluciones son óptimas para sus respectivos problemas.3. entonces el problema dual también tiene solución óptima finita y dicha solución es t Y ∗t = CB B −1 (vector multiplicador simplex de la base óptima). por tanto Z0 = ct x0 =⇒ Z0 ≤ W . x∗ es el valor mas alto al que puede llegar el objetivo por tanto x∗ es óptima. t CB B −1 I − 0 ≥ 0 .. llamamos Z ∗ = ct · x∗ e W ∗ = bt · y ∗ .an e1 . Demostración. Añadiendo al primal variables de holgura (Xn ) resulta AX + IXn = b (AI) = (a1 a2 . Demostración.. Si el problema primal tiene solución óptima finita correspondiente a la base B. y Z ∗ = W ∗ .em ) t B base óptima =⇒ XB = B −1 b y CB B −1 (A | I ) − (C t | 0 ) ≥ 0 porque los costes reducidos son no negativos si la base es óptima.. PROPIEDADES DE LA RELACIÓN DE DUALIDAD 97 Si el primal fuera factible entonces existe un x0 que cumple las restricciones y la no negatividad. Supongamos dos soluciones factibles para cada uno de los problemas primal y dual respectivamente x∗ e y ∗ . Pero si tiene una cota inferior no puede ser no acotada.

Max Z = 5x1 + 3x2 s. x2 ≥ 0 Hallar su dual y obtener las soluciones de los problemas primal y dual. Si el dual es infactible entonces el primal es no acotado o es también infactible. . DUALIDAD EN PROGRAMACIÓN LINEAL Transponiendo la primera de estas desigualdades resulta t At CB B −1 t −C ≥0 =⇒ At Y ∗ ≥ C De la segunda obtenemos t t CB B −1 I = CB B −1 = (Y ∗ )t ≥ 0 Luego Y ∗ es una solución factible del problema dual.98 TEMA 3. Solución del problema dual en la resolución del problema primal • Si se emplea el algoritmo revisado del simplex ya tenemos la solución de la dualidad: t Y ∗t = CB · B −1 = S (vector multiplicador del simplex) • Si se emplea el algoritmo del simplex la solución coincide con los costes reducidos de las variables de holgura: t Y ∗t = CB · B −1 .: x1 ≤ 2 5x1 + 2x2 ≤ 12 3x1 + 8x2 ≤ 12 x1 . Consecuencias: Si el primal es factible el dual es factible. Veamos que es además óptima: t t = bt Y ∗ = Y ∗t b = CB B −1 · b = CB tXB = Z ∗ W∗ Por la consecuencia e) del teorema de dualidad débil. Y ∗ también es óptima. Si el primal es infactible entonces el dual es no acotado o es también infactible.a. Ejemplo 46 Dado el P.L.

y2 . . y3 ≥ 0 Solución del primal: Max x3 x4 x5 Zj − cj Max x1 x4 x5 Zj − cj Max x1 x4 x2 Zj − cj 0 0 0 5 x1 1* 5 3 -5 5 x1 1 0 0 0 3 x2 0 0 1 0 3 x2 0 2 8 -3 3 x2 0 2 8* -3 0 x3 1 0 0 0 0 x3 1 -5 -3 5 0 x4 0 1 0 0 0 x4 0 1 0 0 0 x4 0 1 0 0 0 x5 0 0 1 0 0 x5 0 0 1 0 0 x5 0 -1/4 1/8 3/8 2 12 12 z=0 5 0 0 5 x1 1 0 0 0 2 2 6 z=10 5 0 3 0 x3 1 -17/4 -3/8 31/8 2 1/2 3/4 z=49/4 Solución óptima del programa primal: x1 = 2.: y1 + 5y2 + 3y3 ≥ 5 2y2 + 8y3 ≥ 3 y1 . y3 = 3 . Nota: En este ejemplo las soluciones del dual coinciden con los valores de las variables de holgura. = 0. En el siguiente ejemplo resolveremos un caso en que alguna de las variable de holgura no tiene coeficiente nulo en la función objetivo. Z ∗ = 4 Solución óptima del dual: y1 = 31 8 . x2 = 3 . No obstante. y2 49 4 . en los casos en que la base unitaria primitiva no proceda de una variable de holgura puede haber tener algún coste no nulo en la el objetivo. W ∗ = 8 49 4 .a. En este caso la solución del dual correspondiente a tal variable de holgura habría que obtenerla con la expresión rj = zj − cj .2.3. lo que pasa es que c3 = c4 = c5 = 0. Es decir: zj = rj + cj . Aquí tambien se debe usar esta expresión. PROPIEDADES DE LA RELACIÓN DE DUALIDAD El dual es: 99 Min W = 2y1 + 12y2 + 12y3 s.

x3 ≥ 0 3 Pasando a la forma canónica minimizante Min Z = 2x1 + 3x2 − x′ + x′′ 3 3 ′′ s. Hacemos el cambio x3 = x′ − x′′ 3 3 Min Z = 2x1 + 3x2 − x′ + x′′ 3 3 ′ s. Resolver el problema primal y hallar la solución del dual a partir de la tabla del primal.: 2x1 + x2 − x3 + x′′ ≥ 2 3 ′′ x1 − 2x2 + 3x′ − 3x3 = 6 3 ′ ′′ x1 + 3x2 + 4x3 − 4x3 ≤ 10 ′′ x1 .a. Min Z = 2x1 + 3x2 − x3 s. x′′ ≥ 0 3 3 Max x1 2 1 -1 -1 2 Min y1 y2 y3 y4 ≤ El problema dual es x2 1 -2 2 -3 3 x′ 3 -1 3 -3 -4 -1 x′′ 3 1 -3 3 4 1 ≥ 2 6 -6 -10 Max W = 2y1 + 6y2 − 6y3 − 10y4 s. x′ .: 2y1 + y2 − y3 − y4 ≤ 2 y1 − 2y2 + 2y3 − 3y4 ≤ 3 −y1 + 3y2 − 3y3 − 4y4 ≤ −1 y1 − 3y2 + 3y3 + 4y4 ≤ 1 y1 . x′ . x2 . x3 no restringida Deducir su problema dual. y4 ≥ 0 .a. y2 .a.a. x2 ≥ 0.: 2x1 + x2 − x′ + x3 ≥ 2 3 ′′ x1 − 2x2 + 3x′ − 3x3 ≥ 6 3 ′ ′′ −x1 + 2x2 − 3x3 + 3x3 ≥ −6 ′ ′′ −x1 − 3x2 − 4x3 + 4x3 ≥ −10 x1 . y3 .: 2x1 + x2 − x3 ≥ 2 x1 − 2x2 + 3x3 = 6 x1 + 3x2 + 4x3 ≤ 10 x1 .L. DUALIDAD EN PROGRAMACIÓN LINEAL Ejemplo 47 Dado el P.100 TEMA 3. x2 .

2. 2.. PROPIEDADES DE LA RELACIÓN DE DUALIDAD 101 −y1 y1 + 3y2 − 3y2 − 3y3 + 3y3 − 4y4 + 4y4 ≤ −1 ≤ 1 = y2 − y3 = −y4 =⇒ y1 − 3y2 + 3y3 + 4y4 = 1. 7 Min x5 x6 x7 Zj − cj Min x1 x6 x7 Zj − cj m m 0 2 x1 2∗ 1 1 3m − 2 2 x1 1 0 0 0 3 x2 1 −2 3 −m − 3 −1 x′ 3 −1 3 4 2m + 1 1 x′′ 3 1/2 −7/2 −9/2 −7m 2 1 x′′ 3 1 −3 −4 −2m − 1 0 x4 −1/2 1/2 1/2 m 2 −1 0 x4 −1 0 0 −m m x5 1 0 0 0 m x6 0 1 0 0 m x6 0 1 0 0 0 x7 0 0 1 0 0 x7 0 0 1 0 0 x7 0 0 1 0 2 6 10 8m 2 m 0 3 x2 1/2 −5/2 5/2 −5m 2 −2 2 x1 1 0 0 0 3 x2 1/7 −5/7 40/7 −2 −1 x′ 3 −1/2 7/2∗ 9/2 7m 2 m x5 1/2 −1/2 −1/2 −3m 2 +1 m x6 1/7 2/7 −9/7 −m 1 5 9 5m + 2 Min x1 x′ 3 x7 Zj − cj 2 −1 0 −1 x′ 3 0 1 0 0 1 x′′ 3 0 −1 0 0 0 x4 −3/7 1/7 −1/7 −1 m x5 3/7 −1/7 1/7 1−m 12/7 10/7 18/7 2 .. Añadiendo variables de holgura y artificiales y transformando las variables en no negativas tenemos: ′ Min Z = 2x1 + 3x2 − x3 + x′′ + mx5 + mx6 3 ′ s.a.a. y2 no restringida y4 ≤ 0 Hallamos ahora la solución del primal.3.: 2x1 + x2 − x3 + x′′ − x4 + x5 ≥ 2 3 x1 − 2x2 + 3x′ − 3x′′ + x6 = 6 3 3 ′′ x1 + 3x2 + 4x′ − 4x3 + x7 ≤ 10 3 xi ≥ 0. .: 2y1 + y2 + y4 ≤ 2 ′ ′ y1 − 2y2 + 3y4 ≤ 3 ′ ′ −y1 + 3y2 + 4y4 = −1 ′ ′ y1 ≥ 0. i = 1. Si hacemos el cambio: ′ y2 y4 El programa dual será: ′ ′ Max W = 2y1 + 6y2 + 10y4 ′ ′ s.

. =⇒ Supongamos que X ∗ e Y ∗ son óptimas. y3 = 0. 2 .. DUALIDAD EN PROGRAMACIÓN LINEAL La solución óptima del programa primal es: x1 = 12 7 . x3 = 10 ∗ 7 . entonces. X ∗ e Y ∗ son óptimas si y solo si se cumple que: ui yi = 0 i = 1 .102 TEMA 3. ′ ′ La solución óptima del dual. llamando y2 = y2 . .. Sean X ∗ = (xj ) e Y ∗ = (yi ) soluciones factibles de los problemas primal y dual repectivamente.. 2 . y2 = −m + m = 0. Pero cuando además Y ∗t b = bt Y ∗ de (3. Partimos de: Max Z = C t · X sujeto a AX ≤ b X≥0 Tenemos: AX ∗ + U ∗ = b =⇒ multiplicamos por Y ∗t por la izquierda Min W = bt · Y sujeto a At · Y ≥ C y≥0 v j xj = 0 j = 1 .Z = 2. 4.7) y (3.Teorema de Holgura Complementaria.7) (3. y3 = y4 . ..8) tenemos: (3. W ∗ = 2.6) (3. n y su dual Y ∗t AX ∗ + Y ∗t U ∗ = Y ∗t b Y ∗t U ∗ = Y ∗t b − Y ∗t AX ∗ y At Y ∗ − V ∗ = C =⇒ multiplicamos por X ∗ Y ∗t AX ∗ − V ∗t X ∗ = V ∗t X ∗ −V ∗t X ∗ = C t X ∗ − Y ∗t AX ∗ Por ser óptimas se cumple que C t X ∗ = bt Y ∗ . y sean U ∗ = (ui ) y V ∗ = (vj ) los valores respectivos de las variables de holgura para las soluciones X ∗ e Y ∗ . x2 = 0.6) (3. es: y1 = (1 − m) + m = 1.8) . m Demostración.

PROPIEDADES DE LA RELACIÓN DE DUALIDAD 103 Y ∗t U ∗ = −V ∗t · X ∗ =⇒ Y ∗t U ∗ + V ∗t X ∗ = 0  u1 u2 · · um   x1 x2 · · xn    (y1 . luego.3. 2. . .. n j=1 vj xj m i=1 yi ui = 0. m vj · xj = 0 j = 1... . 2. vn )      n   =0   m yi ui + i=1 j=1 vj xj = 0 Como todos los sumandos son no negativos ha de ser: yi · ui = 0 i = 1.. Usando las tres relaciones últimas tenemos: Y ∗t (b − AX ∗ ) + (Y ∗t A − C t )X ∗ = 0 Y ∗t b − Y ∗t AX ∗ + Y ∗t AX ∗ − C t X ∗ = 0 Y ∗t b = C t X ∗ Por la consecuencia e) del teorema de dualidad débil. entonces son óptimas... n ⇐= factibles Supongamos que X ∗ .. .. m n yi ui + i=1 j=1 vj xj = 0 Y ∗t U ∗ + V ∗t X ∗ = 0 pero AX ∗ + U ∗ AY ∗ − V ∗ = b = C =⇒ U ∗ = b − AX ∗ (1) =⇒ Y ∗t A − V ∗t = C t =⇒ V ∗t = Y ∗t A − C t .2. y2 .Y ∗ verifican ui yi = 0. vj xj = 0 y además son = 0. ym )         + (v1 . v2 . .

determine la solución óptima del programa dual usando el teorema de Holgura complementaria.a. y2 = 0 en el problema dual.a. Max Z = 5x1 + 3x2 s. x2 ≥ 0 Se sabe que la solución óptima del primal es: x1 = 2. y3 ≥ 0 y1 + 5y2 + 3y3 − v1 2y2 + 8y3 − v2 v1 x1 v2 x2 = 0 y como = 0 y = 5 = 3 y el sistema de restricciones del dual con variables de holgura es: vj x∗ j = =⇒ 0   v1 = 0  v2 = 0 Sustituyendo los valores v1 = 0. y2 . v2 = 0. y1 = 3 8   u1 y1 = 0 u2 y2 = 0 y como y2 ui yi = 0  u3 y3 = 0 x1 x2  u1 = 0  u2 = 1 2  u3 = 0 = 2 > 0 = 3/4 > 0 =⇒ = 0 . y1 + 3y3 8y3 = 5 = 3 8 31 =⇒ y3 = . se obtiene su solución resolviendo el sistema. DUALIDAD EN PROGRAMACIÓN LINEAL Nota: Este teorema puede utilizarse para deducir la solución del dual conociendo la del primal. veámoslo por medio del siguiente ejemplo: Ejemplo 48 Dado el programa lineal siguiente. x2 = 3 .104 TEMA 3.:y1 + 5y2 + 3y3 ≥ 5 2y2 + 8y3 ≥ 3 y1 . el sistema de restricciones será: x1 + u1 5x1 + 2x2 + u2 3x1 + 8x2 + u3 El dual será: = 2 = 12 = 12 Min W: = 2y1 + 12y2 + 12y3 s. Z = 4 49 4 . :x1 ≤ 2 5x1 + 2x2 ≤ 12 3x1 + 8x2 ≤ 12 x1 . Introduciendo variables de holgura.

v2 = 0. y el valor ∆b es suficientemente pequeño para que no haya cambio en la base óptima. donde estudiaremos el problema de la sensibilidad de los disyintos parámetros del problema de Programación lineal. INTERPRETACIÓN ECONÓMICA DE LA DUALIDAD Es decir la solución óptima del problema dual es: y1 = 31 8 . y2 = 0. W = 3 49 4 . XB = B −1 b. cambian los recursos a b + ∆b. El intervalo de validez de este resultado se tratará en el siguiente tema.9. se tiene que ∗ ∗ ∗ Z ′ = Z ∗ + y1 (∆b1 ) + y2 (∆b2 ) + y3 (∆b3 ) = 49 4 y la solución óptima dual es 49 31 3 + (∆b1 ) + 0(∆b2 ) + (∆b3 ) 4 8 8 Así que si b1 = 2 aumenta una unidad =⇒ Z aumenta en 31 . 3.a. y3 = 8 . y3 = 3 .3. v1 = 0. 105 y2 = 0. Hay que tener en cuenta que este resultado sólo es válido dentro del entorno de b que no implique un cambio de la base óptima y por tanto de la matriz óptima permanece inalterada. Z ∗ = CB XB .9) Ejemplo 49 En el siguiente problema Max Z: = 5x1 + 3x2 s.3 Interpretación económica de la dualidad Las variables duales nos indican como varía la función objetivo al cambiar los recursos. 8 8 4 Si usamos la expresión 3. En resumen. ¿cuándo conviene resolver el programa dual? . entonces: ′ XB = B −1 (b + ∆b) = B −1 b + B −1 (∆b) t ′ t Z ′ = CB XB = CB B −1 b + CB B −1 (∆b) = Z ∗ + Y ∗t (∆b) = m = Z∗ + i=1 ∗ ∗ ∗ ∗ yi (∆b) = Z ∗ + y1 (∆b1 ) + y2 (∆b2 ) + · · · + ym (∆bm ) (3. x2 = 3 .W = 49 .:x1 ≤ 2 5x1 + 2x2 ≤ 12 3x1 + 8x2 ≤ 12 x1 . x2 ≥ 0 la solución óptima primal: x1 = 2. Si b2 = 12 aumenta 8 una unidad =⇒ Z aumenta en 0 y si b3 = 12 aumenta una unidad =⇒ Z aumenta 3 en 8 . ∗ t ∗ En efecto: Si la base óptima es B.3. . Z = 4 ∗ ∗ ∗ y1 = 31 .

y naturalmente deseará que esta cantidad sea lo menor posible. donde también se indica la cantidad de recursos disponibles actualmente: Gasto por unidad y producto Material (piel) Diseño y confección (horas trabajo) Acabado(horas trabajo) Ganancia por unidad bolsos cinturones monederos Disponible 8 4 2 120 6 2 1. Ejemplo 50 (Interpretación económica del dual) Una peletero fabrica bolsos. DUALIDAD EN PROGRAMACIÓN LINEAL • Cuando el dual sea más fácil de resolver. Cada bolso supone una ganancia de 120 euros.5 40 48 20 8 ¿Cuántos objetos hará de cada clase para maximizar la ganancia? Plantear este problema y hallar una interpretación del problema dual. el actual dueño no se la venderá si esto le supone alguna pérdida. y debe hacer una oferta que no sea rechazada por el anterior propietario.5x2 + 0. • Cuando necesitamos aplicar su interpretación económica.5x3 ≤ 20 2x1 + 1. x3 = número de monederos.5x3 ≤ 8 x1 .: 8x1 + 6x2 + x3 ≤ 48 4x1 + 2x2 + 1. cada cinturón 60. por ejemplo en los problemas de transporte y asignación. El material y horas de sueldo necesarios para realizar cada uno de estos objetos viene expresado en la siguiente tabla. x3 ≥ 0. • En aquellas ramas de la Investigación Operativa en las que la dualidad aparezca de modo natural. respectivamente. la hora de trabajo del personal de diseño-confección y la hora de trabajo de acabado. x2 = número de cinturones. y2 . Supone. Planteamiento: Sean las variables de decisión para el problema: x1 = número de bolsos.a. cinturones y monederos. el precio que pague por el material y horas que permitan hacer cada objeto deberá ser al menos . Por eso. y3 los precios a los que va a pagar la unidad de piel. x2 . pero que al mismo tiempo sea lo más ventajosa posible para él.106 TEMA 3. ¿Cuanto deberá pagar por el material y las horas de trabajo disponibles? Sean y1 . Supongamos que otro empresario desea adquirir los materiales y las horas de trabajo disponibles.5 60 1 1. Max Z = 120x1 + 60x2 + 40x3 s. Lo que debería pagar el comprador será 48y1 + 20y2 + 8y3 . y cada monedero 40.5 0. que como es de esperar.

sino un precio asociado al problema primal.a. Sea xk . pero con algún xi < 0. 3. ALGORITMO DUAL DEL SIMPLEX. En resumen. .3. y2 .5y2 + 0. FIN. Este tipo de soluciones se llaman dual factible. entonces la solución es óptima. se aplica en el caso de una tabla en la que todos los zj − cj ≥ 0. Se selecciona la variable de entrada que de mínimo el cociente pj = zj −cj yrj para los yrj < 0 (o menor valor absoluto. no es un precio real o de mercado. pero que no es factible porque tiene algunas soluciones negativas.4. el problema que el comprador ha de resolver es el siguiente: min s. Los valores de las variables de la solución del problema dual deben ser interpretadas como los precios por unidad de cada recurso. porque es positivo). que tiene costes reducidos positivos. Si hay algún yrj < 0. Hay que partir de una tabla en la que zj − cj ≤ 0. • Paso 3. rj Si todos los yrj ≥ 0 el programa dual es no acotado y el primal es no factible. Se suelen llamar ”precios-sombra de los recursos”. y3 ≥ 0 que como se ve es el dual del primero. (CASO MAXIMIZANTE) 107 igual que la ganancia que el dueño actual saca por este producto. 48y1 + 20y2 + 8y3 8y1 + 4y2 + 2y3 ≥ 120 (ganancia por un bolso) 6y1 + 2y2 + 1.4 Algoritmo Dual del Simplex. Paso 3 (Selección de la variable de entrada) Determinar para las columnas no básicas los cocientes pj = zjy−cj para los yrj < 0. Este algoritmo se aplica cuando puede obtenerse una solución básica. Paso 2 (Selección de la variable de salida) Seleccionar como variable de salida aquella variable básica con valor más negativo. Es decir.5y3 ≥ 40 (ganancia por un monedero) y1 . Sea xr . Paso 1 Si xB solución básica factible cumpliendo xB ≥ 0. Paso 4 Establecer una nueva tabla con yrk como pivote y volver al Paso 1. Nota 2 : En el caso minimizante todo es igual salvo: • Paso 1. (Caso maximizante) Este método es útil a veces para no tener que introducir variables artificiales. entra la variable de mayor cociente (o menor valor absoluto).5y ≥ 60 (ganancia por un cinturón) y1 + 1. ya que.

a.: 3x1 + 2x2 + 5x3 ≥ 15 x1 + 3x2 + 2x3 ≥ 7 x1 . x2 . DUALIDAD EN PROGRAMACIÓN LINEAL Ejemplo 51 Resolver el programa lineal: Max Z = −2x1 − x2 − 4x3 s. haciendo las transformaciones correspondientes.5 − 4 × 0 = −7. −5 = min 2 1 4 3. z = −2 × 0 − 7. El término independiente más negativo es -15. El pivote correspondiente está en la segunda columna. y2 = 0 . si usamos −2 como pivote. y el dual es factible pues zj − cj ≥ 0.5 2 Ejemplo 52 Resolver el programa lineal siguiente y su programa dual: . x3 ≥ 0        La tabla inicial. La solución del problema es: x1 = 0 . se cumplen las condiciones para poder aplicar el algoritmo dual del simplex.5 .5 Y la solución óptima del dual es: y1 = 1/2 . tenemos la siguiente tabla: Max x2 x5 zj − cj −2 x1 -1 0 3 2 7 2 1 2 −1 x2 1 0 0 −4 x3 5 2 11 2 3 2 0 x4 -1 2 -3 2 1 2 0 x5 0 1 0 15 2 31 2 que es dual factible y primal factible. ya que: max 2 1 4 −3 . x2 = 7.108 TEMA 3. −2 . 5 = 1 2 Así. w = −15 × 1 − 7 × 0 = −7. obtenida cambiando de signo las dos restriciones y añadiendo variables de holgura es: −2 x1 −3 −1 2 −1 x2 −2∗ −3 1 −4 x3 −5 −2 4 0 x4 1 0 0 0 x5 0 1 0 Max x4 x5 zj − cj 0 0 −15 −7 z′ = 0 Así pues. 2. pues el primal es infactible (xB < 0).

: −x1 + x2 − 3x3 ≤ −1 −2x1 + x2 − x3 ≤ 0 −x1 − x2 + x3 ≤ −2 x1 .a. x3 . pues en la tercera −1 fila min{ −1 . −1 } = 1.: x1 − x2 + 3x3 ≥ 1 2x1 − x2 + x3 ≥ 0 x1 + x2 − x3 ≥ 2 x1 .a. x3 ≥ 0 x3 3 1 −1 1 ≥ 1 0 2 Max s. x2 . usando −1 como pivote al coeficiente y31 = −1.a. tenemos la siguiente tabla: Min x4 x5 x1 zj − cj 1 x1 0 0 1 0 1 x2 2 3 1 0 1 x3 −4 −3 −1 −2 0 x4 1 0 0 0 0 x5 0 1 0 0 0 x6 −1 −2 −1 −1 0 0 1 1 4 2 z=2 . x4 . x6 ≥ 0 Min x4 x5 x6 zj − cj 1 x1 −1 −2 −1 −1 1 x2 1 1 −1 −1 1 x3 −3 −1 1 −1 0 x4 1 0 0 0 0 x5 0 1 0 0 0 x6 0 0 1 0 :            −1 0 −2 z=0 0 0 0 Sale x6 pues tiene el valor más pequeño x6 = −2. x2 . lo que va a implicar un cambio de signo en las variables duales: Min Z = x1 + x2 + x3 s. x2 . x5 . (CASO MAXIMIZANTE)                ≤1   ≤1  ≤1     ≥0 109 El problema dual sería x1 1 2 1 1 x2 −1 −1 1 1 Min Z = x1 + x2 + x3 s.3. x3 ≥ 0 Min Z = x1 + x2 + x3 s.a.4. ALGORITMO DUAL DEL SIMPLEX. y3 Para calcular la solución del primal cambiamos previamente el signo de las desigualdades. y2 .: −x1 + x2 − 3x3 + x4 = −1 −2x1 + x2 − x3 + x5 = 0 −x1 − x2 + x3 + x6 = −2 x1 .: y1 y2 y3 ≤ W = y1 + 2y3 y1 + 2y2 + y3 −y1 − y2 + y3 3y1 + y2 − y3 y1 . haciendo las transformaciones correspondientes. Así. y entra x1 .

como era de esperar con la obtenida en la tabla anterior. indica que hay soluciones múltiples. w = 2. obtenemos la nueva tabla: 1 x1 0 0 1 0 1 x2 1 0 0 0 1 x3 −4 −3 −1 −2 0 x4 1/2 −3/2 −1/2 0 0 x5 0 1 0 0 0 x6 −1/2 −1/2 −1/2 −1 Min x2 x5 x1 zj − cj 1 0 1 1/2 5/2 3/2 z=2 Así obtenemos que otra solución óptima para el primal es: x1 = 3/2 . Sin embargo. y3 = 1 . Si se hacen las transformaciones correspondientes usando como pivote 2. Como hemos dicho hay un coste reducido cero en una variable no básica (z2 − c2 = 0). para el problema dual se obtiene ahora la misma solución que anteriormente. x3 = 0 . el problema primal tiene infinitas soluciones. . Como hemos cambiado de signo las restricciones del primal tenemos que la solución óptima del dual es: y1 = 0 . tenemos que una solución óptima del primal es: x1 = 2 . Por tanto. y2 = 0 . Como xB ≥ 0. El valor del objetivo coincide. y por tanto si se introduce la variable x2 sale x4 .110 TEMA 3. DUALIDAD EN PROGRAMACIÓN LINEAL Como el valor z2 − c2 = 0 y x2 no está en la base. x3 = 0 . x2 = 0 . z = 2. z = 2. x2 = 1/2 .

que iniciamos en este capítulo. ci . el valor del punto donde se alcanza el valor óptimo.1 de la página 112. bi. En este caso. ¿Qué ocurriría si se realizaran cambios en los coeficientes de la función objetivo? Observando la representación gráfica de este problema en la figura 4.:  x1 .1 Introducción gráfica Consideraremos en el siguiente ejemplo max  Z = 3x1 + 2x2  2x1 + x2 ≤ 100 x1 + x2 ≤ 80 s. x2 ≥ 0 cuya solución óptima es x1 = 20. con Z = 180. un cambio en los costes. Si lo que cambian son los recursos. aunque si se alteraría el valor de Z.Tema 4 Análisis de sensibilidad 4. sin que se altere. variará la solución óptima y por tanto también el objetivo. podría mantenerse la solución óptima para ciertos intervalos de variación. 111 . se estudiarán los efectos producidos por algunas modificaciones en los datos iniciales. algunas aristas de la región factible se desplazarán paralelamente.a. puede que se mantenga la base óptima pero en muchos casos. x2 = 60. En el Análisis de Sensibilidad. Más complicado es ver qué ocurriría cuando cambien los coeficientes tecnológicos (aij ) aunque también pueden obtenerse algunas simplificaciones. En el caso que estamos tratando. como en el de nuestro ejemplo.puede deducirse que si se hicieran pequeñas modificaciones de los coeficientes de la función objetivo el resultado sería un ligero giro en la representación gráfica de la función objetivo. aunque cambiaría el valor del objetivo.

2 4. x2 . el Análisis de Sensibilidad se conoce también con el nombre de Análisis de Post-optimalidad. y que debido a las fluctuaciones del mercado han variado los precios de alguno de los productos.1 Cambios discretos Variación en un coste de una variable no básica Ejemplo 53 Consideramos el problema max s. Por este motivo. Z = 60x1 + 30x2 + 20x3 . Partimos de una solución óptima del problema precedente. ANÁLISIS DE SENSIBILIDAD Figura 4.5 −30 x2 1 1.5x3 ≤ 20 2x1 + 1. 4.2. o se han producido cambios en los recursos disponibles.a.5x3 ≤ 8 x1 . x3 no negativos La tabla de simplex inicial es cB 0 0 0 x1 8 4 2 −60 x2 6 2 1. pero es necesario realizar algunas modificaciones debido a los cambios producidos.5 −20 h1 1 0 0 0 h2 0 1 0 0 h3 0 0 1 0 h1 h2 h3 48 20 8 Z =0 .5 0. Para realizar este estudio se supone que se tiene una solución óptima del problema.1: Problema de Sensibilidad en los costes.5x2 + 0.112 TEMA 4. 8x1 + 6x2 + x3 ≤ 48 4x1 + 2x2 + 1.

5 10 c′ B −1 N − c′ ≥ 0 B N 0 20 60 h1 x3 x1 24 8 2 280 Se observa que la tabla permanecerá óptima si 5 − △ ≥ 0. x2 .25 5 20 x3 0 1 0 0 0 h1 1 0 0 0 0 h2 2 2 −0. . b = B −1 B . de una variable no básica. cuyo valor es 30 a 30 + △.25 5−△ 20 x3 0 1 0 0 0 h1 1 0 0 0 0 h2 2 2 −0. . . CAMBIOS DISCRETOS La tabla de simplex que da la solución óptima es: 60 x1 0 0 1 0 30 x2 −2 −2 1. N .25 La tabla quedaría en este caso en la siguiente forma: 60 x1 0 0 1 0 30 + △ x2 −2 −2 1.5 10 0 h3 −8 −4 1. en la tabla óptima es la cantidad máxima en que puede aumentar el coste de esta variable en la función objetivo sin que varié la actual solución óptima.2. B −1 B . . .4.0 − △. . Únicamente tendremos que recalcular z2 − c2 . . como sólo vamos a cambiar el coste de una variable no básica.5 10 0 h3 −8 −4 1. . B −1 N . de modo que se conserve la matriz óptima actual. Este hecho pone de manifiesto que el coste reducido. 5. . B −1 b . . La solución del problema es: 0 XB = B −1 · b Z 0 = c′ B −1 b B qué era óptima si Por lo tanto. resultaría:   −2 z2 − c2 = 0 20 60  −2  − (30 + △) = 5. B −1 N . Por tanto el valor de . 1. ¿Qué cambios se producirían en la tabla anterior? Recordamos que las filas correspondientes a las restricciones pueden obtenerse ordenando los cálculos de la forma siguiente: . sólo puede alterarse en todo el proceso anterior esta última expresión. es decir si △ ≤ 5.5 10 113 0 20 60 h1 x3 x1 24 8 2 Z = 280 Se desea realizar un cambio en el coste de x2 . y que los costes reducidos de las variables no básicas son c′ B −1 N −c′ . siendo nulos B N los costes reducidos de las variables básicas. B −1 b = I .

4 8 h3 −5.5 1. B Igualmente.114 TEMA 4. con lo que la nueva tabla quedará: Max 0 20 30 x1 1. 5△ 10.0 + 1. la tabla final del simplex quedaría: Max 0 20 60 h1 x3 x1 60 x1 0 0 1 0 40 x2 −2 −2 1. La nueva solución óptima con la variación en c2 = 40 es: x1 = 0. 4. 5△ .5 5. pues no hay restricción para △ por la izquierda.2 11.25 −0.6 Z = 288 que ya es la tabla óptima.8 4 x2 0 0 1 0 x3 0 1 0 0 h1 1 0 0 0 h2 1. por ejemplo 40.  = = La tabla ahora tomaría el siguiente aspecto: . También el valor de la función objetivo será en este caso el mismo ya que Z 0 = c′ B −1 b y ninguna de estas matrices cambia si c2 ≤ 35.2 −0.25 −5 20 x3 0 1 0 0 0 h1 1 0 0 0 0 h2 2 2 −0. En este caso puede haber cambios en los costes reducidos de todas las variables no básicas: c′ B −1 N − c′ = B N  −2 2 −8 2 −4 − 30 0 0 = ( 0 20 60 + △ )  −2 1. c2 puede disminuir todo lo que se quiera.6. puede aumentar hasta 35. Si no se cumpliera esta condición y c2 pasara a ser.0 + 1.2 1.5 10 0 h3 −8 −4 1. Sale x1 y entra x2 .0 − . 25△ 10.2 Variación en un coste de una variable básica Supongamos que el cambio lo realizamos ahora en c1 = 60 que va a tomar el valor 60+△.2 Z = 288.6 0. ANÁLISIS DE SENSIBILIDAD c2 . x2 = 1.2 16 h1 x3 x2 27.2.5 10 24 8 2 280 y habría que continuar hasta obtener de nuevo optimalidad.6 1. x3 = 11.6 1.6 −1.2 1.

0 + 1.0 + 1. Si pasamos estos límites la solución deja de ser óptima. 5△ 115 0 20 60 + △ h1 x3 x1 24 8 2 280 + 2△ La base se mantiene óptima si se verifica que todos las componentes del vector 5. 5△ ≥ 0 =⇒ −4 ≤ △ ≤ 20  5  △ ≥ − 1. y aplicamos el algoritmo del simplex: 100 x1 0 0 1 0 30 x2 −2 −2 1.5 10 − 0.5 10 + 1.5 =⇒ =⇒ Es decir que c1 puede variar entre 56 y 80 manteniéndose óptima la base y la solución anterior.25 = −4. Supongamos que c1 toma el valor 100 y por tanto △ = 40. 25△ 10.4.0 − . x3 = 0. con z = 400. 5△ 10. h1 x3 x1 24 8 2 360 Habría que continuar el problema a partir de esta tabla hasta obtener todos los costes reducidos positivos.25 55 20 x3 0 1 0 0 0 h1 1 0 0 0 0 h2 2 2 −0. CAMBIOS DISCRETOS 60 + △ x1 0 0 1 0 30 x2 −2 −2 1.25 5 + 1. 5△ ≥ 0  10. .0 △ ≤ 20  △ ≥ −10 = −6.5 −10 0 h3 −8 −4 1. El valor del objetivo será: Z = (60 + △) ∗ 2 + 30 ∗ 0 + 20 ∗ 8 = 280 = 280 + 2△.2.0 + 1. x2 = 0. 5△ son no negativas:   5.25 55 20 x3 0 1 0 0 0 h1 1 0 0 0 0 h2 2 2∗ −0.5 70 0 20 100 que no es óptima.0 + 1. La tabla sería: 100 x1 0 0 1 0 30 x2 −2 −2 1. 666 7 1.25△ 20 x3 0 1 0 0 0 h1 1 0 0 0 0 h2 2 2 −0. 5△ 0 h3 −8 −4 1. 25△ ≥ 0 10 − 0.5 −10 0 h3 −8 −4 1.5 70 0 20 100 h1 x3 x1 24 8 2 360 La solución óptima del nuevo problema es: x1 = 4. Entra h2 y sale x3 .

Tras hacer una iteración del algoritmo dual del simplex.5∆  que tendría que tomar todos los valores positivos si queremos que se mantenga la base actual. pero no primal factible y deberemos aplicar el algoritmo dual del Simplex para continuar la resolución del problema. Revisando las formulas que nos dan la evolución de la tabla. por lo tanto permanece el valor de B. la tabla resultante sería 60 x1 0 0 1 0 30 x2 −2 −2 1. la tabla inicial quedaría: cB 0 0 0 x1 8 4 2 −60 x2 5 2 2 −43 x3 1 1. 2)t . XB = B −1 · b =  0 0 -0.5 8 2 − 0.5 0.   24 + 2∆ ≥ 0 8 + 2∆ ≥ 0  2 − 0. x2 = 0. ANÁLISIS DE SENSIBILIDAD 4.2.25 5 20 x3 0 1 0 0 0 h1 1 0 0 0 0 h2 2 2 −0.5 1. En concreto si el cambio se realiza en el segundo recurso: Lo que varía es     1 2 -8 48 24 + 2∆ 0 2 -4   20 + ∆  =  8 + 2∆  . con c2 = 43.116 TEMA 4. ya que XB = −1 0 ′ −1 B · b y Z = cB B b son las únicas fórmulas donde intervienen los recursos.5∆ ≥ 0 Si no cumple la restricción anterior.5 10 0 20 60 h1 x3 x1 44 28 −3 280 Esta solución es dual factible.3 Cambios en los recursos Ahora vamos a cambiar un recurso sin cambiar la base. 5 −20 h1 1 0 0 0 h2 0 1 0 0 h3 0 0 1 0 h1 h2 h3 48 20 8 z=0 . con z = 320. cambiamos la segunda columna de la matriz de coeficientes tecnológicos. por ejemplo △ = 10. se obtiene que la solución óptima del programa modificado.2.5 10 0 h3 −8 −4 1. ob0 servamos que los cambios sólo pueden darse en la última columna.4 Cambios en los coeficientes tecnológicos En una columna de una variable no básica Si en el ejemplo anterior. x3 = 16. 2. y ésta pasa a ser (5. 4. con b2 = 20 + △ = 30. es la siguiente: x1 = 0.

Continuamos aplicando el método del Simplex. porque ya no se mantiene la matriz básica. tenemos: 4 . 1).5 1. Si aplicamos el algoritmo del Simplex a la última tabla. que es la única que va a cambiar. añadiendo una nueva variable x4 con c4 = 15 y at = (1. x2 = 0. Por ejemplo. Dicha solución óptima es: x1 = 0. 20. INCORPORACIÓN DE UNA NUEVA ACTIVIDAD 117 Esto sólo originaría un cambio en la columna 2 de la tabla final. 60) ∗  −4  − 43 = −3.5 10 0 h3 −8 −4 1. ya que hay un coste reducido negativo. por lo que hay que resolver el problema completamente desde el principio.5 2 2 y en el coste reducido de esta columna sería:   −7 z2 − c2 = (0. 4. obtenemos la solución óptima del programa modificado. con z = 320. que quedaría como sigue:      1 2 -8 5 −7  0 2 -4   2  =  −4  . x3 = 16. Esto equivale a añadir una nueva columna en la tabla de simplex inicial. con los cambios en la columna de la segunda variable. Si lo que cambia es la columna de una variable básica el problema es absolutamente distinto y más complicado.3.4. 1. hasta obtener todos los costes reducidos no negativos. 2 Y por tanto la tabla quedaría: 0 20 60 h1 x3 x1 60 x1 0 0 1 0 30 x2 −7 −4 2 −3 20 x2 0 1 0 0 0 h1 1 0 0 0 0 h2 2 2 −0.3 Incorporación de una nueva actividad Incluimos en este caso una nueva variable en el problema con sus correspondientes características.5 10 24 8 2 z = 280 En este caso cambia la base óptima. 0 -0.

En este caso no es necesario calcular dicha columna. la solución sigue siendo óptima y no hace 1 falta introducir la nueva actividad en la base. 10. para ilustrar lo que sería necesario hacer si el coste reducido de la nueva actividad resultara negativo.5 1 La nueva tabla quedaría: 60 x1 0 0 1 0 30 x2 −2 −2 1. la calculamos de todos modos. proponemos el ejemplo anterior. donde h4 es una variable de holgura. x2 = 0. 5 −20 x4 1 1 1 −15 h1 1 0 0 0 h2 0 1 0 0 h3 0 0 1 0 48 20 8 Si partimos de la misma base sólo hay que cambiar la columna nueva. B 1 En este caso podemos usar la solución del dual c′ B −1 = (0.25 5 20 x3 0 1 0 0 15 x4 −6 −2 1 5 0 h1 1 0 0 0 0 h2 2 2 −0. Como la solución óptima XB del problema original es: x1 = 2. . en el que incluimos la restricción: x1 + x2 + x3 ≤ 7 =⇒ x1 + x2 + x3 + h4 = 7.118 TEMA 4.5 10 0 20 60 h1 x3 x1 24 8 2 z = 280 4. 1 0 -0. 10).4 Incorporación de nuevas restricciones Cuando incluimos nuevas restricciones y la solución anterior verifica las nuevas restricciones. Permanece la solución si   1 z4 − c4 = c′ B −1  1  −15 resulta no negativo. 10)  1  − 15 = 5. Las restricciones que no son verificadas por la solución actual hay que incluirlas en la tabla. x3 = 8. Si no fuera así calcularíamos la nueva columna de coeficientes. ANÁLISIS DE SENSIBILIDAD h1 h2 h3 cB 0 0 0 x1 8 4 2 −60 x2 6 2 1.5 10 0 h3 −8 −4 1. Para ilustrarlo.5 −30 x3 1 1.5 0. Así que B   1 z4 − c4 = (0. 10. No obstante. esta solución sigue siendo óptima.5 1. Entonces la cuarta columna quedaría:      −6 1 2 -8 1  0 2 -4   1  =  −2  .

5 10 0 h3 −8 −4 1. C coeficientes independientes de la función objetivo. .75 5 20 x3 0 1 0 0 0 0 h1 1 0 0 0 0 0 h2 2 2 −0. Tabla 0 20 60 0 II h1 x3 x1 h4 60 x1 0 0 1 0 0 30 x2 −2 −2 1. x3 = 4. basta restar a la fila cuarta la suma de las dos anteriores.25 1.5. 4. obteniendo la Tabla II.4. Posteriormente actualizamos la fila de costes reducidos. Tabla 0 20 60 0 I h1 x3 x1 h4 60 x1 0 0 1 1* 0 30 x2 −2 −2 1. Z = 260. llegamos a la solución óptima.5 4. Los valores anteriores representan: λ parámetro real.5 −1. Realizando las transformaciones correspondientes. PROGRAMACIÓN PARAMÉTRICA y no verifica la restricción anterior. entonces hay que incluirla. Para conseguirlo. La solución óptima es x1 = 3. que aparece a continuación.5 2.5 0 10 0 h3 −8 −4 1.5 0 10 0 h4 0 0 0 1 119 24 8 2 7 280 Para conservar x1 y x3 en la base hay que hacer nulos los elementos señalados con asterisco en la tabla anterior. x2 = 0.25 1 5 20 x3 0 1 0 1* 0 0 h1 1 0 0 0 0 0 h2 2 2 −0.5. El único elemento que puede hacer de pivote es el señalado con un recuadro en la tabla anterior.5 10 0 h4 0 0 0 1 0 24 8 2 −3 280 Para continuar el problema hay que emplear el algoritmo dual del simplex.1 Programación Paramétrica Parametrización de los coeficientes de coste Dado el programa lineal: Max Z = C t + λC 0 sujeto a AX ≤ b X ≥0 t ·X El problema consiste en optimizar Z según los valores de λ.

3)] los coeficientes del objetivo. determinando el recorrido del parámetro para el cual la tabla permanece óptima. 2). t (4. C 0 = (−1. ˆ Paso 1: Imponer a la tabla la condición de optimalidad Zj − Cj ≥ 0 (caso maximizante). C0 = t x1 x2 −1 3 C t = (3. 3) Los costes reducidos para un problema paramétrico se podrán escribir de la forma siguiente: t 0t 0 ˆ (Zj − Cj )(λ) = (CB + λCB )yj − (Cj + λCj ) = t 0 = CB yj − Cj + λ(CB yj − Cj ) = 0 0 = Zj − Cj + λ(Zj − Cj ). ANÁLISIS DE SENSIBILIDAD C 0 vector de coeficientes del parámetro en la función objetivo.120 TEMA 4.2) donde hemos denominado: 0 0 Zj − Cj t = CB yj − Cj t = CB xB 0 0 Z0 Vamos ahora a concretar cuales son los pasos a seguir para aplicar el algoritmo de programación paramétrica. Algoritmo de programación paramétrica.1) Y el valor de la función objetivo se escribirá t 0t t 0t ˆ Z(λ) = (CB + λCB )xB = CB xB + λCB xB = Z + λZ 0 (4. Además se incluye 0 0 una última fila con los Zj − Cj ≥ 0 y Z0 . Paso 0: Calcular la solución óptima para λ = 0 y añadir a la tabla final una primera fila y una primera columna con los valores de C0 . que marcan una separación entre la parte paramétrica y la no paramétrica. . Este algoritmo viene sugerido por las expresiones (4. Ejemplo 54 En un problema problema paramétrico cuya función objetivo sea Z = (3 − λ)x1 + (2 + 3λ)x2 = [(3.1) y (4. siguiendo la notación anterior son: C= 3 2 . 2) + λ(−1.2) para los costes reducidos y la función objetivo.

x4 . tenemos: Max Z = 4x1 + 7x2 + 3x3 s. Introducid las ˆ columnas no básicas con Zj − Cj = 0. t Paso 2: Sustituir λ por aquellos valores extremos que sean finitos y aplicar el algoritmo del simplex hallando la solución correspondiente. Ejemplo 55 Resolver el programa lineal paramétrico: Max Z = (4 + λ)x1 + (7 − λ)x2 + (3 + λ)x3 s. 3/2 1/2 Y obtenemos la tabla óptima para λ = 0 que aparece a continuación: Tabla 0 CB 1 −1 t I x1 x2 C0 Ct t CB 4 7 Zj − Cj 0 0 Zj − Cj t 1 4 x1 1 0 0 0 −1 7 x2 0 1 0 0 1 3 x3 2/3 2/3 13/3 −1 0 0 x4 2/3 -1/3 1/3 1 0 0 x5 -1/3 2/3 10/3 −1 XB 5 20 Z = 160 Z(λ) = −15 . 1) Iteración 1 Paso 0: Si lo revolvemos para λ = 0. x2 . 45/2 } = 5. 3) C 0 = (1.: 2x1 + x2 + 2x3 + x4 = 30 x1 + 2 ∗ x2 + 2x3 + x5 = 45 x1 .5.4. x2 . Entra x1 y sale x4 .: 2x1 + x2 + 2x3 ≤ 30 x1 + 2 ∗ x2 + 2x3 ≤ 45 x1 . PROGRAMACIÓN PARAMÉTRICA 121 Paso 3: Repetir los pasos 1 y 2 hasta que no puedan hallarse nuevas soluciones. 45 } = 1 2 Max x4 x2 Zj − Cj 45 2 . 0 0 4 x1 2 1 −4 7 x2 1 2∗ −7 3 x3 2 2 −3 0 x4 1 0 0 0 x5 0 1 0 XB 30 45 Z=0 0 7 4 x1 3/2∗ 1/2 −1/2 7 x2 0 1 0 3 x3 1 1 4 0 x4 1 0 0 0 x5 -1/2 1/2 7/2 XB 15/2 45/2 Z = 315/2 min = { 15/2 . 7. x5 ≥ 0 Max x4 x5 Zj − Cj min = { 30 .a. −1.a. x3 ≥ 0 Tenemos que C t = (4. x3 .

1/3 − 1/3. 10/3 − (−1/3)) = (0. 0. x3 = 0.122 Iteración 1 Paso 1: TEMA 4. que corresponde a una variable no básica con coste reducido nulo. 0. Iteración 1 Paso 2: Para λ = −1/3 hay una solución múltiple provocada por la cuarta columna. 0. Introduciendo en la base x4 sale x1 pues y4 = Tabla 0 CB 0 −1 t 2/3∗ −1/3 −1 7 x2 0 1 0 0 1 3 x3 1 1 4 −2 0 0 x4 1 0 0 0 0 0 x5 −1/2 1/2 7/2 −1/2 II x4 x2 C0 Ct t CB 0 7 Zj − Cj 0 0 Zj − Cj t 1 4 x1 3/2 1/2 −1/2 −3/2 XB 15/2 45/2 Z = 315/2 Z(λ) = −45/2 Iteración 2 Paso 1 ˆ (Zj − Cj )(λ) ˆ (Z1 − C1 )(λ) ˆ (Z3 − C3 )(λ) ˆ (Z5 − C5 )(λ) = = = = 0 0 (Zj − Cj ) + λ(Zj − Cj ) −1/2 − 3/2λ ≥ 0 4 − 2λ ≥ 0 7/2 − 1/2λ ≥ 0 . 11 ) 3 3 Veamos la otra solución básica que corresponde a λ = −1/3. 13/3 − 1/3. x2 = 20. 14 . z = 160 − 15λ. ANÁLISIS DE SENSIBILIDAD ˆ Si calculamos (Zj − Cj )(λ) tenemos: ˆ (Zj − Cj )(λ) ˆ (Z3 − C3 )(λ) ˆ4 − C4 )(λ) (Z ˆ (Z5 − C5 )(λ) = = = = 0 0 (Zj − Cj ) + λ(Zj − Cj ) 13/3 + (−1)λ = 13/3 − λ ≥ 0 1/3 + (1)λ = 1/3 + λ ≥ 0 10/3 + (−1)λ = 10/3 − λ ≥ 0 λ ≤ 13/3 λ ≥ −1/3 λ ≤ 10/3 Para − 1 ≤ λ ≤ 3 10 3 la solución óptima es : x1 = 5. ˆ Zj − Cj = (0.

13 − 3 10 1 3 . Zj − Cj = (0. 11 . Iteración 2 Paso 2: Para λ = 10/3 hay una solución múltiple provocada por la quinta columna. En resumen la solución del problema paramétrico es:   x1 = 0   1 x2 = 45 2 Si − ∞ ≤ λ ≤ − →  x3 = 0 3   Z = 315 − 2 45 2 λ . PROGRAMACIÓN PARAMÉTRICA 123 Si λ ≤ −1/3 todos estos costes reducidos son no negativos. Z = 60 + 15λ. x2 = 45/2. 1. x3 = 0. 3 − 10 3 )) = (0. 0. 0).5. así que en este caso la solución óptima es: x1 = 0. Iteración 3 Paso 2: Ya no hay más soluciones posibles. 3 + 10 10 3 . que corresponde a una variable no básica con coste reducido nulo.. entra en la base x5 por x2 pues y5 = Tabla 0 CB 1 0 t −1/3 2/3∗ −1 7 x2 1/2 3/2 −5 3/2 1 3 x3 1 1 1 0 0 0 x4 1/2 −1/2 2 1/2 0 0 x5 0 1 0 0 III x1 x5 C0 Ct t CB 4 0 Zj − Cj 0 0 Zj − Cj t 1 4 x1 1 0 0 0 XB 15 30 Z = 60 Z(λ) = 15 Iteración 3 Paso 1 ˆ (Zj − Cj )(λ) ˆ (Z2 − C2 )(λ) ˆ (Z3 − C3 )(λ) ˆ (Z4 − C4 )(λ) = = = = 0 0 (Zj − Cj ) + λ(Zj − Cj ) −5 + (3/2)λ ≥ 0 1 ≥ 0 2 + (1/2)λ ≥ 0 De aquí se obtiene que λ ≥ 10/3 y λ ≥ −4 (Redundante).4. x3 = 0. 0. Z = 315/2 − (45/2)λ. 3 Si a partir de la Tabla I. Así que para λ ≥ 10/3 la solución óptima es: x1 = 15. x2 = 0.

5. ANÁLISIS DE SENSIBILIDAD   x1   1 10 x2 Si − ≤ λ ≤ →  x3 3 3   Z   x1   10 x2 Si ≤λ≤∞ →  x3 3   Z = = = = = = = = 5 20 0 160 − 15λ 15 0 0 60 + 15λ 4. Paso 3: Repetir los pasos 1 y 2 hasta que no puedan hallarse nuevas soluciones.: 2x1 + x2 + 2x3 ≤ 30 − λ x1 + x2 + 2x3 ≤ 45 − 2λ x1 . Paso 2: Sustituir λ por aquellos valores extremos que sean finitos y aplicar el algoritmo dual del simplex a las filas con XB (λ) = 0.2 Parametrización de los recursos Dado el programa lineal: Max Z = C t · X sujeto a AX ≤ b + λb0 X≥0 Si definimos 0 0 ˆ XB (λ) = B −1 (b + λb0 ) = B −1 b + λB −1 b0 = XB + λXB −→ XB = B −1 b0 t ˆ t 0 t t 0 ˆ Z(λ) = CB XB = CB (XB + λXB ) = CB XB + λCB XB = Z + λZ 0 → t 0 siendo −→ Z 0 = CB XB . Paso 0: Calcular la solución óptima para λ = 0 y añadir a la tabla final una columna 0 con los XB y Z 0 . Ejemplo 56 Resolver el siguiente problema de programación paramétrica de los recursos Max Z = 4x1 + 7x2 + 3x3 s. x2 .124 TEMA 4.a. Paso 1: Imponer a la tabla la condición de factibilidad XB (λ) ≥ 0 (tanto para el caso maximizante como para el caso minimizante) determinando el recorrido del parámetro para el cual la tabla permanece óptima. Algoritmo de programación paramétrica. x3 ≥ 0 b= 30 45 b0 = −1 −2 .

Por lo que hay solución múltiple. PROGRAMACIÓN PARAMÉTRICA Paso 0: La tabla final con λ = 0 es la que aparece en el ejemplo anterior.4. Paso 1: 0 ˆ XB (λ) = XB + λXB ˆ Si imponemos la condición de factibilidad XB (λ) ≥ 0 tendremos ˆ XB (λ) ≥ 0 =⇒ 5≥0 20 − λ ≥ 0 =⇒ λ ≤ 20. con  x3 = 0 . 0). la nueva tabla queda: Así para λ ≤ 20 tendremos que la solución óptima será:  x1 = 5  x2 = 20 − λ Z = 160 − 7λ. ˆ Iteración 1.5. t 0 Z 0 = CB XB . Entra en la base la variable x4 y sale de la base x2 . Si Aplicamos el algoritmo dual del simplex. = = −7 XB 5 20 Z = 160 x1 x2 Ct t CB 4 7 Zj − Cj 4 x1 1 0 0 7 x2 0 1 0 0 -1 -7 Iteración 1. Paso 2: Para λ = 20 obtenemos que XB (λ) = (5. Ct t CB 4 7 Zj − Cj 4 x1 1 0 0 7 x2 0 1 0 3 x3 2/3 2/3 13/3 0 x4 2/3 -1/3 1/3 0 x5 -1/3 2/3 10/3 125 x1 x2 XB 5 20 Z = 160 Tenemos por tanto que la matriz B −1 es la siguiente: B −1 = Y por tanto tendremos que 0 XB = B −1 · b0 = 2/3 −1/3 −1/3 2/3 2/3 −1/3 −1/3 2/3 4 7 3 x3 2/3 2/3 13/3 0 x4 2/3 -1/3 1/3 −1 −2 0 −1 0 x5 -1/3 2/3 10/3 = 0 −1 .

ANÁLISIS DE SENSIBILIDAD 3 x3 2 -2 5 0 x4 0 1 0 0 x5 1 -2 4 x1 x4 XB 45 -60 Z = 180 0 XB -2 3 Z 0 =-8 Paso 3 Iteración 3 Paso 1. Si aplicaramos el dual del simple. Iteración 2 Paso 2. el dual sería no acotado y por tanto. En resumen. la solución óptima que se obtiene es:  x1 = 45 − 2λ  x2 = 0  x3 = 0 con z = 180 − 8λ. la solución de este problema paramétrico es:   x1 = 5   x2 = 20 − λ Si λ ≤ 20 →  x3 = 0   Z = 160 − 7λ   x1 = 45 − 2λ   45 x2 = 0 Si 20 ≤ λ ≤ →  x3 = 0 2   Z = 180 − 8λ Si λ > 45 2 → El problema no tiene solución .el problema primal sería infactible. como la primera fila tiene los coeficientes positivos. Así tendremos que imponiendo la condición de factibilidad ˆ XB (λ) ≥ 0 =⇒ 45 − 2λ ≥ 0 −60 + 3λ ≥ 0 =⇒ λ ≤ 45/2 λ ≥ 20 Por tanto si 20 ≤ λ ≤ 45/2. Para λ = 45/2 x1 x4 Ct t CB 4 0 Zj − Cj ¯ 45 XB ( ) = 2 4 x1 1 0 0 x1 7 x2 2 -3 1 x4 3 x3 2 -2 5 = 0 x4 0 1 0 0 0 x5 1 -2 4 15 2 XB 0 Z=0 15 2 Para λ > 45/2 ⇒ 45 − 2λ ≤ 0.126 Ct t CB 4 0 Zj − Cj 4 x1 1 0 0 7 x2 2 -3 1 TEMA 4.

Tema 5 El problema de transporte 5. 3 que demandan 15. Los números sobre las líneas indican el coste que se produce al transportar una unidad por esa ruta. 5.1 Introducción Este problema se plantea cuando han de distribuirse bienes o servicios que se producen en diferentes lugares (orígenes) y que son demandados en diferentes ubicaciones (destinos). como se muestra en el ejemplo que sigue. Ejemplo 58 Una empresa dispone de tres almacenes que debe servir sacos de cemento a cuatro clientes. También se suelen resumir los datos en una tabla. Los destinos están representados por los nodos 1. La demanda de cada cliente. Ilustramos el problema con el esquema del siguiente ejemplo (ver figura 5.1): Ejemplo 57 A y B son los puntos de origen con disponibilidad de 30 y 15 unidades para transportar. 25 unidades respectivamente. la capacidad de cada almacen y el coste de enviar un saco desde cada almacen a cada uno de las clientes vienen dados en la tabla: Cliente 1 8 9 14 45 Cliente 2 6 12 9 20 Cliente 3 10 13 16 30 Cliente 4 9 7 5 30 Capacidad 35 50 40 125 Almacen 1 Almacen 2 Almacen 3 Demanda 127 . 2. El propósito del problema de transporte es minimizar los gastos que se producen al transportar los artículos desde los orígenes a los destinos.

a. En este caso la producción total es 35 + 50 + 40 = 125 sacos y la demanda total es 45 + 20 + 30 + 30 = 125 sacos. Llamando xij la cantidad enviada desde la planta i a la ciudad j.128 TEMA 5. Por ejemplo la última ecuación puede obtenerse restando a la suma de las tres primeras la suma de las tres siguientes.2 Planteamiento como un problema de programación lineal El problema del ejemplo 58 es balanceado o equilibrado. esto es: min 8x11 +6x12 +10x13 +9x14 +9x21 +12x22 +13x23 +7x24 +14x31 +9x32 +16x33 +5x34 s. Esto significa que la suma de las unidades producidas es igual a la suma de las unidades demandadas. . el problema consiste en minimizar los costes de transporte.: x11 +x12 +x13 +x14 = 35 x21 +x22 +x23 +x24 = 50 x31 +x32 +x33 +x34 = 40 x11 +x21 +x31 = 45 x12 +x22 +x32 = 20 x13 +x23 +x33 = 30 x14 +x24 +x34 = 30 con xij ≥ 0                        Aunque hay 7 restricciones solo 6 de ellas son independientes (cualquiera de ellas puede obtenerse por combinación lineal de las restantes).1: Diagrama de transporte. Obsérvese que por la forma del sistema el problema dual solo tiene dos incógnitas en cada ecuación. El problema tiene 4 + 3 = 7 restricciones y 12 variables. Por este motivo la base está formada por 6 elementos. Este hecho es el que se utiliza para simplificar el método de Simplex dando lugar al Algoritmo de Transporte que describiremos en este tema. 5. EL PROBLEMA DE TRANSPORTE 7 30 A 4 5 1 15 2 5 15 B 3 2 3 5 25 Figura 5.

n = no de destinos). Exponemos a continuación varios métodos que nos permiten hallar una solución de partida. se puede asignar un coste no nulo al destino ficticio. 4.oferta total. 5.3 Problema no equilibrado Cuando el problema no es balanceado (equilibrado). Este problema de transporte tiene siempre solución básica factible. .5 Determinación de una solución inicial Como cualquier método de simplex. Si las demandas y disponibilidades son enteras se llama solución básica factible de un problema de transporte a una solución entera que verifica las restricciones de disponibilidad y demanda con a lo sumo m + n − 1 variables distintas de cero (m = no de orígenes. De forma análoga. Si para un problema de transporte se determina una solución básica factible inicial.4 Propiedades del problema de transporte i ·b 1. ya que este hecho puede acarrear como consecuencia la pérdida de clientes. el algoritmo de transporte precisa de una solución básica factible inicial. 3. 2. ya que las unidades no se mueven desde origen ficticio o hacia destino ficticio.3. en ambos casos se asigna un coste de transporte nulo. El problema de transporte tiene al menos una solución factible: xij = aM j donde M es la cantidad total transportada. se transforma en uno balanceado creando un origen ficticio o un destino ficticio: Si la demanda es mayor que la oferta creamos un origen ficticio con producción = demanda total . que puede interpretarse como el coste de almacenamiento debido al exceso de oferta.demanda total Normalmente.5. PROBLEMA NO EQUILIBRADO 129 5. 5. pueden asignarse costes no nulos al origen ficticio. Si la demanda es menor que la oferta creamos un destino ficticio con demanda = oferta total . que se supone equivalente a la estimación del gasto asociado al hecho de no atender la demanda. entonces todas las que se obtengan de ella por el método de simplex son básicas factibles. El problema de transporte es acotado. en ocasiones. ai la disponibilidad del origen i y bj la demanda del destino j. No obstante.

m + n − 1 variables no negativas. Destino 1 35 Destino 2 Destino 3 Destino 4 Producción 35 0 50 40 Origen 1 Origen 2 Origen 3 Demanda 45 10 20 30 30 Los valores de la solución inicial para las variables de la primera fila quedan ya decididos y se deja de considerar esta fila en los siguientes pasos del algoritmo. Los elementos recuadrados son los que se van eliminando.5. con lo que la disponibilidad del primer origen se agota. bj ) y restar esta cantidad a ai . Se resta este valor a a1 = 35 y a b1 = 45. a lo sumo. Se elimina esta fila o columna de la tabla. bj de modo que bien una fila o una columna de la tabla quede satisfecha. Se asigna a x11 el valor 35 = min {35. EL PROBLEMA DE TRANSPORTE 5.1) (la esquina NO).1 Método de la esquina Noroeste Este método nos conduce a una solución factible con. 45} . En caso contrario aplicar de nuevo el paso 1 a la tabla resultante 3) Igualad a ceros las xij que no tienen valor asignado. 2) Si no queda fila o columna parar. Aplicamos este método al problema de transporte del ejemplo 58 de la página 127. Hay que aplicar el siguiente algoritmo: 1) Partiendo de la esquina superior izquierda de la tabla (la esquina Noroeste) con i = j = 1 hacer xij = min(ai .130 TEMA 5. Ejemplo 59 Origen1 Origen 2 Origen 3 Demanda Destino 1 8 9 14 45 Destino 2 6 12 9 20 Destino 3 10 13 16 30 Destino 4 9 7 5 30 Producción 35 50 40 125 Se comienza el algoritmo seleccionando la celda (1. Destino 1 O rig en 1 35 Destino 2 - Destino 3 - Destino 4 - Producción 35 Origen 2 Origen 3 Demanda 50 40 45 10 20 30 30 .

5.5. De este modo queda eliminada la segunda columna.1). Repitiendo el proceso obtenemos 131 Destino 1 O r ig e n 1 35 Destino 2 - Destino 3 - Destino 4 - Producción 35 Origen 2 Origen 3 Demanda 10 45 10 0 20 30 30 50 40 40 Se elimina la primera columna. DETERMINACIÓN DE UNA SOLUCIÓN INICIAL Ahora la esquina NO es la celda (2. por quedar fijados los valores de sus variables en la salución inicial.. D e s t in o 1 O rig e n 1 35 10 45 Destino 2 - Destino 3 - Destino 4 - Producción 35 Origen 2 Origen 3 Demanda 20 20 0 30 30 50 40 20 40 Seleccionamos ahora la esquina NO. D estin o 1 O rig en 1 35 10 45 D estin o 2 20 20 Destino 3 - Destino 4 - Producción 35 Origen 2 Origen 3 Demanda 20 30 10 30 50 40 20 0 40 Continuando el algoritmo obtenemos sucesivamente las tablas: D e s t in o 1 O rig e n 1 O rig e n 2 35 10 45 D estin o 2 20 20 Destino 3 20 Destino 4 - Producción 35 50 30 Destino 4 - Origen 3 Demanda 10 30 10 0 40 30 D estin o 1 O rig en 1 O rig en 2 35 10 45 D estin o 2 20 20 D e stin o 3 20 10 30 Producción 35 50 Origen 3 Demanda 30 30 0 40 30 0 . que es la celda (2.2).

m. Localizar la celda que tenga asignado el menor costo y asignarle la mayor cantidad posible de flujo (como se hace en la celda superior izquierda en el método de la Esquina Noroeste). Reducir la oferta y la demanda en la cantidad de flujo que se ha asignado a la celda seleccionada y poner ceros en las restantes celdas. volver al paso 1. Para continuar asignando valores en las siguientes filas o columnas. Si se han agotado todas las ofertas o demandas. es una solución básica factible.132 D e stin o 1 O r ig e n 1 O r ig e n 2 O r ig e n 3 35 10 45 TEMA 5. Esta solución.5. 2. El valor del objetivo para esta solución es: 8 × 35 + 9 × 10 + 12 × 20 + 13 × 20 + 16 × 10 + 5 × 30 = 1180 u. En caso contrario. En las siguientes tablas mostramos la aplicación de este algoritmo al caso del ejemplo 59. EL PROBLEMA DE TRANSPORTE D e s t in o 2 20 20 D e s t in o 3 20 10 30 D estin o 4 30 30 Producción 35 50 40 Demanda Las casillas con guiones contendrían los valores nulos. La solución inicial será: 358 109 014 06 2012 09 010 2013 1016 09 07 305 Los subíndices son los costes correspondientes a la casilla. Si hay empate en el costo y en el flujo elegir una de estas celdas arbitrariamente. que tiene 3 + 4 − 1 = 6 variable no nulas. se deja de considerar la fila o columna que ya ha quedado saturada. elegir la celda a la que pueda asignarse una mayor cantidad de flujo. Los valores de la solución inicial en esta fila o columna ya quedan decididos. 3.2 Método de costo mínimo En este método se tiene en cuenta el costo correspondiente a cada celda. 5. . igualad a cero las xij que no tienen valor asignado y ya tenemos la solución básica factible inicial. Si hay empate en el mínimo coste. Consiste en la aplicación del siguiente algoritmo: 1.

queda decidida y deja de considerarse. entre las celdas que permanecen. lo que permite eliminar la primera fila. 0 35 50 40 . 8 6 10 35 9 12 13 50 14 9 16 30 40 .1) con coste 8.3): 15 30 45 15 30 45 15 30 45 20 20 20 20 20 20 13 16 30 30 20 16 30 30 30 30 35 50 50 35 50 35 50 20 10 30 10 30 10 20 10 30 . 6. y le asignamos un flujo de 30.3) y (3. DETERMINACIÓN DE UNA SOLUCIÓN INICIAL 133 En el primer paso elegimos la celda (3.10 La solución de la columna cuarta queda decidida. En la siguiente tabla escribimos está columna.5. 8 9 14 6 12 9 10 13 16 9 7 45 20 30 (30)5 30 . 15 9 14 20 20 13 16 30 30 35 50 10 45 30 30 Repitiendo el proceso resultan sucesivamente seleccionadas las celdas (2. 5. asignándole el valor 20 = min(35.10 45 20 30 3 0 Seleccionamos ahora la (1.1). (2. que es la celda de menor coste. con letra más pequeña para dejar de considerarla en los siguientes pasos.4).2). 8 9 14 20 20 10 13 16 30 30 35 15 50 40 .5.10 45 30 En la tabla resultante se selecciona la celda (1. asignandole el valor 15. 20). por ser la de coste mínimo. con lo la segunda columna.

Las penalizaciones correspondientes a las filas y columnas están indicadas en la última columna y fila de la siguiente tabla: D1 O1 O2 O3 Demanda Pen. 4. suele suministrar una solución inicial más cercana a la óptima. 5. 2. Repetir los pasos 1 y 2 con la tabla restante. Aplicamos el método de Vogel al mismo problema 59: 1. Definimos la Penalización por fila y columna como la diferencia (en valor absoluto) entre los dos costes menores de esta fila o columna. que es mejor que la solución obtenida previamente por el método de la esquina noroeste (ENO). 3. Igualar a cero las incógnitas no definidas por el algoritmo anterior..3 Método de Vogel Aunque este método requiere más esfuerzo. fil 2 2 4 45 1 20 3 30 3 30 2 . Elegir la fila o columna de mayor penalización (en caso de empate seleccionar cualquiera de ellas arbitrariamente) y situar en la celda de menor coste el mayor número posible de unidades. La aplicación del método de Vogel requiere seguir los siguientes pasos: 1.5. EL PROBLEMA DE TRANSPORTE Así que la solución inicial obtenida por este método es: 158 309 014 206 012 09 010 2013 1016 09 07 305 El valor de la función objetivo para esta solución es: 8 × 15 + 6 × 20 + 9 × 30 + 13 × 20 + 16 × 10 + 5 × 30 = 1080 u.m. Eliminar la fila o columna cuya disponibilidad o demanda sea 0. col 8 9 14 D2 6 12 9 D3 10 13 16 D4 9 7 5 Producción 35 50 40 Pen. disminuyendo las demandas y ofertas en la cantidad situada en esta celda.134 TEMA 5.

Aquí colocamos el valor 10. Aquí colocamos el valor 30 y actuamos de forma similar al método de la esquina noroeste D1 O1 O2 O3 Demanda Pen col 8 9 14 D2 6 12 9 D3 10 13 16 D4 9 7 45 1 20 3 30 3 (30)5 30 0 2 Producción 35 50 40 10 Pen fil 2 2 4 Suprimo la columna cuarta y volvemos al paso 1 calculando de nuevo las penalizaciones D1 O1 O2 O3 Demanda Pen col 8 9 14 D2 6 12 9 D3 10 13 16 D 4 30 30 Producción 35 50 40 10 Pen fil 2 3 5 45 1 20 3 30 3 Seleccionamos ahora la fila tercera (penalización 5) y la celda correspondiente a la D2. D1 O1 O2 O 3 8 9 14 D 2 10 10 20 D3 10 13 - D 4 30 30 Producción 35 25 50 40 Pen fil 2 4 Demanda Pen col 45 1 30 3 . Seleccionamos la fila tercera (penalización 4) y la celda correspondiente a la ciudad 4 cuyo coste (5) es el menor de esta fila.5. 10).5. y asignamos el valor 10 = min(35. DETERMINACIÓN DE UNA SOLUCIÓN INICIAL 135 2. que es el máximo posible. Seleccionamos casilla primera de la columna D2. cuyo coste (9). es el menor de la fila. Suprimimos despues la columna segunda. su coste 6 es el mínimo de esta columna. D1 O1 O2 O3 Demanda Pen col 8 9 14 D2 6 12 D3 10 13 16 D 4 30 30 45 1 (10)9 20 10 3 Producción 35 50 40 10 0 Pen fil 2 3 5 30 3 Eliminamos la fila tercera y calculamos de nuevo las penalizaciones. La mayor penalización corresponde a la columna D2 (penalización 6).

eliminando la primera columna. Una vez se conoce alguna solución básica factible. o por cualquier otro. . se puede iniciar.136 TEMA 5.m. aceptando la solución actual si es la óptima. y colocamos el valor 45. de igual forma que se hace en el método de simplex. Para pasar de una solución básica a otra es importante el concepto de ciclo que se da en el siguiente apartado. EL PROBLEMA DE TRANSPORTE En la fila 2 (mayor penalización). selecciono la D1 de coste 9.3) suprimiendose depués la fila 1 que queda saturada. D 1 D 2 10 10 20 O1 O2 O 3 45 45 D3 25 13 - D 4 30 30 Producción 35 25 0 50 5 40 Pen fil 0 0 Demanda Pen col 30 5 3 Por último obtenemos la solución inicial de Vogel asignando el valor 5 en la casilla (2. obtenida por uno de los tres métodos anteriores. o hallando una solución mejorada si este no fuera el caso. D1 O1 O2 O 3 8 D 2 10 10 20 D3 10 13 - D 4 30 30 459 - Producción 35 25 50 5 40 Pen fil 2 4 Demanda Pen col 45 0 1 D 1 30 3 D3 10 13 - D 2 10 10 20 D 4 30 30 O1 O2 O 3 45 45 Producción 35 25 50 5 40 Pen fil 0 0 Demanda Pen col 30 3 Se asigna ahora el valor 25 en la casilla (1. el algoritmo de transporte.3): D1 08 459 01 4 D2 106 01 2 109 D3 251 0 51 3 01 6 D4 09 07 305 O1 O2 O3 El valor de la función objetivo correspondiente a la solución inicial de Vogel es: 6 × 10 + 10 × 25 + 9 × 45 + 13 × 5 + 9 × 10 + 5 × 30 = 1020 u.

5. 5. un conjunto de m + n − 1 celdas no contiene ciclos si y solo si las m + n − 1 variables correspondientes a estas celdas son básicas. Se puede comenzar el ciclo por cualquiera de estas celdas.7 Algoritmo de transporte (forma minimizante) El algoritmo que tratamos aquí es una adaptación del método de Simplex y es aplicable a problemas balanceados. . 3. según proceda. La forma de actuar en el caso de que la solución sea degenerada se tratará más adelante. es decir que hay m+n−1 posiciones localizadas distintas de cero. DEFINICIÓN DE CICLO 137 5. Teorema 10 En un problema de transporte con m orígenes y n destinos. La primera y la ultima celda están. bien en la misma columna. Los esquemas que siguen representan distintos modelos de ciclos.6. 2. Si el problema no fuera balanceado hay que equilibrarlo previamente añadiendo un origen o un destino ficticio. Suponemos que las soluciones obtenidas en cada paso del algoritmo no son degeneradas. Tres celdas consecutivas no están en la misma fila o columna. bien en la misma fila.6 Definición de Ciclo Un ciclo es una sucesión de al menos 4 celdas cumpliendo las condiciones siguientes: 1. Las celdas que forman el ciclo son las que contienen las puntas de flecha. Ejemplos de diversos tipos de ciclos. Dos celdas consecutivas están en la misma fila o en la misma columna.

. +. Si todos estos costes redocidos son no positivos (valores nulos o negativos) la solución actual es óptima y hemos resuelto el problema. Analizar si la solución actual es la óptima o mejorarla en su caso: (a) Resolver el sistema ui + vj − cij = 0 (una ecuación para cada una de las variables básicas de la solución actual). que era: D1 35 10 45 D2 20 20 D3 20 10 30 D4 Producción 35 50 40 O1 O2 O3 Demanda 30 30 Esta solución tiene 3 + 4 − 1 = 6 variable no nulas. Usar a continuación sobre este ciclo el siguiente procedimiento: A la celda de la variable de entrada le asignaremos + y a las restantes del ciclo alternativamente los signos −. Si más de una celda tuviera este menor valor de xij . 2. Localizamos la celda. por lo tanto no es degenerada. 1. (b) Determinar el coste reducido (ui + vj − cij ) de las variables no básicas usando las soluciones del sistema resuelto en el paso 2. 3. (c) Construcción de una nueva solución básica: Partiendo de la posición de la variable de entrada hallada en el paso anterior construir un ciclo que incluya esta variable y alguna de las variables de la solución básica actual. con menor valor para la solución Restamos este valor a la solución de estas celdas y se lo sumamos al de las marcadas con +. j) de la base. con objeto de incorporar ordenadamente la información que va obteniéndose a lo largo del algoritmo. Con esto una variable quedará a nivel 0 y por tanto saldrá de la base. +. Hemos obtenido de esta forma una nueva solución básica. Ir al paso 2 Aplicamos el algoritmo de transporte al problema 59. Las incógnitas de este sistema son ui y vj . Fijamos 4 posiciones en cada celda.138 TEMA 5.. elegir la de menor costo. entre las señaladas con −. −. usando como solución inicial la que hemos hallado por el método de la esquina noroeste (ENO). siendo cij el coste asignado al transporte en la celda (i. Cada celda tendrá: .a. Construir una solución básica factible. El valor del objetivo es: 8 ∗ 35 + 9 ∗ 10 + 12 ∗ 20 + 13 ∗ 20 + 16 ∗ 10 + 5 ∗ 30 = 1180 u. EL PROBLEMA DE TRANSPORTE El algoritmo de transporte consta de los siguientes pasos. Si no es así la variable que entra en la base es la que corresponde al mayor coste reducido.m. Dar arbitrariamente el valor 0 a una de las incógnitas.

. −.2). se obtiene sucesivamente: v1 = 8. u2 = 1. u2 + v3 = 13. +. Siendo 10 el menor valor. u2 + v3 = 13. u2 + v1 = 9 .(2.3). v4 = 1 D1 (35) 8 (10) 9 -2 14 8 D2 5 6 (20) 12 6* ⇉ + 9 11 D3 2 10 (20) + (10) 13 16 12 ⇇ ⇈ D4 -8 9 -5 7 (30) 5 1 ui 0 1 4 O1 O2 O3 vj El coste reducido máximo. u2 + v2 = 12.7. v3 = 12. v2 = 11. Esta variable es la que va a entrar de la base. se obtiene sucesivamente: . u3 + v4 = 5 Tomando u1 = 0. u3 + v2 = 9. Es por tanto x33 la variable que va a salir de la base.2). lo marcamos con un asterisco. Para determinar la variable que va a salir construyo el ciclo. Los signos asignados son respectivamente +.3). El coste reducido más positivo corresponde a la posición (3.2) cuyo coste reducido es 6.(2. u2 + v2 = 12. obteniéndose la nueva solución. ALGORITMO DE TRANSPORTE (FORMA MINIMIZANTE) solución signo coste reducido precio unitario 139 En la última fila o columna ponemos la solución ui . u3 + v3 = 16. En esta celda va a estar la variable que entra en la base. vj del sistema correspondiente formado por las siguientes 3 + 4 − 1 = 6 ecuaciones: u1 + v1 = 8. En las casillas señaladas con − la variable toma los valores 10 y 20. D1 (35) ⇉ 8 (10) ⇈ + 9 −8 14 8 D2 5* + 6 (10) ⇇ 12 (10) 9 11 D3 2 10 (30) 13 −6 16 12 D4 −2 9 1 7 (30) 5 7 ui 0 1 −2 O1 O2 O3 vj El sistema correspondiente a este nueva solución es: u1 + v1 = 8. Resto 10 unidades a las casillas señaladas con − y sumo 10 a las celdas señaladas con más. −. que en este caso es 6.5. u3 = 4. que está marcado con flechas: (3.(3. u3 + v4 = 5 Tomando u1 = 0. u2 + v1 = 9 .

EL PROBLEMA DE TRANSPORTE v1 = 8. v3 = 12.2) correspondiente al coste reducido máximo. Este valor se resta a las marcadas con − y se le suma a las marcadas con +. u3 = −2. Repitiendo el proceso llegamos a la tabla siguiente que tampoco es óptima por tener valor 2 en la posición (1.3). Restamos 10 a los valores de las celdas (2. como puede verse en la siguiente tabla.2).m. Ahora el pivote está en la posición (1. Obtenemos una solución básica factible mejorada: O1 O2 O3 con valor del objetivo 1070 u. con coste reducido 2. Esta solución es ya optima. . v2 = 11.140 TEMA 5.m. El ciclo y las asignaciones de signo también están señaladas en la tabla: D1 (25) ⇉ 8 (20) ⇈ + 9 −3 14 8 D2 10 6 −5 12 (10) 9 6 D3 2* + 10 (30) ⇇ 13 −1 16 12 D4 −7 9 −4 7 (30) 5 2 ui 0 1 3 D1 25 20 D2 10 10 D3 30 30 D4 O1 O2 O3 vj Ahora el valor mínimo de las celdas señaladas con − es 25.2). v4 = 7 El valor del objetivo para esta solución es ahora: 8 ∗ 35 + 9 ∗ 10 + 12 ∗ 10 + 13 ∗ 30 + 9 ∗ 10 + 5 ∗ 30 = 1120 u. y sumamos 10 a los de las celdas (1. que están señaladas con el signo menos. (2.m. y la que sale x22 . y la variable que entra es x12 .1). pues obtenemos. todos los costes reducidos negativos o cero.1) que están marcadas con el signo más. que como es el más positivo resulta ser el pivote. u2 = 1. obteniéndose la nueva solución: D1 O1 O2 O3 45 10 D2 10 D3 25 5 D4 30 El valor del objetivo es 1020 u. (1.

Para aplicar el algoritmo de transporte es necesario partir de una solución no degenerada. que es una de las más baratas. Usar esta posición y el valor de la ε asignado como si fuera una variable básica. Elegimos entre las posiciones posibles la (3. Las posiciones prohibidas. Comenzamos seleccionando una celda vacia. . Para ello se actúa del siguiente modo: Intentar construir un ciclo comenzando en una celda vacía. es decir.5. Si hay varias posibilidades es mejor seleccionar las de precio más bajo y asignar a esta posición el valor ε. SOLUCIONES DEGENERADAS D1 −2 8 (45) 9 −5 14 6 D2 10 6 −3 12 (10) 9 6 D3 25 10 5 13 −3 16 10 D4 −7 9 −2 7 (30) 5 2 ui 0 3 3 141 O1 O2 O3 vj 5. que se supone que es un número positivo muy pequeño.8 Soluciones degeneradas Una solución básica se llama degenerada cuando contiene menos de m+n−1 variables básicas no nulas. que contenga m + n − 1 celdas no nulas.8. Asignar la variable correspondiente a esta celda a la base si no es posible construir un ciclo.2). que se añadirá a las de la base de forma que no puedan formarse ciclos con esta celda añadida y las 5 celdas no nulas de la solución anterior. aquellas que permiten formar ciclos. es preciso completar la base con algunas celdas hasta completar las m + n − 1 posiciones requeridas. están indicadas (con NO) en la tabla anterior. En el caso de que la solución disponible sea degenerada. y le daremos el valor ε. Planta 1 Planta 2 Planta 3 Ciudad 1 (5) 3 NO1 2 Ciudad 2 (3)4 (2)5 1 Ciudad 3 NO1 (7)3 1 Ciudad 4 2 7 (6)3 Completad las 5 posiciones no nulas con una nueva celda para llegar a una solución básica factible no degenerada (con 6 elementos no nulos). y hallamos los costes reducidos como anteriormente. Cuando los costes reducidos son todos no positivos se llega igualmente a la solución óptima y entonces damos a ε el valor 0. Ejemplo 60 Si un problema tiene la solución inicial indicada en la tabla siguiente (los únicos valores no nulos están indicados entre paréntesis y el coste del transporte está indicado con el número más pequeño).

4). La solución a la que corresponde menor el valor más pequeño entre las celdas marcadas con el signo menos es 3.3).4) con menor valor (1) marcado con signo menos.2). . EL PROBLEMA DE TRANSPORTE Ciudad 2 (3) ⇉ − 4 (2) 5 (ε) ⇈ + 1 4 Ciudad 3 1 1 (7) 3 −2 1 2 Ciudad 4 4* + 2 0 7 (6) ⇇ − 3 6 ui 0 1 −3 Planta 1 Planta 2 Planta 3 vj El costo reducido más positivo es la posición (1.2. La nueva solución está en la siguiente tabla donde también se indican los cálculos realizados en el ciclo correspondiente en el algoritmo de transporte. En el ciclo marcado los valores señalados con signo menos son (5.2). Esta variable entrará en la base saliendo la de la posición (3. Ciudad 1 (5) ⇉ − 3 *7 ⇈ + 1 2 2 3 Ciudad 2 −4 4 (2) ⇇ − 5 (ε + 3) ⇈ + 1 0 Ciudad 3 −3 1 (7) 3 −2 1 −2 Ciudad 4 (3) + 2 0 7 (3) ⇇ − 3 2 ui 0 5 1 Planta 1 Planta 2 Planta 3 vj El mayor valor del coste reducido es 7.3) de los cuales el menor coste es 2 por lo que sale de la base la variable de la posición (2. quedando la nueva tabla: Ciudad 1 Planta 1 Planta 2 Planta 3 Ciudad 2 Ciudad 3 Ciudad 4 ui 0 -2 3 ⇉ − 3 2 ⇈ + 1 2 2 3 −4 4 -7 5 ε+5 1 0 4 1 7 − + 3 5 + ⇇ (1) − 2 -7 7 3 vj *5 ⇈ 1 5 ⇇ -1 2 El pivote resulta en la celda (3.1) que entrará en la base.142 Ciudad 1 (5) 3 3 1 −2 2 3 TEMA 5. que está en la posición (2. en la posición (1.

aplicando después el algoritmo minimizante del epígrafe 5. lo que lo transformaría en un problema de minimización. La solución optima resulta por tanto: Ciudad 1 Planta 1 Planta 2 Planta 3 5 5 obtenida trás poner a 0 el valor de ε. No obstante. aunque lo que sí varía es el valor del objetivo.1) con menor valor (2) entre las marcadas con signo menos.9. 5.m.5. . Esta transformación esta permitida debido a que se cumple el siguiente teorema: Teorema 11 En un problema de transporte se puede sumar o restar cualquier constante a los costes sin que varíe la solución óptima.9 Otras variaciones del problema de transporte Si el problema de que hemos de resolver fuera similar al de transporte.3) que entra en la base saliendo la (1. y para manejar costes unitarios no negativos se suele sustituir cada coste por la diferencia entre el mayor valor de ellos y su propio valor. OTRAS VARIACIONES DEL PROBLEMA DE TRANSPORTE 143 Ciudad 1 Planta 1 Planta 2 Planta 3 Ciudad 2 Ciudad 3 Ciudad 4 ui 0 -2 -4 2 ⇉ − 3 3 ⇈ + 1 -3 2 3 1 4 -2 5 ε+5 1 5 + 6 − *4 1 3 6 + ⇇ 2 -7 7 1 1 5 -5 3 vj 2 En esta última tabla el pivote está en (1. El valor del objetivo es de 37 u. se podría resolver con el algoritmo anterior sin más que cambiar los signos de los costes unitarios en la función objetivo. Ciudad 1 Planta 1 Planta 2 Planta 3 Ciudad 2 Ciudad 3 Ciudad 4 ui 0 2 0 -4 3 5 1 -3 2 -1 −3 4 -2 5 ε+5 1 1 Ciudad 2 2 1 4 3 6 2 -3 7 1 1 1 Ciudad 3 2 4 1 -1 3 vj 2 Ciudad 4 6 Todos los costes reducidos son no positivos. De esta forma los precios unitarios serían no negativos.7. pero de maximización.

144 Demostración: min i.10 El problema de transbordo El problema de transbordo es un problema de transporte modificado.j (k − cij ) xij es equivalente al problema de maximizar z = i.j (−cij )xij = k i. es decir que alguna de las rutas directas desde un cierto origen a un destino esté prohibida.j (xij ) + i. 5. Ambos problemas dan lugar a la misma solución óptima para las variables xij .j kxij ) + i. EL PROBLEMA DE TRANSPORTE (k − cij ) xij ≡ min i.j (xij )+ i.j i.j TEMA 5. Consideraremos además que B es a su vez un lugar de transbordo y que el gasto por unidad transportada desde A hasta B es 2 u.j (−cij )xij ≡ min constante + La última igualdad se deduce del hecho de que la suma de todas las variables es igual a la oferta o demanda total.j cij xij . Ejemplo 61 En el gráfico de la figura 5. Así que el problema de minimizar ′ z = i.2 se muestra un ejemplo en el que los nodos A y B son orígenes y los nodos 1 y 2 destinos con las disponibilidades y demandas que se indican. No obstante la relación entre las respectivas funciones objetivos es: z = k i.j (−cij xij ≡ i. Si el problema es de maximización se asignará un coste muy pequeño.m. si el problema es de minimización.j (−cij )xij ≡ min k (xij ) + i. En este caso. El problema se resuelve partiendo de la tabla siguiente: 1 2 5 0 35+90 2 3 7 2 55 B 2 0 ∞ 0+90 DISP 40 50+90 0+90 A B 1 DEM.j (xij ) −z Otra variación de este problema se presenta cuando alguna de las rutas no tenga asignado flujo. se le asigna al arco (o celda) correspondiente un coste muy alto (en relación con los restantes costos).m. Por lo tanto el problema de maximización tiene un valor del objetivo ′ i.j (−cij )xij = k z . También consideraremos que el destino 1 es un punto de transbordo y que el gasto de transporte desde 1 a 2 es también 2 u.j (xij )− z′ = k i. donde algunos nodos pueden ser simultáneamente lugares de demanda de mercancía y orígenes para otros destinos. .

EL PROBLEMA DE TRANSBORDO 145 Figura 5. más la cantidad total que se transporta (35+55 = 40+50 = 90).10. si actúan como orígenes. 50 75 35+90 2 40 15 55 B 90 0+90 DISP 40 50+90 0+90 Para interpretar la solución se ignoran los elementos que conectan un nodo consigo mismo. Desde este destino (1) transportamos 15 unidades al destino 2.2: Ejemplo de problema de transbordo. 1 A B 1 DEM. que aparecen enmarcados en la tabla. Se supone que el transporte de un nodo a sí mismo tiene coste nulo. Las demandas de los puntos de transbordo cuando actúan como destinos son las cantidades demandadas realmente. Esta tabla se ha construido cumpliendo las siguientes normas: a) Se añade como origen el destino 1 que actúa como punto de transbordo y que por tanto puede funcionar como origen. . son las que tienen de por sí. se pone en la casilla correspondiente un costo grande en relación con los demás.5. b) Las disponibilidades de los puntos de transbordo. Leyendo en horizontal obtenemos la interpretación de la solución: pasamos 40 unidades desde A a 2 y 50 unidades desde B al destino 1. más la cantidad total que hay que transportar. c) Si algunos pasos no estuvieran permitidos. De igual forma se añade como destino B que es un nodo de transbordo. Resolviendo el problema de transporte correspondiente a esta tabla se obtiene la solución óptima siguiente. si no se indica otra cosa.

1 El algoritmo Húngaro (Forma minimizante) Partiendo de la matriz cuadrada de los tiempos se realizan los pasos siguientes: Paso 1: Encontrar el mínimo de cada fila. Se repite este proceso hasta que no queden ceros sin tachar o recuadrar. 5. ya que las máquinas pueden ser interpretadas como orígenes con oferta 1 y las tareas como destinos con una demanda de 1. Aunque el problema puede resolverse por el algoritmo de transporte. que exponemos a continuación. Este problema se puede resolver por el algoritmo de transporte. se suele presentar un alto grado de degeneración. puesto que cada maquina sólo hace una tarea y todas las tareas han de ser realizadas. las posiciones de los ceros recuadrados marcan la solución óptima. continuar con el Paso 4. Para el problema de asignación es más eficiente usar el método Húngaro. Se exige además que el costo total sea mínimo. Paso 3: Si el número de ceros recuadrados es igual que el número de filas (también será igual que el número de columnas). Construir una nueva matriz restando de cada fila el mínimo coste de ésta. . Ejemplo 62 Una empresa tiene 4 máquinas y debe completar cuatro tareas. Paso 2: Considerando esta última matriz y procurando comenzar por las filas o columnas con menor número de ceros se recuadra un cero en cada fila y columna y se tachan los demás ceros de estas filas o columnas. Un 1 en la celda (i. Para esta nueva matriz realizar la misma operación por columnas. Cada máquina puede y debe realizar una y sólo una de de las tareas.146 TEMA 5. Las soluciones de este problema sólo pueden tomar los valores 0 ó 1. Esta nueva matriz se llama matriz de coste reducido. Si no es así. La tabla siguiente nos da el tiempo que tarda cada máquina en completar cada trabajo. máquina máquina máquina máquina 1 2 3 4 tarea 1 11 3 8 3 tarea 2 1 12 8 4 tarea 3 2 4 1 4 tarea 4 3 5 9 10 Asignar una tarea a cada máquina de modo que la suma de los tiempos trabajados por las cuatro máquinas sea mínimo. j) significa que al individuo i se asigna la tarea j. EL PROBLEMA DE TRANSPORTE 5.11.11 El problema de asignación Este problema consiste en asignar n individuos a n tareas de modo que todos los individuos realicen una tarea y todas las tareas se realicen.

Paso 5: Se resta a todos los elementos sin tachar el menor de ellos. → → min Esta última es la matriz de costes reducidos. Paso 6: Volver al paso 2 5. Para conseguirlo se puede seguir el siguiente procedimiento: a) Se marcan la filas que no tengan ningún cero recuadrado.2 Ejemplo de aplicación del algoritmo Húngaro Vamos a aplicar este algoritmo al problema del ejemplo 62. xxx = fila o columna tachada. Los elementos de la parte tachada se dejan igual salvo los que están tachados dos veces.5. a los que se les suma ese número.11. *** = fila o columna marcada. Paso 2 (se indica el orden en que se han seleccionado los ceros): . d) Se repite b y c hasta que no se puedan marcar más filas o columnas. EL PROBLEMA DE ASIGNACIÓN 147 Paso 4: Tachar con el menor número de líneas (filas o columnas) todos los ceros de la matriz. Se usarán los siguientes símbolos: 0 x = cero tachado. c) Considerando únicamente las columnas marcadas se marcan las filas que tengan algún cero recuadrado en estas columnas marcadas.11. Paso 1: 11 3 8 3 10 0 7 0 0 1 12 8 4 0 9 7 1 0 2 4 1 4 1 1 0 1 0 3 5 9 10 2 2 8 7 2 1 3 1 3 min 10 0 7 0 10 0 7 0 0 9 7 1 0 9 7 1 1 1 0 1 1 1 0 1 2 2 8 7 0 0 6 5 0 = cero recuadrado. e) Se tachan las filas no marcadas y las columnas marcadas. b) Se marcan las columnas que tengan algún cero tachado en las filas marcadas.

18 0 8 0x ***2o 0 20 10 4 6 8 0 6 0x 2 8 12 ***3o ***1o Ya no pueden marcarse más filas ni más columnas. Paso 4e ( los elementos marcados con ’xx’ son los que están tachados dos veces) . la 3 la tarea 3 y la 4 la tarea 1. sus posiciones marcan la solución óptima. En este caso consiste en que la máquina 1 hace la tarea 2. b. Paso 4 a. EL PROBLEMA DE TRANSPORTE 0 3o 9 7 1 1 1 0 1o 1 0x 0 4o 6 5 Como hay 4 ceros recuadrados. Con el objeto de ilustrar el resto del algoritmo lo aplicamos a la matriz del siguiente ejemplo. c. Ejemplo 63 Hallar la solución óptima en el problema de asignación cuya matriz de costes reducidos es: 18 0 8 0 0 20 10 4 6 8 0 8 0 2 8 12 Como ya tenemos realizado el paso 1 comenzamos el siguiente. Paso 2 18 0 3o 8 0x 0 2o 20 10 4 6 8 0 1o 8 0x 2 8 12 Como hay menos ceros recuadrados que filas (o columnas) continuamos con el siguiente paso. El tiempo total requerido será 1 + 5 + 1 + 3 = 10. la máquina 2 la tarea 4. Está indicado en la tabla el orden en que se han marcado las filas y columnas.148 10 0x 7 0 2o TEMA 5.

Ejemplo 64 Asignar 6 tareas a 5 individuos de modo que se realice el mayor número posible de tareas. PROBLEMA DE EMPAREJAMIENTO 18 0 8 149 xxx xxx xx xx 0 x 0 6 0 x 20 10 8 0 2 8 4 8 12 xxx Paso 5 20 0 10 0 Vuelta al paso 2. 5. Se supone que cada individuo puede realizar algunas de las tareas.5. Las tareas que puede realizar cada individuo están mar- . Si se supone que cada individuo sólo va a realizar una tarea. o tareas ficticias (que puede hacerlas cualquier individuo). Un 1 significa que el individuo puede hacer esa tarea y un 0 que no puede hacerla. las demandas son todas 1 y las disponibilidades 1.12 Problema de emparejamiento Un problema de este tipo podría ser el siguiente. Se indica el orden en que se han recuadrado los ceros. Disponemos de m individuos que deben realizar n tareas. El problema se transforma en uno de asignación añadiendo individuos ficticios (que pueden hacer todas las tareas). Este problema se puede interpretar como un problema de transporte. Los costos de cada celda son 1 ó 0.12. 20 0x 10 0 2o 0 4o 18 10 2 6 6 0 1o 6 0x 0 3o 8 10 0 18 10 2 6 6 0 6 0 0 8 10 Ahora hay 4 ceros recuadrados que marcan una solución óptima. Se pretende asignar a cada individuo una única tarea de modo que se realicen el mayor número posible de estas.

cambiamos los 1 por ceros y recíprocamente. xij = 1 si el individuo i realiza la tarea T j. Realizar el mayor número de tareas es equivalente a maximizar cij xij . el individuo 5 hace la tarea 5. Esta propiedad es una aplicación inmediata del teorema 11 cuyo enunciado aparece en la página 143.j i. donde se ha indicado los ceros recuadrados (en el orden indicado) que conducen a la solución óptima: 0 2o 0 1 1 1 0 1 0 3o 1 0 1 0 1 1 1 0 4o 1 0 0 1 0 1o 1 0 0 1 1 1 1 0 5o 0 1 1 1 0 1 0 6o Así que el individuo 1 hace la tarea 1. el individuo 2 hace la tarea 2. que puede convertirse en uno de minimización intercambiando los ceros de los costes con 1. el individuo 4 hace la tarea 3. 1 2 3 4 5 Ind. es equivalente a minimizar (−cij ) xij o a maximii. EL PROBLEMA DE TRANSPORTE T3 T4 1 1 T5 T6 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Disponibilidades 1 1 1 1 1 1 Para las demandas y disponibilidades se debe tomar el valor 1.150 cadas con un 1.j zar i. ficticio Demandas T1 1 1 T2 1 TEMA 5. Por lo tanto.j cij xij que es lo que se pretende en este caso. y que . para resolver este problema usando el algoritmo Húngaro.j i. ya que está asignada al individuo ficticio. teniendo como matriz de costo reducido la siguiente. En este caso el problema de transporte asociado es de maximización. xij = 0 si el individuo i no realiza la tarea T j. La tarea 6 no la realiza ninguno de los 5 individuos.13 Problema de planificación de la producción Este es otro tipo de problemas que puede resolverse por el algoritmo de transporte. Esta es la matriz de los costos (cij = 1 si el individuo i puede realizar la tarea j y es 0 en caso contrario). ya que minimizar (1 − cij ) xij . 5. Se dispone de un producto que puede producirse en n periodos de tiempo. el individuo 3 hace la tarea 4.

j) está indicado el costo de una unidad de producto fabricado en el mes i y vendido en el mes j. 9 20 5 5 40 50 6 9 20 14 20 11 11 20 25 40 25 . Consideraremos el ejemplo siguiente: Ejemplo 65 Un fabricante desea planificar su producción para los cuatro meses siguientes. Fic. posible deterioro del producto. En la tabla de transporte siguiente se consideran los periodos de tiempo como orígenes y destinos. para que estas casillas no aparezcan en la solución. mes 1 mes 1 mes 2 mes 3 mes 4 Demandas mes 2 mes 3 mes 4 mes. etc. producto obsoleto o en desuso. Los orígenes tienen como disponibilidad la producción máxima u oferta del periodo y los destinos una demanda que es la que corresponde a cada periodo. Disponibilidades 1 M M M 9 2 1 M M 20 3 2 2 M 50 4 3 3 3 20 0 0 0 0 11 20 25 40 25 Una solución inicial obtenida por el método de Vogel es: mes 1 mes mes mes mes 1 2 3 4 mes 2 mes 3 mes 4 mes. En cada celda (i. Elaborar un plan óptimo de producción. Fic. ya que el problema es de minimización. Se ha añadido una demanda ficticia para conseguir un problema de transporte equilibrado. No puede venderse un producto antes de ser fabricado. Se han dividido todos los valores del problema por 100 para simplificar la escritura. puede ser almacenado para venderlo posteriormente. PROBLEMA DE PLANIFICACIÓN DE LA PRODUCCIÓN 151 puede ser inmediatamente vendido o.13. En este caso se suele asignar un coste que viene justificado por el gasto de almacenaje.5. La producción máxima. Mes 1o 2o 3o 4o Gasto 100 100 200 300 Producción Máxima 2000 2500 4000 2500 Demanda 900 2000 5000 2000 Además cada unidad no vendida en un mes tiene un encarecimiento de 100 unidades por cada mes de almacenamiento. por el contrario. la demanda y el gasto de producción por unidad en cada mes está resumido en la siguiente tabla. por este motivo las celdas correspondientes tienen asignado un coste alto (M).

2)).152 TEMA 5. vj se dan en la siguiente tabla. así como los valores de ui . Se han dejado en blanco las casillas correspondientes a la presente base (como se sabe los costos reducidos de las variables básicas son nulos). ya que los costos reducidos son no positivos. Esta solución no es única.5) que es la única con coste reducido positivo. para recuperar la escala inicial de los valores. 1* + 0 0 0 ui 0 -1 -1 ⇈ (11) 1 0 ⇇ -1 Tomo como pivote la posición (1. Fic. EL PROBLEMA DE TRANSPORTE Aplicando el algoritmo de transporte. se obtiene la tabla siguiente: mes 1 mes 2 mes 3 mes 4 vj mes 1 (9) 1 -M M -M + M -M M 1 mes 2 2 (20) 1 1-M M 1-M M 2 mes 3 (5) + 3 (5) 2 (40) 2 2-M M 3 mes 4 (6) ⇉ 4 + (14) + 4 3 3 3 mes. Fic. Fic. 0 −M −M 1−M 1 1−M 2−M 2 vj 3−M 3 −1 −1 −1 3 −1 −1 0 ui 0 −1 −1 0 La solución actual es óptima. se obtiene: . mes 1 mes mes mes mes 1 2 3 4 mes 2 mes 3 mes 4 mes. mes 1 mes mes mes mes 1 2 3 4 mes 2 mes 3 mes 4 mes. Introduciendo esta variable en la base pueden hallarse soluciones alternativas. ya que hay una variable no básica con costo reducido nulo (la de la posición (1. 9 20 5 5 40 50 20 20 6 9 20 5 11 20 25 40 25 Los costos reducidos correspondientes a esta solución. Multiplicando la solución obtenida por 100.

5. 900 2000 500 500 4000 5000 2000 2000 600 900 2000 500 1100 2000 2500 4000 2500 Un plan de producción óptimo. Tercer mes : fabricar 4000 unidades y vender las almacenadas de los meses anteriores (500 + 500). El coste de producción y almacenamiento con esta solución es: 900 × 100 + 2000 × 100 + 4000 × 200 + 2000 × 300 + 500 × 200 + 500 × 300 = = 1940 000 u.m. que coincide con la demanda de este mes (no se alcanza la producción máxima. ya que hay 500 unidades asignadas a una demanda ficticia). Como era de esperar. Cuarto mes : se fabrican 2000. PROBLEMA DE PLANIFICACIÓN DE LA PRODUCCIÓN 153 mes 1 mes mes mes mes 1 2 3 4 mes 2 mes 3 mes 4 mes.m. consiste en: Primer mes : fabricar 1400 unidades (las 600 unidades correspondientes a la demanda ficticia no se fabrican). Segundo mes : fabricar 2500 unidades. 2000 de ellas cubren la demanda del mes y 500 se guardan para el siguiente mes. Fic. Con ellas se cubre la demanda del primer mes (900) y se almacena 500 unidades hasta el tercer mes. este coste es idéntico al obtenido con la primera solución. .13. Fic. Si introducimos en la base la variable de la posición (1. completando la demanda que es 5000. aunque no el único. 900 500 1500 600 1000 4000 5000 2000 2000 500 1100 2000 2500 4000 2500 900 2000 cuyo coste es 900×100+500×200+1500×100+1000×200+4000×200+2000×300 = 1940 000 u. 2) se obtiene la solución alternativa: mes 1 mes mes mes mes 1 2 3 4 mes 2 mes 3 mes 4 mes.

EL PROBLEMA DE TRANSPORTE .154 TEMA 5.

Tema 6

Modelos de Redes
6.1 Redes. Conceptos básicos

Grafo: Llamaremos grafo a un par {V, A} donde V es un conjunto de elementos llamados vértices o nodos y A ⊂ V × V otro conjunto cuyos elementos son los arcos. Si (a, b) es un elemento de A, a se llama origen y b extremo. En la figura 6.1 está representado un grafo cuyos vértices son V = {0, 1, 2, n} y cuyos arcos son A = {(0, 1)(0, 2)(1, 2)(2, 1)(1, n)(2, n)} .A veces se describe un Grafo por medio de una matriz de incidencia que es una matriz con tantas columnas como arcos y tantas filas como elementos. Así el mismo grafo de la figura 6.1 puede también venir expresado por medio de esta matriz de incidencia:

2

0

n

1

Figura 6.1: Ejemplo de un grafo. 155

156 (0,1) 1 -1 0 0 (0,2) 1 0 -1 0 (1,2) 0 1 -1 0

TEMA 6. MODELOS DE REDES (2,1) 0 -1 1 0 (1,n) 0 1 0 -1 (2,n) 0 0 1 -1

0 1 2 n

Cada celda se marca con 1 si el vértice de su fila es el origen del arco de su columna y con -1 si es el extremo. Se rellenan con ceros el resto de las celdas. Otro tipo de matriz de incidencia más simple se construye de la forma siguiente: si existe el arco (i, j) hay un 1 en el elemento (i, j) de la matriz. En caso contrario hay un 0 0 0 1 2 n 1 1 1 2 1 1 n 1 1

Una red es un grafo cuyos arcos tienen asociada alguna medida. Red bilateral: es una red que admite ambas orientaciones en los arcos. En este caso los arcos se llaman aristas. Una red sin aristas (no admite ambas orientaciones en los arcos) se llama Red Dirigida. Una red con aristas puede transformarse en una red dirigida por medio de la transformación indicada en la figura 6.2.

0

A

A
3 3 3

A’

B

B
0

B’

Figura 6.2: Diagrama de transformación en red dirigida. Un vértice sin arco se llama aislado. Un lazo es un arco cuyo origen y extremo coinciden.

6.2. CAMINOS DE LONGITUD MÍNIMA

157

Una cadena es una sucesión de arcos adyacentes (arcos consecutivos que tienen en común un vértice). Un camino o ruta es una sucesión de arcos adyacentes del mismo sentido (el extremo de un arco es el origen del siguiente). Un ciclo, circuito o camino cerrado es un camino en el cual el último extremo coincide con el primer origen.

6.2

Caminos de longitud mínima

Suponemos que cada arco de la red tiene asociado un número que podría interpretarse como la distancia entre su origen y extremo (longitud del arco). La longitud de un camino es la suma de las longitudes de sus arcos. El problema dej camino de longitud mínima consiste en seleccionar entre todos los caminos que unen dos nodos concretos, el camino más corto para ir de uno de los nodos al otro. En el problema de longitud mínima, el número asociado a cada arco puede tener otras interpretaciones (tiempo, coste, etc...). El problema de longitud mínima puede interpretarse como un problema de transbordo de la forma expresada en el siguiente ejemplo. Ejemplo 66 Una compañía quiere enviar un pedido desde la planta de producción a un cliente. Los nodos son cruces por donde pueden circular sus camiones y los números de los arcos el coste de enviar cada camión por el trayecto representado por este arco. ¿Cuál es el camino más barato? La red asociada es la que aparece en la figura 6.3.El problema de la ruta mínima puede verse como un problema de

Planta 1 15 20

2 15 4 10 10

3 15 5 10

6 Cliente

Figura 6.3: Red de distribución del ejemplo. transbordo donde hay que transportar una unidad desde la planta de producción (Origen) al cliente (Destino). Los cruces de carretera (Vértices de la red) son puntos de transbordo. En este caso la tabla inicial sería:

158 Nodos 1 2 3 4 5 deman. 2 20 0 M M M 1 3 15 M 0 M M 1 4 M 15 M 0 M 1

TEMA 6. MODELOS DE REDES 5 M 10 15 M 0 1 6 M M M 10 10 1 dispon. 1 1 1 1 1

Como las disponibilidades y las demandas son siempre 1 también puede interpretarse como un problema de asignación. También puede plantearse como un problema de Programación lineal Binario: min 20x12 + 15x13 + 15x24 + 10x25 + 15x35 + 10x46 + 10x56 x12 + x13 = 1 x46 + x56 = 1 x12 − (x24 + x25 ) = 0 x13 − x35 = 0 x24 − x46 = 0 (x25 + x35 ) − x56 = 0 xij = 0, 1
(Sólo un arco del camino parte del vértice ORIGEN) (Sólo un arco del camino llega al vértice FINAL) (Si un arco del camino llega al nodo 2 ha de salir de él) (Idem nodo 3) (Idem nodo 4) (Idem nodo 5)

El camino mínimo esta formado por los arcos cuyo valor en la solución sea 1. Es posible que el problema tenga varias soluciones.

          s.a.         

6.3

Algoritmos de ordenación y de etiquetación

El algoritmo de etiquetación es un algoritmo específico para calcular el camino mínimo. Sólo es válido para redes dirigidas que no contengan ciclos. Paso 1: Numerar los nodos en orden creciente 1, 2, 3,...., n. Sea 1 el origen y n el destino. Se debe cumplir que si un arco lleva la orientación (i, j) entonces i < j. Para ordenar los nodos podemos emplear el siguiente algoritmo de ordenación: a ) Partir del modelo más simple de matriz de incidencia. b) Añadir una columna en la que anotamos el número de unos de la fila correspondiente, anotando en su parte inferior el nodo o nodos que tienen un cero en esta columna. c) Se tachan en la matriz de incidencia los unos de las columnas cuyos nodos se acaban de anotar y las filas de los nodos anotados. Si todos los vértices han sido ya anotados ir al Paso 1.d. En caso contrario ir al Paso 1.b.

Ej = min(Ei + dij . Paso 3: En es la longitud del camino mínimo. Mostramos los pasos del algoritmo en una tabla. . En lugar de eliminar los unos del nodo ya anotado. Si se desea hallar caminos de longitud máxima (que sólo tiene sentido en redes acíclicas) se emplea el algoritmo anterior sin más que modificar en el paso 2 min por max. Aplicamos el algoritmo de Ordenación al siguiente ejemplo Ejemplo 67 Ordenar el grafo de la figura 6. 2. B D G A E H J C F I Figura 6.6. .. continuaremos numerando los restantes en orden inverso al que han sido anotados.3. La fila tachada se marca con ‘x’: . Los arcos que lo forman son los que cumplen la fórmula de etiquetación : Ej = Ei + dij . 2. se ha incluido una nueva columna con las modificaciones. es decir: Ej = max(Ei + dij .. El camino se traza hacia atrás a partir del nodo n. considerando para j sólo los arcos directamente unidos al nodo i. i = 1. Paso 2: Poner una etiqueta a cada vértice Ei por orden ascendente de numeración del modo siguiente: E1 = 0. i = 1.j − 1).4.4: Ejemplo de algoritmo de ordenación. ALGORITMOS DE ORDENACIÓN Y DE ETIQUETACIÓN 159 d) Para numerar los nodos comenzamos numerando el último que se haya anotado en la última fila.j − 1) siendo aij la longitud del arco que une el nodo i con el nodo j.

I que están en la misma casilla pueden numerarse en distinto orden. G.5.5: Ejemplo de grafo ordenado. incluyendo las medidas de los arcos. Las etiquetas resultantes de aplicar el algoritmo están indicadas en cada nodo. 7. MODELOS DE REDES no A B C D E F G H I J de unos A B C D E F G H I J 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 3 1 4 1 2 1 2 0 1 0 1 x F J H G I 6 10 9 7 8 5 4 3 D E B 3 0 0 x 0 x 2 0 1 x x x 0 x 1 0 1 1 x 0 0 1 x C A 2 1 Los nodos F. Ejemplo 68 Hallar el camino mínimo desde el nodo 1 al 10 aplicando el algoritmo de etiquetación. La red. 8. Por lo tanto una ordenación posible es la de la figura 6. . 3 5 7 1 4 9 10 2 6 8 Figura 6. está representada en la figura 6. permutando los números 6.160 TEMA 6.6.

podemos usar el siguiente algoritmo de Dijkstra: Paso1 Asignamos al vértice Origen de camino una etiqueta permanente igual a 0. Paso 3 Elegir como permanente la mínima de las etiquetas temporales.4 Algoritmo de Dijkstra Este algoritmo es válido para redes con arcos no negativos. aunque es más sencillo sustituir los arcos de doble sentido por dos arcos. aunque sí dirigida. si existe el arco directo desde el vértice a 1. ALGORITMO DE DIJKSTRA 161 4 3 4 5 2 4 5 3 8 7 6 2 2 9 14 4 0 6 2 7 1 10 11 1 3 3 8 10 4 5 1 8 13 2 1 6 4 8 Figura 6.6. No necesita ser acíclica. La longitud del camino mínimo es 11 ( la etiqueta del vértice 10 ). Paso 2 Asignamos a los otros vértices etiquetas temporales igual a su distancia directa al origen. Para determinar el camino mínimo de 1 a n suponiendo que 1 es el origen y n el destino. Si no lo es.4. Si hay varias que coincidan. El camino mínimo es: 1 → 2 → 4 → 9 → 10.6: Ejemplo de Algoritmo de Etiquetación. puede hacerse la transformación indicada en el principio del tema. uno para cada sentido. 6. le asignamos la etiqueta temporal ∞. Si no es así. Paso 4 . elegir una de ellas arbitrariamente.

MODELOS DE REDES Sea j el vértice que ha recibido etiqueta permanente en el paso anterior. volver al paso 4.7. es el mínimo entre la anterior etiqueta temporal y la suma de la etiqueta permanente del vértice j más la distancia directa del vértice en consideración al vértice j. Ejemplo 69 Dada la red representada en la figura 6. Las etiquetas temporales se indican con ‘*’ y las permanente están recuadradas. Para localizar el camino se parte del vértice n y se resta su etiqueta de las distancia de los arcos que confluyen en n. las evolución de las etiquetas de los vertices cuando se aplica el algoritmo de Dijkstra. Para mayor claridad expresamos la longitud de los distintos arcos en una tabla: 0 1 2 3 4 1 7 2 12 7 3 21 12 7 4 31 21 12 7 5 44 31 21 12 7 En las siguiente tabla puede leerse. Aplicar esta condición sucesivamente hasta alcanzar el origen.7: Ejemplo de camino mínimo. Si hay varias iguales elegir una de ellas arbitrariamente. Paso 5 Hacer permanente la mínima de todas las etiquetas temporales.162 TEMA 6. Hallar el camino mínimo desde el nodo 0 al 5 y la longitud de este camino. . En otro caso. éste es el vértice precedente en el camino mínimo. se mantiene la anterior. por lineas. Si la última etiqueta permanente es la n. 31 31 12 12 2 7 7 12 3 7 12 4 7 5 0 7 1 21 21 21 44 Figura 6. si existe arco directo. La etiqueta de n es la distancia mínima. parar. Si no es así. La nueva etiqueta temporal de los vértices que no la tengan permanente. Cuando esta diferencia coincide con la etiqueta anterior.

31 es la distancia mínima entre los nodos 0 y 5 A continuación esquematizamos los pasos que hay que seguir para obtener el camino mínimo. vértice 0 Camino: 0 → 2 → 4 → 5. Ejemplo 70 En la red de la figura 6. 6. 28∗ 28. (12 − 12 = 0) . vértice 1. PROBLEMA DEL FLUJO MÁXIMO 0 0 1 7∗ 7 7 7 7 7 7∗ 2 12∗ 12∗ 12∗. 31∗ 31.8. 33∗ 33. de capacidad ilimitada. Queremos maximizar la cantidad de flujo que pase por el arco ficticio a. vértice 0 Camino: 0 → 2 → 3 → 5. 24∗ 24∗. 38∗ 38. Solución 3: vértice 5 (31 − 12 = 19) . vértice 3. tomamos como variables el flujo que debe pasar por cada arco. En este caso el problema tiene varias soluciones. Se denomina Capacidad de un arco a la cantidad máxima de producto que puede enviarse a través de éste y Flujo a la cantidad de producto realmente se envía. vértice 0 Camino: 0 → 1 → 3 → 5. F ).5.6. Solución 1: vértice 5 (31 − 7 = 24). 19 19 19 19∗ 4 31∗ 31∗ 31. 31∗ 31∗ 163 Como podemos observar. (19 − 12 = 7) . 19∗ 19∗. Longitud: 12 + 12 + 7 = 31. deseamos calcular el flujo máximo que puede enviarse de F a S. 14 12 12 12 12∗ 3 21∗ 21∗ 21. Para formular este problema como un problema de programación lineal. 26 24 24∗ 5 44∗ 44∗ 44.vértice 2. vértice 2. .5 Problema del flujo máximo En este problema se supone que hay que enviar una determinada cantidad de un producto (Flujo) desde un nodo que denominamos Fuente a otro que denominamos Sumidero. Solución 2: vértice 5 (31 − 12 = 19) . Longitud: 12 + 12 + 7 = 31. (12 − 12 = 0) . (24 − 12 = 12). Creamos el arco ficticio a = (S. (7 − 7 = 0) . vértice 3. vértice 4. (19 − 7 = 12) . Longitud: 12 + 12 + 7 = 31. Llamamos xn0 el flujo que pasa por a.

x12 = 1. Veamos cómo se puede conseguir un problema de flujo máximo equivalente al problema del ejemplo 5. x02 = 1. MODELOS DE REDES 1 S 2 xn0 Figura 6. x2n = 2. x12 ≤ 3. El problema de emparejamiento puede interpretarse como un problema de flujo máximo.8: Ejemplo de flujo máximo. j En nuestro problema el planteamiento sería max z = xno           s.164 4 1 2 3 F 3 2 3 TEMA 6. xn0 = 3. max z = xn0 0 ≤ xij ≤ aij (El flujo de un arco no puede exceder su capacidad) s. ∀ l (El flujo que entra en cada nodo es igual al que sale) i. x3n = 1.a. : xil − xlj = 0. El problema admite otras soluciones óptimas.12 de la página 149. x02 ≤ 3. así que el flujo máximo es z = 3. Las tareas que puede realizar cada individuo están mar- .:          x01 ≤ 2. Ejemplo 71 Asignar 6 tareas a 5 individuos de modo que se realice el mayor número posible de tareas. x3n ≤ 1 xno − (x01 + x02 ) = 0 x01 − (x13 + x12 ) = 0 x12 + xo2 − x2n = 0 x13 − x3n = 0 x3n + x2n − xno = 0 xij ≥ 0 Una solución óptima es x01 = 2. x13 ≤ 4.a. x2n ≤ 2. x13 = 1.

Se define capacidad del corte. como la suma de las capacidades de los arcos que tienen su origen en X y su extremo en X ′ . X ′ ) en el conjunto de los vértices de una red. pacidad. El problema consiste en enviar la mayor cantidad de flujo de la fuente al sumidero. .6 6.9.6. 6.6. ALGORITMO DE FORD-FULKERSON cadas con un 1. X ′ ). q(X. de modo que la fuente pertenece a X y el sumidero a X ′ . ficticio T1 1 1 T2 1 1 1 1 1 1 1 1 1 1 1 1 1 T3 T4 1 T5 T6 165 El grafo correspondiente es el de la figura 6.6.Todos los arcos tienen 1 de ca1 T1 2 F T2 S 3 T3 4 T4 5 T5 T6 Figura 6. llamamos corte al conjunto de los arcos que unen un vértice de X con uno de X ′ . Se define flujo de X a X′ . f (X. 1 2 3 4 5 Ind.9: Grafo del problema de emparejamiento. como la suma de los flujos de los arcos que tienen su origen en X y su extremo en X ′ .1 Algoritmo de Ford-Fulkerson Flujo de un corte Si consideramos una partición (X. X ′ ).

Paso 1 Señalar los arcos con A y/o D según la regla anterior. El Algoritmo de Ford-Fulkerson se usa para calcular el flujo máximo que puede circular por una red. j) es miembro de A. Paso 2 Etiquetar los nodos de la forma siguiente: Si el arco (i.2 Algoritmo de Ford-Fulkerson Dada una solución factible del problema de flujo máximo se definen como arcos A los arcos no saturados (que no aprovechan al máximo su capacidad y podrían tomar valores más altos) y como arcos D los arcos cuyo flujo es positivo (por lo tanto pueden tomar valores más bajos). Teorema 13 (de Ford Fulkerson) El flujo máximo coincide con la capacidad del corte que tenga menor capacidad. 6. el nodo j tiene etiqueta y el nodo i no la tiene. Consiste en: Paso 0 Obtener una solución factible. Continuar así hasta que se etiquete el sumidero o no haya más vértices sin etiqueta. etiquetar el nodo j con +i (arco directo). Mejoramos la solución anterior del modo siguiente: Calculamos para cada arco directo de la cadena marcada la cantidad (aij −xij ) en que el flujo puede ser aumentado y para los arcos inversos la cantidad en que puede disminuir que es xij . Sea k el . Si el arco (i. el nodo i tiene etiqueta y el nodo j no la tiene. j) es miembro de D. MODELOS DE REDES Teorema 12 El flujo desde la fuente al sumidero para cualquier solución factible es menor o igual que la capacidad de cualquier corte. Es preferible comenzar con una solución mejor que se puede conseguir recorriendo caminos y asignando el flujo máximo permitido a sus arcos (los arcos saturados no intervendrán en nuevos caminos a los efectos de formar esta solución inicial). En caso contrario ir al paso 3. Etiquetar la fuente con la etiqueta (+0).6.166 Se cumplen las propiedades siguientes: TEMA 6. etiquetar el nodo i con −j (arco inverso). Paso 3 Si se ha alcanzado el sumidero. tendremos una cadena etiquetada. Se puede comenzar poniendo todos los flujos xij =0. Si no se puede alcanzar el sumidero la presente solución es óptima.

0 Flujo = 1 . Volver al paso 1 con esta nueva solución.1. En el grafo vienen marcados los arcos A y D.6.4. obtenemos la solución de la figura mejorada con flujo 1.1.4. Sumamos k al flujo de los arcos directos y se lo restamos al flujo de los arcos inversos teniendo una nueva solución factible que mejora la anterior.2.2.3.D.0 [+0] F S [+3] A.3.2.0 A.1 A. Resolvemos ahora el ejemplo de la figura siguiente con este algoritmo.1 3 [+1] D.0 A. y se han puesto las etiquetas que marcan el camino F −→ 1 −→ 3 −→ S.0 [+0] F S [+3] A.1 A.0 2 A. Partimos de una solución en que todos los flujos son nulos. Por tanto.0 3 [+1] A.D.3.3.6. [+F] 1 A.2.0 2 A. ALGORITMO DE FORD-FULKERSON 167 mínimo de todas estas cantidades asignadas a los arcos de la cadena.0 Flujo = 0 En este camino todos los arcos pueden aumentarse en 1. [+F] 1 A.

1 3 D.4.2 Flujo = 1+2=3 Si empleamos de nuevo el algoritmo veremos que ya no se puede alcanzar el sumidero. Por este camino se pueden enviar 2 unidades como máximo.1.1 A.3.D. 3} .1.0 2 [+1] D. Hacemos ahora el problema de otra forma para mostrar un ejemplo del uso de arcos inversos.D. 1. 2. Partimos de la solución de la figura: [+F] 1 A. Tenemos la solución óptima indicada en la figura anterior.2 A.0 [+0] F S [+2] A.2 2 [+F] D. así que el flujo no puede ser superior a 3.2.D.2 Flujo = 2 Marcamos ahora la cadena F −→ 2 ←− 1 −→ 3 −→ S.2. .0 D.3.2 [+0] F S [+2] A.2. X ′ = {S} tiene una capacidad 3. MODELOS DE REDES Ahora se procede a marcar el camino F −→ 2 −→ S.0 3 A.D. Por lo tanto el flujo permitido que se puede aumentar en este camino es de 2 unidades y como consecuencia el flujo total es ahora 3.4.1 A.168 TEMA 6.3. puesto que el corte X = {F. 1 A.3.2.

4.3.2.2.D.0 D. Una vez modificados los flujos de la cadena marcada con las etiquetas obtenemos una solución mejorada que es otra solución óptima: [-2] 1 A.1.1 [+0] F S [+3] A.3. Si .4.2.1 D.2 A.1.2.0 3 [+1] A.2 Flujo = 2 En la cadena marcada podemos añadir 1 en los arcos directos y restar 1 en los inversos.2 Flujo = 2+1=3 6.2 [+0] F S [+3] A.D.1 2 [+F] D.D. CPM Y PERT 169 [-2] 1 A.2 A.D.7 CPM y PERT Los modelos de redes pueden servir para esquematizar y ayudar en la planificación de proyectos complejos que requieren la realización de un gran número de actividades.6.3.7. y que se caracterizan porque antes de realizar algunas de ellas tienen que haber sido realizadas otras (que llamaremos actividades precedentes o predecesoras).0 2 [+F] D.1 3 [+1] D.3.

Debe haber un nodo final (n) que representa la terminación del proyecto. Las redes de proyectos han de cumplir las normas siguientes: 1. los arcos representan las actividades. 3. La numeración de los nodos debe cumplir la condición de que el nodo que representa el fin de una actividad debe ser nombrado con un número mayor que el que representa su inicio. Los nodos indican el comienzo de las actividades que tienen en él su origen y la terminación de las actividades que lo tienen por extremo. 2. Para aplicar uno de estos métodos se requiere conocer la lista de las actividades que forman el proyecto. Para respetar las reglas 4 y 5 a veces es necesario utilizar actividades ficticias con duración 0. Las redes se utilizan para representar la relación de precedencia entre las actividades. Ambos métodos fueron empleados en 1950 en relación con el desarrollo de los misiles Polaris. MODELOS DE REDES se conoce con certeza la duración de estas actividades se usa el procedimiento CPM (Critical Path Method). Cada actividad estará representada en la red por un solo arco. el método PERT (Program Evaluation and Review Technique) nos dará la probabilidad de que el proyecto sea realizado en un cierto tiempo. Dos nodos no pueden ser conectados por más de un arco. el proyecto se concluyó dos años antes de lo que en principio se había estimado.170 TEMA 6. Debe haber un nodo inicial (1) que representa el comienzo del proyecto. Gracias a estos métodos. Un proyecto está terminado cuando lo están todas sus actividades. Para cada actividad hay un conjunto de actividades (sus predecesoras) que deben ser completadas antes que la actividad considerada comience. Si la duración de ejecución de las actividades no es conocida con certeza. Los arcos que parten del nodo 1 representan las actividades que no tienen predecesoras. Un ejemplo de aplicación de estas normas: Si las actividades A y B comienzan al mismo tiempo y ambas preceden a C no se representa en la forma: a a c b sino de la forma: . 5. 4. En este caso.

6. En la siguiente relación están indicadas las actividades.e Duración 24 36 32 28 40 48 Una representación del problema se da en la siguiente red.1 Algoritmo CPM Para el algoritmo de CPM definimos para cada actividad los tiempos siguientes: P C = lo más pronto que puede comenzar. Uno de estos componentes requiere un cierto tiempo de secado antes de ser montado para componer el producto final.M) Para un cierto producto se requieren dos componentes y un cierto número de trabajadores y materiales. .6. CPM Y PERT a c 171 b artificial para cumplir la regla 5. a 24 c 3 28 d art. Ejemplo 72 (C. T C = lo más tarde que puede comenzar sin que se retrase el fin del proyecto. Actividades a = contratar trabajadores b = conseguir el material c = producir el componente 1 d = producir el componente 2 e = tiempo de secado del componente 2 f = ensamblar ambos componentes Predecesoras a. su duración y las actividades que la preceden inmediatamente.b d c.7.P. 0 2 4 40 e 32 5 48 f b 36 6 1 Red del proyecto.b a. P T = lo más pronto que puede terminarse.7.

Resolución del ejemplo 72 usando el presente algoritmo: Actividades a = contratar trabajadores b = conseguir el material artificial c = producir el componente 1 d = producir el componente 2 e = control calidad componente 2 f = ensamblar componentes Pred.e Dur 24 36 0 32 28 40 48 PC 0 0 36 36 36 64 104 PT 24 36 36 68 64 104 152 TT 36 36 36 104 64 104 152 TC 12 0 36 72 36 64 104 Holg. Paso 2: Proceder del modo siguiente con las demás actividades. El resto de las actividades tienen holgura (holgura = T T −P T ). art a. Paso 3: Comenzar con las actividades que terminen en el fin del proyecto (de mayor P T ). La longitud de este camino es 152 (tiempo mínimo necesario para terminar el proyecto). 12 0 0 36 0 0 0 Las actividades que forman el camino crítico son las que tienen holgura nula. Por lo tanto este camino es: b → act. o Cuando todas las actividades tengan P C y P T ir al paso 3. Su valor P T = P C+ duraci´n de la actividad. y pueden adelantarse o retrasarse en el valor de la holgura sin afectar al tiempo global de ejecución del proyecto. Paso 5: Las actividades con P T = T T forman el Camino Crítico (son las actividades que no pueden sufrir retrasos ni adelantos sin que afecte al tiempo de conclusión del proyecto). El algoritmo consta de los pasos siguientes: Paso 1: Comenzando con las actividades que parten del origen tomamos P C = 0 y o P T = su duraci´n. Este problema puede también resolverse por programación lineal. Obsérvese que el camino crítico es el camino más largo que podemos recorrer para ir del inicio (nodo 1) al fin del proyecto (nodo 6).172 TEMA 6. b a. ficticia → d → e → f. o Paso 4: Proceder de la siguiente forma con las actividades anteriores siguiendo un orden decreciente. MODELOS DE REDES T T = lo más tarde que puede terminar sin que se retrase el fin del proyecto. Cuando todas las actividades estén etiquetadas ir al paso 5. Las actividades a y c pueden retrasarse como máximo en el valor dado por su holgura. Su valor T T es el menor T C de las actividades que le siguen. Sea tj el valor PC de las actividades que parten de j (la hora en la que se han terminado todas las . Su valor T C = T T −.art d c. T T es el mayor P T obtenido en el paso anterior y T C = T T − su duraci´n. Su valor PC es el mayor PT de las actividades precedentes.

i. si el problema tiene un gran número de actividades se puede considerar que el tiempo total empleado en la ejecución de las actividades que forman el camino crítico es una variable aleatoria que se distribuye normalmente. t5 − t3 ≥ 32. m = duración más probable (la moda). d. asignando a las actividades una duración que es la estimación de su media. j < k. aunque por lo general sólo es posible realizar algunas estimaciones sobre la duración de las actividades. g < h. y por tanto se puede hallar la probabilidad de que el tiempo de ejecución del proyecto esté dentro de un intervalo dado. h. CPM Y PERT 173 actividades que terminan en el nodo j) y t1 la hora en que se comienza a ejecutar el proyecto. 6. De cada actividad se . t4 − t3 ≥ 28 t5 − t4 ≥ 40. puede estimarse como: E (Tij ) = a+4m+b 6 var (Tij ) = (b−a)2 36 . Por tanto. c. Otra opción podría ser tomar el origen en t1 = 0 y todas las variables no negativas. b < c. También se puede optar por hallar el camino más largo desde el inicio al final del proyecto. Tij .6.2 El método PERT El algoritmo CPM presupone que la duración de cada actividad es conocida con exactitud. c < d. h. la media y la varianza del tiempo requerido para realizar el proyecto completo está dado por las sumas de las duraciones medias correspondientes a las actividades críticas (suponiendo que las fluctuaciones aleatorias en el tiempo de ejecución de las actividades no afecten al establecimiento de las actividades que son críticas). f. i < j. t6 − t5 ≥ 48. Las relaciones entre las actividades son: a < b. f. El problema se plantearía como: min s. b = duración en las condiciones más desfavorables. Ejemplo 73 Un proyecto se compone de las actividades a.7.a : Z = t6 − t1 t3 − t1 ≥ 24. independientes. Se suele suponer que los tiempos de ejecución de lcada actividad es una variable aleatoria (Tij ) que sigue una distribución Beta.7. b. Bajo la hipótesis de que la duración de las actividades siga una distribución Beta la media y varianza de la variable aleatoria tiempo de duración de cada actividad. d < f. t2 − t1 ≥ 36. b < e. Si las duraciones de las distintas actividades son v. El método PERT parte de tres estimaciones del tiempo empleado en realizar cada una de las actividades: a = duración de la actividad en las condiciones más favorables. e. a. e < g. t3 − t2 ≥ 0 Todas las variables sin restricciones de signo. g. El primer paso del método PERT es aplicar el método CPM. j y k. E (Tij ) . e < i.

333 3. 166 7. Hallar el camino crítico. i 6 e 7 j g c 3 4 d 5 f 8 h 9 k 10 a 1 2 b 2. MODELOS DE REDES han obtenido tres estimaciones sobre su duración en semanas: Actividad to tm tp a 1 2 4 b 1 1. 2. tf = = 1. 3. 6 Hallamos el camino más largo.0.5 + 2 ti = = 3.5 + 3 1+4×2+4 = 2. 166 7. 083 3. 5. la esperanza y la varianza de la duración del proyecto.5 2 k 1 1 2 1.5 3 c 3 5 10 d 4 6 11 e 2 4 6 f 1 1. 6 6 2+4×3+4 1 + 4 × 1. ¿De cuánto tiempo se debería disponer de manera que la probabilidad de terminar el proyecto en este tiempo fuera del 90%? 1.5 + 4 × 1 + 2 5+4×6+9 tg = = 1.0. 666 7. ¿cuál es la probabilidad de terminar el proyecto? 4. 666 7 6 6 0. ¿Cuál es la probabilidad de terminar el proyecto en no más de tres semanas después del tiempo esperado? 5. tj = = 1. 5. tb = = 1.5 + 3 te = = 4. Dibujar la red del proyecto. 6 6 1+4×1+2 tk = = 1. th = = 6. 5.5 1 2 h 5 6 9 i 2 3 4 j 1 1. td = = 6. 6 6 3 + 4 × 5 + 10 4 + 4 × 6 + 11 tc = = 5. ta = 1 + 4 × 1.174 TEMA 6.5 3 g 0. Si sólo se dispone de 21 semanas. Las etiquetas que corresponden a los nodos son: . 6 6 2+4×4+6 1 + 4 × 1.

914 9 ) (4−1)2 36 2 2 2 2 2 2 = P (z ≤ −2. siempre que las fluctuaciones en la duración de las actividades no afecten a la selección de las actividades críticas.0 semanas. P (Tp ≤ D) = 0. E (4) = 9. 088 9) = 0. .p914 9 ≤ T −25 21−25 1. No obstante. E (9) = 23. 6667. 914 9. La esperanza de la duración total del proyecto sería la suma de las esperanzas de los arcos del camino crítico (25).7. c) Que el camino crítico no siempre será el mismo (puede verse afectado por los cambios en la duración real de las actividades).9 =⇒ D = 27. 5 + 1. 333 3 + 1. E (8) = 10.83.941 4.83. E (3) = 3. 166 7 + 1. supondremos que ésto es así para poder ilustrar el método con un ejemplo que no precise de muchos datos. 5 + 6. E (10) = 24. 5. En este caso el número de actividades es demasiado pequeño para que la aproximación normal sea aplicable. = P (z ≤ = 4. E (5) = 7. La probabilidad de que no se demore más de 3 semanas sobre el tiempo previsto por la media es: P (Tp ≤ 28) = 0.6. 666 7 = 1. La esperanza del proyecto es 25. 166 7 = 25.16. 666 7 + 6. CPM Y PERT E (1) = 0.73. Algunas de estas dificultades se solucionan realizando una gran cantidad de simulaciones de la ejecución del proyecto por el método Montecarlo y estimando la probabilidad pedida a partir de los resultados obtenidos en estas simulaciones (proporción de simulaciones con un tiempo de terminación menor que uno prefijado). 36 36 36 36 36 36 √ La desviación típica es 3. Dificultades de aplicación del método PERT Algunas objeciones pueden hacerse al método PERT: a) Que la duración de las actividades no suelen ser variables independientes. E (2) = 2. E (6) = 15. 454 Se debe disponer aproximadamente de 27 semanas y media.83. 914 9 ) 21−25 1.43.33. Calculamos ahora su varianza: V arianza = V a + V b + V c + V d + V f + V h + V k = + (3−1) + (10−3) + (11−4) + (3−1) + (9−5) + (2−1) = 3. E (7) = 17. b) Que los tiempos de duración de las actividades quizás no sigan distribuciones Beta. = 3.018. El camino crítico es a → b → c → d → f → h → k.83.89 175 2. La probabilidad de acabar el proyecto en 21 semanas es: P (Tp ≤ 21) = P ( 1. 666 7 + 5.

176 TEMA 6. MODELOS DE REDES .

Estos problemas se suelen llamar Problemas de Programación entera 0-1 o de Programación Booleana.1 Introducción Un problema de Programación entera Pura (PE) es un problema de Programación Lineal (PL) que ha de tener soluciones enteras.a : z = 10 x1 + 33 x2 . A continuación mostramos con un ejemplo que la solución del problema relajado puede no ser una buena aproximación de la solución del problema de programación entera correspondiente. 177 .Tema 7 Programación Entera 7. x1 + 3. Si sólo algunas de las variables han de tomar valores enteros. es también solución del problema entero correspondiente. b) Si el problema relajado tiene solución entera óptima. x2 ≥ 0 y enteras. el problema es de Programación entera mixta. Algunos de estos problemas sólo admiten como soluciones los valores 0. Ejemplo 74 Resolver el problema de programación entera siguiente: max s. x1 .2x2 ≤ 7. c) El valor del objetivo en la solución óptima de un PE (con objetivo de maximización/minimización) es menor/mayor que la solución óptima de su relajación. Se cumplen las siguientes propiedades: a) La región factible de un PE está contenida en la región factible de su relajación.1. La relajación de un problema de Programación Entera se obtiene suprimiendo la condición de que las variables sean enteras.

1} Con el mismo planteamiento se haría el problema siguiente: Ejemplo 76 Se está considerando invertir en 4 siguiente: tipo de negocio inversión 1 11 2 13 3 9 4 5 negocios. x2 = 2. PROGRAMACIÓN ENTERA Resolviendo el problema relajado se obtiene la solución x1 = 0.178 TEMA 7. con z = 72. El planteamiento del problema sería max : 8x1 + 11x2 + 6x3 + 4x4 s. que no es óptima. xi ∈ {0. Podemos elegir los objetos siguientes con los pesos y utilidad descrita en la tabla: objeto 1 2 3 4 peso 11 13 9 5 utilidad 8 11 6 4 Elegir los objetos que se han de meter en la mochila para obtener máxima utilidad.2. Puede también desecharse la aproximación por exceso (0. 2). si la solución del problema relajado fuese entera ésta sería obviamente la solución óptima del problema de programación entera. 0) es una solución factible para el problema entero y su valor para la función objetivo es z = 70 que es mejor que 66. 3) ya que no es solución factible. No obstante. ya que puede comprobarse que (7.1875 La solución por redondeo sería (0.2 7. descritos de la forma ganancia 8 11 6 4 . con valor 66 para la función objetivo.1 Algunos problemas de programación entera El problema de la mochila Ejemplo 75 El peso máximo que puede entrar en una mochila es de 28 Kg.a : 11x1 + 13x2 + 9x3 + 5x4 ≤ 28.1875. 7.

. ui .7.. Las restricciones que se han de añadir para evitar obtener una solución con subrutas separadas pueden ser: ui − uj + nxij ≤ n − 1. 4. Las variables pueden ser xij con valor 1 si viaja de i a j y 0 si no viaja por este trayecto. la solución x12 = x21 = x34 = x43 = 1 con las restantes incógnitas nulas que está representada en la gráfica de la figura 7. i. Las primeras n ecuaciones indican que desde cada ciudad i viaja a una única ciudad. 3.n i=1. 4. El planteamiento del problema podría ser: min   sa :  cij xij xij = 1 ∀ i xij = 1 ∀ j j=1. j = 2. uj ≥ 0 (7. En efecto. 3.2. 2. Pero este planteamiento admite soluciones de subrutas separadas (ver ejemplo 78). obtengo 8 ≤ 6. Como ambas incógnitas toman el valor 1. Por lo tanto esta solución no sería factible para el problema del viajante. n. i = j.1 con una única restricción.2. ALGUNOS PROBLEMAS DE PROGRAMACIÓN ENTERA 179 Si sólo disponemos de 28 millones ¿En qué negocios debemos invertir para que la ganancia sea máxima? El problema de la mochila es un problema de programación 0. El orden en que se visiten las ciudades no es relevante. .n xij = 0. la subruta de la derecha. 1 con cii = M para evitar xii = 1. cij es la distancia entre la ciudad i y la ciudad j y n es el número total de ciudades que han de visitarse.2 Problema del viajante Ejemplo 77 Un viajante tiene que visitar n ciudades sólo una vez y volver a su ciudad de origen. Las segundas n restricciones indican que cada ciudad se alcanza sólo una vez.1. Las ecuaciones que corresponden a los arcos son: u3 − u4 + 4x34 ≤ 3 y u4 − u3 + 4x43 ≤ 3. 7. Por este motivo no se puede resolver por asignación ya que hay que imponer nuevas condiciones para eliminar ciertas soluciones que serían válidas para un problema de asignación pero no para el del viajante. El objetivo es minimizar la distancia total recorrida. no cumple las condiciones de las inecuaciones 7.1) Ejemplo 78 Comprobar que si las ciudades son 1. Sumando ambas inecuaciones se obtiene 4x34 + 4x43 ≤ 6.1 no es factible para el problema del viajante.

PROGRAMACIÓN ENTERA 1 3 2 4 Figura 7. Se pretende maximizar los beneficios semanales. bolsos y zapatos. para hacer bolsos una máquina por 150 euros por semana y para los zapatos el gasto en maquinaria es de 100 euros por semana. Para hacer monederos debe alquilar una máquina que supone un gasto de 200 euros por semana. Tomamos como variables xi e yi . sino del hecho que se fabrique o no el producto que precisa cada tipo de máquina.2. Estos costes no dependen del número de productos de cada tipo que se fabriquen. Para realizar estos productos necesita alquilar maquinaria adecuada. 7. Las variables yi toman el valor 1 si se fabrican productos de la clase i. (en este caso es necesario alquilar la maquinaria correspondiente) y toman el valor 0 si no se fabrican (no es preciso alquilar la maquinaria correspondiente). El planteamiento de este problema puede ser: Max (8x1 + 20x2 + 15x3 ) − (4x1 + 10x2 + 8x3 ) − (200y1 + 150y2 + 100y3 ) sujeto a: 2x1 + 3x2 + 6x3 ≤ 140 .3 Problema de costo fijo Ejemplo 79 Un artesano fabrica tres tipos de productos de piel: monederos. Las variables xi indican el numero de productos de cada clase que se fabrican. El tiempo y la piel empleada en cada tipo de producto viene dada por la tabla: monederos bolsos zapatos costo 4 10 8 precio de venta 8 20 15 horas de trabajo 2 3 6 piel empleada 3 4 5 Dispone de 140 horas de trabajo y de 160 metros cuadrados de piel.180 TEMA 7.1: Grafo de subrutas separadas. Se llaman costes fijos a los costes de alquiler de maquinaria.

aparte de ser poco eficiente. x2 ≥ 0 17 4 . Los números de los problemas indican el orden en que se han ido planteando y la letra el orden en que se han resuelto. z = 40. 1}. Explicaremos el algoritmo de ramificación aplicándolo al ejemplo siguiente: Ejemplo 80 Resolver el problema de programación lineal entera max sa : z = 5x1 + 6x2 10x1 + 3x2 ≤ 52 2x1 + 3x2 ≤ 18 x1 . ésta será también solución del PE. En primer lugar resolvemos el problema relajado. Pero este procedimiento. es decir que siempre que xi sea mayor que 0. max sa : La solución de este problema es x1 = x2 = 19 6 . 181 Además hay que añadir una restricción que garantice que se alquile la maquinaria necesaria para cada tipo de producto que se fabrique. yi ha de ser 1. Con este objeto añadimos las restricciones: xi ≤ Mi yi . donde Mi es un número positivo suficientemente grande. no es aplicable si la región factible no fuera acotada. así que existe la posibilidad de explorar uno a uno cada punto. EL ALGORITMO DE RAMIFICACIÓN Y ACOTACIÓN 3x1 + 4x2 + 5x3 ≤ 160 xi enteros yi ∈ {0. 7. Un método de resolución de los problemas de programación Entera es el algoritmo de Ramificación y Acotación que básicamente opera dividiendo la región factible en zonas. y excluyendo las zonas donde no puede estar la solución.7. Una propiedad que hay que tener en cuenta al aplicar este algoritmo es que si el problema relajado tiene soluciones enteras. La región factible de este problema es la de la figura 7.25. En este caso el problema relajado es: Problema 1 z = 5x1 + 6x2 10x1 + 3x2 ≤ 52 2x1 + 3x2 ≤ 18 x1 . x2 ≥ 0 y enteras Conviene seguir el procedimiento de resolución de este problema mirando el esquema de la figura 7.3.4 en la página 184.2.3 El algoritmo de ramificación y acotación Si el problema entero tiene una región factible acotada el número de soluciones posibles es finito. .

x2 = 3. no ha de considerarse puesto que no puede contener ningún punto con x1 entera.182 TEMA 7. Decimos que el problema 4 es un problema terminal (no hay que . La solución del problema 4 es x1 = 4. z = 40. b) Problema 5 = Problema2 + restricción x2 ≥ 4. Como esta solución no es entera volvemos a ramificar con respecto a la variable x2 que no es entera. Como una de las regiones no contiene soluciones factibles solamente tenemos que resolver los dos subproblemas siguientes: Problema 2 z = 5x1 + 6x2 10x1 + 3x2 ≤ 52 2x1 + 3x2 ≤ 18 x1 ≤ 4 x1 . x2 = 3. PROGRAMACIÓN ENTERA Figura 7. 4 < x1 < 5 y x1 ≥ 5.2: Región factible del problema relajado. Elegimos una variable con solución no entera. Dividimos la región factible en tres partes correspondiente a las regiones x1 ≤ 4. 4 Consideremos los dos valores enteros más cercanos a esta solución (4 y 5). que corresponde a 4 < x1 < 5. Es decir. z = 38. La solución del problema primitivo será la mayor de las soluciones de los dos problemas en que hemos ramificado. Ramificar un problema quiere decir dividir su región factible en partes y hallar la solución de cada una de las partes. Sea ésta la variable x1 = 17 = 4. Resolviéndolo. obtenemos la solución x1 = 4. Como es entera la registramos como solución candidata y el valor z = 38 como cota inferior de la función objetivo. La región intermedia.25.3. Elegimos como para continuar resolver el problema 2. x2 ≥ 0 Problema 3 z = 5x1 + 6x2 10x1 + 3x2 ≤ 52 2x1 + 3x2 ≤ 18 x1 ≥ 5 x1 . que dividimos el problema 2 en dos subproblemas: a) Problema 4 = Problema2 + restricción x2 ≤ 3. x2 ≥ 0 max sa : y max sa : La región factible de estos dos subproblemas está representada en la figura 7.3.

Como 3 tenemos una solución candidata anterior con mejor valor para el objetivo (29 < 39). z = 39. . x2 = 2 . EL ALGORITMO DE RAMIFICACIÓN Y ACOTACIÓN 183 Figura 7. • Se elige el siguiente problema a resolver arbitrariamente.1 Resumen Reglas de Ramificación: • Se ramifica a partir de una variable no entera. Reglas de Acotación (caso maximizante): Son problemas terminales los siguientes: • Los problemas Infactibles. 7. También este problema es terminal.3. Volvemos ahora al problema 3.3. Con esto hemos terminado todos los problemas de esta rama. declaramos el problema como terminal y no seguimos ramificando.3: Regiones factibles de los problemas 2 y 3. Su solución es x1 = 5. En el ejemplo hemos seleccionado el último problema creado no resuelto.7. seguir ramificando). En nuestro caso la solución óptima del problema entero planteado es por tanto x1 = 3. Resolviendo el problema 5 obtenemos la solución x1 = 3. • Cuando lleguemos a un problema terminal para elegir el que se resuelve a continuación se usa algún criterio. Cuando ningún nuevo problema puede ramificarse (porque se han declarado todos como terminales) se selecciona la solución óptima: la solución candidata con mejor valor para la función objetivo. x2 = 4. x2 = 4. z = 29. z = 39. También se usa a veces el criterio de resolver primero el problema con mejor cota para la función objetivo. Por tanto la consideramos solución candidata y registramos su valor como cota inferior del objetivo ya que mejora la anterior cota que era 38.

PROGRAMACIÓN ENTERA Problema 1. Problema terminal Figura 7. Z = 38 cota = 38 Solución candidata. cota =0 x1 ≤ 4 Z = 161/4 x1 ≥5 Problema 2. x2 = 9/6. x2 = 10/3.C x1 = 4.A x1 = 17/4. x2 = 3. Z = 39 cota=39 Solución candidata.184 TEMA 7. Método de Ramificación y Acotación . Problema terminal Problema 5. Z = 29 cota = 39 Terminal por ser superado por la cota del problema D x2 ≤3 x2 ≥4 Problema 4.B x1 = 4. Z = 40 Problema 3.E. x2 = 2/3.E x1 = 5.4: Diagrama de resolución del P. x2 = 4.D x1 = 3.

Este algoritmo elimina en la región factible porciones donde está la solución del problema relajado pero no puede estar la solución entera óptima. Tomamos. Para explicar la filosofía de este algoritmo lo usamos para resolver de nuevo el problema del ejemplo 80. por ejemplo.7. La tabla óptima es: x1 1 0 0 x2 0 1 0 h1 h2 1 −8 5 12 15 8 x1 x2 1 8 1 − 12 1 8 17 4 19 6 Para aplicar el algoritmo de Gomory seleccionamos un contraste en el que la variable básica tome un valor fraccionario. x2 ∈ Z Resolvemos el problema relajado por el método de simplex. pero sólo se ramifica con respecto a las variables que han de ser enteras. Ejemplo 81 Resolver por el algoritmo de Corte o de Gomory el P.4.E. Esta cota inferior se revisará cuando encontremos otra solución candidata con mayor valor que la registrada anteriormente.2 Programación entera mixta Para resolver problemas de Programación Entera Mixta puede usarse también el algoritmo de ramificación. Cuando tenemos una solución candidata registramos su valor de z como cota inferior para z. max sa : z = 5x1 + 6x2 10x1 + 3x2 ≤ 52 2x1 + 3x2 ≤ 18 x1 .4 Algoritmo de corte o de Gomory El algoritmo de corte o de Gomory es otro procedimiento de resolución de problemas de programación entera. x1 . 7. ALGORITMO DE CORTE O DE GOMORY 185 • Aquellos problemas con solución entera (Candidata). x2 ≥ 0. 7. La solución óptima final es la mejor solución candidata. la primera restricción: 1 x1 + 8 h1 − 1 h2 = 8 17 4 . • Aquellos cuyo valor de z en la solución candidata es superada por la cota inferior para z registrada actualmente.3.

También se cumple la segunda propiedad ya que para soluciones enteras ambos miembros de la igualdad 1 7 1 x1 − h2 − 4 = − h1 − h2 + 8 8 4 han de ser enteros. E [x] . como el mayor entero que es menor o igual que x. se obtiene un corte en la región factible: 1 − 8 h1 − 7 h2 + 8 1 4 ≤0 Este corte tiene las siguientes propiedades: (1) La solución primitiva del problema relajado ha sido eliminada con este corte de la región factible. Por tanto la solución primitiva no cumple la condición impuesta 4 por el corte. Si x = E [x] + f [x]. Aplicamos esta descomposición a todos los números que aparecen en la ecuación anterior obteniéndose: 1 x1 + (0 + 8 )h1 + (−1 + 7 )h2 = 4 + 8 1 4 Separando los términos con parte no entera tenemos: x1 − h2 − 4 = − 1 h1 − 7 h2 + 8 8 1 4 Imponiendo la condición de que el segundo miembro de esta igualdad sea no positivo. El problema conviene resolverlo a partir del anterior por el simplex dual: x1 1 0 0 0 x2 0 1 0 0 h1 1 8 1 − 12 1 −8∗ 1 8 x1 x2 s3 5 12 −7 8 15 8 h2 −1 8 s3 0 0 1 0 17 4 19 6 −1 4 . (2) Ninguna solución entera del problema original es eliminada por este corte. El segundo término de la igualdad será siempre menor o igual que 1 . obteniéndose ya una solución entera. En efecto. Sustituyendo en la inecuación del corte estos valores obtenemos 1 ≤ 0.186 TEMA 7. la condición 1 se cumple ya que los valores de h1 y h2 son nulos para la solución del problema relajado. f [x] es la parte fraccionaria de x. 4 En este ejemplo hay que resolver el problema que resulta de añadir el corte a las restricciones iniciales del problema. PROGRAMACIÓN ENTERA Definimos parte entera de x. y por ser entero ha de ser menor o igual que cero.

Representamos ahora el corte. Expresando previamente h1 y h2 en función de las variables de partida: h1 = 52 − 10x1 − 3x2 . Se obtiene la tabla siguiente: x1 1 0 0 0 x2 0 1 0 0 h1 0 0 1 0 h2 −1 1 7 1 s3 1 −2 3 −8 1 x1 x2 h1 La solución es 4 10 3 2 x1 = 4. x2 = 10/3. h2 = 18 − 2x1 − 3x2 y sustituyendo en la inecuación del corte se obtiene: 7 − 1 h1 − 8 h2 + 8 1 4 = − 1 (52 − 10x1 − 3x2 ) − 8 7 8 (18 − 2x1 − 3x2 ) + 1 4 = = −22. ALGORITMO DE CORTE O DE GOMORY 187 Usando el algoritmo Dual del Simplex resulta que hay que pivotear sobre el elemento marcado. ya que se ha eliminado una pequeña porción de ella. Figura 7.4.5).5: Región factible.0 + 30x1 + 3x2 Por lo tanto la restricción del corte es equivalente a: 3 x1 + 3 x2 ≤ 22 =⇒ x1 + x2 ≤ 22 3 Añadiendo esta restricción en la gráfica se obtiene la nueva región factible (ver figura 7. Corte I del algoritmo de Gomory. algo menor que región factible inicial.7. ya que la primera solución es entera: . Como la solución aún no es entera realizamos ahora otro corte usando la segunda ecuación. z = 40.

z = 39. x2 = 4.4. Hallar una solución óptima para al problema relajado. Si la solución es entera tenemos la solución óptima. Si no es así ir al paso 2. La expresión respecto a las variables primitivas de este segundo corte es la siguiente: x1 + x2 ≤ 7. PROGRAMACIÓN ENTERA 10 1 =⇒ x2 + h2 + −1 + 3 3 1 1 x2 + h2 + (−1) s3 − 3 = − s3 + 3 3 = 1 Por tanto el nuevo corte es − 3 s3 + 1 3 2 x2 + h2 − s3 3 s3 = 3 + 1 =⇒ 3 ≤0 Añadiendo esta nueva restricción a las anteriores obtenemos la siguiente tabla de simplex: x1 1 0 0 0 0 x2 0 1 0 0 0 h1 0 0 1 0 0 h2 −1 1 7 0 1 s3 1 −2 3 −8 −1∗ 3 1 s4 0 0 0 1 0 x1 x2 h1 s4 4 2 −1 3 10 3 Aplicando de nuevo el método Dual de Simplex obtenemos: x1 1 0 0 0 0 x2 0 1 0 0 0 h1 0 0 1 0 0 h2 −1 1 7 0 1 s3 0 0 0 1 0 s4 3 −2 −24 −3 3 x1 x2 h1 s3 3 4 10 1 La solución actual es entera y óptima: x1 = 3.6. 7. . Gomory ha demostrado que se llega a una solución entera en un número finito de cortes.1 Resumen del algoritmo de Gomory El algoritmo tiene los siguientes pasos: 1. La representación gráfica de la región factible que origina este nuevo corte aparece en la figura 7.188 TEMA 7.

5 Programación 0-1. ir al paso 2 para realizar un nuevo corte en el problema actual. Si la solución hallada es entera. Es de notar que cualquier problema de programación entera puede interpretarse como un problema de programación 0-1. yi = 0. y como incógnitas los valores de sus cifras. (Se recomienda elegir aquel cuya parte fraccionaria sea lo más cercana posible a 0. El corte se obtiene imponiendo la condición de que la expresión de la derecha sea menor igual que 0. 5. En caso contrario. siempre que las variables enteras estén acotadas. 2. ALGORITMO DE ENUMERACIÓN 189 Figura 7. al problema relajado. Elegir un contraste en la tabla óptima del simplex cuyo término independiente no sea entero. Para ello basta considerar cada variable como un número expresado en base 2. Reescribir este contraste sustituyendo cada coeficiente por su parte entera más su parte fraccionaria. 3.5). Corte II del algoritmo de Gomory.6: Región factible. 4. 1 . Este contraste se usará para generar el corte. Trasponer hacia la derecha los términos con coeficientes fraccionarios. Por ejemplo cualquier número menor que 8 puede expresarse en la forma: x = 22 y1 + 2y2 + y3 . 7.7. Use el dual del simplex para resolver el problema que resulta de añadir. Algoritmo de enumeración Es un procedimiento que permite hallar la solución de los problemas de programación Binaria (0-1). 6. la restricción correspondiente al corte.5. PROGRAMACIÓN 0-1. es la solución óptima buscada.

Se realiza la transformación detallada en el ejemplo previo para conseguir una función objetivo con coeficientes positivos y ordenados de menor a mayor. Para conseguirlo se ordenan los términos de la función objetivo por el valor absoluto del coeficiente. x1 = y5 . x5 = y3 . 3. El algoritmo de Enumeración que presentamos requiere que se modifique el problema inicial para que los coeficientes de la función objetivo sean positivos y estén ordenados. 1} Reordenando la función objetivo por el valor absoluto de sus coeficientes z = −x4 + x2 + x5 + 2x3 + 3x1 y tomando x4 = 1 − y1 . 1}. x3 = y4 . El problema relajado se define ahora suprimiendo todas las restricciones de las variables. excepto las que imponen que las variables sean binarias. 2.190 TEMA 7. Ejemplo 82 Preparar el problema que sigue para resolverlo por el algoritmo de enumeración max z = 3x1 + x2 + 2x3 − x4 + x5 − 3x4 ≤1 x1 + 2x2 − 3x3 − x4 + 2x5 ≥ 2 xi ∈ {0. A continuación se realiza el cambio xi por yj si su coeficiente es positivo y por 1 − yj si es negativo tal como se muestra en el ejemplo que sigue.a. Reglas que han de seguirse: 1. Cuando se va a aplicar el algoritmo de enumeración se suprime la constante (-1 en este caso) de la función objetivo. El algoritmo de Enumeración es una modificación del algoritmo de Ramificación y Acotación. sa : 2x1 + x2 Se obtiene el problema equivalente: z = y1 + y2 + y3 + 2y4 + 3y5 − 1 + 2y5 ≤ 4 y1 + 2y2 + 2y3 − 3y4 + y5 ≥ 3 yi ∈ {0. : 3y1 + y2 . En el nodo de partida se dan los valores mas favorables para las variables (todos los valores 1 si el problema es de maximización y 0 si es de minimización). PROGRAMACIÓN ENTERA No obstante no suele emplearse esta opción. max x2 = y2 . a causa de que el número de variables crece considerablemente. Se s.

Se calcula el valor de su función objetivo. resolverlo utilizando el algoritmo de enumeración. Si el subproblema tratado no es declarado terminal lo ramificamos con respecto a la siguiente variable no fijada anteriormente. 5. Cuando analicemos un subproblema cuya cota superior (mejor valor del objetivo) sea superada por CI. El valor del objetivo se registra como cota inferior(CI). 6. 0. 0. y4 . Ejemplo 84 Dado el problema de programación lineal entero 0-1. PROGRAMACIÓN 0-1. x1 = 1 siguiendo un orden ascendente en la variable de ramificación en los nodos sucesivos y fijando estos valores en los nodos que correspondan a la misma rama.7 de la página 192 se muestra el esquema del procedimiento seguido para resolver el problema del ejemplo 82. B. OPT) La solución óptima es (y1 . 1.7. tenemos la solución óptima. 4. x3 . Cuando el árbol queda terminado la solución óptima es la solución candidata con mejor valor para el objetivo. 1. Hay otros problemas que alcanzan también el valor z = 5 pero las soluciones ensayadas no son factibles. ALGORITMO DE ENUMERACIÓN 191 comprueba si estos valores cumplen las restricciones. x4 . y3 . Algunos autores incluyen procedimientos para declarar algunos problemas infactibles. max z = 9x1 + 5x2 + 6x3 + 4x4 sa : 6x1 + 3x2 + 5x3 + 2x4 ≤ 10 x3 + x4 −x1 + x3 −x2 + x4 0 0 1 . Si es así.5. Se comprueba si esta solución es factible y si es así se registra como solución candidata y el subproblema como terminal. 7. y5 ) = (0. con valor no fijado de antemano. En el problema relajado correspondiente a cada nodo se dan a las variables. C . este subproblema será declarado terminal. Ejemplo 83 En el árbol del la figura 7. La variable con respecto a la que ramificamos queda fijada en los problemas sucesivos de la misma rama. La ramificación se hace comenzando con la variable x1 = 0. En caso contrario se ramifica el problema. x5 ) = (1. (Suponemos que hemos resuelto en primer lugar los problemas que están marcados como A. pero no vamos a considerar aquí estos procedimientos. Trasladando este resultado al problema primitivo se obtiene: (x1 . 1. 1) con valor para z = 3 + 1 + 2 × 0 − 1 + 1 = 4. y2 . x2 . 1). 1. los valores más favorables que no den lugar a soluciones ya analizadas previamente.

usando el algoritmo de Enumeración. .7: Resolución del problema de P.192 TEMA 7. PROGRAMACIÓN ENTERA Figura 7. E.

4 El esquema de resolución de este problema puede verse en la figura 7.8 de la página 194. ALGORITMO DE ENUMERACIÓN xi ∈ {0. 1} 1 0 0 i = 1.7. con z = 14. 2. y tomando x3 = y3 . 4 193 Ordenando la función objetivo por el valor absoluto de sus coeficientes. 3. 3. con z ′ = 14. Deshaciendo el problema transformado tenemos que la solución óptima del problema inicial es: x1 = 1. se obtiene el problema equivalente: max z ′ = 4y1 + 5y2 + 6y3 + 9y4 sa : 2y1 + 3y2 + 5y3 + 6y4 ≤ 10 y1 + y3 y3 − y4 y1 − y2 yi ∈ {0. x2 = y2 . x1 = y4 . i = 1. . y4 = 1. x3 = 0. La solución óptima resulta y1 = 0. y2 = 1. y3 = 0. x2 = 1. x4 = 0.5. 2. 1} x4 = y1 . PROGRAMACIÓN 0-1.

. Term 9<14 inal 1110. Term inal. Candidata y óptim a 1101. z=9. z=15. CI=0 x1=0 x1=1 0111. z=6. Term z=6<CI=14 inal. 0010. PROGRAMACIÓN ENTERA 1111. z=24. Infactible y final de la ram a Figura 7. z=15. x2=0 x2=1 x2=1 x2=0 0011. z=19.8: Algoritmo de Enumeración aplicado al ejemplo 84. x3=0 x3=1 1001. z=9. 0101. 1100. z=13<CI=14 x3=0 x3=1 0001. 1011. z=14. z=13. Term z=9<CI=14 inal. z=20. z=18.194 TEMA 7. Term CI=14 inal.

Esta técnica se desarrolló primeramente para analizar el comportamiento estadístico de los sistemas de conmutación telefónica. El tamaño máximo de las colas. 4. etc. La función de densidad de probabilidad del tiempo de servicio. 195 . Se pueden utilizar sistemas de colas para modelar procesos en los cuales los clientes van llegando. 3.1): 1. La densidad de probabilidad del tiempo entre llegadas describe el intervalo de tiempo entre llegadas consecutivas.Tema 8 Teoría de Colas 8. Podríamos imaginarnos que contratáramos a alguna persona (por ejemplo. en las ventanillas de las entidades bancarias. La función de densidad de probabilidad del tiempo entre llegadas. desde entonces. Ejemplos de sistemas de colas se encuentran en las cajas registradoras de los supermercados. también ha sido aplicada para resolver muchos problemas de redes. 2..1 Introducción Para un Ingeniero informático es interesante saber que una de las herramientas matemáticas más poderosas para realizar análisis cuantitativos de las redes de ordenadores es la teoría de colas. a un estudiante de ingeniería informática) para observar la llegada de los clientes. 5. reciben el servicio y luego se marchan. A cada llegada de un nuevo cliente. Los sistemas de colas pueden definirse mediante cinco componentes (ver figura 8. sin embargo. el observador registraría el tiempo transcurrido desde que ocurrió la llegada del anterior cliente. en las salas de espera de los consultorios médicos. esperan su turno para recibir el servicio. La disciplina de ordenamiento en las colas. El número de servidores.

pero sólo existe un número finito de lugares de espera. el criterio de atender primero al que esté más grave. y no un sistema multiservidor. esto es. Por ejemplo. algunos de estos clientes pueden no ser admitidos en la cola. ante la fotocopiadora. El tiempo de servicio requerido por cada cliente es tiempo de trabajo activo para el servidor y varía entre un cliente y otro. Los supermercados utilizan el método de servir primero al cliente que ha llegado antes. La disciplina de una cola describe el orden según el cual los clientes van siendo atendidos. además de conocer la densidad de probabilidad de los tiempos entre llegadas. el que precise el servidor para realizar el servicio que este cliente demanda. A este sistema se le denomina sistema de cola multiservidor. La cantidad de servidores se explica a través de los ejemplos siguientes: Muchos bancos. tiene su propia cola particular. En este caso tendremos un conjunto de colas independientes de un solo servidor. entra primero el que tenga que hacer menos fotocopias. Cada cliente requiere cierta cantidad de tiempo. estos datos podrían clasificarse y agruparse. por ejemplo. más a menudo. Cuando hay demasiados clientes que quieren hacer cola. Por eso. En una oficina. La capacidad de la cola es el número de clientes máximo que puede contener. En otros bancos. La densidad de probabilidad de estas muestras caracteriza el proceso de llegadas. es frecuente que se despache primero al que tenga menor trabajo. el cliente que se encuentra primero en la cola se dirige a la caja que ha quedado libre. cada vez que uno de los cajeros se libera. TEORÍA DE COLAS Sistemas de Colas Disciplina de la cola Llegadas Cola mecanismo de servicio Salidas Figura 8.para analizar un sistema de colas. tienen una sola cola larga para todos sus clientes y. En las salas de urgencia de los hospitales se utiliza.196 TEMA 8. . cada cajero o cajera.1: Esquema de un sistema de colas. debe conocerse también la función de densidad de probabilidad del tiempo empleado en prestar servicio. El primero en ser atendido no es el que haya llegado antes. Después de que hubiese transcurrido un tiempo suficientemente largo de estar registrando los intervalos de tiempo entre llegadas consecutivas. en la caja de un supermercado un cliente puede presentar un carro lleno de artículos y el siguiente puede traer únicamente una lata de refresco. En resumen: Las colas o líneas de espera son situaciones bastante corrientes. No todos los sistemas de colas poseen una capacidad ilimitada de recepción de clientes.

es decir. INTRODUCCIÓN 197 Clientes esperando servicio en un banco. Ambas componentes del sistema tienen costos asociados que deben de considerarse. Los sistemas que se caracterizan por elementos que tienen que esperar para recibir un servicio se llaman Fenómenos de Espera. Las llegadas suelen describirse por medio de una distribución de probabilidad para los intervalos de tiempo entre las llegadas de dos clientes consecutivos. productos en una línea de producción esperando ser procesados. Costo de Espera.1. Los elementos que llegan se unen primero a la cola. donde C es el costo de espera por cliente y unidad de tiempo y L =Número promedio de clientes en cola. . Sistema de costo mínimo. salvo que no haya línea de espera en ese instante. los tiempos empleados en prestar cada servicio siguen también una cierta distribución de probabilidad. En ese caso se dice que la cola está vacía. Entonces el propósito es encontrar el balance adecuado para que el costo total sea el mínimo. Las llegadas son las unidades que entran en el sistema para recibir el servicio. Una vez que se completa el servicio. El coste medio de una cola por unidad de tiempo esta dado por C × L. Que el primero en llegar sea el primero en ser servido es una regla común. o siguiendo alguna otra regla. las llegadas van a la instalación de servicio de acuerdo con la disciplina de la cola. alumnos que esperan matricularse.1. Aquí hay que tomar en cuenta que tasas bajas de servicio normalmente darán lugar a largas colas y costos de espera muy altos. Igualmente. Desde la cola.8. 8. Conforme aumenta el servicio disminuyen los costos de espera. cuando ya han recibido el servicio solicitado. Esperar significa desperdicio de algún recurso activo que bien se podría aprovechar en otra cosa. así como los gastos de ponerlas en uso como pueden ser los gastos de mantenimiento y personal. pero podría servirse con prioridades. de acuerdo con la regla para decidir cuál de las llegadas se sirve después del que está actualmente recibiendo servicio.1 Costos de los sistemas de colas Un sistema de colas puede dividirse en sus dos componentes de mayor importancia. Las colas se pueden caracterizar por los momentos de llegadas de los clientes y por los momentos de salida de éstos. Costo de Servicio. Este costo es el que está asociado a la compra de las instalaciones de servicio. pero aumenta el costo de servicio. las llegadas se convierten en salidas. Además. un sistema de espera soporta dos costes: El de dar servicio y el de tener elementos esperando. la cola y la instalación de servicio.

Mecanismo extinción Conmutador Mecanismo de lavado Juez: Sentencias. En la siguiente tabla se muestran algunos ejemplos de varios sistemas de colas. Las llegadas pueden ser de personas. es típico de una peluquería o una panadería en donde los clientes toman un número al entrar y se les sirve cuando llega el turno.2.1.. ensambles intermedios en una fábrica.2.2. incendios. Cadena: Número de líneas de cola del sistema. Sistema: Incluye cola. El segundo. es característico de los bancos y las tiendas de autoservicio. carros. TEORÍA DE COLAS 8. Empleados correos Transferir datos Permitiendo que varíen el número de colas y el número de servidores.. cartas. El primer sistema que se muestra en la figura 8.. Controladores.198 TEMA 8.. telefónica Lavado coches Juzgados Oficina correos Servidor Web Llegadas viajeros Enfermos Aviones Alarma incendios No marcado Coches Casos Cartas Petición archivos Colas en las paradas sala de espera Aviones espera Incendios Llamadas espera Coches en cola Casos atrasados Buzón Cola peticiones Servicio viaje en autobús consulta asistencia Pista.2 8. Bomberos Cía.. pueden hacerse los diagramas de los cuatro tipos de sistemas de la figura 8. Número de fases: Es el número de servicios diferentes que hay que esperar antes de .2 Estructuras típicas. El cuarto sistema es una línea con servidores en serie.. Los sistemas de colas son mono o multicadenas. una línea con múltiples servidores. etc. se llama un sistema de un servidor y una cola o puede describir un lavado de coches automático. Cola: Elementos esperando recibir servicio. . puede describir por ejemplo el comportamiento de una cadena de montaje en una fábrica. Cada línea de espera individual y cada servidor individual se muestra por separado. 8.1 Terminología Características físicas Servidor: Elemento que presta el servicio solicitado por los clientes. El tercer sistema. servidor y el elemento que está siendo servido. aquel en que cada servidor tiene una línea separada.. Ejemplos de sistemas de colas Situación Autobús Hospital Aeropuerto Dpto. En los casos más simples el número de cadenas es el número de servidores en paralelo.

2.8.2: Distintos tipos de sistemas de colas . TERMINOLOGÍA 199 Figura 8.

Frecuentemente se considera que el primero que ha llegado es el primero al que se le presta servicio. También se ha de considerar si existe abandono de la cola.200 TEMA 8. También puede haber algunas prioridades en determinados servicios. etc.3: Modelos de sistemas de colas. En los casos más simples es el número de servidores en serie.2 Características de funcionalidad Aparte de estas características físicas de las colas. En la figura ?? pueden verse esquemas de cada uno de estos modelos. o elementos que habiendo esperado un cierto tiempo no desean esperar más y abandonan la cola. No obstante en algunas circunstancias esto no es así. Con objeto de clarificar estos últimos conceptos proponemos los siguientes ejemplos. es decir. (c) Una cadena y multi-fase: Una línea de montaje con distintos elementos que hay que fabricar.. . la distribución de los tiempos de servicio.. consideramos otros aspectos que afectan a su funcionamiento o dinámica como son: la distribución del intervalo de tiempo entre llegadas. (d) multi-cadena y multi-fase: Automóviles esperando paso en distintos semáforos. completar el servicio total. Otras disciplinas de colas pueden ser aleatorias. En este caso. como la forma en que suben al tren los viajeros que esperan en una estación. (a) Una cadena y una sola fase: Una taquilla de un cine (b) multi-cadena y una sola fase: Cajeros en un banco. TEORÍA DE COLAS (a) (b) (c) (d) Figura 8. el orden de entrada depende de lo cerca que haya quedado la puerta de cada viajero. : 8. o tiempos empleados por el servidor para prestar los servicios requeridos por cada uno de los clientes.2. elementos que al ver una cola demasiado larga no se deciden a esperar. las distintas formas en que se reorganizan las colas en el supuesto de que haya varias cadenas o varias fases y la disciplina de la cola que es la forma en que los clientes que están esperando acceden al servidor.

que Ti es una variable continua y que el estado es estacionario. como máximo. es decir. un cierto número de elementos. 8. Si admitimos el modelo exponencial para la distribución de la variable aleatoria T . Entre los parámetros más usuales consideraremos los siguientes: Probabilidad de que no haya elementos en la cola. Suponemos que en un instante sólo puede haber una llegada.3.3 Modelos de llegadas y de tiempo de servicio Los clientes o elementos pueden acceder al sistema de una forma determinada de antemano porque se sabe exactamente cuando van a venir cada uno de ellos (por ejemplo a intervalos de tiempo de 3 segundos) o bien. Notamos por ti la hora a la que llega el cliente i. Número promedio de elementos presentes en el sistema. y por Ti = ti+1 − ti el tiempo transcurrido entre dos llegadas consecutivas. si conocemos la distribución de probabilidad de los intervalos de tiempo entre llegadas consecutivas.8. Tiempo promedio que un elemento pasa en el sistema. La distribución que se usa más frecuentemente para modelar los intervalos de tiempos entre dos llegadas consecutivas es la distribución exponencial. Probabilidad de que un elemento que llega tenga que esperar para recibir servicio. admitimos la hipótesis de que la distribución que modela la cola (probabilidad de que haya un cierto número de elementos en la cola) es la misma a todas las horas del día. Tiempo medio que ha de esperar cada elemento que accede a la cola. puede ocurrir que los intervalos de llegada sigan una variable aleatoria. Normalmente esto no es estrictamente cierto.3 Parámetros de los sistemas de colas Si la cola es de comportamiento aleatorio no podemos saber exactamente la situación que tendremos en cada momento. Por eso para describir su comportamiento se emplean promedios y probabilidades.2. Suponemos que los valores de Ti son independientes. que aunque no sepamos exactamente en qué momento va a llegar cada uno de los elementos. Probabilidad de que haya un cierto número de unidades en el sistema. 8. en el segundo decimos que los tiempos de llegada siguen una distribución aleatoria. pero puede cumplirse aproximadamente considerando ciertos intervalos horarios cada día. es decir. MODELOS DE LLEGADAS Y DE TIEMPO DE SERVICIO 201 El sistema se dice que tiene una capacidad limitada si sólo admite. Número promedio de elementos en cola. En el primer caso hablamos de distribución de llegada determinista.

y la varianza 1 λ2 .632.0183. El parámetro λ hay que interpretarlo como el número promedio de elementos que llegan al sistema por unidad de tiempo. Ejemplo 85 El número promedio de llegadas por hora al consultorio de un hospital es de 60 pacientes. considerado. t > 0 la probabilidad de que una llegada ocurra en un tiempo t < c unidades después que la anterior es: c c P (t < c) = 0 f (t) dt = 0 λ exp (−λt) dt Se puede comprobar que la media de esta distribución es 1/λ. Esta probabilidad no cambia con el tiempo y es independiente de lo que haya pasado antes. Es conveniente resaltar que la distribución exponencial cumple la siguiente relación P (t ≤ h) = P (t ≤ c + h/t ≥ c) .202 TEMA 8. TEORÍA DE COLAS f(t) = λ exp (−λt) . Esto quiere decir que la distribución no guarda información sobre lo que ha pasado antes de c y por tanto no se necesita tener información del pasado para predecir el futuro. la probabilidad de que el siguiente elemento venga en un intervalo de h segundos no depende del momento concreto. λ > 0. sino exclusivamente del intervalo de tiempo. Esta propiedad significa que en todo momento. h. . Si acaba de llegar un paciente. ¿Y de que tarde más de 4 minutos? Tomamos para λ = 60 pacientes hora = 60 pacientes 60 minutos = 1 paciente minutos 1 P (t < 1) = 0 e−t dt = −e−t 1 0 = 1 − e−1 = 0. Por eso esta propiedad se suele enunciar diciendo que la función exponencial carece de memoria. ∞ P (t > 4) = 4 exp(−t) dt = 0 − (−e−4 ) = 0. c. ¿cuál es la probabilidad de que el siguiente venga dentro del siguiente minuto.

1 Relación entre la distribución de Poisson y la exponencial El siguiente teorema nos da la relación existente entre la distribución del intervalo de tiempo entre llegadas (bajo la hipótesis de distribución exponencial) y el número de clientes que accede al sistema en cada intervalo de tiempo t. a) El intervalo de tiempo es de 2 horas. t + ∆t) es λ∆t + o(∆t)1 . 50! denota un infinitésimo de orden superior a ∆t . a) Hallar la probabilidad de que entren exactamente 50 personas entre las 10 a las 12 de la mañana. b) Hallar la probabilidad de que el intervalo de tiempo entre dos llegadas esté entre 2 y 4 minutos. Teorema 14 Los intervalos entre llegadas siguen una distribución exponencial de parámetro λ si y sólo si el número de llegadas que ocurren en un intervalo de tiempo t sigue una distribución de Poisson de parámetro λt. b) Para intervalos pequeños de tiempo (∆t) la probabilidad de que una llegada ocurra en el intervalo (t. n = 1. n! P (Nt = n) = E(Nt ) = V ar(Nt ) = λt Cuando el número de llegadas sigue una distribución de Poisson se cumplen las siguientes propiedades: a) Las llegadas ocurridas en intervalos de tiempos que no se solapan son independientes. por lo tanto λt = 30 × 2 = 60 P (Nt = 50) = 1 o(∆t) (60)50 exp(−60) = 0.02327 .3. Ejemplo 86 El número de personas que entra en un comercio sigue una distribución de Poisson con una media de 30 personas por hora. c) La probabilidad de más de una llegada en el intervalo ∆t es o(∆t). 2..8. Si la distribución de los intervalos entre llegadas es exponecial de parámetro λ.. y Nt es la variable aleatoria que indica el número de llegadas en el intervalo de tiempo t. la probabilidad de que el número de llegadas en este intervalo sea n es: (λt)n exp(−λt) .. MODELOS DE LLEGADAS Y DE TIEMPO DE SERVICIO 203 8.3. 3.

exp(−0. Puede demostrarse que la distribución de Erlang es la distribución de la suma de k variables exponenciales independientes de parámetro λ. La función de densidad de esta distribución viene dada por dos parámetros: f(t) = R(Rt)k−1 exp(−Rt) . La representación gráfica de la función 8. la probabilidad es: 4 2 0. el intervalo entre k llegadas consecutivas sigue una distribución Erlang de parámetros k y λ. puede tomar muy diversas formas para los distintos valores de los dos parámetros. tenemos esta otra expresión para la función de densidad: kλ (kλt)k−1 exp(−kλt) . la distribución es una exponencial de parámetro λ.204 TEMA 8. exp(−0. (k−1)! t ≥ 0 . Por tanto cuando los intervalos entre llegadas consecutivas se modelan con una función exponencial de parámetro λ.23254 2/60 4/60 4/60 Si hiciéramos los cálculos en minutos: Los clientes acuden a la tienda a razón de 30/60 = 0.1) siendo en este caso E(t) = 1 λ = 1 kλ2 Si k = 1. t≥0 (k − 1)! y V ar(t) = k (kλ)2 f(t) = (8.5t). TEORÍA DE COLAS b) Los clientes acuden a la tienda a razón de 30 personas por hora. la probabilidad es : 4/60 30 exp(−30t)dt = − exp(−30t)|2/60 = − exp(−30t)|2/60 = e−1 − e−2 = 0. por lo que es adaptable a distintas situaciones reales. así que la función densidad de la exponencial asociada es 30 exp(−30t).5t)dt = − exp(−0. Por tanto. Por tanto. La distribución de Erlang A veces se modelan los intervalos de llegadas con una distribución de Erlang. 2 8.5 .3.2 Otra distribución de las llegadas. donde E(t) = k R y V ar(t) = k R2 Si tomamos R = Kλ.5 personas por minuto.5. ingeniero danés que aplicó a principios del siglo XX esta distribución al estudio de las aglomeraciones que se producían en las llamadas telefónicas. así que la función densidad de la exponencial asociada es 0.5t)|4 = e−1 − e−2 = 0.23254.1. .

Por último en el lugar 6 se indica el número máximo de clientes potenciales. En lugar del 2 se indica la distribución de los servicios: M. Ek = iid y Erlang con parámetro k. LA NOTACIÓN DE KENDALL 205 8. 8.4 La notación de Kendall Se realiza sobre el esquema 1/2/3/4/5/6. que se representa de la siguiente forma: M = intervalos entre llegadas independientes e idénticamente distribuidos (iid) que se rigen por la distribución exponencial. GI = iid y gobernados por una distribución general. con idéntico significado que en las distribuciones de llegadas. D = iid y deterministas. En el lugar 3 se indica el número de servidores en paralelo. .4. A veces puede ocurrir que la duración del servicio sea determinista. (también denominada LIFO = last in first out). que suele ser: FCFS (first come first served). expresando en los lugares ocupados por los números la siguiente información: En el lugar del 1 se indica la distribución de las llegadas. que significa que se atiende en orden aleatorio. En el lugar 4 se indica la disciplina de la cola. En el lugar 5 se indica el número máximo de elementos que puede admitir el sistema (incluyendo los clientes que estén siendo atendidos). Ek o GI. SIRO (service in random order). es decir. (también denominada FIFO = first in first out).8. LCFS (last come first served). que significa que el último en llegar es el primero en ser servido. D. la distribución exponencial o la de Erlang. que significa que la cola tiene una disciplina genérica.3. si todos los clientes vienen a solicitar un mismo servicio que tarda en realizarse una cantidad de tiempo constante. que significa que el primero que llega es el primero en ser servido. Por ejemplo. GD (general queue discipline).3 Modelos de duración de los servicios Se suelen emplear los mismos modelos que para los intervalos entre llegadas.

Vamos a desarrollar primero el caso de P0 (t+∆t) = Probabilidad de que no haya nadie en el sistema en el instante t + ∆t. El Estado Estacionario se alcanza si λ < µ. el estado del sistema sería el número de elementos que están en el sistema inicialmente. 8. Una salida disminuye en 1 el estado del sistema. Llamaremos Estado del sistema en t al número de elementos presentes en el instante de tiempo t. Llamaremos Pj a la probabilidad de que el sistema esté en el estado j. Dos o más sucesos (llegadas o salidas) no pueden ocurrir simultáneamente (esto es una forma de decir que la probabilidad de ocurrencia de más de un suceso en el tiempo ∆t es un infinitésimo de orden superior a ∆t).1 Probabilidad de que el sistema esté en cierto estado Para calcular la probabilidad de que el sistema esté en el estado j en el instante t + ∆t.5 Estudio de una cola M/M/1 Sobreentenderemos en este caso que la cola es del tipo M/M/1/fcfs/ ∞/ ∞. siendo λ y µ respectivamente las tasas de llegada y servicio (número de llegadas o servicios por unidad de tiempo). TEORÍA DE COLAS Si un sistema de cola se representa con el esquema M/M/1/fcf s/∞/∞ significa: que los intervalos entre llegadas consecutivas y los tiempos empleados en prestar el servicio demandado se distribuyen con distribuciones exponenciales. Para t = 0. 8. que la disciplina de cola consiste en atender primero al que haya llegado antes al sistema. Se dará esta circunstancia en uno de los supuestos siguientes: . 4. que hay un solo servidor. y que el número de clientes potenciales es infinito (muy grande). que el sistema puede recibir un número ilimitado de individuos. 5. 2. La probabilidad de un llegada entre t y t + ∆t.5. 3. que se caracteriza porque la probabilidad de cada estado no varía con el tiempo.206 TEMA 8. Suponemos también que el sistema ha llegado al Estado Estacionario. También puede interpretarse como la fracción de tiempo en que hay j elementos en el sistema. La probabilidad de una salida entre t y t+∆t (siempre que haya algún elemento recibiendo servicio en el instante t) puede darse por µ∆t + o(∆t). calculamos esta probabilidad a partir de su estado en el tiempo t. Una llegada incrementa el estado del sistema en 1. Las llegadas y salidas son sucesos independientes. Un sistema de colas M/M/1/fcfs/∞/∞ sigue las leyes siguientes: 1. puede darse por λ∆t + o(∆t).

Si consideramos que estamos en Estado Estacionario P0 es constante.8. Por lo tanto P0 (t + ∆t) = P0 (t) (1 − λ∆t + o(∆t)) + P1 (t) (µ∆t + o(∆t))(1 − λ∆t + o(∆t)) + o(∆t) ⇒ P0 (t + ∆t) = P0 (t) (1 − λ∆t + o(∆t)) + P1 (t) (µ∆t + o(∆t)) + o(∆t) ⇒ P0 (t+∆t)−P0 (t) ∆t = −λP0 (t) + µP1 (t) + o(∆t) ∆t . 2. . y por tanto su derivada es 0. 3. Los casos restantes requieren que al menos dos sucesos (entradas o salidas) ocurran en el intervalo de tiempo ∆t.5. tras agrupar todos los infinitésimos de orden superior a ∆t se tiene: Pj (t) (t + ∆t) = Pj−1 (t) (λ∆t))(1 − µ∆t) + P j(t) (1 − λ∆t)(1 − µ∆t)+ +Pj+1 (t)(µ∆t)(1 − λ∆t) + o(∆t). El último sumando del segundo término también tiende a 0 puesto que el orden del numerador es mayor que el del denominador (el numerador tiende a cero “más rápidamente” que el denominador). Si ∆t → 0 obtenemos en el primer miembro la derivada de P0 (t) . Había 1 elemento en el instante t. Según la propiedad 5. esta probabilidad es de orden superior a ∆t. no ha venido nadie en ese intervalo y se ha ido el que estaba. de donde se deduce que P1 = λ P0 = ρP0 µ En el caso general. La probabilidad de que ocurra este supuesto es P0 (t) (1 − λ∆t + o(∆t)). No había nadie en el sistema en el instante t y no ha venido nadie en este intervalo. La probabilidad es ahora: P1 (t) (µ∆t + o(∆t))(1 − λ∆t + o(∆t)). ESTUDIO DE UNA COLA M/M/1 207 1. Por tanto ha de cumplirse cuando ∆t → 0: 0 = −λP0 + µP1 .

.. TEORÍA DE COLAS Procediendo de forma análoga a la empleada para obtener la expresión de P1 se obtiene: Pj (λ + µ) = λPj−1 + µPj+1 En concreto si j = 1 P1 (λ + µ) = λP0 + µP2 Sustituyendo P1 = λP0 µ obtenemos : λP0 µ (λ + µ) = λP0 + µP2 y despejando P2 P2 = λ2 P0 µ2 = ρ2 P0 Por inducción. = P0 (1 + ρ + ρ2 + . ∞ Pi = 1 = P0 + ρP0 + ρ2 P0 + .. 2.. y por tanto Pj = (1 − ρ) ρj . Si el estado es estacionario ρ = µ < 1 y en este caso 1 + ρ + ρ2 + .208 TEMA 8.. 1......) = P0 i=0 1 1−ρ La serie representa la suma de los términos de una progresión geométrica de λ razón ρ. = Luego P0 1 1−ρ 1 1−ρ =1 de donde se deduce que P0 = 1 − ρ. se obtendría para el estado j : Pj = λj P0 µj Como los posibles estados del sistema son: 0... 3.

. 1 jρj y j la variable aleatoria que denota el número de elementos en el ρ Para hallar S se parte de la igualdad S − ρS = 1−ρ .6 Teorema de Little Para cualquier sistema de colas en estado estacionario se verifica: L = λW. El número de elementos recibiendo servicio. de donde se deduce S = ρ . Sustituyendo esta expresión en la de L obtenemos para el número medio de (1−ρ)2 elementos en el sistema ρ 1−ρ L= 8. usamos el concepto de esperanza matemática ∞ ∞ ∞ L = E(j) = j=0 jPj = j=0 j(1 − ρ)ρj = (1 − ρ) 1 jρj = (1 − ρ)S ∞ siendo S = sistema. también puede interpretarse como la fracción de tiempo en que el servidor está ocupado.8. Ls = λW s . Ls . que es la variable aleatoria que denota el número de elementos en la cola. es la diferencia entre los que están en el sistema y los que están en la cola. Su valor medio. es por tanto Ls = L − Lq = ρ ρ2 ρ(1 − ρ) − = =ρ 1−ρ 1−ρ 1−ρ Este valor. ρ.= ∞ j=1 (j − 1)Pj = j=1 (j − 1)(1 − ρ)ρj = = (1 − ρ)ρ 1 (j − 1)ρj−1 = (1 − ρ)ρS = ρ2 1−ρ . TEOREMA DE LITTLE 209 8..2 Número medio de elementos en el sistema Para calcular L.3 Número medio de elementos en cola En este caso hay que hallar la media de j.6. 8. Lq = λW q. Su promedio es ∞ ∞ Lq = 0 (P0 + P1 ) + 1P2 + 2P3 + 3P4 + . número medio de elementos en el sistema.5.5.

1 1 3. cuando llega. en cola y recibiendo servicio. . que con arreglo a la notación de Kendall se representa como M/M/1/fcfs/c/∞. es decir.16 667 es el número medio de µ (µ − λ) 12(12 − 10) individuos en la cola. Por término medio. Lq = ρ2 1−ρ λ2 102 = = 4. ρ 1−ρ λ µ W = λ ρ2 1−ρ = 1− λ µ λ 2 = 1 . Usando el teorema de Little se pueden obtener expresiones para los tiempos medios de estancia en el sistema. Las revisiones de equipaje se realizan a razón de 12 por minuto. TEORÍA DE COLAS Donde las W son. ¿cuántos pasajeros esperan en cola? 3. en la cola o recibiendo servicio. respectivamente. hay alguien en el sistema. Cuando este cliente salga del sistema permanecen aún en él los elementos que han llegado detrás durante el intervalo de tiempo W. Explicación intuitiva: Supongamos que llega al sistema un elemento que permanece en éste exactamente el tiempo promedio W. En este epígrafe se tratará el modelo de una cola. Por promedio su número será λW. µ−λ λ (µ) Wq = λ = 1− λ µ λ Ls λ = ρ λ λ µ (µ − λ) 1 µ Ws = = = Ejemplo 87 En un aeropuerto el número de personas que accede por minuto es 10. W = = = 0. 833 333.210 TEMA 8. Responder a las siguientes cuestiones: 1.7 Sistemas con capacidad limitada Son los modelos de espera que sólo admiten un número máximo c de clientes en el sistema. Así que la solución es 1 − P0 = 1 − (1 − ρ) = ρ = 10/12 = 0. los tiempos medios de espera en el sistema. puesto que λ es el número de llegadas por unidad de tiempo. si el número de personas en el sistema no es 0. 2. = 8. ¿Cuánto tiempo total tienen que esperar los pasajeros por término medio? 1. es decir L = λW .5 minutos tendrán que esperar los pasajeros por µ−λ 12 − 10 término medio. ¿Cuál es la probabilidad de que un pasajero tenga que esperar antes de que le revisen el equipaje? 2. Un pasajero tiene que esperar si.

En este caso.. 1.8..... + ρc P0 = P0 ρc+1 −1 ρ−1 si ρ = 1 Esta expresión.. + Pc ) = 1 − P0 ... Los posibles estados del sistema son: 0.7. despejando P0 . Se tiene por tanto Pj = λj P0 µj si 0 < j ≤ c Pj = 0 si j > c En este caso el estado estacionario puede lograrse aunque ρ no sea menor que 1 ya que el sistema se autorregula por el número máximo c de clientes en la cola. c. por lo tanto c i=0 Pi = 1 = P0 + ρP0 + ρ2 P0 + . SISTEMAS CON CAPACIDAD LIMITADA 211 Para hallar la probabilidad de cada uno de los estados se pueden repetir los razonamientos del párrafo 8. pero hay que tener en cuenta que el estado del sistema nunca será mayor que c..1. sólo es válida si ρ = 1.5. 3. (ρ−1)2 ρc+1 −ρ ρ−1 c j 1 jρ − cρc+1 El número de medio de elementos recibiendo servicio es : Ls = 0 × P0 + 1(P1 + P2 + . 2. obtenemos que P0 = Por tanto c c ρ−1 ρc+1 −1 y Pj = (ρ−1) j (ρc+1 −1) ρ L = E(j) = j=0 jPj = j=0 ρ−1 jρj ρc+1 −1 = (ρ−1) ρc+1 −1 c 1 jρj = (ρ−1) ′ ρc+1 −1 S siendo j el número de elementos en el sistema y S ′ = S ′ − ρS ′ = luego S′ = y por tanto L= ρ−(c+1) ρc+1 +cρc+2 (ρ−1)(ρc+1 −1) ρc+1 −ρ−cρc+2 +cρc+1 .. λ no es igual que µ. es decir.

= Pc L = 0 × P0 + 1P1 + 2P2 + . + cPc ) = = P0 (1 + 2 + 3 + . λ debe sustituirse en este caso por la tasa media real de llegada (λR ) ..212 TEMA 8. b) Número medio de personas en la peluquería. c) ¿Cuál es el tiempo medio de permanencia en la peluquería para los clientes que entran? a) Todos los clientes que entran son atendidos. Por lo tanto el número medio de clientes atendidos por hora es 20(1 − 0.75) = 5. + c) = P0 1+c c = 2 1 1+c c+1 2 c = c 2 Para cualquier sistema de colas en estado estacionario se verifica el teorema de Little: L = λW. Lq se puede hallar restando las expresiones L y Ls y obtenemos Lq = L − Ls .. El promedio de llegadas perdidas es λPc ya que Pc se puede interpretar como la proporción de llegadas por unidad de tiempo que no ingresan en el sistema. TEORÍA DE COLAS El número medio de elementos en la cola. cada hora hay 15 clientes que no pueden entrar en la peluquería.. El peluquero admite en su peluquería un máximo de 10 clientes y tarda en atenderlos un promedio de 12 minutos por cliente. λ(1 − Pc ) = 20(1 − P10 ). de 20 clientes por hora. Es decir que: λR = λ − λPc Por tanto en este caso de sistemas con capacidad limitada se tiene: L = λ (1 − Pc ) W. . así que c+1 −1) (4−1) P10 = (411 −1) 410 = 0. Lq = λW q. así que 1 = (c + 1)P0 y por tanto P0 = 1 c+1 = P1 = P2 = P3 = . j P0 . Calcular: a ) Número promedio de clientes atendidos por hora. teniendo en cuenta la expresión j anterior Pj = λµP0 se deduce que todos los estados tendrían la misma probabilidad. por lo tanto coincide con la tasa real de llegadas a la peluquería. o λ = µ... que será menor que λ. por termino medio. Por promedio. puesto que está limitada la afluencia de clientes. Ls = λW s No obstante. Lq = λ (1 − Pc ) Wq .. Pj = (ρ(ρ−1) ρj . Ls = λ (1 − Pc ) Ws Ejemplo 88 La afluencia de clientes a una peluquería es.75.. La tasa real se obtendrá ahora restando del promedio de llegadas por unidad de tiempo λ el promedio de entradas en el sistema que se pierden por exceder su capacidad. En el caso particular de ser ρ = 1 .

se iguala a 0 la derivada de P1 (t)) y se. y por tanto la derivada es 0 .67 clientes. calculamos: ρ= λ µ = 20 5 =4 L= ρ−(c+1) ρc+1 +cρc+2 (ρ−1)(ρc+1 −1) = 4−(11) 411 +10×412 (4−1)(411 −1) = 9. sustituye el valor de P1 obtenido. 20(1 − P10 ) 8.8. omitiendo los infinitésimos de orden superior a ∆t.8.8 Modelo con s servidores Desarrollamos detalladamente el caso en que s = 2.1 Cálculo de la probabilidad de los diferentes estados del sistema También ahora se cumple para el estado 0 que P0 (t + ∆t)=P0 (t)(1 − λ∆t) + P1 (t)µ∆t(1 − λ∆t) Si el estado del sistema es estacionario (se puede conseguir el estado estacionario para el caso de 2 servidores si λ < 2µ y en general si λ < sµ).8. c) El tiempo medio de espera en el sistema será: L = 9. P0 es constante. De esta forma se obtiene: λP0 µ . MODELO CON S SERVIDORES 213 b) Para determinar el número medio de clientes en la peluquería.67/5 = 1.67 Por lo que el número medio de clientes en la peluquería es 9. así que λP0 = µP1 y por tanto P1 = Para el estado 1 se cumple: P1 (t + ∆t) = P0 (t)λ∆t + P1 (t)(1 − λ∆t))(1 − µ∆t) + P2 (t)2µ∆t(1 − λ∆t) Procediendo análogamente a lo hecho en el caso anterior. 8.93 horas.

Realizando la suma de la serie se obtiene P0 1 + entonces P0 = Por tanto: Pj = 1 j 2j−1 ρ P0 ρ 1− ρ 2 = P0 2+ρ 2−ρ =1 2−ρ . 4 En general..8.. +ρ .. + 2 1 j 2j−1 ρ + .. = = P0 1 + ρ + 1 ρ2 + . TEORÍA DE COLAS − λP0 + 2µP2 = 0 = 1 ρ2 P0 2 Para obtener un expresión similar para P3 . 8. se parte de la expresión: P2 (t + ∆t) = = P1 (t)λ∆t(1 − µ∆t) + P2 (t)(1 − λ∆t)(1 − 2µ∆t) + P3 (t)2µ∆t(1 − λ∆t) ⇒ λP1 − (λ + µ) P2 + 2µP3 = 0 Sustituyendo los valores anteriores para P1 y P2 . para el caso de dos servidores Pj = λ3 P0 4µ3 = 1 j 2j−1 ρ P0 si j = 0. es la suma de los infinitos términos de una progresión geométrica de razón ρ que es menor que 1. obtenemos: P3 = λ3 P0 4µ3 = 1 ρ3 P0 ..2 Cálculo de P0 ∞ i=0 1 Pi = 1 = P0 + ρP0 + 2 ρ2 P0 + ... ya que para el estado 2 estacionario λ < 2µ. + 1 j 2j−1 ρ P0 + . 2+ρ = 1 j2 2j−1 ρ 2 −ρ .. omitiendo el primer término.214 λP0 − y despejando P2 : P2 = λ2 P0 2µ2 λ2 P0 µ TEMA 8... El paréntesis.

s .5. . j! P0 ρj s!sj−s P0 si j ≥ s 3. λ Ws = Ls 1 = λ µ 8. . Para calcular el número promedio de elementos en el sistema empleamos la siguiente expresión: L = Lq + Ls = ρ3 4−ρ2 +ρ= 4ρ 4−ρ2 . . ya que los clientes entran en uno u otro servidor.8.P0 + 1.) = P1 + 2(1 − P0 − P1 ) = =ρ 2−ρ 2−ρ 2−ρ +2 1− −ρ 2+ρ 2+ρ 2+ρ =ρ Intuitivamente podíamos también argumentar que la mitad de las llegadas irían a parar a cada uno de los servidores.8. .8. .2 ρ (tomando en lugar de ρ) 2 Ls = 0. MODELO CON S SERVIDORES 215 8.. Para calcular los tiempos medios se pueden emplear las fórmulas de Little: Wq = Lq .3 Cálculo de los parámetros El número medio de elementos en cola es Lq = 0(P0 + P1 + P2) + 1P3 + 2P4 + . λ W = L .4 Sistemas de colas de tipo M/M/s/FCFS/∞/∞. Por 2µ 2 µ 1 tanto entre ambos atenderían una media 2 × 2 ρ = ρ. = = P0 ρ 2 = 2 ∞ j=1 jPj+2 ρ 2 = ∞ 1 j+2 P0 j=1 j 2j+1 ρ 3 = ∞ j=1 j ρ j 2 = P0 ρ 2 2 (1− ρ ) 2 2 ρ = P0 (−2+ρ)2 ρ3 4−ρ2 ρ3 (−2+ρ)2 2−ρ ρ3 = − (2+ρ)(−2+ρ) = 2+ρ En el sumatorio se ha sustituido una expresión hallada previamente en 8. 2.. λ λ En ese caso la media de clientes atendidos por cada uno sería 2 = 1 = 1 ρ. .P1 + 2(P2 + P3 + P4 + .8. Expresiones para el caso de s servidores P0 = 1 s−1 ρi i=0 i! + ρs s!(1− ρ ) s Pj = ρj si j = 1.

444 4 80 horas = 5. 8. 111 11 + 8.2 minutos en servir a un cliente.5 × 80 50 c) La probabilidad de que un determinado cajero esté desocupado es: P0 + 0. En este caso λ= 80 clientes por hora y µ = 60/1.4 1.2 = 0. así que la probabilidad de que ese cajero esté ocupado es 1 − 0.5P1 = 2− 80 50 2+ 80 50 × 2− 80 50 2+ 80 50 = 0. 888 9 × 10−2 = 0. 44 = 4. TEORÍA DE COLAS P ρ 2 0 s Se pueden aplicar también las fórmulas de Little: Wq = Ls = ρ ⇒ L = Lq + Ls ⇒ Lq λ Ws = Ls λ W = L λ Ejemplo 89 Consideremos una sucursal bancaria con dos cajeros.9 El coste de un sistema de colas Por lo general un sistema de colas tiene dos costes: El de tener clientes esperando y el de tener elementos sirviendo a éstos. Hallar: a) Número medio de clientes en el banco. 80. Ilustramos esta situación en el siguiente ejemplo.216 Lq = ρs+1 s · s! 1 − TEMA 8. 288 89.2 = 50 clientes por hora es capaz de atender cada uno de los dos servidores. .33 minutos + 0. b) Tiempo promedio de espera en el banco por cliente. 555 5 × 10−2 horas = 3. c) Fracción del tiempo en que un cajero determinado está ocupado. a) El número medio de clientes en el banco es L= 4ρ 4−ρ2 = 4× 80 50 4−( 80 ) 50 2 = 6. Si se pidiera la probabilidad de que al menos uno de los cajeros esté desocupado (sin concretar quién) se calcularía como: P0 + P1 = 80 2− 50 80 2+ 50 + 80 50 × 2− 80 50 2+ 80 50 = 0. 2. Cada cajero tarda una media de 1. Los clientes acuden al banco a razón de 80 por término medio cada hora. 444 4 b) El tiempo medio de espera en el banco es W = L λ = 4.

0222 + 15/18 = 0. por hora. 555 u.8. 432 13 Lq = P0 = = 625 12 168 L = 0. lo que conlleva un gasto. a lo que hay que añadir el gasto del servidor que es 9 u. m. 1. EL COSTE DE UN SISTEMA DE COLAS 217 Ejemplo 90 En una línea de producción es frecuente que haya un almacén para las herramientas más caras.43213 = 0. El problema es diseñar un sistema que minimice los costes. ya que si por término medio hay 5 trabajadores en el sistema supone un gasto de 5×10 =50 u. Se supone que los trabajadores que esperan a que el empleado les suministre las herramientas ganan 10 u.9. Caso de dos servidores: L= 4ρ 4−ρ2 4× 15 18 4−( 15 ) 18 2 = = 1.m. Suponemos que las llegadas de empleados al almacén siguen una distribución de Poisson de razón de llegada λ = 15 (número de personas que llegan por unidad de tiempo) y de razón de servicio µ = 18 (número de elementos que pueden ser servidos en cada unidad de tiempo).. .m.0 221 96  3 × 3! 1 −  15 3+1 18 × 0. obtenidos variando el número de servidores (empleados en el almacen que se ocupan de suministrar las herramientas). pero este arreglo también supondría un mayor gasto en sueldos de estos empleados. por hora. Si hay muchos trabajadores solicitando herramientas se formarán colas y se perderá tiempo de trabajo.0 Coste por hora = 5 × 10 + 9 × 1 = 59 u. Caso de emplear sólo un servidor: El número medio de trabajadores en el sistema es L= ρ 1−ρ = λ µ−λ = 15 18−15 = 5.m. 3. Para resolver este problema consideramos los siguientes casos.855533 × 10 + 3 × 9 = 35. por hora. 855 533 × 0. 008 4 Coste por hora = 1. Caso de 3 servidores: 1 P0 = s−1 ρi = ρs i=0 i! + s!(1− ρ ) s ρs+1 s × s! 1 − ρ 2 s 1 3−1 i=0 15 ( 18 ) i i! + 3! ( 15 )3 18 ( 15 ) 1− 18 3 = 0.m. y los empleados que se las suministran tienen un sueldo de 9 u.m. 2. Esto se resolvería poniendo más empleados en el almacén.43213 = 15 2 18   3 Coste por hora = 0. m. por hora. Los trabajadores que necesitan alguna de ellas esperan a que un empleado del almacén se las suministre.008 × 10 + 9 × 2 = 28. 08 u.

m. ya que éste es el gasto del sueldo de 4 servidores. .m. TEORÍA DE COLAS 4.. 08 u. Con más de tres servidores el gasto es siempre superior a 9 × 4 = 36 u.218 TEMA 8. Por lo tanto lo más económico es emplear dos servidores con un coste por hora de 28.

ha de permitir generar muestras simuladas de su comportamiento. Entre los muchos problemas a los que se han aplicado técnicas de Simulación citamos los siguientes. evolucionando como éste. Generalidades La Simulación es una técnica para el análisis y estudio de sistemas complejos. Es decir se pretende determinar la ganancia que se obtendría si los pedidos de las diferentes mercancías 219 . por lo que la solución obtenida se va a apartar sustancialmente de la verdadera. Son estas muestras las que se usan para estudiar el problema tratado y dar una solución aproximada de éste.Tema 9 Introducción a la Simulación 9. siempre que el modelo la refleje adecuadamente. o conociendo algún modelo analítico su aplicación al estudio de dicho problema impone demasiadas simplificaciones a la realidad.1 Simulación. Este algoritmo. 1) Simulación del trafico de vehículos en cruces de vías con mucho tráfico con el objeto de estudiar si la colocación de nuevas señales de tráfico o de determinadas modificaciones en el flujo de vehículos mejorarían o empeorarían la circulación. Una vez determinados los objetos y las relaciones que vamos a tomar en consideración. La simulación pretende imitar el comportamiento del sistema real. Lo más frecuente es estudiar la evolución del sistema en el tiempo. Estas muestras nos permiten obtener estimaciones cada vez más próximas a la realidad. o bien no se conocen soluciones analíticas del problema planteado. 2) Simulación de la conducta de un modelo de inventarios. Esta técnica se emplea cuando. Para ello se formula un modelo de simulación que tiene en cuenta los elementos que vamos a considerar del modelo real y las relaciones entre estos. se formula la evolución del sistema por medio de un algoritmo. establecido el estado inicial del sistema. Ejecutando el programa obtenido las veces deseadas se puede obtener tantas muestras del comportamiento del sistema como queramos. Por lo general estos algoritmos se implemetan en un lenguaje de programación.

El objetivo es realizar esta operación de la forma más conveniente para el comerciante. a 10 euros cada una. . 9. INTRODUCCIÓN A LA SIMULACIÓN de un comercio se realizaran en determinada cantidad y se usaran ciertos criterios para determinar los momentos más convenientes para efectuar estos pedidos. Se sabe que la demanda se puede clasificar en alta media y baja. 3) Simulación de los movimientos sísmicos con el objeto de actuar de la mejor forma posible para paliar los efectos de estos fenómenos.45 y 0. Por lo general han de complementarse mutuamente. c) Facilidad de experimentación. etc. Además las pruebas están libres de las posibles situaciones de peligro que son inherentes a algunas situaciones reales.25 respectivamente. 5) Simulación de las urgencias clínicas que suelen producirse en una ciudad con el objetivo de gestionar los recursos de los servicios de urgencia de manera óptima.220 TEMA 9. Desventajas: a) Son generalmente más lentos que los cálculos analíticos b) Suelen ser métodos que dan soluciones aproximadas. 0.3. con el consiguiente ahorro económico. Cada una de estas cajas se compra por 25 euros y se vende en 40 euros. acercándonos más al problema real. En un modelo analítico la teoría y el desarrollo puede ser distinta para cada parámetro a determinar.). b) Una vez que el modelo se ha construido sirve para estudiar distintas estrategias y para determinar todos los parámetros del sistema. hay que venderlas en unas drásticas rebajas. 4) Simulación de las condiciones de vuelo de los aviones con el objetivo de entrenar a los futuros pilotos. fuga de clientes a otras tiendas. De todas formas no se debe establecer una competencia entre modelos analíticos y simulados. Ventajas y desventajas de la simulación: Ventajas: a) Modelos más fáciles de aplicar. con probabilidades 0. Si la demanda supera a la oferta suponemos que hay una pérdida de 15 euros por cada unidad que no se puede ofrecer al cliente (en concepto de perdida de prestigio. Por experiencia se sabe que la demanda es de 3 a 8 cajas diarias.. por lo que se pueden acometer problemas más complejos sin imponer demasiadas simplificaciones.2 Un ejemplo muy sencillo Ejemplo 91 Consideramos el caso de una cadena de tiendas que se dedica a vender pescado por cajas. pero las cajas que no se vendan al final del día. Desarrollamos a continuación un sencillo ejemplo que nos va servir para mostrar de una forma simple en qué consiste esta técnica de Simulación.

35 0. 69 56 30 32 66 79 55 24 80 35 10 98 92 92 88 82 13 04 86 31 Para respetar los valores de la probabilidad indicada en la tabla anterior realizamos la siguiente asignación.25) 0. Los ordenadores tienen una función para generar estos números.10 (85 a 89) 0.10 (90 a 99) Media (30 a 74) 0. con lo que obtenemos para el día 1 una demanda media.30 (30 a 59) 0.25 0.05 0.10 (00 a 09) 0.25 (15 a 39) 0.10 Media (0.05 (90 a 99) Baja (75 a 99) 0.10 (05 a 14) 0. También podemos recurrir a realizar un sorteo con un juego de Bingo.20 0. ¿Cómo se puede resolver este problema por simulación? Con el objeto de ilustrar el procedimiento vamos a hacer una simulación manual.05 (90 a 94) 0.05 0. Para ello generamos números aleatorios.05 (00 a 04) 0.25 0.05 Baja (0.35 (41 a 74) 0.2. diez para generar el tipo de demanda de cada uno de los diez días y otros diez para generar la cantidad demandada.30 0.20 0.25 0.05 (95 a 99) Generamos la demanda para el primer día: usando el primer número aleatorio (69) que está entre 30 y 74.10 0.15 0. el comerciante ha decidido adquirir diariamente 5 cajas. Mirando la columna que corresponde a la demanda media vemos que está entre 30 y 59. es decir sin emplear ordenador.25 (60 a 84) 0. Necesitamos una secuencia de 20 números. así que seleccionamos una demanda de 5 cajas para el primer día.15 0.3) 0. haciendo corresponder a cada probabilidad una cantidad de números proporcional a ésta.20 (70 a 89) 0.05 221 Por ser un producto perecedero. pero como de momento no vamos a emplear ordenador puede emplearse una tabla de números aleatorios o una lista de premios de la lotería.15 (75 a 90) 0. que se han obtenido con una tabla de números aleatorios comprendidos entre 00 y 99. Demanda 3 4 5 6 7 8 Alta (00 a 29) 0. Se desea simular el comportamiento de la demanda durante 10 días calculando la ganancia media por día y determinar el número óptimo de cajas que se deben adquirir diariamente para maximizar los beneficios.30 0. Ahora tendremos que determinar la cantidad demandada.10 0. ya que en este día la demanda es igual que . Para generar el número de cajas demandada en este día empleamos el segundo número (56). UN EJEMPLO MUY SENCILLO La distribución de la demanda por categorías aparece en la tabla: Demanda 3 4 5 6 7 8 Alta (0.15 (00 a 14) 0. La ganancia obtenida en este caso será 40 × 5 − 25 × 5 = 75 euros.10 0.9.30 (40 a 69) 0.25 (15 a 40) 0.20 (10 a 29) 0. Vamos a utilizar los siguientes.45) 0.

Es conveniente no obstante hacer simulaciones más largas.30 la demanda es alta.25×5+10×1 = 45 40×5 .25×5-15×1 = 60 40×4 .75 la demanda es media. baja) Se genera un número aleatorio entre 0 y 1.25×5-15×1 = 60 40×3 .30 y 0. según está indicado en la siguiente tabla.25×5-15×3 = 30 40×5 .25×5-15×2 = 45 40×5 .255+101 = 45 Sumando la ganancia obtenida en estos diez días y dividiendo por el número de estos se obtiene la ganancia diaria media: Media = 490/10 = 49 euros por día De momento hemos realizado la simulación con un pedido de 5 cajas durante 10 días. . Por eso las simulaciones se realizan frecuentemente en ordenador. Por ejemplo.25×5 = 75 40×5 . Si queremos responder a la pregunta de cuál es la cantidad de cajas por pedido que produce a la larga una ganancia máxima. Si este número es menor que 0. que hemos realizado anteriormente sería demasiado laboriosa. Demanda baja en otro caso. podemos actuar de forma similar a como hemos hecho para el pedido de 5 cajas con todas las cantidades razonables de pedido (de 3 a 8 cajas son las demandas posibles). DIA: 1 2 3 4 5 6 7 8 9 10 Compra al principio del día 5 5 5 5 5 5 5 5 5 5 Sorteo tipo de demanda 69 media 30 media 66 media 55 media 80 baja 10 alta 92 Baja 88 Baja 13 Alta 86 baja Sorteo demanda 56 32 79 24 35 98 92 82 04 31 (5) (5) (6) (4) (4) (8) (7) (6) (3) (4) Ganancia día 40×5 .25×5+10×1 = 45 40×4 . INTRODUCCIÓN A LA SIMULACIÓN la oferta. para que el valor medio de la ganancia sea más estable.25×5 = 75 40×5 . De forma similar se obtiene la ganancia de los días siguientes.222 TEMA 9. si está entre 0. El algoritmo que hay que implementar puede resumirse de la siguiente forma: Para cada pedido (3 a 8) Para cada día (1 a 365) se realizan los siguientes pasos: paso 1 Determinar el tipo de demanda (alta media. podíamos hacer la simulación durante un año (365 días).25×5+10×2 = 15 404 . En este caso la simulación manual. paso 2 Se genera otro numero aleatorio.

9.3. MÉTODO MONTECARLO Generar la demanda del día seleccionando el valor correspondiente según los valores indicados en la tabla, en la columna que corresponde al tipo de demanda obtenida en el Paso 1. paso 3 Se calcula el beneficio que corresponde a este día. Se calcula la media de los beneficios obtenidos en los 365 días.

223

Como este valor medio se realiza para todos los pedidos (de 3 a 8 cajas) se puede estimar cuál es la mejor elección. Con un programa realizado en FORTRAN, y con una simulación de 365 días, hemos estimado la ganancia media diaria en función del número de cajas pedidas, llegando a los resultados siguientes:
Cajas del pedido Beneficio medio 3 10.119 4 36.04 5 53.71 6 58.56 7 51.70 8 39.78

Estos resultados nos permiten decidir que un pedido de 6 cajas diarias es el que reportaría mayor beneficio diario medio.

9.3

Método Montecarlo

Aunque las técnicas de Simulación pueden ser deterministas, es decir que se pueden simular fenómenos que no sean aleatorios, lo más frecuente, como ocurre en el ejemplo anterior, es que el fenómeno que se pretende simular tenga algún componente aleatorio. En este caso decimos que se usa el método Montecarlo. La esencia del método Montecarlo es la experimentación con números aleatorios. El procedimiento usado consiste en diseñar juegos de azar con estos números, esperando obtener de su observación conclusiones útiles para la resolución del problema que se esté estudiando. Aunque se han publicado algunos trabajos relacionados con el método de Montecarlo que no han precisado el uso de ordenadores, lo cierto es que la utilidad del método de Montecarlo se ha visto enormemente incrementada con el uso de las modernas computadoras. Resulta difícil creer que basándose en el puro azar puedan obtenerse conclusiones que merezcan la pena y, de hecho, algunos investigadores desconfían todavía de las estimaciones que se consiguen con este método, a pesar de sus múltiples éxitos en el campo de la Investigación Operativa, de la Física y de otras ramas de las Ciencias, como la Biología, la Química, e incluso la Medicina. Los métodos de Montecarlo suelen clasificarse en dos tipos: probabilistas y deterministas.

224

TEMA 9. INTRODUCCIÓN A LA SIMULACIÓN

En el Montecarlo probabilista se simulan con números aleatorios fenómenos que son aleatorios en la realidad. Los números se eligen de tal forma que reproduzcan la distribución de probabilidad de la población estudiada y, de su observación, se deducen características de ésta. Por ejemplo, la Física Nuclear suministra las funciones que rigen el movimiento de los neutrones. Reproduciendo estas leyes con números aleatorios se puede simular un reactor nuclear y “experimentar” con él, evitando los problemas de dinero, tiempo y seguridad que implicaría la experimentación con un reactor nuclear verdadero. En el Montecarlo determinista se resuelven problemas que no son aleatorios en la realidad, asociándolos con algún experimento aleatorio diseñado expresamente con este propósito. Un ejemplo de este tipo es el cálculo numérico de integrales definidas.

9.4

Notas históricas sobre el Método Montecarlo

El nombre y el comienzo del desarrollo sistemático del método Montecarlo datan aproximadamente de 1944, época en la que se realizaron las investigaciones relacionadas con las primeras bombas atómicas. En tales investigaciones, llevadas a cabo principalmente en el laboratorio americano de Los Álamos, los procesos de absorción de neutrones se simularon mediante un conjunto de ruletas adecuadamente graduadas, que originaron el nombre de “Montecarlo” con el que Von Neuman y sus colaboradores designaron a esta técnica. Sin embargo, ya desde el siglo XVIII es posible encontrar algunos vestigios de las ideas que subyacen en el método Montecarlo. En 1777 el conde de Buffon hizo un estudio del juego siguiente, de moda por aquella época: una aguja de longitud L se arroja sobre un plano en el que hay dibujadas varias rectas paralelas con una distancia d (d > L) entre ellas. Se gana si la aguja cae sobre alguna de las rectas paralelas. El conde de Buffon determinó la probabilidad (P ) de ganar experimentalmente (a base de tirar la aguja una gran cantidad de veces), y analíticamente, calculando para P la expresión: P = 2L/πd Años mas tarde, en 1886, Laplace sugirió que este procedimiento podría ser útil para calcular experimentalmente el valor del número π. Este momento es considerado en ocasiones como el punto de partida de las aplicaciones “serias” del método Montecarlo. Otros trabajos pioneros sobre Montecarlo fueron los de Thompson (Lord Kelvin) en 1901, sobre la evaluación de algunas integrales de uso en la teoría de los gases. Gosset -con el seudónimo de Student- aplicó el método Montecarlo para obtener la distribución del coeficiente de correlación (1908). En 1930 Fermi empleó el método Montecarlo para sus trabajos sobre difusión y transporte de los neutrones, que resultaron esenciales para el desarrollo de las bombas y centrales nucleares. Como ya se ha apuntado, durante la segunda guerra mundial se trabajó en estos

9.5. GENERACIÓN DE NÚMEROS ALEATORIOS

225

temas. Aparte de Von Neuman, ya citado, cabe resaltar las aportaciones de Fermi, Ulam y Metrópolis. Durante esa época, la aparición de las primeras computadoras digitales dio un fuerte impulso al desarrollo del método Montecarlo. Paradójicamente estos trabajos propiciaron a la vez un cierto descrédito del método, pues se aplicó a casi cualquier cosa, sin tener en cuenta para nada los problemas de eficiencia que le son inherentes. En los últimos años, debido al avance experimentado en el campo de los ordenadores, a la aparición de diversas técnicas para reducir la varianza de las estimaciones obtenidas, y al muestreo de Metrópolis, el método de Montecarlo parece haber entrado en un nuevo periodo de florecimiento.

9.5

Generación de números aleatorios

Ya que casi siempre la simulación es aleatoria normalmente necesitamos un generador de estos números. Los ordenadores suelen tener un comando para generarlos. Con el nombre de números aleatorios designamos, en esta ocasión, a las muestras procedentes de una distribución uniforme en el intervalo [0,1]. Los método de generación de números aleatorios pueden clasificarse en las categorías siguientes: a) Métodos manuales: Loterías, Ruletas. Suelen ser lentos y no reproducibles. Durante bastante tiempo se creyó que era el único procedimiento para producir verdaderos números aleatorios. b) Métodos analógicos. En este caso los números se obtienen de algún experimento físico que pueda recibirse en el ordenador. Se pueden generar rápidamente, pero no son reproducibles. c) Tablas de números aleatorios: Es el procedimiento que hemos empleado en el ejemplo. Es un procedimiento lento y presenta el inconveniente de que la tabla puede ser insuficiente para una simulación larga. La primera tabla de números aleatorios fue preparada por Tippett (1927). Un método que se ha usado es preparar la tabla y almacenerla en la memoria del ordenador. En 1955 se publicó la Tabla de la Rand Corporation con un millón de dígitos. Para realizar estas tablas se usaron métodos analógicos: los datos se extrajeron del “ruido“ de un generador de pulsos electrónicos. d) Algoritmos para ordenador. Estos métodos están basados en generar números usando un programa de ordenador. El algoritmo usado es determinístico, así que estrictamente hablando los números generados no serían aleatorios, pero se comportan como si lo fueran ya que cumplen los test de independencia y de aleatoriedad, así que se pueden usar en lugar de éstos. Se conocen con el nombre de números pseudoaleatorios.

226

TEMA 9. INTRODUCCIÓN A LA SIMULACIÓN

9.5.1

Propiedades de un buen generador de números aleatorios

Un generador de números aleatorios debe tener las propiedades siguientes: a) Debe generar números aleatorios (uniformemente distribuidos e independientes). b) Debe generarlos rápidamente. c) No debe requerir mucho lugar de almacenamiento en el ordenador. d) No debe formar en ciclos, o al menos que los ciclos sean de periodo suficientemente largo. f) La secuencia de números ha de ser reproducible. Es decir que se pueda repetir, si se considera conveniente, una secuencia de números que se haya producido anteriormente. De esta forma se podría repetir exactamente cualquier prueba ya realizada. En los programas de ordenador esto se consigue usando la misma semilla (número que inicializa el algoritmo).

9.5.2

Método del centro del cuadrado

Von Neumann sugirió el método del centro del cuadrado: Partiendo de un número de n cifras, generalmente un número par de cifras, realizar su cuadrado (suponemos que tiene 2n cifras) y extraemos el número formado por las n cifras centrales. Los números sucesivos se obtienen tomando el cuadrado del número precedente y extrayendo los dígitos centrales. Por ejemplo si se partía del número 5332, para obtener el siguiente se hallaba 52322 =27373824. El siguiente número era el subrayado. Este procedimientones lento, tiende a formar ciclos cortos y si se obtiene un número con tres ceros en el centro no podemos conseguir ya números distintos.

9.5.3

Método de las congruencias

Fueron sugeridos por Lehmer en 1949. Se basan en calcular los residuos módulo m de una transformación lineal. La relación de congruencia fundamental es: Xi+1 ≡ (aXi + c) (mod m) siendo a, c y m enteros no negativos. Los métodos que usan esta relación se llaman congruenciales mixtos. Dado un valor inicial llamado semilla X0 , se obtienen diferentes números todos ellos menores que m. Obviamente la cantidad de números distintos generados de esta forma es menor o igual que m. Por ejemplo, para a = 5, c = 0 y X0 = 3 y m = 8 la secuencia generada es 3, 7, 3, 7. Esta secuencia es cíclica con periodo 2 < 8.

9.5. GENERACIÓN DE NÚMEROS ALEATORIOS

227

Por supuesto elegimos m tan grande como podamos. Si p es el periodo y p = m la sucesión se llama de periodo completo. Puede demostrarse que una sucesión es de periodo completo si y solo si a) c y m son primos entre sí. b) a ≡ 1(mod g), siendo g cualquier factor primo de m. c) a ≡ 1 (mod 4), si m es múltiplo de 4. m estará limitado por el ordenador . Si este es binario m = 2β como máximo, donde β depende del ordenador (β = longitud de la palabra más larga − 1). Se consigue una sucesión de 2β elementos tomando c impar y a ≡ 1(mod 4). Los valores m = 235 , a = 27 +1 y c = 1 dan buenos resultados para un ordenador cuya palabra máxima tenga 36 bits. El caso particular de que c sea nulo se habla de un generador multiplicativo. Xi+1 ≡ (aXi ) (mod m) En este caso no puede obtenerse un periodo completo. Los métodos congruenciales tienen la ventaja de ser muy rápidos y ocupar poca memoria, dar números que soportan bien los test de adherencia de ajuste. Sin embargo suelen presentar problemas de autocorrelación. También se observa que los últimos dígitos no siguen una distribución uniforme. Estos problemas suelen arreglarse con rutinas que hacen algunas modificaciones a los métodos congruenciales: usar las primeras cifras, barajar los números, formar un número de varias cifras uniendo las primeras de varios números generados anteriormente, etc. Rutinas de este tipo son las incluidas en el capítulo 7 de Numerical Recipes. La última de ellas Ran3 de Knuth es una buena rutina de generación de números aleatorios. La mostramos a continuación.
C ––––––––––––––––––––C – SUBPROGRAMA RND – C – CALCULA UN NUMERO ALEATORIO COMPRENDIDO ENTRE 0 Y 1 – C – MIDUM = SEMILLA DE CUATRO CIFRAS –––––––C – TOMADA DE LA PAG 199 DE *NUMERICAL RECIPES* ––––C ––––––––––––––––––––SUBROUTINE RND(MIDUM,RAN) IMPLICIT REAL*8(A-H,O-Z)

55 MA(I)=MA(I)-MA(1+MOD(I+30.OR.0)THEN IFF=1 MJ=MSEED-IABS(IDUM) MJ=MOD(MJ.FAC=1.MBIG) MA(55)=MJ MK=1 DO 11 I=1.EQ.MZ)MK=MK+MBIG MJ=MA(II) 11 CONTINUE DO 13 K=1.4 DO 12 I=1.228 TEMA 9.56)INEXT=1 INEXTP=INEXTP+1 .MZ=0.IFF.55) MA(II)=MK MK=MJ-MK IF(MK./MBIG) DIMENSION MA(55) DATA IFF /0/ IDUM=-MIDUM IF(IDUM.LT.LT. INTRODUCCIÓN A LA SIMULACIÓN PARAMETER (MBIG=1000000000.EQ.MSEED=161803398.MZ)MA(I)=MA(I)+MBIG 12 CONTINUE 13 CONTINUE INEXT=0 INEXTP=31 IDUM=1 ENDIF INEXT=INEXT+1 IF(INEXT.55)) IF(MA(I).LT.0.54 II=MOD(21*I.

1 Método de la transformación inversa aplicado a la distribución exponencial En este caso el método anteriormente descrito es de fácil aplicación. se usa el hecho conocido de que si denotamos su función de Distribución por F (x).6.1).LT.6.9.1) actuando del modo siguiente: a) Se generan valores de con una distribución uniforme en el intervalo (0.56)INEXTP=1 MJ=MA(INEXT)-MA(INEXTP) IF(MJ.exp(−hx)dx 0 = η = 1 − exp(−hx) donde η ∈ U [0. en el intervalo considerado.exp(−hx) : F (x) = x h. Por lo tanto se pueden generar números aleatorios uniformemente distribuidos en (0.MZ)MJ=MJ+MBIG MA(INEXT)=MJ RAN=MJ*FAC MIDUM=-IDUM RETURN END 229 9. no es tarea fácil. a veces queremos generar números cuya distribución de probabilidad no sea uniforme. 1] Despejando x se obtiene: . es decir cualquier número. Mostramos la forma de generar muestras procedentes de una distribución eponencial.1). No obstante.EQ. en muchos casos. con función densidad f (x) > 0. Si queremos generar valores de una variable aleatoria. Este método presenta dos dificultades de tipo práctico: Calcular y resolver la ecuación F (ξ) = η. tiene la misma probabilidad de ser generado. 9. La función de densidad es f(x) = h. F (ξ) = η se distribuye uniformemente en el intervalo (0. lo que. b) Se calcula el número generado con la relación ξ = F −1 (η). Para ello hay una gran variedad de métodos. Describimos únicamente el método llamado de la transformación inversa. MÉTODO DE LA TRANSFORMACIÓN INVERSA IF(INEXTP.6 Método de la transformación inversa Los números generados por la función RANDOMIZE (o análogas) de los ordenadores siguen una distribución uniforme.

230 TEMA 9. lo que nos permitirá contrastar los resultados obtenidos en la simulación con los que se obtienen por vía teórica. Comenzamos generando números aleatorios. Para transformarlos en elementos de una distribución exponencial de los intervalos entre llegadas usaremos la transformación: 1 ξ 1 = − 15 ln η 1 . INTRODUCCIÓN A LA SIMULACIÓN 1 x = − h L(1 − η). Si se expresa en minutos sería 1 ξ 1 = − 15 ln η1 × 60. Ejemplo 92 Simular una cola de una sola línea y un solo servidor siendo la razón de llegada λ=15 (número de personas que llegan por unidad de tiempo) y la razón de servicio µ = 18 (número de elementos servidos en cada unidad de tiempo). Por este motivo incluiremos ahora un ejemplo de simulación de una cola de este tipo (modelo exponencial). pero esto ocurre solamente en los casos más simples. En este caso puede hacerse uso de la expresión anterior. también en minutos quedaría 1 ξ 2 = − 18 ln η2 × 60. tambien se puede calcular cada elemento de la muestra usando la expresión: 1 x = − h Lη. Como 1 − η sigue la misma distribución que η. A veces es posible estudiar los fenómenos de espera analíticamente. El siguiente ejemplo es lo suficientemente sencillo como para que pueda realizarse analíticamente. expresando el intervalo entre llegadas en horas.7 Simulación de una cola M/M/1 Los sistemas de colas suelen modelarse con la distribución exponencial. y para los tiempos empleados en despachar las herramientas. así que es frecuente acometer el análisis y estudio de los sistemas de colas por simulación. lo que nos va a permitir contrastar los resultados analíticos con los obtenidos por medio de una simulación de la cola. Si la sucesión de números aleatorios que generamos para intervalos entre llegadas es: . 9.

Cada renglón puede representar el estado del sistema. ncola = long de la cola 0 0 1 0 1 2 1 .22313. 4.08677×10−3 y para tiempos de servicios 6. . . tiproser = hora próx partida 9999 17 17 35 35 35 50 . 4. .51658×10−3 .83156 × 10−2 ) × 60 = 16. . .47875×10−3 . 0. 2.9.0 minutos.1 (las variables tienen el nombre y significado descrito en las tablas). .83156×10−2 . aunque esto no es imprescindible. . 0. . . . .011109. . SIMULACIÓN DE UNA COLA M/M/1 1. 4. tiproll = hora próx llegada 0 16 28 28 34 56 56 . En el ejemplo. Tiempo de reloj 0 0 16 17 28 34 35 libre=1 ocupado=0 1 0 0 0 0 0 0 . tiempo entre llegadas tiempo de servicio 0 17 16 18 12 15 6 20 22 10 Para simular el sistema podemos seguir el cambio de las variables definidas en la tabla siguiente.97871×10−2 entonces el primer intervalo entre llegadas que se obtiene es: 1 1 ξ 1 = − 15 ln η1 × 60 = − 15 ln(1. El algoritmo correspondiente puede seguir el diagrama de flujo de la figura 9.7. tipo de suceso Inicio llegada llegada partida llegada llegada partida . 4. . 231 Continuando las operaciones con los siguientes números aleatorios obtendríamos los valores de la siguiente tabla que representa los intervalos entre llegadas consecutivas y el tiempo de estancia en el servidor de los primeros elementos que van llegando al sistema. . comenzamos la simulación (reloj a 0) con la primera llegada. suceso 0 1 2 3 4 5 6 .97871×10−2 .09675×10−3 . . .

.232 TEMA 9. INTRODUCCIÓN A LA SIMULACIÓN Inicio Reloj=0 N1li0oc=1 Ncola=0 Tiproll=0 Tiproser=9999 Tipo=partida (un individuo sale del sistema) reloj = =reloj+tiproser NO tiproll < tiproser SI Tipo=llegada (un individuo entra en el sistema) reloj = =reloj+tiproll SI Ncola =0 Ser=1 Tiproser=9999 Ncola=ncola+1 SI Ser=0 NO NO Ser=0 Ncola=ncola-1 Tiproser=reloj+ts Tiproll = reloj+tell Ser=0 Tiproser=reloj+ts SI Tiproll ≤ duración y Tiproser ≤ duración NO STOP Figura 9.1: Diagrama de flujo del programa de simulación de una cola M/M/1.

*)’ ’ . las demandas de servicio siguen la distribucion de poisson los tiempos de servicio se distribuyen con una exponencial negativa el modelo estima el tiempo de utilizacion del servidor.NCOLA CHARACTER*10 TIPO OPEN(6.*)’ SIMULACION DE UNA COLA’ WRITE(6. longitud media de la cola.*)’ *** DURACION DE LA SIMULACION EN HORAS ***’ READ(*.FILE=’COLA.*)VLLPORH WRITE(*.*)’ –––––––-’ WRITE(6. numero medio de clientes en el sistema.1 c c c c c c c c Programa FORTRAN ***este programa simula una cola con una unica cadena y una sola fase .7.*)TITOT WRITE(*. Esta estima ción se basa en una simulacion.*)’ ’ WRITE(6. y la probabilidad de que haya que esperar para ser atendido.*)’ *** MEDIA DE CLIENTES ATENDIDOS POR HORA *** ’ READ(*. cuya duracion es introducida como dato *** c––––––––––––––––––––––––––––––––––c ***informacion del modelo *** INTEGER NLLEGA. SIMULACIÓN DE UNA COLA M/M/1 233 9.NESPERA. tiempo medio de espera antes de recibir servicio.RES’) c WRITE(*.*) SERPORH WRITE(*.*)IX NSEMILLA=IX WRITE(6.*)’****Introduce media de clientes que llegan por hora*****’ READ(*.7.*)’ DATOS DE LA COLA:’ WRITE(6.*)’(NUMERO NATURAL DE UN MAXIMO DE 4 CIFRAS) ’ READ(*.9.*)’ *** SEMILLA *** ’ WRITE(*.

NCOLA .50)TIPO.NSEMILLA WRITE(6.*)’ TIPO RELOJ NCOLA N1LI0OC TIPR0LL TIPR0SER’ WRITE(6.*)’ SIMULACION DE UNA COLA’ WRITE(*. RELOJ .100)VLLPORH. TIPR0SER 60 TIPSUC=AMIN1(TIPR0LL. INTRODUCCIÓN A LA SIMULACIÓN WRITE(*.TITOT) .TIPR0SER.TITOT. y el tiempo de terminar la simulacion*** WRITE(6.*)’ ’ c 30 ***valores de inicializacion *** NLLEGA=0 RELOJ=0 NESPERA=0 N1LI0OC=1 TISEROC=0 TIESPERA=0 NCOLA=0 TIPO=’ INICIO’ c c c ***calcula el tiempo de llegada al sistema del primer cliente demandando servicio*** CALL RND(IX.N1LI0OC.SERPORH. una eleccion conveniente es la duracion de la simulacion*** TIPR0SER=TITOT c c c c *** el tiempo del proximo suceso se toma como el minimo del tiempo de llegada.234 TEMA 9.-YFL)/VLLPORH c c c ***como no hay nadie en la cola el tiempo en que se termina el servicio se toma como arbitrariamente grande. tiempo de completar el servicio .YFL) TIPR0LL=-ALOG(1.*)’ –––––––-’ WRITE(*.*)’ DATOS DE LA COLA:’ WRITE(*. TIPR0LL.

EQ.TIPR0SER) GO TO 80 c c c.TITOT) GO TO 90 IF (TIPSUC.-YFL)/VLLPORH c c c c c ***va a 70 si el servidor esta libre.9. c c NLLEGA=NLLEGA+1 CALL RND(IX.1) GO TO 70 NESPERA=NESPERA+1 NCOLA=NCOLA+1 TIPO =’ LLEGADA’ ***en otro caso el propio suceso es una llegada modifica el numero total de llegadas y genera el tiempo en que vendra el siguiente cliente*** ***va a 90 si el proximo suceso es parar la simulacion.EQ.EQ.YFL) TIPR0LL=RELOJ-ALOG(1. luego el reloj se adelanta hasta el tiempo del proximo suceso*** TISEROC=TISEROC+N1LI0OC*(TIPSUC-RELOJ) TIESPERA=TIESPERA+NCOLA*(TIPSUC-RELOJ) RELOJ=TIPSUC c c c c IF (TIPSUC. SIMULACIÓN DE UNA COLA M/M/1 c c c c ***calcula el total del tiempo ocupado del servidor y el de espera de los que esperan servicioe.7. si no es asi modifica el numero de los que han tenido que esperar y el numero de los que estan esperando ahora y vuelve al principio para determinar de que tipo es el siguiente suceso*** IF (N1LI0OC. o va a 80 si el siguiente suceso es completar un servicio*** 235 .

NCOLA .236 TEMA 9. luego vuelve para determinar el tipo del siguiente suceso*** N1LI0OC=1 TIPR0SER=TITOT TIPO=’ LLEGADA’ WRITE(6. pues el servidor ha quedado libre *** .YFL) TIPR0SER = RELOJ .N1LI0OC. RELOJ . TIPR0SER GO TO 60 c c ***DISMINUYE LA LONGITUD DE LA COLA IF (NCOLA. RELOJ .N1LI0OC.ALOG(1.0) GO TO 85 ***ha terminado un servicio. TIPR0LL. INTRODUCCIÓN A LA SIMULACIÓN WRITE(6.NCOLA .F10.2) GO TO 60 c c c c c 70 ***modifica el estado del servidor.-YFL)/SERPORH TIPO =’ LLEGADA’ WRITE(6. TIPR0SER 50 FORMAT(A10. genera el tiempo de duracion del servicio el numero de los que estan esperando ahora y vuelve al principio para determinar de que tipo es el siguiente suceso*** N1LI0OC=0 CALL RND(IX. va a 85 si alguien esta esperando.2.I10. RELOJ . TIPR0LL.50)TIPO.F10. TIPR0LL.F10.I10. registra que el servidor esta libre y el tiempo de la siguiente partida la pone en un valor arbirariamente alto.50)TIPO.2.GT.NCOLA .50)TIPO.N1LI0OC. TIPR0SER GO TO 60 c c C 80 c c c c c ***si no hay nadie esperando.

SIMULACIÓN DE UNA COLA M/M/1 c c 85 GENERA EL TIEMPO DE COMPLETAR EL SERVICIO Y VUELVE PARA DETERMINAR DE QUE TIPO ES EL SIGUIENTE SUCESO *** NCOLA=NCOLA-1 CALL RND(IX.9.N1LI0OC.F7.*)’ ’ WRITE(*.*)’ ’ WRITE(6. RELOJ .YFL) TIPR0SER=RELOJ-ALOG(1.VMTEC.100)VLLPORH.VMNCOLA.VMNCOLA.NCOLA .F7. TIPR0LL.PRESPE WRITE(6.*NESPERA/NLLEGA WRITE(6.NSEMILLA WRITE (*.2/ ’ SEMILLA: ’.2/ ’ MEDIA DE CLIENTES ATENDIDOS POR HORA: ’.-YFL)/SERPORH TIPO=’ PARTIDA’ WRITE(6 .F7.50)TIPO.2/ 237 .*)’ RESUMEN DE LA SIMULACION:’ WRITE(6.I5/) FORMAT (’ % DE ACTIVIDAD DEL SERVIDOR: ’. HORAS: ’.VMPES.*)’ ––––––––’ WRITE(6. TIPR0SER GO TO 60 c c c 90 ***se ha terminado el tiempo de la simulacion se calculan los estadisticos se prepara la salida de la informacion***** ACTIV=(TITOT-TISEROC)/TITOT VMNCOLA=TIESPERA/TITOT VMPES=VMNCOLA+ACTIV VMTEC=TIESPERA/NLLEGA PRESPE=1.VMPES.TITOT.7.110)ACTIV.PRESPE 100 1 2 3 4 110 FORMAT ( ’ MEDIA DE LLEGADAS POR HORA: ’.SERPORH.2/ ’ DURACION DE LA SIMULATION.*)’ ’ WRITE (6.F7.110)ACTIV.VMTEC.

17 0..21 0.2/ ’ TIEMPO MEDIO DE ESPERA EN LA COLA: ’...13 0.238 1 2 3 4 TEMA 9..35 0.20 0.05 0.00 0.00 DURACION DE LA SIMULACION..F7...00 MEDIA DE CLIENTES ATENDIDOS POR HORA: 18.35 0.17 0.00 0.... INTRODUCCIÓN A LA SIMULACIÓN ’ LONGITUD MEDIA DE LA COLA: ’...2/ ’ PROBABILIDAD DE TENER QUE ESPERAR: ’..20 0.18 0..F7.00 0...18 0..35 0.. .00 SEMILLA: 65 TIPO INICIO LLEGADA PARTIDA LLEGADA LLEGADA LLEGADA PARTIDA PARTIDA LLEGADA RELOJ 0.24 8....13 0. TIPR0LL 0. HORAS: 8.13 0.2/ ’ NUMERO MEDIO DE PERSONAS EN EL SISTEMA: ’.2/) WRITE(*..21 0..02 0.24 NCOLA N1LI0OC 0 1 0 0 0 1 0 0 1 0 2 0 1 0 0 0 0 1 .20 0.35 TIPR0SER 8.RES’ STOP END ***************************************************************************** Salida de resultados de una simulación SIMULACION DE UNA COLA DATOS DE LA COLA: MEDIA DE LLEGADAS POR HORA: 15.*)’ ESTAN GUARDADOS EN EL FICHERO COLA.F7.02 0..F7.*)’ LOS RESULTADOS INTERMEDIOS DE ESTA SIMULACION’ WRITE(*...00 .05 8..20 0..

16.75 7.90 7.90 7.73 0.10 4.95 NCOLA 7 6 7 6 7 8 9 8 9 8 7 6 N1LI0OC 0 0 0 0 0 0 0 0 0 0 0 0 TIPR0LL 7.14 PROBABILIDAD DE TENER QUE ESPERAR: 0.9.81 7.76 7.84 TIEMPO MEDIO DE ESPERA EN LA COLA: 0.93 7.81 7.90 7.84 7.78 La tabla siguiente presenta un resumen de la simulación de 8 horas y de otra de 10000 horas. sino también a que no se ha llegado a obtener aún el régimen estacionario.93 7.91 7.00 8.91 7.77 7.90 7.00 TIPR0SER 7.04 239 En las dos tablas anteriores se presenta la evolución de la cola en los primeros y en los últimos momentos de una simulación de 8 horas.90 7.91 7. no sólo a la escasez de datos.84 5.84 7.90 7.14 0.91 8.81 7. SIMULACIÓN DE UNA COLA M/M/1 TIPO LLEGADA PARTIDA LLEGADA PARTIDA LLEGADA LLEGADA LLEGADA PARTIDA LLEGADA PARTIDA PARTIDA PARTIDA RELOJ 7.90 7.76 7.7.833 = 4.84 7.23 λ2 µ(µ−λ) No medio de personas en el sistema 2.91 7.00 8.95 8.90 7. Duración de la Simulación 8 horas 10000 horas Resultados analíticos Actividad del Servidor 0.73 LONGITUD MEDIA DE LA COLA: 2. RESUMEN DE LA SIMULACION (8 horas): –––––––– ACTIVIDAD DEL SERVIDOR (fracción): 0 . como en este ejemplo. A veces las simulaciones cortas.07 λ µ−λ Tiempo medio de espera en la cola 0. observándose la similitud de estos valores con los obtenidos en la simulación más larga.90 7. no son suficientes para obtener una precisión aceptable debido.00 8.28 λ µ(µ−λ) = 0.10 NUMERO MEDIO DE PERSONAS EN EL SISTEMA: 2.277 .91 7. Se comparan con los resultados analíticos. =5 = 0.77 7.77 7.84 λ µ Longitud media de la cola 2.

Tratamos ahora el problema de calcular la integral b unidimensional I = a g(x)dx. g(x).240 TEMA 9. y) ∈ R2 x ∈ [a. Y ) una variable aleatoria uniformemente distribuida sobre de densidad: 1 c(b−a) con función fXY = si (x. y)| y < g(x)}. aunque sí es el más intuitivo. b].2): 0 ≤ g(x) ≤ c. Método de éxito-fracaso En el modelo de simulación de la cola. y ∈ [0.8 Integración Montecarlo. INTRODUCCIÓN A LA SIMULACIÓN 9. b] Sea el rectángulo = {(x. b] × [0. c] y sea (X. I= Con ayuda de la figura. que a su vez coincide con el valor de la integral b a g(x)dx. hemos aplicado un Montecarlo Probabilista. no es el más eficiente. Consideremos ahora un ejemplo de aplicación del Montecarlo Determinista: el cálculo de una integral definida. método de éxitofracaso. y) ∈ 0 en otro caso ¿Cuál es la probabilidad P de que el vector aleatorio (x. y) caiga en el área situada por debajo de la curva g(x) ? Denotemos por S = {(x. Se supondrá que el integrando. x ∈ [a. es una función acotada (ver figura 9. c]} = [a. Se observa que el área bajo g(x) es igual al área de S. El procedimiento que se empleará. se puede deducir que: b a P= Por tanto area S area = g(x)dx c(b−a) = I c(b−a) I = c(b − a)P .

existiendo diversos procedimientos alternativos que permite reducir los errores en las estimaciones de la integral. y si no pertenece a S como un fracaso.(xN .. b Figura 9. . La probabilidad P puede ser estimada por: P= Nh N siendo Nh el número de estos puntos que se verifica g(xi ) > yi (es decir. de ahí el nombre del método. que caen dentro del área que quiere calcularse). que presentamos aquí por su simplicidad. INTEGRACIÓN MONTECARLO.2: Para estimar el valor de P generamos N puntos aleatorios independientes: (x1 . conviene tener en cuenta que el método Montecarlo no es el más indicado para el cálculo de integrales unidimensionales. siendo sin embargo uno de los más eficientes cuando el número de variables del integrando es bastante elevado. Este método. Por lo tanto un valor aproximado de I puede obtenerse de la forma siguiente I = c(b − a)P Si el extremo del vector aleatorio “cae” en S se interpreta como un éxito. no suele ser muy eficiente.. y1 ). yN ) dentro del rectángulo . MÉTODO DE ÉXITO-FRACASO g(x) Ω c * Fracaso 241 S * Exito x a Método MC de éxito-fracaso. De todos formas... (x2 .8. y2 ).9.

. Obsérvese que el valor exacto es 17.. éxito-fracaso. . Ejemplo 1 PROPÓSITO: Aplicar el método de integración Montecarlo.072. OPERATORIA Se sigue el orden siguiente : (1) Introducir los límites de integración a y b.9 Ejemplos de programas de simulación Describimos algunos programas de simulación que han sido realizados por algunos alumnos.242 TEMA 9. de forma práctica.333. y que pueden servir para sugerir la realización de otros similares y para mostrar que estas simulaciones son susceptibles de ser realizadas dentro del ámbito académico. UN EJEMPLO DE APLICACIÓN En la salida del programa siguiente se puede observar que el programa obtiene como valor aproximado de 2 (x2 −2 + 2x + 3)dx usando 250 puntos 17. INTRODUCCIÓN A LA SIMULACIÓN 9. (2) Indicar los coeficientes de la función polinómica de 2o grado. Se limita a funciones polinómicas de 2o grado.

(4) Establecer el número de puntos a generar en cada ejecución. para la generación de números aleatorios. EJEMPLOS DE PROGRAMAS DE SIMULACIÓN 243 (3) Introducir el valor inicial de la semilla. como se ve en la siguiente figura. se representa el número de puntos indicado en (4). Ejemplo 3 PROPÓSITO: Calcular los parámetros de una cola con una sola línea de espera y un solo servidor (distribuciones exponenciales). para incorporar en documentos (razón por la que se habilita el acceso a Paintbrush desde el menú de opciones). .9. cuyos elementos son números naturales pertenecientes a un cierto intervalo. Ejemplo 2 PROPÓSITO: Estimar la probabilidad de que el determinante de una matriz de orden 3 por 3.9. Puede COPIAR el gráfico en el portapapeles Windows. calculando el valor estimado del área. Pulsando el botón DIBUJAR se obtiene la gráfica de la función en el intervalo indicado y desde los valores máximo y mínimo que en él alcanza. El programa presenta una evolución visual de la cola. Cada vez que pulse AZAR. sea nulo. El programa muestra los determinantes generados según se muestra en la siguiente figura.

244 TEMA 9. . Ejemplo 4 PROPÓSITO: Estudio detallado de diversos sistemas de colas. INTRODUCCIÓN A LA SIMULACIÓN A continuación se presenta el resumen de los parámetros del sistema. con intervalos entre llegadas y tiempos de servicios generados por distintas distribuciones.

Se puede seleccionar cualquiera de las distribuciones de la ventana dada en la figura 9. Como resultado final aparecen los parámetros del sistema dados en una ventana cuya presentación puede verse en la figura 9. Cuando se alcanza este estado se inicia la simulación del sistema. 3) Gráfico de la evolución de los parámetros del sistema para verificar la estacionariedad del sistema.5.9. 4) Cálculo de los parámetros del sistema.3. EJEMPLOS DE PROGRAMAS DE SIMULACIÓN FUNCIONALIDAD DEL PROGRAMA: 1) Tipos de problemas planteados Sistemas con c.3: 2) Distribuciones de llegada y de servicio empleadas. respetando su estado actual.9. 245 Figura 9. La selección se realiza en el menú de la figura 9. hasta obtener los parámetros de la cola. Si se ha elegido el seguimiento gráfico se presenta una gráfica que permite decidir si se ha alcanzado el estado estacionario del sistema.canales de servicio Sistemas con c canales de servicio y capacidad restringida Sistemas con infinitos canales de servicios. APLICACIÓN A CASOS PRÁCTICOS Caso 1: En un aeropuerto con tres pistas de aterrizaje se ha contrastado que los .4.

246 TEMA 9.5: .4: Figura 9. INTRODUCCIÓN A LA SIMULACIÓN Figura 9.

de eventos Tiempo simulado Media de aviones en el sistema Media de aviones en espera Tiempo medio en el sistema Tiempo medio de espera 100000 1239722 1.0999 3. (1) Nodos de servicio (1.3175 12.0896 2.0917 35.02 min-1) en la pista 2 y una Erlang (15.2391 12. También aquí se constata la precisión de los resultados obtenidos.5 min) en la pista 3. Si se produce una llegada y las pistas están ocupadas.9. Puede observarse que los parámetros de la cola son bastante estables. En este caso se ha realizado una simulación con llegadas y tiempo de servicios exponenciales. el avión se mantendrá en vuelo en espera de aterrizar.3350 12.2412 6.0711 6. No.2800 500000 6245916 1. exponencial (0.04 min-1) y que los tiempos de maniobra en el aterrizaje se distribuyen como una uniforme (14 min.2195 Caso 2.3) exp.0767 2.2877 6.4152 0. EJEMPLOS DE PROGRAMAS DE SIMULACIÓN 247 tiempos entre las llegadas de los aviones se distribuyen según una ley exponencial (0.2.1666) 200000 400000 800000 Teórico 6.2184 800000 9982817 1.0693 6.. 20 min) en la pista 1.9. Nodo de llegada exp.1320 2.4127 0. Mostramos a continuación los resultados obtenidos por el programa para este problema usando simulaciones cada vez más largas.0910 3.3084 200000 2486862 1.0631 3.4040 0. (0.4044 0.0931 35.2981 6.2442 G/G/3/7 Eventos L Lq W Wq .0889 35.2444 6.0982 3. para poder contrastar las salidas del programa con los resultados obtenidos analíticamente. 6.0615 6.0514 2.0888 35.0920 12.

INTRODUCCIÓN A LA SIMULACIÓN .248 TEMA 9.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->