Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Teoriapto
Teoriapto
10 de Septiembre de 2002
ndice General
Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TEORA
11
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2 Programacin Lineal
2.1 Modelo general de programacin 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 Bsqueda de soluciones iniciales . . . . . . . . . . . . . . . . . . . . .
2.8.1 Mtodo de las Penalizaciones . . . . . . . . . . . . . . . . . .
2.9 Algoritmo del Simplex en forma matricial . . . . . . . . . . . . . . .
2.9.1 Mtodo del Simplex en forma matricial (caso maximizante) .
2.10 Adaptacin algebraica del algoritmo del Simplex . . . . . . . . . . .
2.10.1 Algoritmo del Simplex (enfoque algebraico) . . . . . . . . . .
2.10.2 Mtodo del Simplex en forma de tabla (Usando zj cj en la
ltima fila) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.11 Otros algoritmos de programacin lineal . . . . . . . . . . . . . . . .
2.11.1 Mtodo de las dos fases . . . . . . . . . . . . . . . . . . . . .
3
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
NDICE GENERAL
2.11.2 Algoritmo revisado del Simplex (Caso maximizante) . . . . .
79
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
85
85
85
88
91
92
94
105
107
4 Anlisis de sensibilidad
4.1 Introduccin grfica . . . . . . . . . . . . . . . . . . .
4.2 Cambios discretos . . . . . . . . . . . . . . . . . . . .
4.2.1 Variacin en un coste de una variable no bsica
4.2.2 Variacin en un coste de una variable bsica . .
4.2.3 Cambios en los recursos . . . . . . . . . . . . .
4.2.4 Cambios en los coeficientes tecnolgicos . . . .
4.3 Incorporacin de una nueva actividad . . . . . . . . .
4.4 Incorporacin de nuevas restricciones . . . . . . . . . .
4.5 Programacin Paramtrica . . . . . . . . . . . . . . . .
4.5.1 Parametrizacin de los coeficientes de coste . .
4.5.2 Parametrizacin de los recursos . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
111
111
112
112
114
116
116
117
118
119
119
124
5 El problema de transporte
5.1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Planteamiento como un problema de programacin lineal
5.3 Problema no equilibrado . . . . . . . . . . . . . . . . . . .
5.4 Propiedades del problema de transporte . . . . . . . . . .
5.5 Determinacin de una solucin inicial . . . . . . . . . . .
5.5.1 Mtodo de la esquina Noroeste . . . . . . . . . . .
5.5.2 Mtodo de costo mnimo . . . . . . . . . . . . . . .
5.5.3 Mtodo de Vogel . . . . . . . . . . . . . . . . . . .
5.6 Definicin 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 asignacin . . . . . . . . . . . . . . . . . .
5.11.1 El algoritmo Hngaro (Forma minimizante) . . . .
5.11.2 Ejemplo de aplicacin del algoritmo Hngaro . . .
5.12 Problema de emparejamiento . . . . . . . . . . . . . . . .
5.13 Problema de planificacin de la produccin . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
127
127
128
129
129
129
130
132
134
137
137
141
143
144
146
146
147
149
150
.
.
.
.
.
.
.
.
NDICE GENERAL
6 Modelos de Redes
6.1 Redes. Conceptos bsicos . . . . . . . . . .
6.2 Caminos de longitud mnima . . . . . . . .
6.3 Algoritmos de ordenacin y de etiquetacin
6.4 Algoritmo de Dijkstra . . . . . . . . . . . .
6.5 Problema del flujo mximo . . . . . . . . .
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 mtodo PERT . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
155
155
157
158
161
163
165
165
166
169
171
173
7 Programacin Entera
7.1 Introduccin . . . . . . . . . . . . . . . . . . .
7.2 Algunos problemas de programacin 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 ramificacin y acotacin . . .
7.3.1 Resumen . . . . . . . . . . . . . . . .
7.3.2 Programacin entera mixta . . . . . .
7.4 Algoritmo de corte o de Gomory . . . . . . .
7.4.1 Resumen del algoritmo de Gomory . .
7.5 Programacin 0-1. Algoritmo de enumeracin
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
177
177
178
178
179
180
181
183
185
185
188
189
8 Teora de Colas
195
8.1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
8.1.1 Costos de los sistemas de colas . . . . . . . . . . . . . . . . . 197
8.1.2 Estructuras tpicas. . . . . . . . . . . . . . . . . . . . . . . . . 198
8.2 Terminologa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
8.2.1 Caractersticas fsicas . . . . . . . . . . . . . . . . . . . . . . 198
8.2.2 Caractersticas de funcionalidad . . . . . . . . . . . . . . . . . 200
8.2.3 Parmetros de los sistemas de colas . . . . . . . . . . . . . . 201
8.3 Modelos de llegadas y de tiempo de servicio . . . . . . . . . . . . . . 201
8.3.1 Relacin entre la distribucin de Poisson y la exponencial . . 203
8.3.2 Otra distribucin de las llegadas. La distribucin de Erlang . 204
8.3.3 Modelos de duracin de los servicios . . . . . . . . . . . . . . 205
8.4 La notacin 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 Nmero medio de elementos en el sistema . . . . . . . . . . . 209
8.5.3 Nmero 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 Clculo de la probabilidad de los diferentes estados del sistema 213
NDICE GENERAL
8.8.2
8.8.3
8.8.4
8.9
Clculo de P0 . . . . . . . . . . . . . . . . . . . . . . . . . . .
Clculo de los parmetros . . . . . . . . . . . . . . . . . . . .
Sistemas de colas de tipo M/M/s/FCFS//. Expresiones
para el caso de s servidores . . . . . . . . . . . . . . . . . . .
El coste de un sistema de colas . . . . . . . . . . . . . . . . . . . . .
214
215
215
216
9 Introduccin a la Simulacin
9.1 Simulacin. Generalidades . . . . . . . . . . . . . . . . . . . . . . . .
9.2 Un ejemplo muy sencillo . . . . . . . . . . . . . . . . . . . . . . . . .
9.3 Mtodo Montecarlo . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.4 Notas histricas sobre el Mtodo Montecarlo . . . . . . . . . . . . .
9.5 Generacin de nmeros aleatorios . . . . . . . . . . . . . . . . . . . .
9.5.1 Propiedades de un buen generador de nmeros aleatorios . .
9.5.2 Mtodo del centro del cuadrado . . . . . . . . . . . . . . . . .
9.5.3 Mtodo de las congruencias . . . . . . . . . . . . . . . . . . .
9.6 Mtodo de la transformacin inversa . . . . . . . . . . . . . . . . . .
9.6.1 Mtodo de la transformacin inversa aplicado a la distribucin
exponencial . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.7 Simulacin de una cola M/M/1 . . . . . . . . . . . . . . . . . . . . .
9.7.1 Programa FORTRAN . . . . . . . . . . . . . . . . . . . . . .
9.8 Integracin Montecarlo. Mtodo de xito-fracaso . . . . . . . . . . .
9.9 Ejemplos de programas de simulacin . . . . . . . . . . . . . . . . .
219
219
220
223
224
225
226
226
226
229
II
249
EJERCICIOS
229
230
233
240
242
1 Introduccin a la optimizacin
251
1.1 Ejercicios Resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
1.2 Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
1.3 Soluciones de los Ejercicios Propuestos . . . . . . . . . . . . . . . . . 275
2 Programacin lineal
283
2.1 Ejercicios Resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
2.2 Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
2.3 Soluciones de los Ejercicios Propuestos . . . . . . . . . . . . . . . . . 310
3 Dualidad en programacin lineal
315
3.1 Ejercicios Resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
3.2 Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
3.3 Soluciones de los Ejercicios Propuestos . . . . . . . . . . . . . . . . . 332
4 Anlisis de sensibilidad
335
4.1 Ejercicios Resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
4.2 Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
4.3 Soluciones de los Ejercicios Propuestos . . . . . . . . . . . . . . . . . 367
NDICE GENERAL
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 Programacin entera
403
7.1 Ejercicios Resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
7.2 Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
7.3 Soluciones de los Ejercicios Propuestos . . . . . . . . . . . . . . . . . 416
8 Teora de colas
419
8.1 Ejercicios Resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
8.2 Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
8.3 Soluciones de los Ejercicios Propuestos . . . . . . . . . . . . . . . . . 426
9 Introduccin a la Simulacin
427
9.1 Ejercicios resueltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
9.2 Ejercicios Propuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
III
431
1 Programacin lineal I
433
1.1 Problema de programacin lineal con LINGO . . . . . . . . . . . . . 433
1.2 Anlisis de sensibilidad con LINGO . . . . . . . . . . . . . . . . . . . 436
1.3 Otros problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
2 Programacin lineal II
2.1 Comandos de salida de ficheros . . . . . . . . . . . . . . . . . . . . .
2.2 Formato abreviado de LINGO . . . . . . . . . . . . . . . . . . . . . .
2.3 Recapitulacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
445
445
448
449
3 El problema de transporte
3.1 Problema de transporte . . . . . . . . . . .
3.2 Problema de asignacin . . . . . . . . . . .
3.3 Problema de emparejamiento . . . . . . . .
3.4 Problema de planificacin de la produccin
3.5 Otros problemas . . . . . . . . . . . . . . .
453
453
455
457
459
460
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
NDICE GENERAL
4 Problemas de redes
4.1 Camino mnimo .
4.2 Flujo mximo . .
4.3 CPM . . . . . . .
4.4 Otros problemas
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
463
463
468
470
472
y libre
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
475
475
476
477
478
480
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
499
INTRODUCCIN
Este libro est concebido con el propsito de cubrir los conceptos y tcnicas
bsicas de la Investigacin 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 tcnicas que la Investigacin
Operativa nos suministra para el estudio de los problemas de optimizacin que surgen
a diario en el mundo de la empresa y de la administracin, problemas que pretenden
dar el mximo rendimiento a los recursos disponibles y, por lo general, limitados.
Est especialmente diseado para alumnos de las Escuelas de Ingeniera o para
estudios de Ciencias Econmicas y Empresariales y es fruto de la experiencia de
los autores, ambos profesores de Estadstica e Investigacin Operativa de la Escuela
Superior de Ingeniera de la Universidad de Cdiz.
El libro est organizado en tres secciones:
Una primera parte terica donde se recogen sobre todo los conceptos fundamentales y los algoritmos ms usuales en la resolucin de problemas de optimizacin,
ilustrando todos los aspectos mencionados con abundantes ejemplos. En los cuatro
primeros temas se trata la Programacin Lineal, la Dualidad en Programacin Lineal y los problemas de Sensibilidad del algoritmo de Simplex. Los siguientes temas
estn dedicados a algoritmos especiales de optimizacin, incluyndose el problema
de transporte, problemas de redes y programacin con variable entera o binaria. El
libro contiene tambin un captulo de Teora de Colas, as como otro que trata los
temas ms bsicos de las Tcnicas de Simulacin, incluyendo programas en Fortran
y en otros lenguajes de Programacin.
La segunda parte, dedicada a problemas sobre los temas tratados en la teora,
contiene una seccin de ejercicios totalmente resueltos y otra de ejercicios propuestos
con su solucin.
La tercera parte contiene diversos problemas realizados con el Programa LINGO
publicado por LINDO SYSTEMS. INC., incluyendo instrucciones de uso de los comandos de este programa.
Esperamos que los lectores encuentren til este manual para el estudio y las
aplicaciones de la Investigacin Operativa y sean capaces de resolver los problemas
que se les planteen en este campo. De esta forma, veremos cumplido nuestro objetivo.
LOS AUTORES
Parte I
TEORA
11
Tema 1
Introduccin a la teora de
optimizacin
1.1
Orgenes y desarrollo
En los siglos XVII y XVIII, grandes matemticos como Newton, Leibnitz, Bernoulli
y, sobre todo, Lagrange, que tanto haban contribuido al desarrollo del clculo infinitesimal, se ocuparon de obtener mximos y mnimos condicionados de determinadas
funciones.
Posteriormente el matemtico francs Jean Baptiste-Joseph Fourier (1768-1830)
fue el primero en intuir, aunque de forma imprecisa, los mtodos de lo que actualmente llamamos programacin lineal y la potencialidad que de ellos se deriva.
Si exceptuamos al matemtico Gaspar Monge (1746-1818), quien en 1776 se interes por problemas de este gnero, debemos remontarnos al ao 1939 para encontrar nuevos estudios relacionados con los mtodos de la actual programacin lineal.
En este ao, el matemtico ruso Leonodas Vitalyevich Kantarovitch publica una
extensa monografa titulada Mtodos matemticos de organizacin y planificacin
de la produccin en la que por primera vez se hace corresponder a una extensa gama
de problemas una teora matemtica precisa y bien definida llamada, hoy en da,
programacin lineal.
En 1941-1942 se formula por primera vez el problema de transporte, estudiado independientemente por Koopmans y Kantarovitch, razn por la cual se suele conocer
con el nombre de problema de Koopmans-Kantarovitch.
Tres aos ms tarde, G. Stigler plantea otro problema particular conocido con el
nombre de rgimen alimenticio optimal.
13
14
1.1.1
La Investigacin Operativa (I.O.) es una ciencia relativamente joven. Los primeros resultados importantes se consiguieron durante la II Guerra Mundial. En la
batalla de Inglaterra el ejrcito alemn someti a los britnicos a un duro ataque
areo. El gobierno estaba explorando cualquier mtodo para defender el pas. Los
ingleses tenan una fuerza area hbil, aunque pequea, pero dispona de radares.
Se plantearon sacarle al radar el mximo rendimiento. El gobierno convoc a media
docena de cientficos de diversas disciplinas para resolver este problema. As disearon una nueva tcnica, la Investigacin Operativa, que duplic la efectividad del
sistema de defensa area mediante una localizacin ptima para las antenas y una
mejor distribucin de las seales.
Alentados por este xito, Inglaterra organiz equipos similares para resolver otros
problemas militares. EE.UU. hizo lo mismo cuando entr en guerra, crendose 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
areo de Berln. Se continu con infinidad de aplicaciones de tipo preferentemente
militar.
En 1946 comienza el largo perodo de la guerra fra entre la antigua Unin Sovitica (URSS) y las potencias aliadas (principalmente, Inglaterra y Estados Unidos).
Uno de los episodios ms llamativos de esa guerra fra 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 Berln, iniciando el bloqueo de Berln. A los aliados se les plantearon dos posibilidades: o romper el bloqueo terrestre por la fuerza, o
llegar a Berln por el aire. Se adopt la decisin de programar una demostracin tcnica del poder areo norteamericano; a tal efecto, se organiz un gigantesco puente
areo 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 planificacin de los suministros se utiliz la programacin lineal. (El 12 de mayo
de 1949, los soviticos levantaron el bloqueo).
En estos aos posteriores a la Segunda Guerra Mundial, en Estados Unidos se
asumi que la eficaz coordinacin de todas las energas y recursos de la nacin era
un problema de tal complejidad, que su resolucin y simplificacin pasaba necesariamente por los modelos de optimizacin que resuelve la programacin lineal.
Paralelamente a los hechos descritos se desarrollan las tcnicas de computacin
y los ordenadores, instrumentos que haran posible la resolucin y simplificacin de
los problemas que se estaban gestando.
En 1952 un ordenador SEAC del National Bureau of Standars proporcion la
primera solucin de un problema de programacin 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 deberan volar los aviones para localizar los
15
16
tiva que colabor con las empresas espaolas a introducir la Investigacin Operativa
en la resolucin 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 Ros que ha jugado un papel fundamental en el
campo de la Estadstica y la Investigacin Operativa en Espaa. Tambin se puede
destacar el gran nmero de discpulos de este profesor, incluidos sus propios hijos,
que han contribuido y contribuyen al desarrollo de la Estadstica y la Investigacin
Operativa en las universidades espaolas, aportando un gran nmero de trabajos y
publicaciones.
En el siglo XX se produce la aparicin de nuevas ramas de las matemticas, por
lo que es preciso resaltar algunos aspectos que la caracterizan:
Teora de Juegos.
La Programacin Lineal.
La Investigacin Operativa.
lgebra Computacional.
1.1.2
La Teora de Juegos
As como la Teora 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 teora de juegos nace al intentar dar precisin a la nocin de comportamiento
racional". El estudio matemtico de los juegos ofrece la posibilidad de nuevas formas
de comprensin y precisin en el estudio de la Economa.
La Teora de Juegos utiliza herramientas bsicas de las matemticas, 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 accin estable" o racional
que representa la estrategia ptima. Actualmente se aplica en Economa y en la
Estrategia Militar.
1.1.3
La Programacin Lineal
17
La teora de la Programacin Lineal ha sido desarrollada por Gohn, Von Neumann, Dantzig, Koopmans, W. Cooper y Charnes entre otros matemticos, estadsticos y economistas.
El proceso para encontrar la solucin ptima es el siguiente: Se plantea el problema, 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 mtodos. El ms general es el diseado por Dantzig, que se
denomina mtodo del Simplex.
Estos mtodos emplean un teorema dual" mediante el cual un problema de
maximizacin lleva emparejado uno de minimizacin.
Se utiliza en problemas de transportes, negocios, en logstica militar y en la
actualidad las aplicaciones tambin se dirigen hacia el rea industrial, a la resolucin
de problemas de produccin, etc.
La Programacin Lineal se ha convertido en una herramienta de las Matemticas
tanto tericas como aplicadas que utiliza el Algebra, la Teora de Matrices y est
relacionada con la Estadstica y la Teora de Juegos.
1.1.4
La Investigacin Operativa
18
gracias al desarrollo de los medios informticos que son los que posibilitan resolver
los problemas en la prctica, como gestin de grandes conjuntos econmicos, organizacin sistemtica de tareas complejas o controlar toda una red elctrica nacional.
Debido al xito de la Investigacin Operativa en el campo militar, los industriales recurrieron a sta para solucionar los problemas generados por la complejidad y
especializacin que iba en aumento dentro de sus organizaciones. En 1951, la Investigacin Operativa ya se haba introducido por completo en la industria britnica
y estaba en proceso de hacerlo en la estadounidense. Desde entonces, su desarrollo
ha sido muy rpido, en gran medida gracias a la ayuda del ordenador que, desde
el momento de su aparicin, queda irremediablemente unido a la Teora de la Probabilidad, a la Estadstica y especialmente a la propia Investigacin Operativa y
aument enormemente las posibilidades de la Ciencia.
Segn Hillier y Lieberman (1991), en esencia la contribucin del enfoque de la
Investigacin Operativa proviene principalmente de:
La estructuracin de una situacin de la vida real como un modelo matemtico,
logrando una abstraccin de los elementos esenciales para que pueda buscarse
una solucin que concuerde con los objetivos del que toma decisiones.
El anlisis de la estructura de tales soluciones y el desarrollo de procedimientos
sistemticos para obtenerlas.
El desarrollo de una solucin, incluyendo la teora matemtica si es necesario,
que lleva el valor ptimo de la medida de lo que se espera del sistema.
Actualmente la Investigacin Operativa incluye gran cantidad de ramas como la
Programacin Lineal y No Lineal, Programacin Dinmica, Simulacin, Teora de
Colas, Teora de Inventarios, Teora de Grafos, etc. y se encuentra muy difundida,
con aplicaciones en campos muy variados y en particular muy unida a la Economa
y a la Informtica y por supuesto a la Estadstica y Teora de Probabilidad, constituyendo una materia universitaria con entidad propia.
1.2
Modelizacin de un problema de P. L.
Introduciremos las lneas generales del modelo de Programacin Lineal (P.L.) ilustrndolo con el siguiente ejemplo:
Ejemplo 1 Alimentacin del ganado
Nos proponemos alimentar el ganado de una granja de la forma que sea la ms
econmica posible. La alimentacin 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
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 matemtico del mismo. La
construccin de este modelo puede hacerse siguiendo el proceso que se describe a
continuacin:
1.2.1
Paso 1: Determinar las variables de decisin o de entrada y representarlas algebraicamente. Tomamos en este caso las variables:
x1 = cantidad de pienso M(en Kg)
x2 = cantidad de pienso N(en Kg).
Paso 2: Determinar las restricciones expresndolas como ecuaciones o inecuaciones
de las variables de decisin.
Las restricciones se deducen de la composicin requerida para la dieta (en Kg.):
En
En
En
En
componente
componente
componente
componente
A
B
C
D
0, 1x1
0x1
0, 1x1
0, 2x1
+
0x2
+ 0, 1x2
+ 0, 2x2
+ 0, 1x2
0, 4
0, 6
2
1, 7
Paso 3: Expresar todas las condiciones implcitamente establecidas por la naturaleza de las variables (que no puedan ser negativas, que sean enteras, que slo
pueden tomar determinados valores, etc.)
En este ejemplo los cantidades de pienso no pueden tomar valores negativos
por lo tanto, deberamos imponer que sean x1 0; x2 0. No imponemos
otras restricciones al tipo de variables.
Paso 4: Determinar la funcin objetivo.
El objetivo de este problema es:
Minimizar gasto = M in Z = 20x1 + 8x2 .
El modelo por tanto es el siguiente:
Min Z = 20x1 + 8x2
s.a.: 0, 1x1 + 0x2
0x1 + 0, 1x2
0, 1x1 + 0, 2x2
0, 2x1 + 0, 1x2
x1 , x2 0
0, 4
0, 6
2
1, 7
20
1.3
Vamos a modelizar ahora diversos problemas que se pueden plantear en la Investigacin Operativa (I.O.) que enunciamos a continuacin:
Ejemplo 2 Transporte de tropa.
Un destacamento militar formado por 40 soldados de Ingenieros, 36 especialistas dinamiteros, 88 antiguerrilleros y 120 infantes como tropa de apoyo, ha de
transportarse hasta una posicin estratgica importante. En el parque de la base
se dispone de 4 tipos de vehculos A,B,C,D, acondicionados para el transporte de
tropas. El nmero de personas que cada vehculo puede transportar es 10,7,6,9 de la
forma en que se detalla en la siguiente tabla:
A
B
C
D
Ingenieros
3
1
2
3
Dinamiteros
2
1
1
2
Antiguerrillas
1
2
2
3
Infantes
4
3
1
1
40
36
88
120
xi son enteros.
40
36
88
120
21
T1
1
3
T2
2
2
T3
4
1
A
B
Demanda
T1
x1
x4
8
T2
x2
x5
5
T3
x3
x6
2
Disponibilidad
5
10
22
640
900
640
900
640
900
23
Mquina 1
10
8
8
9
8
Mquina 2
6
7
6
7
7
Mquina 3
6
6
5
7
6
Mquina 4
5
6
6
6
5
=
=
=
=
1
1
1
1
1
1
1
1
1
24
= 1
= 0
= 0
= 0
= 0
= 0
= 1
Ejemplo 8 Localizacin.
Una empresa tiene la exclusiva para la distribucin de un producto en 4 poblaciones. En un estudio de mercado se ha determinado la demanda potencial:
Poblacin 1
3000 unidades
Poblacin 2
2000 unidades
Poblacin 3
2500 unidades
Poblacin 4
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
-
2
25
-
3
35
20
-
4
40
40
30
-
Para abaratar los costes de transporte se decide instalar un almacn con capacidad
para 6000 unidades en dos de estas cuatro ciudades.
25
1.4
3000
2000
2500
2700
2
0
0
0
0
(=) b1
(=) bm
donde tanto la funcin objetivo como las restricciones son funciones lineales.
Si la funcin objetivo y/o las restricciones no fueran funciones lineales diremos
que el problema es de programacin no lineal.
En la programacin cuadrtica la funcin objetivo es de segundo grado y las
restricciones si existen son lineales.
En el caso particular de un problema de programacin lineal en el que las variables
de decisin tomen valores enteros, se llama programacin entera.
Cuando las variables slo toman valores 0,1 se llama programacin booleana.
Los modelos de programacin lineal se incluyen en una clase ms amplia, la clase
de modelos de optimizacin en los que se optimiza una funcin de las variables
de decisin, denominada funcin objetivo, sujeta a un conjunto de limitaciones o
restricciones sobre las variables de decisin.
26
j = 1, . . . , m
donde,
1.5
El mtodo geomtrico
10
15
x1 = 0 x2 = 5
x1 = 2 x2 = 0
3x1 + 5x2 = 15
x1 = 0 x2 = 3
x1 = 5 x2 = 0
Paso 2. Se representa la regin del plano que verifica simultneamente todas las
restricciones. Esta regin se conoce con el nombre de regin factible. La regin
factible est marcada en la figura siguiente:
27
Paso 3.
Representamos la recta correspondiente al valor 0 de la funcin objetivo:
Z = 2x1 + x2 = 0;
2x1 + x2 = 0
x1 = 0 x2 = 0
x1 = 1 x2 = 2
19x2 = 45
x2
x1
= 45/19
= 20/19.
28
1.5.1
20
19
45
19
85
19
= 4. 473 7.
10
15
Paso 1.
5x1 + 2x2 = 10
x1 = 0 x2 = 5
x1 = 2 x2 = 0
3x1 + 5x2 = 15
x1 = 0 x2 = 3
x1 = 5 x2 = 0
6x1 + 10x2 = 0
Paso 2. Ver figura 1.3.
x1 = 0 x2 = 0
x1 = 1 x2 = 35
29
tienen la misma pendiente, son paralelas y, en todos los puntos desde A hasta
B se obtiene el mismo valor para la funcin objetivo.
A
20 45
,
19 19
y B(0, 3)
6
2
12
30
Paso 1.
x1 = 0 x2 = 6
x1 = 6 x2 = 0
x1 + x2 = 6
x1 2x2 = 2
x1 = 0 x2 = 1
x1 = 2 x2 = 0
4x1 + 3x2 = 12
x1 4x2 = 0
x1 = 0
x2 = 4
x1 = 3 x2 = 0
x1 = 0 x2 = 0
x1 = 4 x2 = 1
Paso 3.
La recta paralela a x1 4x2 = 0 que pasa por (1,0) sera x1 4x2 = 1 con
Z = x1 4x2 = 1 1 4 0 = 1.
31
x1 + x2 = 6
4x1 + 3x2 = 12
donde,
6
x1 = ,
7
x2 =
36
.
7
Ejemplo 12
Max Z = 2x1 x2
s.a.: x1 x2
5x1 2x2
x1 , x2 0
2
16
Paso 1.
x1 x2 = 2
5x1 2x2 = 16
2x1 x2 = 0
x1 = 0 x2 = 2
x1 = 2 x2 = 0
x1 = 2
x1 = 16
5
x2 = 3
x2 = 0
x1 = 0 x2 = 0
x1 = 1 x2 = 2
32
Paso 3.
La recta paralela a 2x1 x2 = 0 que pasa por (1, 0) toma el valor Z = 210 =
2. Luego la solucin ptima es el punto A, que se obtiene como:
A
x1 x2 = 2
5x1 2x2 = 16
donde, x1 = 4,
x2 = 2.
1.5.2
Tema 2
Programacin Lineal
2.1
Un programa lineal consiste en encontrar un vector X = (x1 , x2 , . . . , xn ) que optimice una funcin lineal Z. Las coordenadas de este vector estn sujetas a ciertas
restricciones que se expresan en ecuaciones o inecuaciones lineales.
Opt.
s.a.:
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, 2, . . . , n.
( = )
( = )
...
( = )
b1
b2
...
bm
Z = 3x1 + 2x2 x3
2x1 + x2 3x3 = 4
3x1 2x2 x3 = 2
x1 , x2 , x3 0
33
34
donde
A=
c=
a11
..
.
am1
c1
c2
..
.
cn
...
..
.
...
, X =
x1
x2
..
.
xn
a1n
.. .
.
amn
Z = ct X
AX = b
X0
, b =
b1
b2
..
.
bm
Z = ct X
a1 x1 + a2 x2 + + an xn = b
X0
Opt.
s.a.:
x1
Z = (3, 2, 1) x2
x3
2
1
3
4
x1 +
x2 +
x3 =
3
2
1
2
X0
Z = 3x1 + 2x2 x3
2x1 + x2 3x3 4
3x1 2x2 x3 2
x1 , x2 , x3 0
35
Z = 3x1 + 2x2 x3
2x1 + x2 3x3 4
3x1 2x2 x3 2
x1 , x2 , x3 0
aij xj bi
n
aij xj bi
n
aij xj + si = bi ;
si 0
n
aij xj ti = bi ;
ti 0
Z = 3x1 + x2
x1 + x2
8
2x1 + 5x2 20
x1 , x2 0
Max
s.a.:
Z = 3x1 + x2
x1 + 2x2 + x3
2x1 + 5x2 + x4
x1 , x2 , x3 , x4
=
8
= 20
36
Z = x1 + x2
x1 + 5x2
5
2x1 x2 4
x1 , x2
0
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 = x2 x2 ; x2 , x2 0
Paso 3:
Min
s.a.:
= 6
= 5
Max z =
Min z =
n
n
cj xj
Min z =
cj xj
Max z =
n
(cj )xj
n
(cj )xj
z = z
z = z
37
aij xj bi
aij xj bi
n
(aij )xj bi
n
(aij )xj bi
b
ij
j
i
ij )xj
n
(a
n
(aij )xj bi
aij xj
bi
bi
x1 2x2
= 4
3x1 + x3
= 3
x1 0, x2 , x3 0
Min
s.a.:
x1
2x2 = 4
3x1
+ x3 = 3
Max
s.a.:
Z = 3x1 2x2 + x3
x1 2x2
x1 2x2
x1 2x2
x1 + 2x2
4
4
3x1 + x3
3x1 + x3
3x1 + x3
3x1 x3
3
3
Z = 3x1 2x2 + x3
x1 2x2
4
x1 + 2x2
4
3x1 + x3
3
3x1 x3
3
x1 0, x2 , x3 0
38
2.2
Z = 3x1 + 2x2 x3
x1 + 2x2
x1 2x2
3x1 x3
3x1 + x3
x1 0, x2 , x3 0
Nociones previas
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
1a1 + 2a2 + 3a3 + ... + nan = 0. Son vectores linealmente independientes
si la igualdad anterior slo se cumple para 1 = 2 = ... = n = 0.
Decimos que el vector v se puede expresar como combinacin lineal convexa
de los vectores {a1 ,a2 , ...,an } si existen constantes positivas 1 , 2 , ...n de forma
que se verifique:
v = 1a1 + 2a2 + ... + nan 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 vrtice de C si no existen dos puntos x1 , x2 C , x1 =
x2, de forma que
x = x1 + (1 )x2 para algn / 0 < < 1.
Se llama semiespacio cerrado al conjunto de puntos de IRn que cumple
1 x1 + 2 x2 + ... + n xn
Se llama poliedro al conjunto interseccin de una cantidad finita de semiespacios
cerrados.
Teorema 1 Todo semiespacio cerrado es un conjunto convexo.
Demostracin:
Sea S = {(x1 , x2 , ...xn ) IRn / 1 x1 + 2 x2 + ... + n xn }. Sean Y y Z dos
puntos de S, entonces se cumple:
1 y1 + 2 y2 + ... + n yn .
Z = (z1 , z2 , ...zn ) S
1 z1 + 2 z2 + ... + n zn .
39
01
Pero
Y + (1 )Z = (y1 , y2 , . . . , yn ) + (1 )(z1 , z2 , . . . , zn ) =
= (y1 + (1 )z1 , y2 + (1 )z2 , . . . , yn + (1 )zn )
puntos extremos de C , A C =
A = 1 A1 + 2 A2 + + k Ak
siendo 1 + 2 + + k = 1.
2.3
40
Z = CtX
cualquier otro
cualquier otro
X F
X F
x + ... + 1n xn =
11 1
21 x1 + ... + 2n xn =
...
...
m1 x1 + ... + mn xn =
41
A=
1 2 1
2 1 5
= 4
= 5
r(A) = 2.
1 2
2 1
En este
bsicas son x1 y x2 . La base est formada por los
caso
las
variables
1
2
vectores
y
.
2
1
x1 + 2x2
2x1 + x2
XB = B
x1
x2
1 2
2 1
= 4
= 5
x1
x2
4
5
1
4
5
1 2
2 1
2
1
1 1
2 5
x1
x2
4
5
x1 + x3
2x1 + 5x3
= 4
= 5
42
XB = B 1 b
x1
x3
1 1
2 5
1
4
5
5
1
5/3
2/3
XB = B 1 b
2 , 3
x2
x3
2 1
1 5
2 1
1 5
1
4
5
Variables no bsicas
x3 = 0
x2 = 0
x1 = 0
n
Si A es una matriz de dimensin m n y n > m, tendr
soluciones
m
3
bsicas como mximo. En el ejemplo anterior
= 3, y como hemos visto
2
anteriormente, hay 3 soluciones bsicas exactamente. A veces este nmero mximo de soluciones bsicas no se alcanza porque algunas de las submatrices tienen
determinante nulo.
Si XB es una solucin bsica y se cumple que los valores de las variables bsicas
son mayores o iguales que cero, decimos que la solucin es bsica factible y que
la base B es una base factible.
Si en una solucin factible bsica, alguna de las variables bsicas vale cero, decimos que la solucin es factible bsica degenerada.
Soluciones bsicas factibles adyacentes son dos soluciones bsicas factibles
que tienen en comn m 1 variables bsicas.
43
2.4
Variables no bsicas
x3 = 0 Solucin bsica factible
x2 = 0 Solucin bsica no factible
x1 = 0 Solucin bsica factible
Ax = b;
x 0}
x2 F
Ax1 = b;
Ax2 = b;
01
x1 0
x2 0
44
para algn
(0, 1) con y = z.
z = (z1 , z2 , . . . , zm ; zm+1 , . . . , zn ).
Si operamos tenemos:
(x1 , x2 , . . . , xm ; 0, . . . , 0) =
= (y1 + (1 )z1 , y2 + (1 )z2 , . . . , ym + (1 )zm , ym+1 +
+(1 )zm+1 , . . . , yn + (1 )zn ).
Luego
ym+1 + (1 )zm+1 = 0
yn + (1 )zn = 0
ym+1 = 0
=
yn = 0
y1 a1 + y2 a2 + + ym am
z1 a1 + z2 a2 + + zm am
= b
= b
zm+1 = 0
zn = 0
y1 z1
y2 z2
ym zm
= 0
= 0
= 0
y1
y2
ym
z1
z2
= zm
=
=
45
y = z.
Pero esto es absurdo pues habamos supuesto que y = z. Y por tanto hemos llegado
a una contradiccin, esto implica que X es punto extremo.
= Supongamos que X es un punto extremo de F que tiene k componentes estrictamente mayores que 0. Suponemos sin prdida de generalidad que son las k
primeras X = (x1 , x2 , . . . , xk ; 0, . . . , 0).
Como tiene que verificar el sistema tendremos:
x1 a1 + x2 a2 + + xk ak = b
(2.1)
Vamos a probar que {a1 , a2 , . . . , ak } son linealmente independientes. Vamos a razonar por reduccin al absurdo.
Supongamos que no son linealmente independientes, entonces existen 1 , 2 , . . . , k
no todos nulos tal que:
1 a1 + 2 a2 + + k ak = 0
Si multiplicamos por > 0, entonces:
1 a1 + 2 a2 + + k ak = 0
(2.2)
y0
z0
Por tanto y, z verifican el sistema y adems son mayores o iguales a cero, entonces
y, z F .
46
1
1
y + z tenemos:
2
2
1
1
1
1
1
x1 + 1 , x2 + 2 , . . . , xk +
2
2
2
2
2
1
1
1
1
1
x1 1 , x2 2 , . . . , xk
+
2
2
2
2
2
= (x1 , x2 , . . . , xk , 0, . . . , 0) = X
=
1
k , 0, . . . , 0 + (2.3)
2
1
k , 0, . . . , 0 =
2
Pero esto contradice que X sea punto extremo de F . Luego {a1 , a2 , . . . , ak } son
vectores linealmente independientes y k m.
Pueden ocurrir dos cosas:
Si k = m forman base, y entonces X es solucin bsica factible.
Si k < m se completan las columnas que faltan formando una base, entonces
ser solucin bsica factible degenerada.
Teorema 5 Dado un programa lineal en forma estndar factible acotado, el valor
ptimo del programa lineal se obtiene en un punto extremo de la regin factible.
Demostracin
Sea el programa lineal
M ax z = ct X
s.a.
AX = b
X0
Si llamamos M = max{ct E1 , ct E2 , . . . , ct Ek }.
Sea ahora X F un punto cualquiera de la regin factible, usando el teorema
anterior tendremos:
X = 1 E1 + 2 E2 + + k Ek
/ 1 + 2 + + k = 1.
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.
47
x1 , x2 , x3 0
Variables bsicas
x1 = 2; x2 = 1
x1 = 5; x3 = 1
x2 = 5/3; x3 = 2/3
Variables no bsicas
x3 = 0
x2 = 0
x1 = 0
Objetivo
z=1
No factible
z=5/3
x2 = 5/3
x3 = 2/3.
=
=
=
=
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.
z = 3x1 + 3x2
x1
4
x1 + x2
6
x2
3
x1 , x2 0
48
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.
Variables bsicas
x1 = 0; x2 = 0
x1 = 0; x2 = 3
x1 = 3; x2 = 3
x1 = 4; x2 = 2
x1 = 4; x2 = 0
Objetivo
z = 0 Solucin bsica factible
z = 9 Solucin bsica no factible
z = 18 Solucin ptima
z = 18 Solucin ptima
z = 12 Solucin bsica factible
Luego B y C son soluciones ptimas, y por tanto todos los puntos del segmento
lineal BC tambin son soluciones ptimas.
2.5
El algoritmo del Simplex es una tcnica general de resolucin de problemas de programacin lineal. Los pasos bsicos del algoritmo son los siguientes:
1. Partir de una solucin bsica factible (un vrtice de la regin factible).
2. Comprobar si esta solucin es ptima. Si es as, parar. En caso contrario, ir
al paso 3.
49
3. Hallar una nueva solucin bsica adyacente a la anterior que mejore el valor
de la funcin objetivo. Ir al paso 2.
Explicaremos la forma en que se realizan estos pasos con el siguiente ejemplo,
dejando para ms adelante una exposicin ms detallada del algoritmo.
Ejemplo 25 Resolver el siguiente P.L.
Max
s.a.:
z = x1 + x2
x1 + x2 2
x1 + 2x2 6
2x1 + x2 6
x1 , x2 0
Como el problema tiene slo dos variables podra resolverse por el procedimiento
geomtrico. Se puede comprobar que la regin factible es el polgono de vrtices O,
A, B, C, D. Las coordenadas de los vrtices y los valores de la funcin objetivo de
cada uno de ellos son:
Vrtice
O
A
B
C
D
Coordenadas
(0, 0)
(0,2)
( 23 , 83 )
(2, 2)
(3, 0)
4
3
Por lo tanto el valor ptimo va a ser C con un valor ptimo de 4 para la funcin
objetivo.
Ahora queremos resolver este problema por un procedimiento analtico.
Lo primero que vamos a hacer es formular el problema en forma estndar, introduciendo variables de holgura:
Max
s.a.:
z= x1 + x2
x1
+x2
+h1
= 2
x1
+2x2
+h2
= 6
2x
+x
+h
= 6
1
2
3
x1 0 x2 0 h1 0 h2 0 h3 0
Paso 1 Partir de una solucin bsica factible. (Un vrtice de la regin factible). En
este caso es muy fcil partir de una solucin bsica factible. Si tomamos como
variables bsicas las variables de holgura, y damos a las no bsicas x1 y x2 el
valor cero tenemos la solucin bsica factible de partida (x1 , x2 , h1 , h2 , h3 ) =
(0, 0, 2, 6, 6) con un valor para z = x1 + x2 = 0. Los valores anteriores cumplen
50
x1
+x2
+h1
x1
+2x2
+h2
2x1
+x2
+h3
x1
x2
x1 0 x2 0 h1 0 h2 0 h3 0
=
=
=
=
2
6
6
0
Puede observarse que todos los valores de las variables bsicas, y tambin el
valor de z, aparecen en los trminos independientes de este sistema.
Paso 2 Comprobar si esta solucin es ptima. Puesto que z = x1 + x2 = 0. Podremos
mejorarla si logramos introducir en la base la variable x1 x2 . Supongamos
que introducimos x1 en la base aumentando su valor dentro de las condiciones
de factibilidad y manteniendo x2 como variable no bsica (x2 = 0). 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
+ 12 h3
+h2
12 h3
x1
+ 12 h3
+ 12 h3
x1 0 x2 0 h1 0 h2 0 h3 0
3
2 x2
3
2 x2
+ 12 x2
12 x2
+h1
=
=
=
=
51
5
3
3
3
Ir paso 2 La solucin actual es (x1 , x2 , h1 , h2 , h3 ) = (3, 0, 5, 3, 0) Es ptima? Despejamos z de la ltima ecuacin obteniendose z = 3 + 12 x2 12 h3 . El valor de
z puede mejorar si podemos aumentar el valor de x2 que toma en la solucin
bsica actual el valor 0. Conviene mantener para h3 el valor 0. Impondremos
las condiciones de factibilidad:
3
3
1
h1 = 5 x2 0, h2 = 3 x2 0, x1 = 3 x2 0
2
2
2
Por lo tanto
5
3
2
x2 ,
3
3
2
x2 ,
3
1
2
x2
10
x2 , 2 x2 , 6 x2
3
=
=
=
=
2
2
2
4
2.6
52
Z = c1 x1 + c2 x2 + + cn xn
a11 x1 + a12 x2 + + a1n xn
: :
...
am1 x1 + am2 x2 + + amn xn
xi 0, bi 0, i = 1, 2, . . . , n.
b1
b2
: ...
bm
Opt.
s.a.:
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, 2, . . . , n.
+xn+1
=
=
+xn+2
...
+xn+m
b1
b2
: ...
= bm
0. Construir la tabla inicial: Esta tabla se construye tomando en cada fila los
coeficientes de cada restriccin seguido del correspondiente trmino independiente de la forma estndar. Aadimos una ltima fila con los coeficientes que
resultan si se trasponen los trminos de la funcin 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 bsicas. La tabla inicial presentara el siguiente aspecto:
Opt.
xn+1
xn+2
..
.
0
0
..
.
c1
x1
a11
a21
..
.
c2
x2
a12
a22
..
.
...
...
...
...
..
.
cn
xn
a1n
a2n
..
.
0
xn+1
1
0
0
xn+2
0
1
xn+m
0 am1
c1
am2
c2
...
...
amn
cn
0
0
0
0
0
xn+m
0
0
coef. objetivo
variables
b1
b2
..
.
1
0
bm
0
...
Tomamos la solucin inicial que corresponde a una base cannica ( La correspondiente matriz bsica es la identidad). est solucin es.
(x1 , x2 , . . . xn , xn+1 , xn+2 , . . . , xn+m ) = (0, 0, . . . 0, b1 , b2 , . . . , bm )
1. Partir de una solucin bsica factible: Considerar la solucin inicial.
53
z = x1 + x2
x1 + x2 2
x1 + 2x2 6
2x1 + x2 6
x1 , x2 0
Opt.
xb1
xb2
..
.
xbm
cb1
cb2
..
.
cbm
c1
x1
y11
y21
..
.
ym1
r1
c2
x2
y12
y22
..
.
ym2
r2
...
...
...
...
..
.
...
...
cn
xn
y1n
y2n
ymn
rn
0
xn+1
y1 n+1
y2 n+1
..
.
ym n+1
rn+1
0
xn+2
y1 n+2
y2 n+2
..
.
ym n+2
rn+2
...
...
..
.
...
0
xn+m
y1 n+m
y2 n+m
ym n+m
rn+m
coef. objetivo
variables
xb1
xb2
..
.
xbm
Z0
Los trminos de la matriz de los coeficientes se designan en general por yij y los trminos
independientes por xbi .
Los coeficientes ri que aparecen en la ltima fila se suelen llamar costes reducidos de la variable
correspondiente. Estos costes reducidos cumplen la siguiente relacin:
rj = cb1 y1j + cb2 y2j + . . . cbm ymj cj = zj cj
(2.4)
54
0
0
0
h1
h2
h3
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
2
6
6
0
Paso 1 Partimos de una base cannica. La solucin bsica factible inicial es:
(x1 , x2 , h1 , h2 , h3 ) = (0, 0, 2, 6, 6)
con un valor para z = x1 + x2 = 0 + 0 = 0.
Puede observarse que todos los valores de las variables bsicas, y tambin el
valor de z, aparecen en los trminos independientes de este sistema.
Paso 2 Comprobar si esta solucin es ptima. 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.
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 correspondienxB
te al mnimo cociente i para los yik > 0. En este caso el valor mnimo se
yik
alcanza cuando: min 61 , 62 = min (6, 3) = 3. Corresponde a la tercera fila. As
que l = 3. Por lo tanto el elemento pivote es y31 = 2. La variable de salida es
h3 .
Paso 4 Hallar una nueva solucin bsica adyacente a la actual que mejore el valor de
la funcin objetivo.
Pivoteando se obtiene la siguiente tabla:
0
0
1
h1
h2
x1
1
x1
0
0
1
0
1
x2
3
2
3
2
1
2
12
0
h1
1
0
0
0
0
h2
0
1
0
0
0
h3
1
2
12
1
2
1
2
5
3
3
3
55
0
0
1
h1
x2
x1
1
x1
0
0
1
0
1
x2
0
1
0
0
0
h1
1
0
0
0
0
h2
-1
2
3
- 13
1
3
0
h3
1
13
2
2
2
4
2
3
1
3
2.7
Si el problema es de minimizacin un procedimiento que puede seguirse es transformar la funcin objetivo de maximizacin en otra de minimizacin tal como se ha
indicado anteriormente:
Min z =
n
cj xj
Max z =
n
(cj )xj
z = z
56
x1 + 3x2 x3 + 2x5
= 7
2x2 + 4x3 + x4
= 12
4x2 + 3x3 + 8x5 + x6 = 10
x1 , x2 , x3 , x4 , x5 , x6 0
Min
s.a.:
0
0
0
0
x1
1
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. bsica
factible
7
12
10
Z0 = 0
T abla
x1
x3
x6
II
0
x1
0
1
3 0
0
0
0
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
57
sol. bsica
factible
10
3
1
Z = 9
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. bsica
factible
4
5
11
Z = 11
La solucin asociada a esta base es ptima pues todos los rj 0, la solucin es:
x1 = 0 x2 = 4 x3 = 5 x4 = 0 x5 = 0 x6 = 11 ;
2.8
Z = 11.
58
aij xj = bi
j=1
n
aij xj + ri = bi
j=1
aij xj bi
n
j=1
aij xj ti + ri = bi
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 continuacin aplicamos algunas de estas reglas en varios ejemplos:
59
Z = 3x1 + 2x2 + x3
x1 + 2x2 + x3 10
x1 + x2 + 2x3 9
2x1 + 3x3 12
x1 , x2 , x3 0
Z = 3x1 + 2x2 + x3
x1 + 2x2 + x3 + x4
x1 + x2 + 2x3 + x5
2x1
+ 3x3
+ x6
x1 , x2 , x3 , x4 , x5 , x6 0
s.a.:
= 10
= 9
= 12
Tomamos como variables bsicas las de holgura: x4 , x5 , x6 . Por tanto una solucin
bsica factible inicial es:
x1 = 0 x2 = 0 x3 = 0 x4 = 10 x5 = 9 x6 = 12 ;
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. bsica
factible
10
9
12
Z0 = 0
Z0 = 0
60
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. bsica
x6
factible
1/2
4
1/2
3
1/2
6
3/2
Z = 18
Entra en
la base
x2 porque le corresponde el ms negativo de los rj . Y sale x4
3 4
4
pues: min
;
= = 2.
1 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:
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. b sica
x6
factible
1/4
2
1/4
1
1/2
6
1
Z = 22
La solucin asociada a esta base es ptima pues todos los rj 0, la solucin es:
x1 = 6 x2 = 2 x3 = 0 ;
Z = 22.
Z = x1 + 2x2
x1 2x2 4
x1 5x2 8
x1 , x2 0
Z = x1 + 2x2
x1 2x2 + x3
= 4
x1 5x2 + x4
= 8
x1 , x2 , x3 , x4 0
61
Z0 = 0
1
2
0
x1 x2 x3
0 1 2 1
0 1 5 0
1 -2 0
0
x4
0
1
0
sol. bsica
factible
4
8
La solucin es no acotada o ilimitada pues todos los yi2 < 0 ya que y11 = 2 < 0,
y12 = 5 < 0. Podemos hallar una direccin (Rayo ptimo) cuyos puntos son
todos soluciones factibles y la funcin objetivo mejora cuando aumenta el valor de
las variables. Sustituyendo en el sistema el valor x1 = 0 obtenemos una de estas
direcciones:
x =
0
1
x2 =
x2
x = 4 + 2x2
3
x4 = 8 + 5x2
Nota: Este programa lineal puede resolverse usando el mtodo geomtrico estudiado
en el Tema 1. Puede observarse entonces que la regin factible es no acotada y el
valor de la z puede mejorar tanto como queramos.
Ejemplo 30 Dado el programa lineal:
Min
s.a.:
Z = 3x1 + 5x2
x1
4
x2
6
3x1 + 2x2 18
x1 , x2 0
x1 + x3
= 4
x2 + x4
= 6
3x1 + 2x2 x5 + x6
= 18
x1 , x2 , x3 , x4 , x5 , x6 0
62
2.8.1
Caso Maximizante. A las variables artificiales se les pone costo muy bajo (m)
en la funcin objetivo (Z), para que salgan rpidamente de la base.
Caso Minimizante. A las variables artificiales se les pone costo muy alto (m)
+ en la funcin objetivo (Z), para que salgan rpidamente de la base.
Teorema 7 Dado un programa lineal con variables artificiales y dada la solucin
bsica factible ptima XB = B 1 b, si alguna de las variables artificiales es bsica,
y con valor positivo, entonces el problema original es no factible.
Para ilustrar este mtodo 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 mtodo de las penalizaciones:
La solucin bsica factible inicial era:
x1 = 0 x2 = 0 x3 = 4 x4 = 6 x5 = 0 x6 = 18;
Z0 = 18m
0
x4
0
1
0
0
0
m sol. bsica
x5 x6
factible
0
0
4
0
0
6
1
1
18
0 m
0
Para que x6 pueda actuar como variable bsica tendra que tener un cero en su
coste reducido. Para conseguirlo podemos sumar a la ltima fila la tercera multiplicada por m, obtenindose:
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. bsica
factible
4
6
18
Z0 = 18m
63
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. bsica
factible
4
6
6
Z = 6m + 12
Entra en la base x2 por ser r2 el mayor, y sale de la base x6 pues es el que hace
mnimo el cociente 6/1 y 6/2. 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
La solucin ptima es x1 = 4,
0
m
sol. bsica
x5
x6
factible
0
0
4
1/2
1/2
3
1/2
1/2
3
5/2 5/2 m
Z = 27
x2 = 3 , con
z = 27.
Z = x1 2x2 + 3x3
2x1 + x2 + 3x3 = 2
2x1 + 3x2 + 4x3 = 1
x1 , x2 , x3 0
x1 , x2 , x3 , x4 , x5 0
64
Z0 = 3m
sol. bsica
factible
2
1
Z0 = 3m
m
x5
0
1
0
As, entra en la base x3 por ser r3 el mayor y sale de la base a5 , pues hace mnimo
el cociente 2/3 y 1/4. 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
m
x4
1
0
m
x5
3/4
1/4
7
3
m+
4
4
sol. bsica
factible
5/4
1/4
3
Z = 5m +
4
2.9
c=
c1
c2
..
.
cn
,X =
x1
x2
..
.
xn
,b =
Z = c X
AX = b
X0
b1
b2
..
.
bm
a11
..
A= .
am1
...
..
.
...
a1n
.. .
.
amn
y considerando, sin prdida de generalidad, que las n primeras columnas de A corresponden a la matriz bsica B asociada a una solucin bsica factible, que N es
65
la matriz formada por las restantes columnas y que XB , XN , cB , cN son, respectivamente, las matrices formadas por las variables bsicas, las no bsicas, los costes
de las variables bsicas y los costes de la variables no bsicas, entonces el problema
puede expresarse en la forma:
XB
Max
Z = (cB , cN ) X
= cB XB + cN XN
XB N
B N
s.a.:
XN = BXB + N XN = b
X0
XB
XN
= cB XB + cN XN = cB B 1 b B 1 N XN + cN XN =
= cB B 1 b + cN cB B 1 N XN .
y Z = cB B 1 b = Z 0
que son los valores de las variables bsicas y de la funcin objetivo correspondiente
a una solucin bsica factible inicial.
Por lo tanto, en general se cumplir para cualquier otra solucin factible:
0
XB = XB
B 1 N XN ,
Z = Z 0 + cN cB B 1 N XN = Z 0 cB B 1 N cN XN .
Dependiendo de los valores de los elementos de la matriz cB B 1 N cN el
valor de la funcin objetivo, Z, se podr mejorar o no. As, si el problema fuera
de maximizacin, se podra mejorar la solucin anterior si algn elemento de esta
matriz fuera negativo, aumentando el valor del xj XN dentro de las condiciones
0
de factibilidad XB
B 1 N XN 0.
66
2.9.1
0
Paso 1 Partir de una solucin bsica factible XB = B 1 b = XB
y Z = cB B 1 b =
Z 0.
x1 , x2 , x3 0
1 2
(a1 , a2 ) =
=
2 1
1/3 2/3
1
= B 1 =
, N = (a3 ) =
2/3 1/3
5
=
.. 1 .. 1
.
.
.. ..
1 . 1 . 1
B .N .b = B B .B N .B b = I .B N .B b
1/3 2/3
1 2 1 4
1 0 3
=
2/3 1/3
2 1 5 5
0 1 -1
2
0
XB
= B 1 b =
,
Z 0 = cB B 1 b = 2 3
1
2
1
2
1
=1
67
cB B 1 N
cN
2 3
3
1
x3 =
0.
1
1
1 + x3
1
3
1
3
1
0
0
x2
x3
Z
cB B 1 N
cN
1
0
0
1
3
-1
2
1
0 3
1 1
1
1
3
1
3
1
0
0
1
3
-1
=
=
cB B 1 b
3 10
=B
1
3
1
3
b=
2
1
0
XB
5
3
2
3
3 10
1
0
1
3
1
3
,
1
0
0
1
5
3
2
3
5
3
2
3
5
= .
3
2 = 13 .
2.10
68
Opt.
s.a.:
Z = ct X
AX = b
X0
y1j
y2j
2.10.1
Partimos de una solucin factible bsica inicial, y a partir de ella se pasa a otra
solucin bsica factible adyacente que se consigue cambiando una sola columna de
la base. Este cambio se hace mediante un criterio lgico basado en:
Mejorar lo ms posible la funcin objetivo.
Mantener la factibilidad (no deben salir soluciones bsicas no factibles).
Para ello necesitamos:
Regla para la variable de salida (Mantener la factibilidad).
Regla para la variable de entrada (Mejorar la funcin objetivo).
Demostracin de la Regla para la variable de salida.
Suponemos que la base B = (a1 , a2 , a3 ) y aj es el vector que no est en B y que va
a entrar en la nueva base.
Supongamos que las variables bsicas son x1 , x2 , x3 , y que xj es variable no
bsica. Si las variables toman los valores:
x1 = x01
x2 = x02
x3 = x03
xj = 0.
69
x2 = x2
xj = 0.
x3 = x3
siendo alguna de las variables x1 , x2 , x3 igual a cero y el resto son mayores o iguales
a cero.
Como ambas soluciones deben ser factibles tendr que cumplirse:
x01 a1 + x02 a2 + x03 a3
x1 a1 + x2 a2 + x3 a3 + aj
= b
= b
(2.5)
x1 = x1 + y1j
x1 = x01 y1j
0
x = x2 + y2j
x2 = x02 y2j
y despejando queda
20
x3 = x3 + y3j
x3 = x03 y3j
(2.7)
x02 y2j = 0
x03 y3j = 0
o equivalentemente
=
x01
y1j
x02
y2j
x03
y3j
(2.8)
Como ha de ser positivo o cero, y x01 , x02 , x03 lo son, podemos desechar las columnas
para las que yij 0.
Para las que cumplen que yij > 0 tendremos que como x1 , x2 , x3 han de ser
mayores o iguales que cero, y por tanto de (2.7) deducimos que:
x01 y1j 0
x02 y2j 0
x03 y3j 0
x01
y1j
x0
2
y2j
x0
3
y3j
(2.9)
70
Y sta es la regla para la variable de salida, aquella que hace mnimo el cociente
x0i
tal que yij > 0, siendo xj la variable de entrada en la base.
yij
Como regla de la variable de salida tenemos que dada la solucin bsica factible
XB = B 1 b, siendo el vector aj que entra en la base, yij > 0 para algn i, entonces
saldr de la base aquel vector ak que verifique:
0
x0k
xi
= min
; yij > 0 .
ykj
yij
Demostracin de la Regla para la variable de entrada.
Sea B = (a1 , a2 , a3 ) y sea aj que no est en la base B. Si las variables toman los
valores:
x1 = x01
x = x02
=
Z0 = c1 x01 + c2 x02 + c3 x03 .
2
0
x3 = x3
Al introducir aj en la nueva base tendremos:
x1 = x1
x2 = x2
=
Z = c1 x1 + c2 x2 + c3 x3 .
x = x3
3
xj = .
y1j
y2j
(2.10)
Z0 (zj cj )
= Z Z0 .
=
y como
0 y zj cj 0
71
= (a1 , a2 , a3 )
aj no b
asico
0 y2j 0 y3j 0.
zj cj < 0 y
x2 = x02
x3 = x03 .
72
(2.12)
=
=
=
=
x01 y1j
x02 y2j
x03 y3j
=
Z > Z0 .
=
=
=
=
Como es arbitrario, puedo hacerlo tan grande como quiera, es decir no acotarlo.
La solucin ptima aumentar al aumentar .
2.10.2
Opt.
x1
x2
..
.
c1
c2
..
.
xm
zj
cm
cj
Si B = Im
c1
x1
y11
y21
..
.
c2
x2
y12
y22
..
.
...
...
...
...
..
.
...
...
...
...
..
.
...
...
...
...
..
.
cn
xn
y1n
y2n
..
.
coef. objetivo
variables
x01
x02
..
.
ym1
z1 c1
ym2
z2 c2
...
...
...
...
...
...
ymn
zn cn
x0m
Z0
yj = B 1 aj = aj .
73
Una vez que tengamos la tabla (caso maximizante), los pasos a seguir son:
Paso 0:
Construir la tabla inicial y la solucin inicial.
Paso 1:
Considerar la solucin actual.
Paso 2:
Si todos los zj cj 0, la solucin es ptima
Fin
x0i
para los yik > 0.
yik
Paso 4:
Realizar transformaciones en la tabla para conseguir una nueva matriz unitaria
tomando yrk como pivote. Calcular zj cj usando la expresin
m
i=1
ci yij cj
(2.14)
Paso 5:
Volver al paso 2.
Ejemplo 34 Resolver el programa lineal, usando el mtodo del Simplex en forma
de tabla.
Max
s.a.:
x1 , x2 , x3 , x4 0
B = (a3 , a4 ) = I2
74
3
2
x1 x2
2 2
3
1
2
1
cj 5 7
2 1
x3 x4
1
0
0
1
0
0
Sol. bsica
factible
12
8
Z0 = 16
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. bsica
factible
4
4
Z = 12
Entra en la base a1 por ser z1 c1 < 0 el nico negativo. Como variable de salida
hacemos:
4
4
min
;
= min{6, 3} = 3.
2/3 4/3
Y por tanto sale de la base a4 .
2
1
cj
3
x1
0
1
0
2
x2
1
0
0
2
1
Sol. bsica
x3
x4
factible
1/2 1/2
2
1/4 3/4
3
9/4
1/4
Z = 13
Z = 13.
75
La base ptima es
B = (a2 , a1 ) =
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, tambin podemos obtener el algoritmo
correspondiente para el caso minimizante.
Ejemplo 35 Resolver el programa lineal, usando el mtodo del Simplex en forma
de tabla.
Z = x2 3x3 + 2x5
x1 + 3x2 x3 + 2x5
= 7
2x2 + 4x3 + x4
= 12
4x2 + 3x3 + 8x5 + x6 = 10
x1 , x2 , x3 , x4 , x5 , x6 0
Min
s.a.:
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. bsica
factible
7
12
10
Z0 = 0
76
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. bsica
factible
10
3
1
Z = 9
La fila de los costes reducidos se obtiene por medio de la expresin 2.14. Por
ejemplo:
z2 c2 = 0
5
1
5
1
3
+0
1 =
2
2
2
2
es:
T abla
III
x2
x3
x6
zj cj
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. bsica
factible
4
5
11
Z = 11
Z = 11.
La base ptima es
3 1 0
B = (a2 , a3 , a6 ) = 2 4 0
4 3 1
2.11
B 1
2/5 1/10 0
= 1/5 3/10 0 .
1 1/2 1
2.11.1
77
Este algoritmo suele utilizarse cuando hay igualdades o desigualdades del tipo ,
y por tanto sera necesario aadir 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 solucin (es infactible).
Fase 1:
Paso 0: Escribir el programa en forma estndar, aadiendo variables artificiales.
Paso 1: Considerar la funcin objetivo Z {minimizante o maximizante}, que
se obtiene incorporando al objetivo las variables artificiales con coeficientes {1 o -1} y asignando coeficiente cero al resto.
Paso 2: Aplicar el algoritmo del Simplex, con la funcin objetivo descrita en
el paso 1. Si en la solucin 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 funcin objetivo original, con coeficiente cj = 0 para
las variables artificiales que aparezcan en la base ptima del paso 2. Se
prescindir de las variables artificiales no bsicas y se actualizarn los
zj cj .
Z = 3x1 + 5x2
x1
4
x2
6
3x1 + 2x2 18
x1 , x2 0
78
Min
Z = 3x1 + 5x2
x1 + x3
= 4
x2 + x4
= 6
3x1 + 2x2 x5 + x6
= 18
x1 , x2 , x3 , x4 , x5 , x6 0
s.a.:
Este ejemplo ya lo hemos resuelto anteriormente usando el mtodo de las penalizaciones, vamos a resolverlo ahora usando el mtodo de las dos fases:
Fase 1:
Construimos la tabla del Simplex como indica el paso 1. El objetivo es minimizar
la variable artificial x6.
T abla
Min
x3
x4
x6
zj cj
0
x1
1
0
3
3
0
0
1
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
4
6
18
Z0 = 18
As, entra en la base a1 por ser z1 c1 el mayor y sale de la base a3 , pues hace
mnimo el cociente 4/1 y 18/3. 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
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
Fase 2
Como en la base ptima no aparece ninguna variable artificial, segn el paso 3,
prescindimos de esta variable. As la nueva tabla queda:
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
79
4
3
3
= 27
2.11.2
x1 , x2 , x3 , x4 0
B = (a3 , a4 ) = I2
B 1 = I2
80
z2 c2 = (2, 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:
3
12
y2 = B 1 a2 = I2 a2 = a2 =
;
xB = B 1 b = b =
1
8
Entra en la base a2 por ser el ms negativo.
12
12 8
;
=
= 4.
Y sale a3 pues min
3 1
3
Iteracin 1 La nueva base es:
3 0
B = (a2 , a4 ) =
1 1
1/3 0
1/3 1
Si calculamos yk = B 1 ak y xB = B 1 b tenemos:
1/3 0
2
2/3
1
y1 = B a1 =
=
;
1/3 1
2
4/3
1/3 0
12
4
1
xB = B b =
=
.
1/3 1
8
4
81
Entra en la base a1 por ser z1 c1 < 0 el nico negativo. Como variable de salida
hacemos:
4
4
min
;
= min{6, 3} = 3.
2/3 4/3
1/2 1/2
1/4 3/4
1
z3 c3 = (1/4, 5/4)
(2) = 1/4 + 2 = 9/4
0
0
z4 c4 = (1/4, 5/4)
1 = 5/4 1 = 1/4.
1
La solucin ya es ptima.
Si calculamos xB = B 1 b tenemos:
1/2 1/2
12
2
xB = B 1 b =
=
1/4 3/4
8
3
es:
x1 = 3 x2 = 2 x3 = 0 x4 = 0 ;
La base ptima es
B = (a2 , a1 ) =
3 2
1 2
1/2 1/2
1/4 3/4
x1 , x2 , x3 0
82
=
=
x2
2/3 1/3
5
1
=
x1 = 2 x2 = 1 x3 = 0.
Si calculamos los zj cj usando que zj = ctB yj obtenemos:
1
z1 c1 = (2, 3)
2=22=0
0
z2 c2 = (2, 3)
z3 c3 = (2, 3)
0
1
3
1
(3) = 3 + 3 = 0
10 = 9 10 = 1.
1/3 2/3
2/3 1/3
1
3
y13
=
=
5
1
y23
x0i
;
yi3
yi3 > 0
Como y13 = 3 y y23 = 1, slo puede salir de la base a1 pues y23 es negativo.
Al salir de la base a1 tenemos:
2 1
B = (a2 , a3 ) =
1 5
5/9 1/9
1/9 2/9
83
z3 c3 = (3, 10)
1
0
0
1
(3) = 3 + 3 = 0
10 = 10 10 = 0.
x1 = 0 x2 = 5/3 x3 = 2/3 ;
x1 , x2 , x3 , x4 0
Max
s.a.:
1 0
0 1
B 1 = I2 =
1 0
0 1
As, directamente obtengo una solucin bsica factible asociada a esta base pues:
10
1
XB = B b =
=
x1 = 10 x2 = 15 x3 = 0 x4 = 0.
15
Si calculamos los zj cj usando que zj = ctB yj obtenemos:
z1 c1
z2 c2
= 0
= 0
z3 c3
= (1, 1)
z4 c4
= (1, 1)
2
5
5
3
10 = 3 10 = 13
(6) = 2 + 6 = 8.
84
x03
= min
yk3
Como y13 = 2 y y23 = 5:
x0i
;
yi3
x03
== min
yk3
Luego el mnimo corresponde a
base tenemos:
B = (a1 , a3 ) =
en nuestro caso j = 3.
yi3 > 0
10 15
;
2 5
= min{5, 3} = 3.
x02
, y por tanto sale de la base a2 . Al cambiar de
y23
1 2
0 5
1 2/5
0 1/5
= 0
z2 c2
= (1, 10)
z3 c3
= 0
z4 c4
= (1, 10)
2/5
1/5
19/5
3/5
Z = 4 0 + 10(3) 0 = 34.
Tema 3
Dualidad en programacin
lineal
3.1
3.1.1
Formas de la dualidad
Forma cannica maximizante de la dualidad
86
2 1 1 2
3 4 2 1
c = (2, 1, 2, 1) b =
18
24
Por lo tanto
W = bt Y = (18, 24)
1
At Y =
1
2
y1
y2
3
2
1
4
y1
2
2
y2
1
1
Max
x1
2
3
2
x2
1
4
-1
x3
1
2
2
x4
2
1
1
18
24
87
x1
x1
x2
x2
x1
x1
x2
+ x2
x3 x4 46 x3 + x4 46.
Por lo tanto el problema se expresa en forma cannica maximizante de la siguiente
forma:
Min
y1
y2
y3
y4
Max
x1
1
1
1
0
3
x2
1
1
1
0
8
x3
2
0
0
1
2
x4
3
0
0
1
4
5
1
1
46
= y2 y3
= y3
tenemos:
Min W = 5y1 y2 + 46y3
s.a.: y1 + y2 3
y1 y2 8
2y1 + y3 2
3y1 y3 4
y1 0, y2 no restringida, y3 0
88
Como puede verse la matriz de los coeficientes del problema dual es la traspuesta
de la matriz correspondiente del problema primal.
3.1.2
Y no restringida.
Ax b
Ax b
Ax b
Ax b
Llamando
A =
El problema se transforma en
A
A
b =
b
b
Max Z = C t X sujeto a A x b , X 0
Segn la definicin de dualidad su dual es
Min W = (b )t Y , sujeto a (A )t Y C, Y 0
Realizando operaciones
b t Y1
A t Y1
Min W = b
Y2 , s. a. A
Y2 C, Y 0
t
A , At YY12 C, Y 0
Min W = bt , bt YY12 , s. a.
Min W = bt Y1 bt Y2 , s.a.: At Y1 At Y2 , C, Y1 , Y2 0.
89
Y no restringida.
x3 = x3 x4
x4 0
Realizamos ahora las transformaciones para que todas las restricciones sean de
signo
x4 0
Su dual es
Min W = 3y1 2y2 + y3 y4
s.a.: y1 y2 + y3 y4 2
y1 y2 y3 + y4 3
y1 4
y1 4
y1 , y2 , y3 .y4 0
Realizando los cambios
90
y2 = y2
= x1 x2
= x3
Max
x1
3
3
2
x2
4
-2
3
x2
-4
2
-3
x3
-2
1
1
3
7
4y1
4y1
2y2
2y2
91
3
3
4y1 2y2 = 3
3.1.3
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 conversin son las siguientes:
1. Funcin objetivo:
(a) El dual de un problema de maximizacin es un problema de minimizacin.
(b) El dual de un problema de minimizacin es un problema de maximizacin.
2. Nmero de incgnitas y de restricciones:
(a) El nmero de incgnitas del dual es el nmero de restricciones del primal.
(b) El nmero de restricciones del dual es el nmero de incgnitas del primal.
3. Coeficientes de coste y trminos independientes de las restricciones.
(a) Los coeficientes de coste del dual son los trminos independientes de las
restricciones del primal.
(b) Los trminos independientes de las restricciones del dual son los coeficientes de coste del primal.
4. Las matrices tecnolgicas del primal y dual son traspuestas entre s.
5. Signo de las restricciones y de las variables.
A cada restriccin de un problema viene asociado una variable del otro.
Las reglas para escribir los signos de las restricciones y de las variables correspondientes vienen resumidas en la tabla siguiente:
92
Primal de Maximizacin
restriccin
=
0
0
variable
libre
Dual de Maximizacin
3.1.4
Dual de Minimizacin
0
0
variables
libre
restriccin
=
Primal de Minimizacin
Min
y1
y2
y3
Max
x1
1
2
3
3
x2
-1
1
-1
9
1
3
5
93
Min
y1
y2
Max
x1
-4
3
2
x2
-7
-4
-1
x2
7
4
1
-10
8
1
1
7y1 4y2 = 1
94
3.2
x1 0
x2 libre
2a
restriccin del primal
1a
Primal de Minimizacin
Como no hemos demostrado las reglas de los signos su uso no puede ser considerado
una demostracin, no obstante si las aplicramos se obtendra este resultado de
inmediato. 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
min W = bt Y
sujeto a At Y C
y0
95
es decir:
max Z = C t X
sujeto a AX b
X0
Max Z = ct X
sujeto a AX b
Primal
X0
Min W = bt Y
sujeto a At Y c
Dual
y0
Ax0 b; x0 0
(3.1)
(3.2)
96
(3.3)
(3.4)
(3.5)
y
0
y0 b = (y10 , y20 ...ym
)
b1
b2
bm
= (b1 , b2 ...bm )
y10
y20
0
ym
)
= bt y0
97
Min W = bt Y
y su dual sujeto a At Y C
y0
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.
t
CB
B 1 I 0 0
98
At Y C
De la segunda obtenemos
t
t
CB
B 1 I = CB
B 1 = (Y ) 0
Luego Y es una solucin factible del problema dual. Veamos que es adems
ptima:
t
t
= bt Y = Y t b = CB
B 1 b = CB
tXB = Z
Si se emplea el algoritmo del simplex la solucin coincide con los costes reducidos de las variables de holgura:
t
Y t = CB
B 1 .
99
El dual es:
Max
x3
x4
x5
Zj cj
Max
x1
x4
x5
Zj cj
Max
x1
x4
x2
Zj cj
5
0
3
0
0
0
5
0
0
5
x1
1*
5
3
-5
3
x2
0
2
8
-3
0
x3
1
0
0
0
0
x4
0
1
0
0
0
x5
0
0
1
0
2
12
12
z=0
5
x1
1
0
0
0
3
x2
0
2
8*
-3
0
x3
1
-5
-3
5
0
x4
0
1
0
0
0
x5
0
0
1
0
2
2
6
z=10
0
x3
1
-17/4
-3/8
31/8
0
x4
0
1
0
0
0
x5
0
-1/4
1/8
3/8
5
x1
1
0
0
0
3
x2
0
0
1
0
2
1/2
3/4
z=49/4
31
8 , y2
= 0, y3 = 38 , W =
49
4 .
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 algn coste no nulo en
la el objetivo. En este caso la solucin del dual correspondiente a tal variable
de holgura habra que obtenerla con la expresin rj = zj cj . Es decir:
zj = rj + cj . Aqu tambien se debe usar esta expresin, lo que pasa es que
c3 = c4 = c5 = 0. En el siguiente ejemplo resolveremos un caso en que alguna
de las variable de holgura no tiene coeficiente nulo en la funcin objetivo.
100
Min
y1
y2
y3
y4
Max
x1
2
1
-1
-1
2
x2
1
-2
2
-3
3
x3
-1
3
-3
-4
-1
x3
1
-3
3
4
1
2
6
-6
-10
El problema dual es
Max W = 2y1 + 6y2 6y3 10y4
s.a.: 2y1 + y2 y3 y4 2
y1 2y2 + 2y3 3y4 3
y1 + 3y2 3y3 4y4 1
y1 3y2 + 3y3 + 4y4 1
y1 , y2 , y3 , y4 0
y1
y1
+ 3y2
3y2
3y3
+ 3y3
4y4
+ 4y4
y2
y4
= y2 y3
= y4
Si hacemos el cambio:
101
Min
x5
x6
x7
Zj cj
Min
x1
x6
x7
Zj cj
m
m
0
2
m
0
Min
x1
x3
x7
Zj cj
2
x1
2
1
1
3m 2
2
x1
1
0
0
0
2
1
0
3
x2
1
2
3
m 3
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
x3
1
3
4
2m + 1
1
x3
1/2
7/2
9/2
7m
2
1
x3
0
1
0
0
1
x3
1
3
4
2m 1
1
x3
1/2
7/2
9/2
7m
2
1
x3
0
1
0
0
0
x4
1/2
1/2
1/2
m
2 1
0
x4
3/7
1/7
1/7
1
0
x4
1
0
0
m
m
x5
1
0
0
0
m
x5
1/2
1/2
1/2
3m
2 +1
m
x5
3/7
1/7
1/7
1m
m
x6
1/7
2/7
9/7
m
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
1
5
9
5m + 2
12/7
10/7
18/7
2
102
12
7 , x2
= 0, x3 =
10
7 ,Z
= 2.
v j xj = 0 j = 1 , 2 , .., n
Demostracin.
= Supongamos que X e Y son ptimas. Partimos de:
Max Z = C t X
sujeto a AX b
X0
y su dual
Min W = bt Y
sujeto a At Y C
y0
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
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
(3.7)
(3.8)
103
Y t U = V t X = Y t U + V t X = 0
(y1 , y2 , .., ym )
u1
u2
um
m
+ (v1 , v2 , .., vn )
yi ui +
i=1
n
x1
x2
xn
=0
vj xj = 0
j=1
i=1 yi ui
= 0;
n
j=1 vj xj
= 0, luego,
m
i=1
yi ui +
n
vj xj = 0
j=1
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 .
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 dbil, entonces son ptimas.
104
Nota: Este teorema puede utilizarse para deducir la solucin del dual conociendo
la del primal, vemoslo por medio del siguiente ejemplo:
Ejemplo 48 Dado el programa lineal siguiente, determine la solucin ptima del
programa dual usando el teorema de Holgura complementaria.
Max Z = 5x1 + 3x2
s.a. :x1 2
5x1 + 2x2 12
3x1 + 8x2 12
x1 , x2 0
Se sabe que la solucin ptima del primal es: x1 = 2, x2 = 34 , Z =
49
4 .
= 2
= 12
= 12
vj xj
=
=
v1 x1
v2 x2
v1 = 0
v2 = 0
= 0
y como
= 0
= 5
= 3
x1
x2
u1 = 0
u2 = 12
u3 = 0
= 2
> 0
= 3/4 > 0
u1 y1 = 0
u2 y2 = 0 y como y2
ui yi = 0
u3 y3 = 0
= 0
= 5
= 3
8
31
= y3 = , y1 =
3
8
105
3.3
31
8 ,
y2 = 0, y3 = 83 , v1 = 0, v2 = 0, W =
49
4 .
Las variables duales nos indican como vara la funcin objetivo al cambiar los recursos.
XB
= B 1 (b + b) = B 1 b + B 1 (b)
t
Z = CB
XB
= CB
B 1 b + CB B 1 (b) = Z + Y t (b) =
= Z +
m
i=1
(bm )
yi (b) = Z + y1 (b1 ) + y2 (b2 ) + + ym
(3.9)
y1 = 31
8 , y2 = 0, y3 = 8 ; .W = 4 .
49
4
49 31
3
+ (b1 ) + 0(b2 ) + (b3 )
4
8
8
106
bolsos
cinturones
monederos
Disponible
8
4
2
120
6
2
1.5
60
1
1.5
0.5
40
48
20
8
Cuntos objetos har de cada clase para maximizar la ganancia? Plantear este
problema y hallar una interpretacin del problema dual.
Planteamiento:
Sean las variables de decisin para el problema:
x1 = nmero de bolsos,
x2 = nmero de cinturones,
x3 = nmero de monederos.
Max Z = 120x1 + 60x2 + 40x3
s.a.: 8x1 + 6x2 + x3 48
4x1 + 2x2 + 1.5x3 20
2x1 + 1.5x2 + 0.5x3 8
x1 , x2 , x3 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 ms ventajosa posible para l. Cuanto
deber pagar por el material y las horas de trabajo disponibles?
Sean y1 , y2 , y3 los precios a los que va a pagar la unidad de piel, la hora de
trabajo del personal de diseo-confeccin y la hora de trabajo de acabado, respectivamente. Lo que debera pagar el comprador ser 48y1 + 20y2 + 8y3 , y naturalmente
desear que esta cantidad sea lo menor posible. Supone, que como es de esperar, el
actual dueo no se la vender si esto le supone alguna prdida. Por eso, el precio que
pague por el material y horas que permitan hacer cada objeto deber ser al menos
107
igual que la ganancia que el dueo actual saca por este producto. En resumen, el
problema que el comprador ha de resolver es el siguiente:
min
s.a.
que como se ve es el dual del primero. Los valores de las variables de la solucin 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
Este mtodo es til a veces para no tener que introducir variables artificiales. Este
algoritmo se aplica cuando puede obtenerse una solucin bsica, 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 zj cj 0, pero con
algn xi < 0. Este tipo de soluciones se llaman dual factible.
Paso 1
Si xB solucin bsica factible cumpliendo xB 0, entonces la solucin es ptima.
Paso 2 (Seleccin de la variable de salida)
Seleccionar como variable de salida aquella variable bsica con valor ms negativo.
Sea xr .
Paso 3 (Seleccin de la variable de entrada)
j
para los yrj < 0.
Determinar para las columnas no bsicas los cocientes pj = zjyc
rj
Si todos los yrj 0 el programa dual es no acotado y el primal es no factible. FIN.
Si hay algn yrj < 0, entra la variable de mayor cociente (o menor valor absoluto).
Sea xk .
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. Hay que partir de una tabla en la que zj cj 0.
Paso 3. Se selecciona la variable de entrada que de mnimo el cociente pj =
zj cj
yrj para los yrj < 0 (o menor valor absoluto, porque es positivo).
108
Max
x4
x5
zj cj
0
0
2
x1
3
1
2
1
x2
2
3
1
0
x4
1
0
0
4
x3
5
2
4
0
x5
0
1
0
15
7
z = 0
As pues, se cumplen las condiciones para poder aplicar el algoritmo dual del
simplex, pues el primal es infactible (xB < 0); y el dual es factible pues zj cj 0.
El trmino independiente ms negativo es -15. El pivote correspondiente est en la
segunda columna, ya que:
max
2
1
4
3 , 2 , 5
= min
2
1 4
3, 2, 5
1
2
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
- 12
- 32
1
2
0
x5
0
1
0
15
2
31
2
x2 = 7.5 ,
z = 2 0 7.5 4 0 = 7.5
y2 = 0 ,
w = 15
1
7 0 = 7.5
2
Min Z = x1 + x2 + x3
s.a.: x1 x2 + 3x3 1
2x1 x2 + x3 0
x1 + x2 x3 2
x1 , x2 , x3 0
y1
y2
y3
x1
1
2
1
1
x2
1
1
1
1
x3
3
1
1
1
Max
s.a.:
1
0
2
109
W = y1 + 2y3
y1 + 2y2 + y3
y1 y2 + y3
3y1 + y2 y3
y1 , y2 , y3
Para calcular la solucin del primal cambiamos previamente el signo de las desigualdades, lo que va a implicar un cambio de signo en las variables duales:
Min
Z = x1 + x2 + x3
s.a.: x1 + x2 3x3 1
2x1 + x2 x3 0
x1 x2 + x3 2
x1 , x2 , x3 0
Min Z = x1 + x2 + x3
s.a.:
x1 + x2 3x3 + x4 = 1
2x1 + x2 x3 + x5 = 0
x1 x2 + x3 + x6 = 2
x1 , x2 , x3 , x4 , x5 , x6 0
Min
x4
x5
x6
zj cj
0
0
0
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
1
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
1
4
2
z=2
110
x2 = 0 ,
x3 = 0 ,
z = 2.
Como hemos cambiado de signo las restricciones del primal tenemos que la solucin ptima del dual es:
y1 = 0 ,
y2 = 0 ,
y3 = 1 ,
w = 2.
Como hemos dicho hay un coste reducido cero en una variable no bsica (z2 c2 = 0),
y por tanto si se introduce la variable x2 sale x4 . Si se hacen las transformaciones
correspondientes usando como pivote 2, obtenemos la nueva tabla:
Min
x2
x5
x1
zj cj
1
0
1
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
1/2
5/2
3/2
z=2
x2 = 1/2 ,
x3 = 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 solucin que anteriormente.
Tema 4
Anlisis de sensibilidad
4.1
Introduccin grfica
x1 , x2 0
112
Para realizar este estudio se supone que se tiene una solucin ptima del problema, 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 solucin ptima del problema precedente, pero es necesario realizar algunas
modificaciones debido a los cambios producidos. Por este motivo, el Anlisis de
Sensibilidad se conoce tambin con el nombre de Anlisis de Post-optimalidad.
4.2
4.2.1
Cambios discretos
Variacin en un coste de una variable no bsica
h1
h2
h3
cB
0
0
0
x1
8
4
2
60
x2
6
2
1.5
30
x2
1
1.5
0.5
20
h1
1
0
0
0
h2
0
1
0
0
h3
0
0
1
0
48
20
8
Z =0
113
0
20
60
h1
x3
x1
60
x1
0
0
1
0
30
x2
2
2
1.25
5
20
x3
0
1
0
0
0
h1
1
0
0
0
0
h2
2
2
0.5
10
0
h3
8
4
1.5
10
24
8
2
Z = 280
0
XB
= B 1 b
qu era ptima si
cB B 1 N cN 0
Por lo tanto, como slo vamos a cambiar el coste de una variable no bsica, slo puede
alterarse en todo el proceso anterior esta ltima expresin. nicamente tendremos
que recalcular z2 c2 , resultara:
2
z2 c2 = 0 20 60 2 (30 + ) = 5.0 .
1.25
La tabla quedara en este caso en la siguiente forma:
0
20
60
h1
x3
x1
60
x1
0
0
1
0
30 +
x2
2
2
1.25
5
20
x3
0
1
0
0
0
h1
1
0
0
0
0
h2
2
2
0.5
10
0
h3
8
4
1.5
10
24
8
2
280
114
c2 , puede aumentar hasta 35. Tambin el valor de la funcin objetivo ser en este
caso el mismo ya que Z 0 = cB B 1 b y ninguna de estas matrices cambia si c2 35.
Igualmente, c2 puede disminuir todo lo que se quiera, pues no hay restriccin para
por la izquierda.
Si no se cumpliera esta condicin y c2 pasara a ser, por ejemplo 40, la tabla final
del simplex quedara:
Max
0
20
60
60
x1
0
0
1
0
h1
x3
x1
40
x2
2
2
1.25
5
20
x3
0
1
0
0
0
h1
1
0
0
0
0
h2
2
2
0.5
10
0
h3
8
4
1.5
10
24
8
2
280
h1
x3
x2
x1
1.6
1.6
0.8
4
x2
0
0
1
0
x3
0
1
0
0
h1
1
0
0
0
h2
1.2
1.2
0.4
8
h3
5.6
1.6
1.2
16
27.2
11.2
1.6
Z = 288
x1 = 0, x2 = 1.6, x3 = 11.2
4.2.2
Z = 288.
2
2
8
2
4 30 0 0 =
= ( 0 20 60 + ) 2
1.25 0.5 1.5
= 5.0 + 1. 25 10.0 . 5 10.0 + 1. 5 .
0
20
60 +
h1
x3
x1
60 +
x1
0
0
1
0
115
30
x2
2
2
1.25
5 + 1.25
20
x3
0
1
0
0
0
h1
1
0
0
0
0
h2
2
2
0.5
10 0. 5
0
h3
8
4
1.5
10 + 1. 5
24
8
2
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
= 4 20
5
= 4.0
1.25
20
10
1.5 = 6. 666 7
0
20
100
h1
x3
x1
100
x1
0
0
1
0
30
x2
2
2
1.25
55
20
x3
0
1
0
0
0
h1
1
0
0
0
que no es ptima.
0
h2
2
2
0.5
10
0
h3
8
4
1.5
70
24
8
2
360
Habra que continuar el problema a partir de esta tabla hasta obtener todos los
costes reducidos positivos.
Entra h2 y sale x3 , y aplicamos el algoritmo del simplex:
0
20
100
h1
x3
x1
100
x1
0
0
1
0
30
x2
2
2
1.25
55
20
x3
0
1
0
0
0
h1
1
0
0
0
0
h2
2
2
0.5
10
0
h3
8
4
1.5
70
x1 = 4, x2 = 0, x3 = 0, con z = 400.
24
8
2
360
116
4.2.3
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 evolucin de la tabla, ob0
servamos que los cambios slo pueden darse en la ltima columna, ya que XB
=
1
0
1
B b y Z = cB B b son las nicas frmulas donde intervienen los recursos.
En concreto si el cambio se realiza en el segundo recurso:
Lo que vara es
1
2
-8
48
24 + 2
0
2
-4 20 + = 8 + 2 ,
XB
= B 1 b = 0
0 -0.5 1.5
8
2 0.5
que tendra 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 restriccin anterior, por ejemplo = 10, la tabla resultante sera
0
20
60
h1
x3
x1
60
x1
0
0
1
0
30
x2
2
2
1.25
5
20
x3
0
1
0
0
0
h1
1
0
0
0
0
h2
2
2
0.5
10
0
h3
8
4
1.5
10
44
28
3
280
4.2.4
h1
h2
h3
cB
0
0
0
x1
8
4
2
60
x2
5
2
2
43
x3
1
1.5
0, 5
20
h1
1
0
0
0
h2
0
1
0
0
h3
0
0
1
0
48
20
8
z=0
117
Esto slo originara un cambio en la columna 2 de la tabla final, que quedara como
sigue:
1
2
-8
5
7
0
2
-4 2 = 4 ,
0 -0.5 1.5
2
2
y en el coste reducido de esta columna sera:
7
z2 c2 = (0, 20, 60) 4 43 = 3.
2
Y por tanto la tabla quedara:
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.5
10
0
h3
8
4
1.5
10
24
8
2
z = 280
En este caso cambia la base ptima, ya que hay un coste reducido negativo. Continuamos aplicando el mtodo del Simplex, hasta obtener todos los costes reducidos
no negativos.
Si aplicamos el algoritmo del Simplex a la ltima tabla, obtenemos la solucin
ptima del programa modificado, con los cambios en la columna de la segunda
variable. Dicha solucin ptima es:
x1 = 0, x2 = 0, x3 = 16,
con z = 320.
4.3
Incluimos en este caso una nueva variable en el problema con sus correspondientes
caractersticas. Esto equivale a aadir una nueva columna en la tabla de simplex
inicial, que es la nica que va a cambiar. Por ejemplo, aadiendo una nueva variable
x4 con c4 = 15 y at4 = (1, 1, 1), tenemos:
118
h1
h2
h3
cB
0
0
0
x1
8
4
2
60
x2
6
2
1.5
30
x3
1
1.5
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 slo hay que cambiar la columna nueva. Permanece
la solucin si
1
z4 c4 = cB B 1 1 15 resulta no negativo.
1
En este caso podemos usar la solucin del dual cB B 1 = (0, 10, 10). As que
1
z4 c4 = (0, 10, 10) 1 15 = 5, la solucin sigue siendo ptima y no hace
1
falta introducir la nueva actividad en la base.
Si no fuera as calcularamos la nueva columna de coeficientes. En este caso no es
necesario calcular dicha columna. No obstante, para ilustrar lo que sera necesario
hacer si el coste reducido de la nueva actividad resultara negativo, la calculamos de
todos modos. Entonces la cuarta columna quedara:
6
1
2
-8
1
0
2
-4 1 = 2 .
1
0 -0.5 1.5
1
La nueva tabla quedara:
0
20
60
4.4
h1
x3
x1
60
x1
0
0
1
0
30
x2
2
2
1.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.5
10
0
h3
8
4
1.5
10
24
8
2
z = 280
Cuando incluimos nuevas restricciones y la solucin anterior verifica las nuevas restricciones, esta solucin sigue siendo ptima. Las restricciones que no son verificadas
por la solucin actual hay que incluirlas en la tabla.
Para ilustrarlo, proponemos el ejemplo anterior, en el que incluimos la restriccin:
x1 + x2 + x3 7 = x1 + x2 + x3 + h4 = 7, donde h4 es una variable de holgura.
Como la solucin ptima XB del problema original es: x1 = 2, x2 = 0, x3 = 8,
119
0
20
60
0
h1
x3
x1
h4
60
x1
0
0
1
1*
0
30
x2
2
2
1.25
1
5
20
x3
0
1
0
1*
0
0
h1
1
0
0
0
0
0
h2
2
2
0.5
0
10
0
h3
8
4
1.5
0
10
0
h4
0
0
0
1
24
8
2
7
280
Para conservar x1 y x3 en la base hay que hacer nulos los elementos sealados
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 continuacin.
Tabla
II
0
20
60
0
h1
x3
x1
h4
60
x1
0
0
1
0
0
30
x2
2
2
1.25
1.75
5
20
x3
0
1
0
0
0
0
h1
1
0
0
0
0
0
h2
2
2
0.5
1.5
10
0
h3
8
4
1.5
2.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. El nico
elemento que puede hacer de pivote es el sealado con un recuadro en la tabla
anterior.
Realizando las transformaciones correspondientes, llegamos a la solucin ptima.
La solucin ptima es x1 = 3, x2 = 0, x3 = 4, Z = 260.
4.5
4.5.1
Programacin Paramtrica
Parametrizacin de los coeficientes de coste
120
3
2
; C0 =
1
3
t
0
j )() = (CB
(Zj C
+ CB
)yj (Cj + Cj0 ) =
(4.1)
t
0
= CB
yj Cj + (CB
yj Cj ) =
0
= Zj Cj + (Zj Cj0 ).
Z()
= (CB
+ CB
)xB = CB
xB + CB
xB = Z + Z 0
(4.2)
Z0
t
= CB
yj Cj
0
t
= CB
xB
Vamos ahora a concretar cuales son los pasos a seguir para aplicar el algoritmo de
programacin paramtrica. Este algoritmo viene sugerido por las expresiones (4.1)
y (4.2) para los costes reducidos y la funcin objetivo, que marcan una separacin
entre la parte paramtrica y la no paramtrica.
Algoritmo de programacin paramtrica.
Paso 0: Calcular la solucin ptima para = 0 y aadir a la tabla final una
primera fila y una primera columna con los valores de C0 . Adems se incluye
una ltima fila con los Zj0 Cj0 0 y Z0 .
j 0 (caso maxPaso 1: Imponer a la tabla la condicin de optimalidad Zj C
imizante), determinando el recorrido del parmetro para el cual la tabla permanece ptima.
121
Paso 2: Sustituir por aquellos valores extremos que sean finitos y aplicar el
algoritmo del simplex hallando la solucin correspondiente. Introducid las
= 0.
columnas no bsicas con Zj C
j
Paso 3: Repetir los pasos 1 y 2 hasta que no puedan hallarse nuevas soluciones.
Ejemplo 55 Resolver el programa lineal paramtrico:
Max Z = (4 + )x1 + (7 )x2 + (3 + )x3
s.a.: 2x1 + x2 + 2x3 30
x1 + 2 x2 + 2x3 45
x1 , x2 , x3 0
t
Max
x4
x2
Zj Cj
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
45
2 .
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
45/2
min = { 15/2
3/2 , 1/2 } = 5. Entra x1 y sale x4 .
0
CB
1
1
x1
x2
C0
Ct
t
CB
4
7
Zj Cj
Zj0 Cj0
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
122
(Z4 C4 )()
5 )()
(Z5 C
Para 13
10
3
=
=
=
=
la solucin ptima es :
II
0
CB
0
1
x4
x2
C0
Ct
t
CB
0
7
Zj Cj
Zj0 Cj0
1
4
x1
3/2
1/2
1/2
3/2
1
7
x2
0
1
0
0
2/3
1/3
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
XB
15/2
45/2
Z = 315/2
Z() = 45/2
Iteracin 2 Paso 1
j )()
(Zj C
1 )()
(Z1 C
3 )()
(Z3 C
5 )()
(Z5 C
=
=
=
=
123
Si 1/3 todos estos costes reducidos son no negativos., as que en este caso
la solucin ptima es:
x1 = 0, x2 = 45/2, x3 = 0, Z = 315/2 (45/2).
Iteracin 2 Paso 2:
Para = 10/3 hay una solucin mltiple provocada por la quinta columna, que
corresponde a una variable no bsica con coste reducido nulo.
Zj Cj = (0, 0, 13
3
10 1
3 , 3
10 10
3 , 3
10
3 ))
= (0, 0, 1, 11
3 , 0).
Tabla
III
0
CB
1
0
x1
x5
C0
Ct
t
CB
4
0
Zj Cj
Zj0 Cj0
y5 =
1
4
x1
1
0
0
0
1
7
x2
1/2
3/2
5
3/2
1/3
2/3
1
3
x3
1
1
1
0
0
0
x4
1/2
1/2
2
1/2
0
0
x5
0
1
0
0
XB
15
30
Z = 60
Z() = 15
Iteracin 3 Paso 1
j )()
(Zj C
2 )()
(Z2 C
3 )()
(Z3 C
4 )()
(Z4 C
=
=
=
=
x1 = 0
1
x2 = 45
2
Si
x3 = 0
Z = 315
2
45
2
124
4.5.2
1
1
10
x2
Si
x3
3
3
x1
10
x2
Si
x3
=
=
=
=
5
20
0
160 15
=
=
=
=
15
0
0
60 + 15
Z()
= CB
XB = CB
(XB + XB
) = CB
XB + CB
XB
= Z + Z 0
t
0
siendo Z 0 = CB
XB
.
Algoritmo de programacin paramtrica.
Paso 0: Calcular la solucin ptima para = 0 y aadir a la tabla final una columna
0
con los XB
y Z0.
Paso 1: Imponer a la tabla la condicin de factibilidad XB () 0 (tanto para el
caso maximizante como para el caso minimizante) determinando el recorrido
del parmetro 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 XB () = 0.
Paso 3: Repetir los pasos 1 y 2 hasta que no puedan hallarse nuevas soluciones.
Ejemplo 56 Resolver el siguiente problema de programacin paramtrica de los
recursos
Max Z = 4x1 + 7x2 + 3x3
s.a.: 2x1 + x2 + 2x3 30
x1 + x2 + 2x3 45 2
x1 , x2 , x3 0
30
1
b=
b0 =
45
2
125
Paso 0:
La tabla final con = 0 es la que aparece en el ejemplo anterior.
x1
x2
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
XB
5
20
Z = 160
=B
b =
Z =
x1
x2
Ct
t
CB
4
7
Zj Cj
Iteracin 1. Paso 1:
2/3 1/3
1/3 2/3
t
0
CB
XB
.
4
x1
1
0
0
7
x2
0
1
0
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
= 7
XB
5
20
Z = 160
0
-1
-7
0
B () = XB + XB
X
B () 0 tendremos
Si imponemos la condicin de factibilidad X
50
XB () 0 =
=
20.
20 0
As para 20 tendremos que la solucin ptima ser:
x1 = 5
x2 = 20
con
Z = 160 7.
x3 = 0
126
x1
x4
4
x1
1
0
0
Ct
t
CB
4
0
Zj Cj
7
x2
2
-3
1
3
x3
2
-2
5
0
x4
0
1
0
0
x5
1
-2
4
XB
45
-60
Z = 180
0
XB
-2
3
Z 0 =-8
Paso 3
Iteracin 3 Paso 1. As tendremos que imponiendo la condicin de factibilidad
45 2 0
45/2
B () 0 =
X
=
60 + 3 0
20
Por tanto si 20 45/2. la solucin ptima que se obtiene es:
x1 = 45 2
x2 = 0
x3 = 0
con
z = 180 8.
Iteracin 2 Paso 2.
Para = 45/2
x1
x4
Ct
t
CB
4
0
Zj Cj
B ( 45 ) =
X
2
4
x1
1
0
0
x1
7
x2
2
-3
1
x4
3
x3
2
-2
5
0
x4
0
1
0
0
x5
1
-2
4
15
2
XB
0
15
2
Z=0
x = 5
1
x2 = 20
Si 20
x = 0
3
Z = 160 7
x = 45 2
1
45
x2 = 0
Si 20
x = 0
3
Z = 180 8
Si >
45
2
Tema 5
El problema de transporte
5.1
Introduccin
Este problema se plantea cuando han de distribuirse bienes o servicios que se producen en diferentes lugares (orgenes) y que son demandados en diferentes ubicaciones (destinos). El propsito del problema de transporte es minimizar los gastos
que se producen al transportar los artculos desde los orgenes 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 estn representados por los nodos 1, 2, 3 que demandan 15, 5, 25 unidades respectivamente. Los nmeros sobre las lneas indican el
coste que se produce al transportar una unidad por esa ruta.
Tambin 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 cemento 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:
Almacen 1
Almacen 2
Almacen 3
Demanda
Cliente 1
8
9
14
45
Cliente 2
6
12
9
20
Cliente 3
10
13
16
30
127
Cliente 4
9
7
5
30
Capacidad
35
50
40
125
128
7
30
15
A
4
5
2
5
15
B
3
25
5.2
min 8x11 +6x12 +10x13 +9x14 +9x21 +12x22 +13x23 +7x24 +14x31
+9x32 +16x33 +5x34
s.a.:
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
5.3
129
Problema no equilibrado
5.4
1. El problema de transporte tiene al menos una solucin factible: xij = aiMbj donde
M es la cantidad total transportada, ai la disponibilidad del origen i y bj la demanda
del destino j.
2. Si las demandas y disponibilidades son enteras se llama solucin bsica factible
de un problema de transporte a una solucin entera que verifica las restricciones de
disponibilidad y demanda con a lo sumo m + n 1 variables distintas de cero (m =
no de orgenes, n = no de destinos). Este problema de transporte tiene siempre
solucin bsica factible.
3. Si para un problema de transporte se determina una solucin bsica factible
inicial, entonces todas las que se obtengan de ella por el mtodo de simplex son
bsicas factibles.
4. El problema de transporte es acotado.
5.5
Como cualquier mtodo de simplex, el algoritmo de transporte precisa de una solucin bsica factible inicial. Exponemos a continuacin varios mtodos que nos permiten hallar una solucin de partida.
130
5.5.1
Este mtodo nos conduce a una solucin 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 xij = min(ai , bj ) y restar esta cantidad a ai , bj 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 xij que no tienen valor asignado.
Aplicamos este mtodo al problema de transporte del ejemplo 58 de la pgina
127.
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
Produccin
35
50
40
125
Origen 1
Origen 2
Origen 3
Demanda
Destino 1
35
45
10
Destino 2
-
Destino 3
-
Destino 4
-
20
30
30
Produccin
35
0
50
40
Los valores de la solucin 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
35
O rig en 1
Origen 2
Origen 3
Demanda
Produccin
35
50
40
45
10
20
30
30
131
Destino 1
Destino 2
Destino 3
Destino 4
Produccin
O r ig e n 1
35
35
Origen 2
Origen 3
Demanda
10
45
50 40
40
10 0
20
30
30
D e s t in o 1
Destino 2
Destino 3
Destino 4
35
10
20
O rig e n 1
Origen 2
Origen 3
Demanda
Produccin
35
50
40 20
40
20 0
45
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
salucin inicial..
D estin o 1
D estin o 2
Destino 3
Destino 4
35
10
20
20
45
20
O rig en 1
Origen 2
Origen 3
Demanda
Produccin
35
50
30 10
40 20 0
40
30
D e s t in o 1
D estin o 2
Destino 3
Destino 4
O rig e n 1
35
35
O rig e n 2
10
20
20
50
Origen 3
Demanda
45
20
10
30 10 0
Produccin
40 30
30
D estin o 1
D estin o 2
D e stin o 3
Destino 4
O rig en 1
35
O rig en 2
10
20
20
Origen 3
Demanda
10
45
20
30
30
30 0
Produccin
35
50
40 30 0
132
D e stin o 1
D e s t in o 2
D e s t in o 3
D estin o 4
O r ig e n 1
35
35
O r ig e n 2
10
20
20
50
O r ig e n 3
10
30
40
Demanda
45
20
30
30
06
2012
09
010
2013
1016
09
07
305
5.5.2
133
10
12
13
14
16
45
20
30
35
50
40 ,10
(30)5
30 , 0
20
10
13
14
16
30
45
20
30
30
35 15
50
40 ,10
20
13
16
30
20
30
30
14
45 30
35
50
10
20
30
13
35
50 20
10
16
30
45
20
30
30
15
20
35
30
20
50
16
30
10
45
20
30 10
30
15
20
35
30
20
50
10
30
50
45
20
30
30
134
206
012
09
010
2013
1016
09
07
305
5.5.3
Mtodo de Vogel
Aunque este mtodo requiere ms esfuerzo, suele suministrar una solucin inicial
ms cercana a la ptima.
La aplicacin del mtodo de Vogel requiere seguir los siguientes pasos:
1. Definimos la Penalizacin por fila y columna como la diferencia (en valor absoluto) entre los dos costes menores de esta fila o columna..
2. Elegir la fila o columna de mayor penalizacin (en caso de empate seleccionar
cualquiera de ellas arbitrariamente) y situar en la celda de menor coste el
mayor nmero 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 incgnitas no definidas por el algoritmo anterior.
Aplicamos el mtodo de Vogel al mismo problema 59:
1. Las penalizaciones correspondientes a las filas y columnas estn indicadas en
la ltima columna y fila de la siguiente tabla:
O1
O2
O3
Demanda
Pen. col
D1
D2
D3
D4
10
12
13
14
16
45
1
20
3
30
3
30
2
Produccin
35
50
40
Pen. fil
2
2
4
135
O1
O2
O3
Demanda
Pen col
D1
D2
D3
D4
10
12
13
14
16
45
1
20
3
30
3
(30)5
30 0
2
Produccin
35
50
40 10
Pen fil
2
2
4
D2
D3
D 4
10
12
13
14
16
30
45
1
20
3
30
3
Produccin
35
50
40 10
Pen fil
2
3
5
30
O1
O2
O3
Demanda
Pen col
D1
D2
D3
D 4
10
12
13
16
30
(10)9
20 10
3
14
45
1
30
3
Produccin
35
50
40 10 0
Pen fil
2
3
5
30
D 2
D3
D 4
10
10
13
Produccin
35 25
50
O 3
14
10
30
40
Demanda
Pen col
45
1
O1
O2
20
30
3
30
Pen fil
2
4
136
O1
O2
O 3
Demanda
Pen col
D1
D 2
D3
D 4
10
10
459
13
Produccin
35 25
50 5
10
30
40
45 0
1
30
3
20
30
D 1
D 2
D3
D 4
O1
O2
10
10
45
13
Produccin
35 25
50 5
O 3
10
30
40
45
20
Demanda
Pen col
Pen fil
2
4
30
3
Pen fil
0
0
30
O1
O2
10
D3
25
45
13
Produccin
35 25 0
50 5
O 3
10
30
40
45
20
Demanda
Pen col
D 1
D 2
30 5
3
D 4
-
Pen fil
0
0
30
O1
O2
O3
D1
08
459
01 4
D2
106
01 2
109
D3
251 0
51 3
01 6
D4
09
07
305
5.6
137
Definicin de Ciclo
5.7
138
O1
O2
O3
Demanda
D1
35
10
D2
D3
D4
20
45
20
20
10
30
30
30
Produccin
35
50
40
139
coste reducido
precio unitario
O1
O2
O3
vj
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)
ui
0
1
5
O1
O2
O3
vj
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)
ui
0
1
5
140
Ahora el pivote est en la posicin (1,2) correspondiente al coste reducido mximo, y la variable que entra es x12 , y la que sale x22 . Restamos 10 a los valores
de las celdas (2,2), (1,1), que estn sealadas con el signo menos, y sumamos 10 a
los de las celdas (1,2), (2,1) que estn marcadas con el signo ms. Obtenemos una
solucin bsica factible mejorada:
D1
25
20
O1
O2
O3
D2
10
D3
D4
30
10
30
O1
O2
O3
vj
D1
(25)
8
(20)
+
9
3
14
8
D2
10
D3
2*
+ 10
(30)
13
1
16
12
6
5
12
(10)
9
6
D4
7
9
4
7
(30)
5
2
ui
0
1
3
Ahora el valor mnimo de las celdas sealadas con es 25. Este valor se resta
a las marcadas con y se le suma a las marcadas con +, obtenindose la nueva
solucin:
D1
O1
O2
O3
D2
10
45
10
D3
25
5
D4
30
O1
O2
O3
vj
5.8
D1
2
8
(45)
141
D2
10
D3
25
10
5
13
3
16
10
6
3
12
(10)
9
6
9
5
14
6
D4
7
9
2
7
(30)
5
2
ui
0
3
3
Soluciones degeneradas
Una solucin bsica se llama degenerada cuando contiene menos de m+n1 variables
bsicas no nulas.
Para aplicar el algoritmo de transporte es necesario partir de una solucin no
degenerada, es decir, que contenga m + n 1 celdas no nulas. En el caso de que la
solucin disponible sea degenerada, es preciso completar la base con algunas celdas
hasta completar las m + n 1 posiciones requeridas. Para ello se acta del siguiente
modo:
Intentar construir un ciclo comenzando en una celda vaca. 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 ms bajo y asignar a esta posicin el
valor , que se supone que es un nmero positivo muy pequeo. Usar esta posicin
y el valor de la asignado como si fuera una variable bsica. Cuando los costes
reducidos son todos no positivos se llega igualmente a la solucin ptima y entonces
damos a el valor 0.
Ejemplo 60 Si un problema tiene la solucin inicial indicada en la tabla siguiente
(los nicos valores no nulos estn indicados entre parntesis y el coste del transporte
est indicado con el nmero ms pequeo).
Planta 1
Planta 2
Planta 3
Ciudad 1
(5) 3
NO1
Ciudad 2
(3)4
(2)5
Ciudad 3
NO1
(7)3
Ciudad 4
2
7
(6)3
Completad las 5 posiciones no nulas con una nueva celda para llegar a una solucin
bsica factible no degenerada (con 6 elementos no nulos).
Comenzamos seleccionando una celda vacia, que se aadir a las de la base de
forma que no puedan formarse ciclos con esta celda aadida y las 5 celdas no nulas
de la solucin anterior. Las posiciones prohibidas, aquellas que permiten formar
ciclos, estn indicadas (con NO) en la tabla anterior. Elegimos entre las posiciones
posibles la (3,2), que es una de las ms baratas, y le daremos el valor , y hallamos
los costes reducidos como anteriormente.
142
Planta 1
Planta 2
Planta 3
vj
Ciudad 1
(5)
3
3
1
2
2
3
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
El costo reducido ms positivo es la posicin (1,4). La solucin a la que corresponde menor el valor ms pequeo entre las celdas marcadas con el signo menos
es 3, en la posicin (1,2). La nueva solucin est en la siguiente tabla donde tambin se indican los clculos realizados en el ciclo correspondiente en el algoritmo de
transporte.
Planta 1
Planta 2
Planta 3
vj
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
El mayor valor del coste reducido es 7, que est en la posicin (2,1) que entrar en
la base. En el ciclo marcado los valores sealados 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 posicin (2,2),
quedando la nueva tabla:
Planta 1
Planta 2
Planta 3
vj
Ciudad 1
Ciudad 2
3
2
+ 1
2
4
4
-7
5
+5
2
3
4
1
7
Ciudad 3
Ciudad 4
ui
5
+
-7
7
*5
1
5
(1)
-2
-1
Planta 1
Planta 2
Planta 3
Ciudad 1
Ciudad 2
3
3
+ 1
-3
1
4
-2
5
+5
2
3
vj
Ciudad 3
+
6
*4
1
Ciudad 4
6
+
-2
-5
1
-4
ui
0
2
-7
7
143
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
-4
3
Planta 1
Planta 2
Planta 3
vj
Ciudad 2
3
4
-2
5
+5
5
1
-3
2
-1
Ciudad 3
Ciudad 4
6
1
4
3
-3
7
-1
1
1
1
ui
0
2
0
Todos los costes reducidos son no positivos. La solucin optima resulta por tanto:
Ciudad 1
Planta 1
Planta 2
Planta 3
Ciudad 2
5
5
Ciudad 3
2
4
1
Ciudad 4
6
5.9
144
Demostracin:
min
(k
c
)
x
min
kx
)
+
(c
ij
ij
ij
ij xij
i,j
i,j
i,j
min k i,j (xij ) + i,j (cij )xij min constante + i,j (cij )xij
La ltima igualdad se deduce del hecho de que la suma de todas las variables es
minimizar
igual a la oferta o demanda total. As que el problema de
z =
(k
c
)
x
es
equivalente
al
problema
de
maximizar
z
=
ij
ij
i,j
i,j cij xij .
Ambos problemas dan lugar a la misma solucin ptima para las variables xij . No
obstante la relacin entre las respectivas funciones objetivos es:
z = k i,j (xij ) + i,j (cij )xij = k i,j (xij )+ i,j (cij )xij = k i,j (xij )
z . Por lo tanto el problema de maximizacin tiene un valor del objetivo
z = k
i,j
(xij ) z
Otra variacin 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 minimizacin, se le asigna
al arco (o celda) correspondiente un coste muy alto (en relacin con los restantes
costos). Si el problema es de maximizacin se asignar un coste muy pequeo.
5.10
El problema de transbordo
A
B
1
DEM.
1
2
5
0
35+90
2
3
7
2
55
B
2
0
0+90
DISP
40
50+90
0+90
145
50
75
35+90
2
40
B
90
15
55
DISP
40
50+90
0+90
0+90
Para interpretar la solucin se ignoran los elementos que conectan un nodo consigo mismo, que aparecen enmarcados en la tabla. Leyendo en horizontal obtenemos
la interpretacin de la solucin: 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
5.11
El problema de asignacin
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 adems que el
costo total sea mnimo.
Ejemplo 62 Una empresa tiene 4 mquinas y debe completar cuatro tareas. Cada
mquina puede y debe realizar una y slo una de de las tareas. La tabla siguiente
nos da el tiempo que tarda cada mquina en completar cada trabajo.
mquina
mquina
mquina
mquina
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 mquina de modo que la suma de los tiempos trabajados
por las cuatro mquinas sea mnimo.
Este problema se puede resolver por el algoritmo de transporte, ya que las
mquinas pueden ser interpretadas como orgenes con oferta 1 y las tareas como
destinos con una demanda de 1, puesto que cada maquina slo hace una tarea y
todas las tareas han de ser realizadas.
Las soluciones de este problema slo 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 degeneracin. Para el problema de asignacin es ms eficiente usar el mtodo
Hngaro, que exponemos a continuacin.
5.11.1
147
Paso 4: Tachar con el menor nmero de lneas (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 ningn cero recuadrado.
b) Se marcan las columnas que tengan algn cero tachado en las filas marcadas.
c) Considerando nicamente las columnas marcadas se marcan las filas que tengan algn cero recuadrado en estas columnas marcadas.
d) Se repite b y c hasta que no se puedan marcar ms 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 estn tachados dos veces, a los
que se les suma ese nmero.
Paso 6: Volver al paso 2
5.11.2
0 = cero recuadrado,
*** = fila o columna marcada.
Paso 1:
11
3
8
3
10
0
7
0
0
1
12
8
4
2
4
1
4
3
5
9
10
0
9
7
1
0
1
1
0
1
0
2
2
8
7
2
1
3
1
3
min
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
148
0 3o
9
7
1
1
1
0 1o
1
0x
0 4o
6
5
0
20
10
4
6
8
0
8
0
2
8
12
18
0 3o
8
0x
6
8
0 1o
8
0x
2
8
12
Como hay menos ceros recuadrados que filas (o columnas) continuamos con el siguiente paso.
Paso 4 a, b, c.
Est indicado en la tabla el orden en que se han marcado las filas y columnas.
18
0
8
0x
***2o
0
20
10
4
6
8
0
6
0x
2
8
12
***3o
***1o
18
0
8
xx
0 x
149
0 x
20
xxx
xxx
10
12
xxx
Paso 5
20
0
10
0
0
18
10
2
6
6
0
6
0
0
8
10
Vuelta al paso 2.
Se indica el orden en que se han recuadrado los ceros.
20
0x
10
0 2o
0 4o
18
10
2
6
6
0 1o
6
0x
0 3o
8
10
5.12
Problema de emparejamiento
150
cadas con un 1.
1
2
3
4
5
Ind. ficticio
Demandas
T1
1
1
T2
T3
T4
1
T5
T6
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Disponibilidades
1
1
1
1
1
1
Por lo tanto, para resolver este problema usando el algoritmo Hngaro, cambiamos los 1 por ceros y recprocamente, teniendo como matriz de costo reducido
la siguiente, donde se ha indicado los ceros recuadrados (en el orden indicado) que
conducen a la solucin 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
5.13
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
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 produccin para los cuatro meses
siguientes. La produccin mxima, la demanda y el gasto de produccin por unidad
en cada mes est resumido en la siguiente tabla.
Mes
Gasto
1o
2o
3o
4o
100
100
200
300
Produccin
Mxima
2000
2500
4000
2500
Demanda
900
2000
5000
2000
mes 2
mes 3
mes 4
mes. Fic.
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
mes 1
mes 2
mes 3
mes 4
Demandas
1
2
3
4
mes 2
mes 3
mes 4
20
5
5
40
20
50
14
20
mes. Fic.
11
11
20
25
40
25
152
mes 1
mes 2
mes 3
mes 4
vj
mes 1
(9)
1
-M
M
-M
+
M
-M
M
1
mes 2
mes 3
(5)
+
3
(5)
2
(40)
2
2-M
M
3
2
(20)
1
1-M
M
1-M
M
2
mes 4
(6)
mes. Fic.
1*
+
0
(14)
+
(11)
-
ui
0
-1
-1
-1
Tomo como pivote la posicin (1,5) que es la nica con coste reducido positivo.
mes 1
mes
mes
mes
mes
1
2
3
4
mes 2
mes 3
20
5
5
40
20
50
mes 4
mes. Fic.
20
20
5
11
20
25
40
25
vj
1
2
3
4
mes 2
mes 3
0
M
M
1M
1
1M
2M
2
3M
3
mes 4
mes. Fic.
1
1
1
1
1
ui
0
1
1
0
La solucin actual es ptima, ya que los costos reducidos son no positivos. Esta
solucin no es nica, ya que hay una variable no bsica con costo reducido nulo (la de
la posicin (1,2)). Introduciendo esta variable en la base pueden hallarse soluciones
alternativas.
Multiplicando la solucin obtenida por 100, para recuperar la escala inicial de
los valores, se obtiene:
mes 1
mes
mes
mes
mes
mes 2
mes 3
2000
500
500
4000
2000
5000
900
1
2
3
4
900
mes 4
mes. Fic.
600
2000
2000
153
500
1100
2000
2500
4000
2500
mes
mes
mes
mes
1
2
3
4
mes 1
mes 2
900
500
1500
900
2000
mes 3
mes 4
mes. Fic.
600
1000
4000
5000
2000
2000
500
1100
2000
2500
4000
2500
154
Tema 6
Modelos de Redes
6.1
156
0
1
2
n
(0,1)
1
-1
0
0
(0,2)
1
0
-1
0
(1,2)
0
1
-1
0
(2,1)
0
-1
1
0
(1,n)
0
1
0
-1
(2,n)
0
0
1
-1
1
1
1
2
1
1
n
1
1
A
3
3
3
B
0
157
Una cadena es una sucesin de arcos adyacentes (arcos consecutivos que tienen
en comn un vrtice).
Un camino o ruta es una sucesin 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
Suponemos que cada arco de la red tiene asociado un nmero que podra 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
mnima consiste en seleccionar entre todos los caminos que unen dos nodos concretos,
el camino ms corto para ir de uno de los nodos al otro.
En el problema de longitud mnima, el nmero asociado a cada arco puede tener
otras interpretaciones (tiempo, coste, etc...).
El problema de longitud mnima puede interpretarse como un problema de transbordo de la forma expresada en el siguiente ejemplo.
Ejemplo 66 Una compaa quiere enviar un pedido desde la planta de produccin
a un cliente. Los nodos son cruces por donde pueden circular sus camiones y los
nmeros de los arcos el coste de enviar cada camin por el trayecto representado
por este arco. Cul es el camino ms barato? La red asociada es la que aparece
en la figura 6.3.El problema de la ruta mnima puede verse como un problema de
Planta
1
15
20
15
10
10
6
15
10
Cliente
158
2
20
0
M
M
M
1
3
15
M
0
M
M
1
4
M
15
M
0
M
1
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 tambin puede interpretarse como un problema de asignacin.
Tambin puede plantearse como un problema de Programacin lineal Binario:
s.a.
El camino mnimo esta formado por los arcos cuyo valor en la solucin sea 1. Es
posible que el problema tenga varias soluciones.
6.3
El algoritmo de etiquetacin es un algoritmo especfico para calcular el camino mnimo. Slo es vlido 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 orientacin (i, j) entonces
i < j. Para ordenar los nodos podemos emplear el siguiente algoritmo de
ordenacin:
a ) Partir del modelo ms simple de matriz de incidencia.
b) Aadir una columna en la que anotamos el nmero 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 vrtices
han sido ya anotados ir al Paso 1.d. En caso contrario ir al Paso 1.b.
159
I
F
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
de
unos
A
B
C
2
1
2
1
H
I
F
G
I
6
10
10
8
6
161
7
1
11
10
10
3
3
14
7
6
2
1
8
13
6.4
Algoritmo de Dijkstra
Este algoritmo es vlido para redes con arcos no negativos. No necesita ser acclica,
aunque s dirigida. Si no lo es, puede hacerse la transformacin indicada en el
principio del tema, aunque es ms sencillo sustituir los arcos de doble sentido por
dos arcos, uno para cada sentido.
Para determinar el camino mnimo de 1 a n suponiendo que 1 es el origen y n el
destino, podemos usar el siguiente algoritmo de Dijkstra:
Paso1
Asignamos al vrtice Origen de camino una etiqueta permanente igual a 0.
Paso 2
Asignamos a los otros vrtices etiquetas temporales igual a su distancia directa
al origen, si existe el arco directo desde el vrtice a 1. Si no es as, le asignamos
la etiqueta temporal .
Paso 3
Elegir como permanente la mnima de las etiquetas temporales. Si hay varias
que coincidan, elegir una de ellas arbitrariamente.
Paso 4
162
Paso 5
Hacer permanente la mnima 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 mnima. Para localizar el camino se parte del
vrtice 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 vrtice
precedente en el camino mnimo. Aplicar esta condicin sucesivamente hasta
alcanzar el origen.
Ejemplo 69 Dada la red representada en la figura 6.7. Hallar el camino mnimo
desde el nodo 0 al 5 y la longitud de este camino.
31
31
12
12
1
7
12
12
21
21
4
7
5
7
21
44
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, por lineas, las evolucin de las etiquetas de
los vertices cuando se aplica el algoritmo de Dijkstra. Las etiquetas temporales se
indican con * y las permanente estn recuadradas.
163
7
7
7
7
7
7
7
12
12
12, 14
12
12
12
12
21
21
21, 19
19, 19
19
19
19
31
31
31, 28
28, 24
24, 26
24
24
44
44
44, 38
38, 33
33, 31
31, 31
31
6.5
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 mxima de producto
que puede enviarse a travs de ste y Flujo a la cantidad de producto realmente se
enva.
Ejemplo 70 En la red de la figura 6.8, deseamos calcular el flujo mximo que puede
enviarse de F a S.
Para formular este problema como un problema de programacin lineal, tomamos
como variables el flujo que debe pasar por cada arco. Creamos el arco ficticio a =
(S, F ), de capacidad ilimitada. Llamamos xn0 el flujo que pasa por a. Queremos
maximizar la cantidad de flujo que pase por el arco ficticio a.
164
1
2
3
F
S
3
xn0
max
z= xn0
0 xij
aij (El flujo de un arco no puede exceder su capacidad)
s.a. :
xil xlj = 0. l (El flujo que entra en cada nodo es igual al que sale)
i,
s.a.:
165
cadas con un 1.
T1
1
1
1
2
3
4
5
Ind. ficticio
T2
T3
T4
1
T5
T6
1
1
1
1
1
1
1
1
1
1
T1
T2
S
3
T3
T4
T5
T6
6.6
6.6.1
Algoritmo de Ford-Fulkerson
Flujo de un corte
166
6.6.2
Algoritmo de Ford-Fulkerson
Dada una solucin factible del problema de flujo mximo se definen como arcos A
los arcos no saturados (que no aprovechan al mximo su capacidad y podran tomar
valores ms altos) y como arcos D los arcos cuyo flujo es positivo (por lo tanto
pueden tomar valores ms bajos).
El Algoritmo de Ford-Fulkerson se usa para calcular el flujo mximo que puede
circular por una red. Consiste en:
Paso 0
Obtener una solucin factible. Se puede comenzar poniendo todos los flujos
xij =0. Es preferible comenzar con una solucin mejor que se puede conseguir
recorriendo caminos y asignando el flujo mximo permitido a sus arcos (los
arcos saturados no intervendrn en nuevos caminos a los efectos de formar
esta solucin inicial).
Paso 1
Sealar los arcos con A y/o D segn 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).
167
[+F]
A,4,0
[+1]
A,1,0
A,2,0
A,3,0
[+0]
[+3]
A,3,0
A,2,0
Flujo = 0
En este camino todos los arcos pueden aumentarse en 1. Por tanto, obtenemos
la solucin de la figura mejorada con flujo 1.
[+F]
A,D,4,1
[+1]
D,1,1
A,D,2,1
A,3,0
[+0]
A,3,0
A,2,0
Flujo = 1
[+3]
168
A,D,4,1
D,1,1
A,D,2,1
A,3,0
[+0]
[+2]
A,D,3,2
D,2,2
Flujo = 1+2=3
[+F]
[+F]
A,4,0
A,1,0
D,2,2
A,D,3,2
[+0]
A,3,0
D,2,2
[+1]
Flujo = 2
[+2]
169
[-2]
A,4,0
[+1]
A,1,0
D,2,2
A,D,3,2
[+0]
[+3]
A,3,0
D,2,2
Flujo = 2
[+F]
[-2]
A,D,4,1
[+1]
D,1,1
D,2,2
A,D,3,1
[+0]
[+3]
A,D,3,1
D,2,2
Flujo = 2+1=3
[+F]
6.7
CPM y PERT
170
sino de la forma:
171
a
artificial
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,b
a,b
d
c,e
Duracin
24
36
32
28
40
48
a
24
32
48
6
f
28
36
d
art.
e
40
0
2
6.7.1
Algoritmo CPM
Para el algoritmo de CPM definimos para cada actividad los tiempos siguientes:
P C = lo ms pronto que puede comenzar.
P T = lo ms pronto que puede terminarse.
T C = lo ms tarde que puede comenzar sin que se retrase el fin del proyecto.
172
Paso 1: Comenzando con las actividades que parten del origen tomamos P C = 0 y
P T = su duraci
on.
Paso 2: Proceder del modo siguiente con las dems actividades. Su valor PC es el mayor
PT de las actividades precedentes. Su valor P T = P C+ duraci
on de la actividad.
Cuando todas las actividades tengan P C y P T ir al paso 3.
Paso 3: Comenzar con las actividades que terminen en el fin del proyecto (de mayor
P T ). T T es el mayor P T obtenido en el paso anterior y T C = T T su
duraci
on.
Paso 4: Proceder de la siguiente forma con las actividades anteriores siguiendo un orden
decreciente. Su valor T T es el menor T C de las actividades que le siguen. Su
valor T C = T T . Cuando todas las actividades estn etiquetadas ir al paso
5.
Paso 5: Las actividades con P T = T T forman el Camino Crtico (son las actividades
que no pueden sufrir retrasos ni adelantos sin que afecte al tiempo de conclusin
del proyecto). El resto de las actividades tienen holgura (holgura = T T P T ),
y pueden adelantarse o retrasarse en el valor de la holgura sin afectar al tiempo
global de ejecucin del proyecto.
Resolucin del ejemplo 72 usando el presente algoritmo:
Actividades
Pred.
Dur
PC
PT
TT
TC
Holg.
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
b
a, art
a,art
d
c,e
24
36
0
32
28
40
48
0
0
36
36
36
64
104
24
36
36
68
64
104
152
36
36
36
104
64
104
152
12
0
36
72
36
64
104
12
0
0
36
0
0
0
Las actividades que forman el camino crtico 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 mximo en el valor dado por su holgura. La longitud de
este camino es 152 (tiempo mnimo necesario para terminar el proyecto).
Obsrvese que el camino crtico es el camino ms largo que podemos recorrer
para ir del inicio (nodo 1) al fin del proyecto (nodo 6).
Este problema puede tambin resolverse por programacin lineal. Sea tj el valor
PC de las actividades que parten de j (la hora en la que se han terminado todas las
173
Z = t6 t1
t3 t1 24, t2 t1 36, t5 t3 32, t4 t3 28
t5 t4 40, t6 t5 48, t3 t2 0
Todas las variables sin restricciones de signo. Otra opcin podra ser tomar el
origen en t1 = 0 y todas las variables no negativas.
6.7.2
El mtodo PERT
a+4m+b
6
var (Tij ) =
(ba)2
36 .
El primer paso del mtodo PERT es aplicar el mtodo CPM, asignando a las actividades una duracin que es la estimacin de su media, E (Tij ) . Tambin se puede
optar por hallar el camino ms largo desde el inicio al final del proyecto. Si las duraciones 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 crticas (suponiendo que las
fluctuaciones aleatorias en el tiempo de ejecucin de las actividades no afecten al
establecimiento de las actividades que son crticas). Por tanto, si el problema tiene
un gran nmero de actividades se puede considerar que el tiempo total empleado en
la ejecucin de las actividades que forman el camino crtico es una variable aleatoria
que se distribuye normalmente, y por tanto se puede hallar la probabilidad de que
el tiempo de ejecucin 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
a
1
2
4
b
1
1.5
3
c
3
5
10
d
4
6
11
e
2
4
6
f
1
1.5
3
g
0.5
1
2
h
5
6
9
i
2
3
4
j
1
1.5
2
k
1
1
2
7
j
a
1
b
2
g
c
d
4
f
5
h
8
k
9
10
1 + 4 1.5 + 3
1+42+4
= 2. 166 7; tb =
= 1. 666 7;
6
6
3 + 4 5 + 10
4 + 4 6 + 11
tc =
= 5. 5, td =
= 6. 5;
6
6
2+44+6
1 + 4 1.5 + 3
te =
= 4.0; tf =
= 1. 666 7
6
6
0.5 + 4 1 + 2
5+46+9
tg =
= 1. 083 3; th =
= 6. 333 3,
6
6
2+43+4
1 + 4 1.5 + 2
ti =
= 3.0; tj =
= 1. 5,
6
6
1+41+2
tk =
= 1. 166 7.
6
Hallamos el camino ms largo. Las etiquetas que corresponden a los nodos
son:
2. ta =
175
+ (31)
+ (103)
+ (114)
+ (31)
+ (95)
+ (21)
= 3. 6667.
36
36
36
36
36
36
2125
1. 914 9 )
= P (z
2125
1. 914 9 )
= P (z 2. 088 9) = 0.018.
176
Tema 7
Programacin Entera
7.1
Introduccin
Un problema de Programacin entera Pura (PE) es un problema de Programacin Lineal (PL) que ha de tener soluciones enteras. Si slo algunas de las
variables han de tomar valores enteros, el problema es de Programacin entera
mixta. Algunos de estos problemas slo admiten como soluciones los valores 0,1.
Estos problemas se suelen llamar Problemas de Programacin entera 0-1 o de
Programacin Booleana.
La relajacin de un problema de Programacin Entera se obtiene suprimiendo la
condicin de que las variables sean enteras.
Se cumplen las siguientes propiedades:
a) La regin factible de un PE est contenida en la regin factible de su relajacin.
b) Si el problema relajado tiene solucin entera ptima, es tambin solucin del
problema entero correspondiente.
c) El valor del objetivo en la solucin ptima de un PE (con objetivo de maximizacin/minimizacin) es menor/mayor que la solucin ptima de su relajacin.
A continuacin mostramos con un ejemplo que la solucin del problema relajado
puede no ser una buena aproximacin de la solucin del problema de programacin
entera correspondiente.
Ejemplo 74 Resolver el problema de programacin entera siguiente:
max
z = 10 x1 + 33 x2 ,
s.a :
x1 + 3.2x2 7, x1 , x2 0 y enteras.
177
178
La solucin por redondeo sera (0, 2), con valor 66 para la funcin objetivo, que
no es ptima, ya que puede comprobarse que (7, 0) es una solucin factible para el
problema entero y su valor para la funcin objetivo es z = 70 que es mejor que 66.
Puede tambin desecharse la aproximacin por exceso (0, 3) ya que no es solucin
factible.
No obstante, si la solucin del problema relajado fuese entera sta sera obviamente la solucin ptima del problema de programacin entera.
7.2
7.2.1
Ejemplo 75 El peso mximo 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
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 mxima utilidad.
El planteamiento del problema sera
max : 8x1 + 11x2 + 6x3 + 4x4
s.a : 11x1 + 13x2 + 9x3 + 5x4 28,
xi {0, 1}
Con el mismo planteamiento se hara el problema siguiente:
Ejemplo 76 Se est considerando invertir en 4
siguiente:
tipo de negocio inversin
1
11
2
13
3
9
4
5
179
7.2.2
Ejemplo 77 Un viajante tiene que visitar n ciudades slo 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 xij con valor 1 si viaja de i a j y 0 si no viaja por este
trayecto, cij es la distancia entre la ciudad i y la ciudad j y n es el nmero total de
ciudades que han de visitarse. El planteamiento del problema podra ser:
min
c x
ij ij
xij = 1 i
j=1,n
sa :
xij = 1 j
i=1,n
xij = 0, 1
con cii = M para evitar xii = 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 slo una vez.
Pero este planteamiento admite soluciones de subrutas separadas (ver ejemplo 78).
Por este motivo no se puede resolver por asignacin ya que hay que imponer nuevas
condiciones para eliminar ciertas soluciones que seran vlidas para un problema de
asignacin pero no para el del viajante. Las restricciones que se han de aadir para
evitar obtener una solucin con subrutas separadas pueden ser:
ui uj + nxij n 1,
i, j = 2, 3, 4.., n,
i = j, ui , uj 0
(7.1)
180
7.2.3
costo
4
10
8
precio de venta
8
20
15
horas de trabajo
2
3
6
piel empleada
3
4
5
181
7.3
z = 5x1 + 6x2
10x1 + 3x2 52
2x1 + 3x2 18
x1 , x2 0 y enteras
Conviene seguir el procedimiento de resolucin de este problema mirando el esquema de la figura 7.4 en la pgina 184. Los nmeros 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:
max
sa :
Problema 1
z = 5x1 + 6x2
10x1 + 3x2 52
2x1 + 3x2 18
x1 , x2 0
17
4 ,
x2 =
19
6 ,
z = 40.25.
182
max
sa :
Problema 2
z = 5x1 + 6x2
10x1 + 3x2 52
2x1 + 3x2 18
x1 4
x1 , x2 0
max
sa :
Problema 3
z = 5x1 + 6x2
10x1 + 3x2 52
2x1 + 3x2 18
x1 5
x1 , x2 0
183
7.3.1
Resumen
Reglas de Ramificacin:
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
continuacin se usa algn criterio. En el ejemplo hemos seleccionado el ltimo
problema creado no resuelto. Tambin se usa a veces el criterio de resolver
primero el problema con mejor cota para la funcin objetivo.
Reglas de Acotacin (caso maximizante):
Son problemas terminales los siguientes:
Los problemas Infactibles.
184
Problema 1.A
x1 = 17/4, x2 = 9/6,
cota =0
Z = 161/4
x1 4
Problema 2.B
x1 = 4, x2 = 10/3,
x1 5
Z = 40
x2 3
Problema 4.C
x1 = 4, x2 = 3,
Z = 38
cota = 38
Solucin candidata.
Problema terminal
Problema 3.E
x1 = 5, x2 = 2/3,
Z = 29
cota = 39
Terminal por ser superado por la
cota del problema D
x2 4
Problema 5.D
x1 = 3, x2 = 4,
Z = 39
cota=39
Solucin candidata.
Problema terminal
185
7.3.2
7.4
El algoritmo de corte o de Gomory es otro procedimiento de resolucin de problemas de programacin entera. Este algoritmo elimina en la regin factible porciones
donde est la solucin del problema relajado pero no puede estar la solucin entera
ptima. Para explicar la filosofa 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
sa :
z = 5x1 + 6x2
10x1 + 3x2 52
2x1 + 3x2 18
x1 , x2 0, x1 , x2 Z
x1
x2
x1
1
0
0
x2
0
1
0
h1
1
8
1
12
1
8
h2
81
5
12
15
8
17
4
19
6
17
4
186
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 descomposicin a todos los nmeros que aparecen en la ecuacin
anterior obtenindose:
x1 + (0 + 81 )h1 + (1 + 78 )h2 = 4 +
1
4
1
4
1
4
x1
x2
s3
x1
1
0
0
0
x2
0
1
0
0
h1
1
8
1
12
1
8
1
8
h2
18
5
12
78
15
8
s3
0
0
1
0
17
4
19
6
14
187
Usando el algoritmo Dual del Simplex resulta que hay que pivotear sobre el
elemento marcado. Se obtiene la tabla siguiente:
x1
x2
h1
La solucin es
x1
1
0
0
0
x2
0
1
0
0
h1
0
0
1
0
h2
1
1
7
1
s3
1
23
8
1
4
10
3
x1 = 4, x2 = 10/3, z = 40.
1
4
7
8
1
4
22
3
188
10
1
1
= x2 + h2 + 1 +
s3 = 3 + =
3
3
3
1
1
x2 + h2 + (1) s3 3 = s3 +
3
3
2
x2 + h2 s3
3
1
3
x1
x2
h1
s4
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
23
8
13
1
s4
0
0
0
1
0
4
10
3
2
13
x1
x2
h1
s3
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
3
4
10
1
7.4.1
189
7.5
190
z = 3x1 + x2 + 2x3 x4 + x5
sa : 2x1 + x2
3x4
x2 = y2 , x5 = y3 , x3 = y4 ,
x1 = y5 .
z = y1 + y2 + y3 + 2y4 + 3y5 1
s.a. : 3y1 + y2
+ 2y5 4
191
192
193
i = 1, 2, 3, 4
x2 = y2 ,
x3 = y3 ,
x1 = y4 ,
i = 1, 2, 3, 4
194
x1=1
0111; z=20;
x2=0
0011; z=15;
x3=0
1011; z=19;
x2=1
x2=1
0101; z=14;
Terminal; CI=14
Candidata y ptima
x3=1
x2=0
1101; z=18;
1001; z=13;
Terminal;
z=13<CI=14
x3=1
x3=0
0001; z=9;
Terminal; z=9<CI=14
0010; z=6;
Terminal; z=6<CI=14
1100; z=9;
Terminal 9<14
1110;
z=15;
Infactible y
final de la
rama
Tema 8
Teora de Colas
8.1
Introduccin
196
Sistemas de Colas
Disciplina de la cola
Llegadas
Cola
mecanismo de
servicio
Salidas
8.1. INTRODUCCIN
197
Clientes esperando servicio en un banco, alumnos que esperan matricularse, productos en una lnea de produccin esperando ser procesados. Los sistemas que se
caracterizan por elementos que tienen que esperar para recibir un servicio se llaman
Fenmenos de Espera. Las colas se pueden caracterizar por los momentos de llegadas 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 distribucin
de probabilidad para los intervalos de tiempo entre las llegadas de dos clientes consecutivos. Igualmente, los tiempos empleados en prestar cada servicio siguen tambin
una cierta distribucin de probabilidad. Adems, un sistema de espera soporta dos
costes: El de dar servicio y el de tener elementos esperando.
8.1.1
198
8.1.2
Estructuras tpicas.
Las llegadas pueden ser de personas, cartas, carros, incendios, ensambles intermedios
en una fbrica, etc... En la siguiente tabla se muestran algunos ejemplos de varios
sistemas de colas.
Ejemplos de sistemas de colas
Situacin
Autobs
Hospital
Aeropuerto
Dpto. Bomberos
Ca. telefnica
Lavado coches
Juzgados
Oficina correos
Servidor Web
Llegadas
viajeros
Enfermos
Aviones
Alarma incendios
No marcado
Coches
Casos
Cartas
Peticin archivos
Colas
en las paradas
sala de espera
Aviones espera
Incendios
Llamadas espera
Coches en cola
Casos atrasados
Buzn
Cola peticiones
Servicio
viaje en autobs
consulta asistencia
Pista, Controladores, ...
Mecanismo extincin
Conmutador
Mecanismo de lavado
Juez: Sentencias,...
Empleados correos
Transferir datos
8.2
8.2.1
Terminologa
Caractersticas fsicas
8.2. TERMINOLOGA
199
200
(a)
(b)
(c)
(d)
8.2.2
Caractersticas de funcionalidad
Aparte de estas caractersticas fsicas de las colas, consideramos otros aspectos que
afectan a su funcionamiento o dinmica como son: la distribucin del intervalo de
tiempo entre llegadas, la distribucin 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 estn 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 estacin. En este caso,
el orden de entrada depende de lo cerca que haya quedado la puerta de cada viajero.
Tambin puede haber algunas prioridades en determinados servicios, etc...
Tambin 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 ms y abandonan la cola.
201
El sistema se dice que tiene una capacidad limitada si slo admite, como mximo,
un cierto nmero de elementos.
8.2.3
8.3
202
> 0, t > 0
la probabilidad de que una llegada ocurra en un tiempo t < c unidades despus que
la anterior es:
c
P (t < c) =
f (t) dt =
0
exp (t) dt
0
1
2
60 pacientes
hora
P (t < 1) =
0
60 pacientes
60 minutos
= 1 paciente
minutos
!1
et dt = et !0 = 1 e1 = 0.632;
P (t > 4) =
4
P (t h) = P (t c + h/t c) .
Esta propiedad significa que en todo momento, la probabilidad de que el siguiente 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 funcin exponencial carece de memoria.
Esto quiere decir que la distribucin no guarda informacin sobre lo que ha pasado
antes de c y por tanto no se necesita tener informacin del pasado para predecir el
futuro.
8.3.1
203
P (Nt = n) =
(t)n exp(t)
, n = 1, 2, 3....
n!
E(Nt ) = V ar(Nt ) = t
Cuando el nmero de llegadas sigue una distribucin de Poisson se cumplen las
siguientes propiedades:
a) Las llegadas ocurridas en intervalos de tiempos que no se solapan son independientes.
b) Para intervalos pequeos 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 ms de una llegada en el intervalo t es o(t).
Ejemplo 86 El nmero de personas que entra en un comercio sigue una distribucin 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 maana.
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 (Nt = 50) =
1 o(t)
(60)50 exp(60)
= 0.02327 .
50!
204
b) Los clientes acuden a la tienda a razn de 30 personas por hora, as que la funcin densidad de la exponencial asociada es 30 exp(30t). Por tanto, la probabilidad
es :
4/60
4/60
4/60
8.3.2
A veces se modelan los intervalos de llegadas con una distribucin de Erlang, ingeniero dans que aplic a principios del siglo XX esta distribucin al estudio de las
aglomeraciones que se producan en las llamadas telefnicas. La funcin de densidad
de esta distribucin viene dada por dos parmetros:
f(t) =
R(Rt)k1 exp(Rt)
,
(k1)!
t 0 , donde E(t) =
k
R
y V ar(t) =
k
R2
f(t) =
k (kt)k1 exp(kt)
, t0
(k 1)!
y V ar(t) =
k
(k)2
(8.1)
1
k2
8.3.3
205
Se suelen emplear los mismos modelos que para los intervalos entre llegadas; es decir,
la distribucin exponencial o la de Erlang. A veces puede ocurrir que la duracin
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 notacin de Kendall
206
8.5
8.5.1
207
= P0 (t) + P1 (t) +
o(t)
t .
Si t 0 obtenemos en el primer miembro la derivada de P0 (t) . Si consideramos que estamos en Estado Estacionario P0 es constante, y por tanto su derivada es
0. El ltimo sumando del segundo trmino tambin tiende a 0 puesto que el orden
del numerador es mayor que el del denominador (el numerador tiende a cero ms
rpidamente que el denominador). Por tanto ha de cumplirse cuando t 0:
0 = P0 + P1 ,
de donde se deduce que
P1 = P0 = P0
En el caso general, tras agrupar todos los infinitsimos de orden superior a t
se tiene:
Pj (t) (t + t) = Pj1 (t) (t))(1 t) + P j(t) (1 t)(1 t)+
+Pj+1 (t)(t)(1 t) + o(t).
208
P0
obtenemos :
P0
( + ) = P0 + P2
y despejando P2
P2 =
2 P0
2
= 2 P0
j P0
j
Pi = 1 = P0 + P0 + 2 P0 + .... = P0 (1 + + 2 + ....) = P0
i=0
1
1
1
1
Luego
P0
1
1
=1
8.5.2
209
jPj =
j=0
siendo S =
sistema.
j=0
j(1 )j = (1 )
1
jj = (1 )S
L=
8.5.3
En este caso hay que hallar la media de j, que es la variable aleatoria que denota el
nmero de elementos en la cola. Su promedio es
Lq = 0 (P0 + P1 ) + 1P2 + 2P3 + 3P4 + ...=
(j 1)Pj =
j=1
= (1 )
(j 1)j1 = (1 )S =
1
(j 1)(1 )j =
j=1
2
1 .
2
(1 )
=
=
1 1
1
8.6
Teorema de Little
210
W =
Wq =
2
1
( )2
=
Ws =
Ls
1
,
( )
2
102
=
= 4.16 667 es el nmero medio de
( )
12(12 10)
individuos en la cola.
1
1
3. W =
=
= 0.5 minutos tendrn que esperar los pasajeros por
12 10
trmino medio.
2. Lq =
8.7
2
1
Son los modelos de espera que slo admiten un nmero mximo c de clientes en
el sistema. En este epgrafe se tratar el modelo de una cola, que con arreglo a la
notacin de Kendall se representa como M/M/1/fcfs/c/.
211
Para hallar la probabilidad de cada uno de los estados se pueden repetir los
razonamientos del prrafo 8.5.1, pero hay que tener en cuenta que el estado del
sistema nunca ser mayor que c.
Se tiene por tanto
j P0
j
Pj =
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 nmero mximo c de clientes en la cola. Los
posibles estados del sistema son: 0, 1, 2, 3,...., c. por lo tanto
c
Pi = 1 = P0 + P0 + 2 P0 + .... + c P0 = P0
i=0
c+1 1
1
si = 1
1
c+1 1
y Pj =
(1)
j
(c+1 1)
Por tanto
L = E(j) =
c
j=0
jPj =
c
j=0
1
jj c+1
1 =
(1)
c+1 1
c+1
1
c
jj =
c
j
1 j
cc+1
luego
S =
y por tanto
L=
(1)
c+1 1 S
212
El nmero medio de elementos en la cola, Lq se puede hallar restando las expresiones L y Ls y obtenemos Lq = L Ls .
En el caso particular de ser = 1 , o = , teniendo en cuenta la expresin
j
anterior Pj = Pj 0 se deduce que todos los estados tendran la misma probabilidad,
P0 , as que 1 = (c + 1)P0 y por tanto
P0 =
1
c+1
= P1 = P2 = P3 = ... = Pc
1 1+c
c+1 2 c
c
2
Lq = W q, Ls = W s
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 Pc ya que Pc se puede interpretar como la
proporcin de llegadas por unidad de tiempo que no ingresan en el sistema. Es decir
que:
R = Pc
Por tanto en este caso de sistemas con capacidad limitada se tiene:
L = (1 Pc ) W,
Lq = (1 Pc ) Wq , Ls = (1 Pc ) Ws
Por promedio, cada hora hay 15 clientes que no pueden entrar en la peluquera.
213
20
5
=4
L=
= 9.67
8.8
8.8.1
P0
214
2 P0
P0 + 2P2 = 0
y despejando P2 :
2 P0
22
P2 =
= 12 2 P0
3 P0
43
= 14 3 P0 .
8.8.2
3 P0
43
1
j
2j1 P0
si j = 0.
Clculo de P0
i=0
Pi = 1 = P0 + P0 + 21 2 P0 + .... +
= P0 1 + + 12 2 + .... +
1
j
2j1 P0
1
j
2j1
+ ...
+ ... =
= P0
2+
2
=1
entonces
P0 =
2
.
2+
Por tanto:
Pj =
1
j
2j1 P0
1
j2
2j1 2
.
+
8.8.3
215
= P0 2
=
j=1 j
3
(2+)2
j
2
= P0 2
j=1 jPj+2
(1 2 )
1
j+2
P0
j=1 j 2j+1
= P0 (2+)
2
2
3
= (2+)(2+)
=
2+
3
42
(tomando en lugar de )
2
Ls = 0.P0 + 1.P1 + 2(P2 + P3 + P4 + ...) = P1 + 2(1 P0 P1 ) =
2
2
2
=
+2 1
=
2+
2+
2+
Intuitivamente podamos tambin argumentar que la mitad de las llegadas iran 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 sera 2 = 12 = 12 . Por
3
42
+=
4
42 .
Para calcular los tiempos medios se pueden emplear las frmulas de Little:
Wq =
8.8.4
Lq
,
W =
L
,
Ws =
Ls
1
=
i
i=0 i!
Pj =
1
+
s
s!(1 s )
j
si j = 1, 2,
j! P0
j
s!sjs P0 si j s
3, . . . , s
216
s+1
2 P0
s s! 1 s
Lq
Ls =
L = Lq + Ls
Ws =
Ls
W =
Ejemplo 89 Consideremos una sucursal bancaria con dos cajeros. Los clientes
acuden al banco a razn de 80 por trmino medio cada hora. Cada cajero tarda una
media de 1.2 minutos en servir a un cliente. Hallar:
a) Nmero medio de clientes en el banco.
b) Tiempo promedio de espera en el banco por cliente.
c) Fraccin 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 nmero medio de clientes en el banco es
L=
4
42
4 80
50
2
4( 80
50 )
6.4
1. 44
= 4. 444 4
4. 444 4
80
2 80
50
2+ 80
50
+ 0.5
80
50
2 80
50
2+ 80
50
8.9
80
2 50
80
2+ 50
80
50
2 80
50
2+ 80
50
= 0. 288 89.
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 situacin en el siguiente
ejemplo.
217
Ejemplo 90 En una lnea de produccin es frecuente que haya un almacn para las
herramientas ms caras. Los trabajadores que necesitan alguna de ellas esperan a que
un empleado del almacn se las suministre. Si hay muchos trabajadores solicitando
herramientas se formarn colas y se perder tiempo de trabajo, lo que conlleva un
gasto. Esto se resolvera poniendo ms empleados en el almacn, pero este arreglo
tambin supondra un mayor gasto en sueldos de estos empleados. El problema es
disear un sistema que minimice los costes. Suponemos que las llegadas de empleados
al almacn siguen una distribucin de Poisson de razn de llegada = 15 (nmero
de personas que llegan por unidad de tiempo) y de razn de servicio = 18 (nmero
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 nmero de servidores (empleados en el almacen que se ocupan de suministrar las
herramientas).
1. Caso de emplear slo un servidor:
El nmero medio de trabajadores en el sistema es
L=
15
1815
= 5.0
4
42
4 15
18
2
4( 15
18 )
= 1. 008 4
s+1
2 P0 =
s s! 1 s
625
12 168
15 3+1
18
3 3! 1
3
( 15
18 )
15
( )
1 18
3!
15 2
18
= 0. 432 13
0.43213 =
218
Tema 9
Introduccin a la Simulacin
9.1
Simulacin. Generalidades
220
9.2
221
Alta (0.3)
0.05
0.10
0.25
0.30
0.20
0.10
Media (0.45)
0.10
0.20
0.30
0.25
0.10
0.05
Baja (0.25)
0.15
0.25
0.35
0.15
0.05
0.05
Generamos la demanda para el primer da: usando el primer nmero aleatorio (69)
que est entre 30 y 74, con lo que obtenemos para el da 1 una demanda media.
Ahora tendremos que determinar la cantidad demandada. Para generar el nmero
de cajas demandada en este da empleamos el segundo nmero (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 da. La ganancia obtenida en
este caso ser 40 5 25 5 = 75 euros, ya que en este da la demanda es igual que
222
la oferta. De forma similar se obtiene la ganancia de los das siguientes, segn est
indicado en la siguiente tabla.
DIA:
1
2
3
4
5
6
7
8
9
10
Compra al
principio
del da
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 da
405 - 255 = 75
405 - 255 = 75
405 - 255-151 = 60
404 - 255+101 = 45
404 - 255+101 = 45
405 - 255-153 = 30
405 - 255-152 = 45
405 - 255-151 = 60
403 - 255+102 = 15
404 - 255+101 = 45
223
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
reportara mayor beneficio diario medio.
9.3
Mtodo Montecarlo
Aunque las tcnicas de Simulacin pueden ser deterministas, es decir que se pueden
simular fenmenos que no sean aleatorios, lo ms frecuente, como ocurre en el ejemplo anterior, es que el fenmeno que se pretende simular tenga algn componente
aleatorio. En este caso decimos que se usa el mtodo Montecarlo. La esencia del
mtodo Montecarlo es la experimentacin con nmeros aleatorios. El procedimiento
usado consiste en disear juegos de azar con estos nmeros, esperando obtener de
su observacin conclusiones tiles para la resolucin del problema que se est estudiando. Aunque se han publicado algunos trabajos relacionados con el mtodo de
Montecarlo que no han precisado el uso de ordenadores, lo cierto es que la utilidad
del mtodo de Montecarlo se ha visto enormemente incrementada con el uso de las
modernas computadoras.
Resulta difcil creer que basndose en el puro azar puedan obtenerse conclusiones
que merezcan la pena y, de hecho, algunos investigadores desconfan todava de las
estimaciones que se consiguen con este mtodo, a pesar de sus mltiples xitos en el
campo de la Investigacin Operativa, de la Fsica y de otras ramas de las Ciencias,
como la Biologa, la Qumica, e incluso la Medicina.
Los mtodos de Montecarlo suelen clasificarse en dos tipos: probabilistas y deterministas.
224
9.4
225
temas. Aparte de Von Neuman, ya citado, cabe resaltar las aportaciones de Fermi,
Ulam y Metrpolis. Durante esa poca, la aparicin de las primeras computadoras
digitales dio un fuerte impulso al desarrollo del mtodo Montecarlo. Paradjicamente
estos trabajos propiciaron a la vez un cierto descrdito del mtodo, pues se aplic a
casi cualquier cosa, sin tener en cuenta para nada los problemas de eficiencia que le
son inherentes.
En los ltimos aos, debido al avance experimentado en el campo de los ordenadores, a la aparicin de diversas tcnicas para reducir la varianza de las estimaciones obtenidas, y al muestreo de Metrpolis, el mtodo de Montecarlo parece haber
entrado en un nuevo periodo de florecimiento.
9.5
Ya que casi siempre la simulacin es aleatoria normalmente necesitamos un generador de estos nmeros. Los ordenadores suelen tener un comando para generarlos.
Con el nombre de nmeros aleatorios designamos, en esta ocasin, a las muestras
procedentes de una distribucin uniforme en el intervalo [0,1].
Los mtodo de generacin de nmeros aleatorios pueden clasificarse en las categoras siguientes:
a) Mtodos manuales: Loteras, Ruletas. Suelen ser lentos y no reproducibles.
Durante bastante tiempo se crey que era el nico procedimiento para producir
verdaderos nmeros aleatorios.
b) Mtodos analgicos. En este caso los nmeros se obtienen de algn experimento fsico que pueda recibirse en el ordenador. Se pueden generar rpidamente,
pero no son reproducibles.
c) Tablas de nmeros 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 simulacin larga. La primera tabla de nmeros aleatorios
fue preparada por Tippett (1927). Un mtodo 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 milln de dgitos. Para realizar estas tablas se usaron
mtodos analgicos: los datos se extrajeron del ruido de un generador de pulsos
electrnicos.
d) Algoritmos para ordenador. Estos mtodos estn basados en generar nmeros
usando un programa de ordenador. El algoritmo usado es determinstico, as que
estrictamente hablando los nmeros generados no seran 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 nmeros
pseudoaleatorios.
226
9.5.1
9.5.2
Von Neumann sugiri el mtodo del centro del cuadrado: Partiendo de un nmero
de n cifras, generalmente un nmero par de cifras, realizar su cuadrado (suponemos
que tiene 2n cifras) y extraemos el nmero formado por las n cifras centrales. Los
nmeros sucesivos se obtienen tomando el cuadrado del nmero precedente y extrayendo los dgitos centrales. Por ejemplo si se parta del nmero 5332, para obtener
el siguiente se hallaba 52322 =27373824. El siguiente nmero era el subrayado. Este
procedimientones lento, tiende a formar ciclos cortos y si se obtiene un nmero con
tres ceros en el centro no podemos conseguir ya nmeros distintos.
9.5.3
Fueron sugeridos por Lehmer en 1949. Se basan en calcular los residuos mdulo m
de una transformacin lineal.
La relacin de congruencia fundamental es:
Xi+1 (aXi + c) (mod m)
siendo a, c y m enteros no negativos. Los mtodos que usan esta relacin se llaman
congruenciales mixtos.
Dado un valor inicial llamado semilla X0 , se obtienen diferentes nmeros todos
ellos menores que m. Obviamente la cantidad de nmeros 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 cclica con periodo
2 < 8.
227
228
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
9.6.1
"x
0
Despejando x se obtiene:
230
9.7
Los sistemas de colas suelen modelarse con la distribucin exponencial. En este caso
puede hacerse uso de la expresin anterior, lo que nos va a permitir contrastar los
resultados analticos con los obtenidos por medio de una simulacin de la cola. Por
este motivo incluiremos ahora un ejemplo de simulacin de una cola de este tipo
(modelo exponencial).
A veces es posible estudiar los fenmenos de espera analticamente, pero esto
ocurre solamente en los casos ms simples, as que es frecuente acometer el anlisis y
estudio de los sistemas de colas por simulacin. El siguiente ejemplo es lo suficientemente sencillo como para que pueda realizarse analticamente, lo que nos permitir
contrastar los resultados obtenidos en la simulacin con los que se obtienen por va
terica.
Ejemplo 92 Simular una cola de una sola lnea y un solo servidor siendo la razn
de llegada =15 (nmero de personas que llegan por unidad de tiempo) y la razn
de servicio = 18 (nmero de elementos servidos en cada unidad de tiempo).
Comenzamos generando nmeros aleatorios. Para transformarlos en elementos
de una distribucin exponencial de los intervalos entre llegadas usaremos la transformacin:
1
ln 1 ,
1 = 15
231
0
17
16
18
12
15
6
20
22
10
suceso
0
1
2
3
4
5
6
..
.
tipo
de
suceso
Inicio
llegada
llegada
partida
llegada
llegada
partida
..
.
Tiempo
de
reloj
0
0
16
17
28
34
35
..
.
libre=1
ocupado=0
1
0
0
0
0
0
0
..
.
ncola =
long
de la cola
0
0
1
0
1
2
1
..
.
tiproll =
hora
prx llegada
0
16
28
28
34
56
56
..
.
tiproser =
hora
prx partida
9999
17
17
35
35
35
50
..
.
232
Inicio
Reloj=0
N1li0oc=1
Ncola=0
Tiproll=0
Tiproser=9999
Tipo=partida
(un individuo sale
del sistema)
reloj =
=reloj+tiproser
NO
Tipo=llegada
(un individuo entra
en el sistema)
reloj =
=reloj+tiproll
SI
tiproll < tiproser
SI
SI
Ser=1
Tiproser=9999
Ncola =0
Ser=0
Ncola=ncola+1
NO
NO
Ser=0
Ncola=ncola-1
Tiproser=reloj+ts
SI
Ser=0
Tiproser=reloj+ts
Tiproll = reloj+tell
Tiproll duracin
y
Tiproser duracin
NO
STOP
Figura 9.1: Diagrama de flujo del programa de simulacin de una cola M/M/1.
9.7.1
c
233
Programa FORTRAN
***este programa simula una cola con una unica cadena y una sola fase
c
esperar para ser atendido. Esta estima cin se basa en una simulacion,
cc
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
c
c
demandando servicio***
CALL RND(IX,YFL)
TIPR0LL=-ALOG(1.-YFL)/VLLPORH
duracion de la simulacion***
TIPR0SER=TITOT
c
c
*** el tiempo del proximo suceso se toma como el minimo del tiempo
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)
c
c
c
c
IF (TIPSUC.EQ.TITOT) GO TO 90
IF (TIPSUC.EQ.TIPR0SER) GO TO 80
c
c
c.
c
c
NLLEGA=NLLEGA+1
CALL RND(IX,YFL)
TIPR0LL=RELOJ-ALOG(1.-YFL)/VLLPORH
c
c
235
236
FORMAT(A10,F10.2,I10,I10,F10.2,F10.2)
GO TO 60
c
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
80
IF (NCOLA.GT.0) GO TO 85
c
c
arbirariamente alto.
c
c
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
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 (
SEMILLA: ,I5/)
110
237
238
*****************************************************************************
TIPO
INICIO
LLEGADA
PARTIDA
LLEGADA
LLEGADA
LLEGADA
PARTIDA
PARTIDA
LLEGADA
RELOJ
0.00
0.02
0.05
0.13
0.17
0.18
0.20
0.21
0.24
NCOLA N1LI0OC
0
1
0
0
0
1
0
0
1
0
2
0
1
0
0
0
0
1
...............
...............
TIPR0LL
0.02
0.13
0.13
0.17
0.18
0.35
0.35
0.35
0.35
TIPR0SER
8.00
0.05
8.00
0.20
0.20
0.20
0.21
0.24
8.00
RELOJ
7.75
7.76
7.77
7.81
7.84
7.90
7.90
7.90
7.91
7.91
7.93
7.95
NCOLA
7
6
7
6
7
8
9
8
9
8
7
6
239
N1LI0OC
0
0
0
0
0
0
0
0
0
0
0
0
TIPR0LL
7.77
7.77
7.84
7.84
7.90
7.90
7.91
7.91
8.00
8.00
8.00
8.00
TIPR0SER
7.76
7.81
7.81
7.90
7.90
7.90
7.90
7.91
7.91
7.93
7.95
8.04
Actividad
del
Servidor
0.73
0.84
= 0.833
Longitud
media de
la cola
2.10
4.23
2
()
= 4.16.
No medio de
personas en
el sistema
2.84
5.07
=5
Tiempo medio
de espera
en la cola
0.14
0.28
()
= 0.277
240
9.8
fXY =
1
c(ba)
si (x, y)
0 en otro caso
I=
"b
a
g(x)dx.
P=
area S
area
b
g(x)dx
c(ba)
Por tanto
I = c(b a)P
I
c(ba)
241
g(x)
c
* Fracaso
* Exito
x
a
Mtodo MC de xito-fracaso.
Figura 9.2:
Para estimar el valor de P generamos N puntos aleatorios independientes:
(x1 , y1 ), (x2 , y2 ).....(xN , yN )
dentro del rectngulo .
La probabilidad P puede ser estimada por:
P =
Nh
N
siendo Nh el nmero de estos puntos que se verifica g(xi ) > yi (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 mtodo.
Este mtodo, 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 mtodo
Montecarlo no es el ms indicado para el clculo de integrales unidimensionales,
siendo sin embargo uno de los ms eficientes cuando el nmero de variables del
integrando es bastante elevado.
242
9.9
Describimos algunos programas de simulacin que han sido realizados por algunos
alumnos, y que pueden servir para sugerir la realizacin de otros similares y para
mostrar que estas simulaciones son susceptibles de ser realizadas dentro del mbito
acadmico.
Ejemplo 1
PROPSITO:
Aplicar el mtodo de integracin Montecarlo, xito-fracaso, de forma prctica.
Se limita a funciones polinmicas de 2o grado.
UN EJEMPLO DE APLICACIN
En la salida del programa siguiente se puede observar que el programa obtiene
como valor aproximado de
"2
(x2 + 2x + 3)dx
OPERATORIA
Se sigue el orden siguiente :
(1) Introducir los lmites de integracin a y b.
(2) Indicar los coeficientes de la funcin polinmica de 2o grado.
243
Ejemplo 3
PROPSITO: Calcular los parmetros de una cola con una sola lnea de espera
y un solo servidor (distribuciones exponenciales).
El programa presenta una evolucin visual de la cola, como se ve en la siguiente
figura.
244
Ejemplo 4
PROPSITO: Estudio detallado de diversos sistemas de colas, con intervalos
entre llegadas y tiempos de servicios generados por distintas distribuciones.
245
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) Grfico de la evolucin de los parmetros del sistema para verificar la estacionariedad del sistema.
Si se ha elegido el seguimiento grfico se presenta una grfica que permite decidir
si se ha alcanzado el estado estacionario del sistema. Cuando se alcanza este estado
se inicia la simulacin del sistema, respetando su estado actual, hasta obtener los
parmetros de la cola.
4) Clculo de los parmetros del sistema.
Como resultado final aparecen los parmetros del sistema dados en una ventana
cuya presentacin puede verse en la figura 9.5.
APLICACIN A CASOS PRCTICOS
Caso 1: En un aeropuerto con tres pistas de aterrizaje se ha contrastado que los
246
Figura 9.4:
Figura 9.5:
247
tiempos entre las llegadas de los aviones se distribuyen segn 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 estn
ocupadas, el avin se mantendr en vuelo en espera de aterrizar.
Mostramos a continuacin los resultados obtenidos por el programa para este
problema usando simulaciones cada vez ms largas. Puede observarse que los parmetros de la cola son bastante estables.
No. 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.4152
0.0931
35.0896
2.3084
200000
2486862
1.4127
0.0917
35.1320
2.2800
500000
6245916
1.4040
0.0888
35.0767
2.2184
800000
9982817
1.4044
0.0889
35.0514
2.2195
G/G/3/7
Eventos
L
Lq
W
Wq
248