Programación Lineal para la Ingeniería Técnica - unizar.es · Método del Simplex Revisado, que...

20
Programación Lineal para la Ingeniería Técnica 95 La utilización del ordenador como instrumento auxiliar en la fase operacional de la resolución de un problema real de optimización y, concretamente, en nuestro caso de Programación Lineal, se ha hecho indispensable debido no tanto a la complejidad teórica de los cálculos como al gran volumen de operaciones que se realizan en cada iteración del Método del Simplex. Para propósitos computacionales no se utiliza el algoritmo del Simplex con la estructura de tablas que hemos descrito, puesto que no todos los cálculos son realmente necesarios. Es mucho más fácil y rápido utilizar el que se conoce como Método del Simplex Revisado , que es en realidad el método del Simplex pero mejorado. Cuando trabajamos con problemas de gran magnitud, quizá deban efectuarse cálculos innecesarios sobre cientos de columnas hasta que las variables correspondientes se incorporan a la base. Efectuar completamente la eliminación gaussiana aclara la teoría, y por ello hemos presentado así el método anteriormente, pero no se puede justificar, en la práctica, la complejidad computacional que ello entraña. La diferencia esencial entre el método del Simplex y el Revisado es que éste lleva también como información la matriz inversa de la matriz de coeficientes de las variables básicas en cada etapa. El problema de Programación Lineal en forma matricial es: max Z = CX s.a.: AX = b 0 X Denotaremos las columnas correspondientes de la matriz A como:

Transcript of Programación Lineal para la Ingeniería Técnica - unizar.es · Método del Simplex Revisado, que...

Page 1: Programación Lineal para la Ingeniería Técnica - unizar.es · Método del Simplex Revisado, que es en realidad el método del Simplex pero mejorado. Cuando trabajamos con problemas

Programación Lineal para la Ingeniería Técnica

95

La utilización del ordenador como instrumento auxiliar en la fase operacional de la resolución de un problema real de optimización y, concretamente, en nuestro caso de Programación Lineal, se ha hecho indispensable debido no tanto a la complejidad teórica de los cálculos como al gran volumen de operaciones que se realizan en cada iteración del Método del Simplex. Para propósitos computacionales no se utiliza el algoritmo del Simplex con la estructura de tablas que hemos descrito, puesto que no todos los cálculos son realmente necesarios. Es mucho más fácil y rápido utilizar el que se conoce como Método del Simplex Revisado, que es en realidad el método del Simplex pero mejorado. Cuando trabajamos con problemas de gran magnitud, quizá deban efectuarse cálculos innecesarios sobre cientos de columnas hasta que las variables correspondientes se incorporan a la base. Efectuar completamente la eliminación gaussiana aclara la teoría, y por ello hemos presentado así el método anteriormente, pero no se puede justificar, en la práctica, la complejidad computacional que ello entraña. La diferencia esencial entre el método del Simplex y el Revisado es que éste lleva también como información la matriz inversa de la matriz de coeficientes de las variables básicas en cada etapa. El problema de Programación Lineal en forma matricial es: max Z = CX s.a.: AX = b 0≥X Denotaremos las columnas correspondientes de la matriz A como:

mm
Page 2: Programación Lineal para la Ingeniería Técnica - unizar.es · Método del Simplex Revisado, que es en realidad el método del Simplex pero mejorado. Cuando trabajamos con problemas

Programación Lineal para la Ingeniería Técnica

96

=

1

11

1

ma

a

a M , ...,

=

mn

n

n

a

a

a M

1

Supongamos que tenemos una solución factible básica del problema lineal, siendo

mxx ,,1 … las variables básicas. La matriz básica estará dada por:

( )

==

mmm

m

m

aa

aa

aaB

MMM

1

111

1 ,,

y la correspondiente solución factible básica actual estará dada por:

bBXB1−=

El Algoritmo del Simplex Revisado constará de: Paso 1: Calcular los costes marginales jjj acc λ−= , nmj ,,1 …+= , donde

( ) 11 ,, −=λλ=λ BCBm… ,con BC el vector fila de costes de las variables

básicas. A iλ se les llama multiplicadores del Simplex. Si 0≤jc , j∀ (problemas de máximo), estamos en el óptimo. PARAR. En otro caso, ir al paso 2. Paso 2: Determinar la variable básica que entra en la base, seleccionando aquella

cuyo jc es el más positivo; sea este kc . Transformar la columna ka , correspondiente a la variable que entra, en

términos de la base actual:

kk aBa 1−=

Paso 3: Determinar la variable que sale de la base con el criterio:

alex
volver a Método del Simplex Revisado
Page 3: Programación Lineal para la Ingeniería Técnica - unizar.es · Método del Simplex Revisado, que es en realidad el método del Simplex pero mejorado. Cuando trabajamos con problemas

Programación Lineal para la Ingeniería Técnica

97

=>∋= miaab

minab

ikik

i

rk

r ,,1,0 …

La variable correspondiente a la fila r sale de la base. Paso 4: Pivotar sobre la inversa de la base, 1−B . Así, se obtiene una nueva

solución factible básica:

bBX B1−= .

Volver al paso 1. Ejemplo: max 3213 xxxZ −−= s.a.: 112 321 ≤+− xxx 324 321 ≥++− xxx 12 31 −=− xx 0,, 321 ≥xxx Introducimos variables de holgura y artificiales para expresar el problema en su forma estándar:

max AA MxMxxxxZ 763213 −−−−= s.a.: 112 4321 =++− Hxxxx 324 65321 =+−++− AH xxxxx 12 731 =++− Axxx 0,,,,,, 7654321 ≥AAHH xxxxxxx

Así, tenemos que:

−−

=

100 010 2

011021 4

000 1121

A , ( )MMC −−−−= 00113

La base inicial es, por tanto:

gonzález
gonzález
Planteamiento
gonzález
1ª iteración
mm
Page 4: Programación Lineal para la Ingeniería Técnica - unizar.es · Método del Simplex Revisado, que es en realidad el método del Simplex pero mejorado. Cuando trabajamos con problemas

Programación Lineal para la Ingeniería Técnica

98

( ) ( )

==⇒

100

010

001

,,,, 764764 aaaBxxx AAH

En este caso IB =− 1 , y, por tanto, una primera solución factible básica será:

=

== −

1

3

11

1

3

11

100

010

0011bBX B

En forma de tabla:

Base BX 1−B Hx4 11 1 0 0 Ax6 3 0 1 0 Ax7 1 0 0 1

Calculamos, siguiendo el paso 1, los costes marginales y, para ello, los correspondientes multiplicadores del Simplex:

( ) ( ) ( )MMMMBCBm −−=

−−==λλ=λ − ,,0

100

010

001

,,0,, 11 …

A continuación encontramos jjj acc λ−= para las variables no básicas:

( )

TTT

M

M

M

M

MM

c

c

c

c

=

−−

−−−

−=

13

1

63

0 10 2

121 4

0 121

,,0

0

1

1

3

5

3

2

1

Según el paso 2, elegimos el jc más positivo, en este caso 133 −= Mc . Luego entra 3x en la base y la correspondiente columna pivote 3a se transforma como:

gonzález
gonzález
Aplicación del algoritmo
mm
mm
Page 5: Programación Lineal para la Ingeniería Técnica - unizar.es · Método del Simplex Revisado, que es en realidad el método del Simplex pero mejorado. Cuando trabajamos con problemas

Programación Lineal para la Ingeniería Técnica

99

=

== −

1

2

1

1

2

1

100

010

001

31

3 aBa

Completando la tabla anterior:

Base BX 1−B Columna pivote

Hx4 11 1 0 0 1 Ax6 3 0 1 0 2 Ax7 1 0 0 1 1

Determinamos la variable que sale de la base según el paso 3:

{ } 111,23,111 =min , que corresponde a la variable Ax7 Pivotamos, en el paso 4, sobre 1−B de forma que en la columna pivote en lugar del pivote haya un 1 y el resto ceros:

Base BX 1−B Hx4 10 1 0 -1 Ax6 1 0 1 -2 3x 1 0 0 1

Para esta nueva solución factible básica ( ) ( )1,1,10,, 364 == xxxX AH

B , comenzamos una nueva iteración, con la matriz 1−B en la tabla anterior, calculando los multiplicadores del Simplex y, con ellos, los costes marginales no básicos:

( ) ( )12,,0

1 00

210

101

1,,01 −−=

−−==λ − MMMBCB

( )

TTT

M

MMM

c

c

c

−=

−−

−−−

−=

1

1

0 0 2

11 4

0 21

12,,0

0

1

3

5

2

1

gonzález
gonzález
2ª iteración Aplicación del algoritmo
mm
mm
mm
Page 6: Programación Lineal para la Ingeniería Técnica - unizar.es · Método del Simplex Revisado, que es en realidad el método del Simplex pero mejorado. Cuando trabajamos con problemas

Programación Lineal para la Ingeniería Técnica

100

7c no lo calculamos porque Ax7 variable artificial ha salido de la base.

Según el paso 2, elegimos el jc más positivo, en este caso 12 −= Mc . Luego entra

2x en la base y la correspondiente columna pivote 2a se transforma como:

=

== −

0

1

2

0

1

2

1 00

210

101

21

2 aBa

La tabla correspondiente queda:

Base BX 1−B Columna pivote

Hx4 10 1 0 -1 -2 Ax6 1 0 1 -2 1 3x 1 0 0 1 0

La única posibilidad es que salga Ax6 . Pivotando sobre ésta:

Base BX 1−B Hx4 12 1 2 -5 2x 1 0 1 -2 3x 1 0 0 1

Comenzamos una nueva iteración:

( ) ( )1,1,0

1 00

210

521

1,1,01 −=

−−==λ −BCB

( )TTT

c

c

−=

−−−−

=

1

1

0 2

14

0 1

1,1,00

3

5

1

gonzález
gonzález
3ª iteración Aplicación del algoritmo
mm
mm
mm
mm
Page 7: Programación Lineal para la Ingeniería Técnica - unizar.es · Método del Simplex Revisado, que es en realidad el método del Simplex pero mejorado. Cuando trabajamos con problemas

Programación Lineal para la Ingeniería Técnica

101

No calculamos 6c por ser Ax6 artificial y haber salido de la base.

El único jc positivo corresponde a 11 =c , por lo tanto 1x es la variable que entra. Así, la nueva tabla quedará como:

Base BX 1−B Columna pivote

Hx4 12 1 2 -5 3 2x 1 0 1 -2 0 3x 1 0 0 1 -2

puesto que

=

== −

2

0

3

2

4

1

1 00

210

521

11

1 aBa

La única posibilidad es que salga Hx4 . Pivotando sobre el primer elemento de la columna pivote:

Base BX 1−B 1x 4 1/3 2/3 -5/3 2x 1 0 1 -2 3x 9 2/3 4/3 -7/3

Calculamos nuevamente, en la siguiente iteración, los multiplicadores del Simplex:

( )

−−=

−−==λ −

3

2,

3

1,

3

1

373432

210

353231

1,1,31BCB

TTT

c

c

−=

−−−

=

31

31

0 0

10

0 1

32,

31,

31

0

0

5

4

Como todos los 0≤jc para las variables no básicas, estamos en el óptimo:

gonzález
gonzález
4ª iteración Aplicación del algoritmo
mm
mm
mm
mm
Page 8: Programación Lineal para la Ingeniería Técnica - unizar.es · Método del Simplex Revisado, que es en realidad el método del Simplex pero mejorado. Cuando trabajamos con problemas

Programación Lineal para la Ingeniería Técnica

102

23

9

1

4

321*

*3

*2

*1

=−−=⇒

=

xxxZ

x

x

x

Ejemplo: max 321 33 xxxZ ++= max 321 33 xxxZ ++= s.a.: 22 321 ≤++ xxx s.a. : 22 4321 =+++ Hxxxx 532 321 ≤++ xxx 532 5321 =+++ Hxxxx 622 321 ≤++ xxx 622 6321 =+++ Hxxxx 0,, 321 ≥xxx 0,,,,, 654321 ≥HHH xxxxxx

Los datos en este problema son:

=

100122

010321

001112

A , ( )000313=C

Ahora, B = I IB =⇒ − 1 , y la tabla inicial queda:

Base BX 1−B Hx4 2 1 0 0 Hx5 5 0 1 0 Hx6 6 0 0 1

Calculamos los multiplicadores del Simplex:

( ) ( )0,0,0

100

010

001

0,0,01 =

==λ −BCB

( )

TTT

c

c

c

=

=

3

1

3

122

321

112

0,0,0

3

1

3

3

2

1

gonzález
Solución óptima
gonzález
gonzález
Planteamiento
gonzález
1ª iteración
gonzález
Aplicación del algoritmo
mm
mm
mm
mm
mm
Page 9: Programación Lineal para la Ingeniería Técnica - unizar.es · Método del Simplex Revisado, que es en realidad el método del Simplex pero mejorado. Cuando trabajamos con problemas

Programación Lineal para la Ingeniería Técnica

103

Entra 1x (por ejemplo, ya que podría hacerlo indistintamente también 3x ), y por

tanto

=== −

2

1

2

111

1 aaBa , con lo cual completamos la tabla anterior:

Base BX 1−B Columna pivote

Hx4 2 1 0 0 2 Hx5 5 0 1 0 1 Hx6 6 0 0 1 2

Como { } ⇒== 12226,15,22min sale de la base Hx4 , y pivotamos para obtener:

Base BX 1−B

1x 1 1/2 0 0 Hx5 4 -1/2 1 0 Hx6 4 -1 0 1

Realizamos una nueva iteración:

( ) ( )0,0,23

101

0121

0021

0,0,31 =

−==λ −BCB

( )

TTT

c

c

c

=

=

23

23

21

012

032

111

0,0,23

0

3

1

4

3

2

Entra en la base 3x que es la única variable no básica actual con coste marginal positivo. La columna pivote será por tanto:

=

−== −

0

25

21

1

3

1

101

0121

0021

31

3 aBa

gonzález
gonzález
2ª iteración Aplicación del algoritmo
mm
mm
mm
mm
mm
Page 10: Programación Lineal para la Ingeniería Técnica - unizar.es · Método del Simplex Revisado, que es en realidad el método del Simplex pero mejorado. Cuando trabajamos con problemas

Programación Lineal para la Ingeniería Técnica

104

Así, la tabla completa quedará como:

Base BX 1−B Columna pivote

1x 1 1/2 0 0 1/2 Hx5 4 -1/2 1 0 5/2 Hx6 4 -1 0 1 0

Calculamos ⇒=

58

254,

211min sale Hx5 , y pivotando tenemos que:

Base BX 1−B

1x 1/5 3/5 -1/5 0 3x 8/5 -1/5 2/5 0 Hx6 4 -1 0 1

En una siguiente iteración:

( )

=

==λ − 0,5

3,

5

6

10 1

052 51

05153

0,3,31BCB

TTT

c

c

c

=

=

53

56

57

002

102

011

0,53

,56

0

0

1

5

4

2

Como todos los 0<jc para las variables no básicas actuales, se concluye que estamos en el óptimo:

52733

4

58

51

321*

*6

*3

*1

=++=⇒

=

xxxZ

x

x

x

gonzález
gonzález
3ª iteración Aplicación del algoritmo
gonzález
Solución óptima
mm
mm
mm
mm
mm
Page 11: Programación Lineal para la Ingeniería Técnica - unizar.es · Método del Simplex Revisado, que es en realidad el método del Simplex pero mejorado. Cuando trabajamos con problemas

Programación Lineal para la Ingeniería Técnica

105

El ordenador no es capaz de “pensar” por sí mismo, de ahí la necesidad de que el usuario conozca y sea capaz de plantear e interpretar perfectamente el problema a resolver. La elaboración a la que se someten los datos en el proceso de obtención de unos resultados, desde un punto de vista metodológico, requiere del usuario una perfecta comprensión tanto del planteamiento como de los objetivos que se persiguen en ese tratamiento. El proceso informático se hace imprescindible cuando el elevado número de los datos o la complejidad que involucran supera las posibilidades humanas. Distinguiremos una serie de subprocesos comunes en el tratamiento de cualquier tipo de información, necesarios en una fase previa a la que incluye puramente el proceso, para una correcta obtención del objetivo deseado:

• Recogida de datos: es importante entresacar únicamente los datos que se acomoden rigurosamente a los fines deseados.

• Depuración: algunos datos recogidos son incorrectos o incoherentes con

la información deseada. El proceso de depuración consiste en detectar estas anomalías para separarlas del conjunto o corregirlas antes de proseguir con el tratamiento.

• Almacenamiento: una vez depurados los datos, deben almacenarse en

los correspondientes soportes informáticos, que deben ser fácilmente utilizables por los medios del sistema informático.

Salvadas estas consideraciones de tipo general, en particular, en el desarrollo de un proyecto de aplicación informático para la resolución de un problema de

Page 12: Programación Lineal para la Ingeniería Técnica - unizar.es · Método del Simplex Revisado, que es en realidad el método del Simplex pero mejorado. Cuando trabajamos con problemas

Programación Lineal para la Ingeniería Técnica

106

optimización lineal, hemos de tener en cuenta algunas otras características específicas del problema que pueden provocar situaciones tales como de infactibilidad, degeneración, obtención de soluciones óptimas no acotadas, etc. 14.1. VARIABLES ACOTADAS Muchos de los problemas que aparecen en situaciones prácticas tienen variables sujetas a cotas tanto superiores como inferiores. Si ix es una variable acotada superior e inferiormente para ciertos valores ii hg , , entonces:

iii hxg ≤≤ Si ix está sujeta a cotas no finitas, se dice que es una variable libre. Si está sujeta a cotas finitas, podemos suponer, en general, que son del tipo:

ii hx ≤≤0 El problema con cotas superiores en forma estándar sería: max CX s.a.: AX = b HX ≤≤0 donde H es el vector de cotas superiores. Este problema se puede transformar en uno estándar usual sin más que introducir variables de holgura iy en cada una de las restricciones correspondientes a las cotas superiores: max CX s.a.: AX = b X + Y = H 0, ≥YX

Page 13: Programación Lineal para la Ingeniería Técnica - unizar.es · Método del Simplex Revisado, que es en realidad el método del Simplex pero mejorado. Cuando trabajamos con problemas

Programación Lineal para la Ingeniería Técnica

107

Así, podemos aplicarle el Simplex, pero pagando un alto coste computacional, puesto que la cantidad de memoria de ordenador que debemos utilizar se incrementa considerablemente (si A es de orden mxn, la matriz asociada al nuevo problema será de orden (m + n)x2n). Por esto, se han desarrollado técnicas alternativas específicas para el tratamiento de este tipo de problemas con variables acotadas, pero su desarrollo excede nuestro objetivo. 14.2. INFACTIBILIDAD Un problema lineal será infactible cuando no existe ninguna solución factible. Esta situación se da cuando dos o más restricciones son incompatibles. Aparece en la práctica debido a incorrecciones en la preparación de los datos. En la mayoría de los casos en que el problema tiene grandes dimensiones, es fácil no contemplar todas las relaciones lógicas entre las variables. 14.3. PROBLEMAS NO ACOTADOS Se da este caso si existe una solución factible que da un valor infinito para la función objetivo, la cual se dice que es no acotada. Usualmente es consecuencia de errores en la preparación de los datos. Veamos en un ejemplo como detectar este tipo de dificultad computacional en el desarrollo del algoritmo del Simplex: max 21 23 xx + max 21 23 xx + s.a.: 121 ≤− xx s.a.: 1321 =+− Hxxx 623 21 ≤− xx 623 421 =+− Hxxx 0, 21 ≥xx 0,,, 4321 ≥HH xxxx

Page 14: Programación Lineal para la Ingeniería Técnica - unizar.es · Método del Simplex Revisado, que es en realidad el método del Simplex pero mejorado. Cuando trabajamos con problemas

Programación Lineal para la Ingeniería Técnica

108

Las tablas que corresponden a las iteraciones del Simplex quedan como:

1x 2x Hx3 Hx4 Hx3 1 1 -1 1 0 Hx4 6 3 -2 0 1 3 2 0 0

1x 2x Hx3 Hx4

1x 1 1 -1 1 0 Hx4 3 0 1 -3 1 0 5 -3 0

1x 2x Hx3 Hx4

1x 4 1 0 -2 1 2x 3 0 1 -3 1 0 0 12 -5

Debería entrar Hx3 , pero todos los elementos de su columna son negativos. En esta situación la función objetivo puede crecer indefinidamente. Gráficamente: Los vértices son: A(0,0), B(2,0), C(4,3). Miramos cuánto vale la función objetivo en ellos, además de en puntos que se alejen por las rectas que dejan abiertas a la región de factibilidad, esto es:

C

B

121 =− xx

623 21 =− xx

A

mm
mm
mm
Page 15: Programación Lineal para la Ingeniería Técnica - unizar.es · Método del Simplex Revisado, que es en realidad el método del Simplex pero mejorado. Cuando trabajamos con problemas

Programación Lineal para la Ingeniería Técnica

109

( ) 00,0 =f ( ) 60,2 =f ( ) 183,4 =f ( ) +∞ →=

+∞→222 2,0 xxxf

+∞ →+=++=

++∞→22222

2 46226,326

xxxxxx

f

Efectivamente, la función objetivo no está acotada superiormente en la región de factibilidad, luego no posee máximo finito en ella. 14.4. SOLUCIONES MÚLTIPLES Si el problema de Programación Lineal admite más de una solución, es posible obtener a partir de dos cualesquiera de ellas un número infinito de soluciones óptimas también, sin más que construir una combinación lineal convexa de ambas. Veamos un ejemplo para ver cómo se manifiesta este hecho en las tablas: max 21 10040 xx + max 21 10040 xx + s.a.: 2500510 21 ≤+ xx s.a.: 2500510 321 =++ Hxxx 2000104 21 ≤+ xx 2000104 421 =++ Hxxx 90032 21 ≤+ xx 90032 521 =++ Hxxx 0, 21 ≥xx 0,,,, 54321 ≥HHH xxxxx

1x 2x Hx3 Hx4 Hx5 Hx3 2500 10 5 1 0 0 Hx4 2000 4 10 0 1 0 Hx5 900 2 3 0 0 1 40 100 0 0 0

mm
Page 16: Programación Lineal para la Ingeniería Técnica - unizar.es · Método del Simplex Revisado, que es en realidad el método del Simplex pero mejorado. Cuando trabajamos con problemas

Programación Lineal para la Ingeniería Técnica

110

1x 2x Hx3 Hx4 Hx5 Hx3 1500 8 0 1 -1/2 0

2x 200 2/5 1 0 1/10 0 Hx5 300 4/5 0 0 -3/10 1 0 0 0 -10 0

Óptimo: 0*

1 =x , 200*2 =x , 20000* =Z

Observemos que, siendo 1x no básica, su coste marginal es cero, por lo que si la introducimos en la base, sacando de la misma Hx3 que corresponde por el Simplex,

el valor óptimo de la función objetivo no variará:

1x 2x Hx3 Hx4 Hx5

1x 375/2 1 0 1/8 -1/16 0 2x 125 0 1 -1/20 1/8 0 Hx5 150 0 0 -1/10 -1/4 1 0 0 0 -10 0

Óptimo: 2

375*1 =x , 125*

2 =x , 20000* =Z

Existe solución múltiple formada por todas las soluciones combinación lineal convexa de las anteriores. Por ejemplo:

( ) ( )

λ−+λ 125,

2375

1200,0

Si ( ) 200002

325,

4375

125,2

37521

200,021

21 ** =⇒

=

+=⇒=λ ZX

Si ( ) ( ) 20000150,125125,2

37532

200,031

31 ** =⇒=

+=⇒=λ ZX

mm
mm
mm
mm
mm
Page 17: Programación Lineal para la Ingeniería Técnica - unizar.es · Método del Simplex Revisado, que es en realidad el método del Simplex pero mejorado. Cuando trabajamos con problemas

Programación Lineal para la Ingeniería Técnica

111

Y así, infinidad de ellas variando λ en el intervalo (0,1). Gráficamente, se puede observar mejor: max 21 xxZ += s.a.: 221 ≤+ xx 33 21 ≤+ xx 0, 21 ≥xx Z = k es paralela a 221 ≤+ xx , por tanto, cualquier combinación lineal convexa de D(0,2) y C(1/2, 3/2) es solución óptima, es decir, todos los puntos del segmento delimitado por esos puntos.

( ) 22,0 ** =⇒= ZX

223

,21 ** =⇒

= ZX

( ) 247

,41

23

,21

21

2,021

21 ** =⇒

=

+=⇒=λ ZX

( ) 235

,31

23

,21

32

2,031

31 ** =⇒

=

+=⇒=λ ZX

14.5. CONVERGENCIA DEL ALGORITMO DEL SIMPLEX Y PROBLEMAS

DEGENERADOS El Simplex es un método iterativo en el que se eligen diferentes bases (vértices) para mejorar paso a paso el valor de la función objetivo hasta alcanzar la base óptima. Si ninguna base se elige dos veces, es claro que el algoritmo es finito.

Z = 0 221 =+ xx

33 21 =+ xx D C

B A

Page 18: Programación Lineal para la Ingeniería Técnica - unizar.es · Método del Simplex Revisado, que es en realidad el método del Simplex pero mejorado. Cuando trabajamos con problemas

Programación Lineal para la Ingeniería Técnica

112

El número de bases es a lo sumo

m

n, que es un número finito. Pero la pregunta

es: ¿cuántos pasos del Simplex debemos realizar hasta alcanzar la solución óptima?. Por experiencia, en los problemas “sencillos”, se analizan alrededor de m (número de restricciones) soluciones factibles diferentes, por lo que el número de operaciones a efectuar es alrededor de nm2 (n es el número de variables reales). Está demostrado, no obstante, que esta cantidad no siempre puede acotarse por un múltiplo fijo de m, y no en todos los casos esto sucede siempre así. Otro inconveniente en el estudio de la finitud del Simplex es el siguiente: supongamos que existen dos o más variables básicas con valor cero, con lo cual al hacer los cocientes entre cero y cualquier 0>ija , es cero, luego se plantea el

problema de cuál de ellas elegir. No podemos elegir arbitrariamente qué variable sale de la base ya que puede generarse un ciclo de modo que nunca se llegue a una solución óptima. No ocurre lo mismo si el empate es para decidir que variable entra en la base; la elección puede efectuarse al azar sin que afecte notablemente al número de iteraciones a realizar. Para evitar estos ciclos, se utilizan algunos métodos especiales que citaremos sin entrar en detalle: el Método Lexicográfico y el Método de Perturbación. No entraremos en su descripción puesto que habitualmente este problema sólo se presenta en ejemplos especialmente preparados para tal fin, y excede el objetivo de este texto. En el siguiente ejemplo podemos observar la formación de un ciclo, se trata de un problema degenerado:

max 4321 621

2043

xxxxZ −+−=

s.a.: 09841

4321 ≤+−− xxxx

0321

1221

4321 ≤+−− xxxx

13 ≤x 0,,, 4321 ≥xxxx

Page 19: Programación Lineal para la Ingeniería Técnica - unizar.es · Método del Simplex Revisado, que es en realidad el método del Simplex pero mejorado. Cuando trabajamos con problemas

Programación Lineal para la Ingeniería Técnica

113

Introducimos las correspondientes variables de holgura:

max 4321 621

2043

xxxxZ −+−=

s.a.: 09841

54321 =++−− Hxxxxx

0321

1221

64321 =++−− Hxxxxx

173 =+ Hxx 0,,,,,, 7654321 ≥HHH xxxxxxx

1x 2x 3x 4x Hx5 Hx6 Hx7 Hx5 0 1/4 -8 -1 9 1 0 0 Hx6 0 1/2 -12 -1/2 3 0 1 0 Hx7 1 0 0 1 0 0 0 1 3/4 -20 1/2 -6 0 0 0

1x 2x 3x 4x Hx5 Hx6 Hx7

1x 0 1 -32 -4 36 4 0 0 Hx6 0 0 4 3/2 -15 -2 1 0 Hx7 1 0 0 1 0 0 0 1 0 4 7/2 -33 -3 0 0

1x 2x 3x 4x Hx5 Hx6 Hx7

1x 0 1 0 8 -84 -12 8 0 2x 0 0 1 3/8 -15/4 -1/2 1/4 0 Hx7 1 0 0 1 0 0 0 1 0 0 2 -18 -1 -1 0

Page 20: Programación Lineal para la Ingeniería Técnica - unizar.es · Método del Simplex Revisado, que es en realidad el método del Simplex pero mejorado. Cuando trabajamos con problemas

Programación Lineal para la Ingeniería Técnica

114

1x 2x 3x 4x Hx5 Hx6 Hx7

3x 0 1/8 0 1 -21/2 -3/2 1 0 2x 0 -3/64 1 0 3/16 1/16 -1/8 0 Hx7 1 -1/8 0 0 21/2 3/2 -1 1 -1/4 0 0 3 2 -3 0

1x 2x 3x 4x Hx5 Hx6 Hx7

3x 0 -5/2 56 1 0 2 -6 0 4x 0 -1/4 16/3 0 1 1/3 -2/3 0 Hx7 1 5/2 -56 0 0 -2 6 1 1/2 -16 0 0 1 -1 0

1x 2x 3x 4x Hx5 Hx6 Hx7 Hx5 0 -5/4 28 1/2 0 1 -3 0

4x 0 1/6 -4 -1/6 1 0 1/3 0 Hx7 1 0 0 1 0 0 0 1 7/4 -44 -1/2 0 0 2 0

1x 2x 3x 4x Hx5 Hx6 Hx7 Hx5 0 1/4 -8 -1 9 1 0 0 Hx6 0 1/2 -12 -1/2 3 0 1 0 Hx7 1 0 0 1 0 0 0 1 3/4 -20 1/2 -6 0 0 0

Hemos llegado a la tabla inicial y no es la óptima. Por lo tanto estamos en un ciclo.

mm
mm
mm
mm