Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


PROGRAMACION LINEAL 5, Apuntes de Matemáticas

Asignatura: MATEMATICAS, Profesor: , Carrera: Ingeniero Técnico Agrícola, especialidad en Explotaciones Agropecuarias, Universidad: UniZar

Tipo: Apuntes

Antes del 2010

Subido el 08/10/2008

gemma-632
gemma-632 🇪🇸

4

(1)

10 documentos

1 / 20

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
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:
Volver al bloque 4
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14

Vista previa parcial del texto

¡Descarga PROGRAMACION LINEAL 5 y más Apuntes en PDF de Matemáticas solo en Docsity!

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 X ≥ 0

Denotaremos las columnas correspondientes de la matriz A como:

1

11 1 a m

a a M , ..., 

mn

n n a

a a M

1

Supongamos que tenemos una solución factible básica del problema lineal, siendo x (^) 1 , K , x m las variables básicas. La matriz básica estará dada por:

 = = m mm

m m a a

a a B a a K

M M M

K K 1

11 1 1 , ,

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

X (^) B = B −^1 b

El Algoritmo del Simplex Revisado constará de:

Paso 1: Calcular los costes marginales (^) c (^) j = cj −λ aj , (^) j = m + 1 , K , n , donde

λ = ( λ 1 , K ,λ m ) = C (^) BB −^1 ,con CB el vector fila de costes de las variables básicas. A λ (^) i se les llama multiplicadores del Simplex.

Si (^) c j ≤ 0 , (^) ∀ 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 (^) c (^) j es el más positivo; sea este (^) c (^) k.

Transformar la columna a (^) k , correspondient e a la variable que entra, en términos de la base actual:

a (^) k = B −^1 a k

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

 ⇒ = = 0 0 1

x 4 H , x 6 A , x 7 A B a 4 , a 6 , a 7

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

 = − = 1

3

11

1

3

11

0 0 1

0 1 0

1 0 0 X B^1 b B

En forma de tabla:

Base X^ B B −^1 x^ H 4 11 1 0 0 x 6^ A 3 0 1 0 x 7^ A 1 0 0 1

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

( m ) C BB ( M M ) =( − M − M )

 λ = λ λ = −^ = − − 0 , , 0 0 1

1 ,^ K ,^10 , ,

A continuación encontramos c (^) j = cj −λ aj para las variables no básicas:

T T T

M

M

M

M

M M

c

c

c

c





− −

− − − − 



= − 



3 1

1

3 6

2 0 1 0

4 1 2 1

1 2 1 0 0 , ,

0

1

1

3

5

3

2

1

Según el paso 2, elegimos el c (^) j más positivo, en este caso c 3 (^) = 3 M − 1. Luego entra x 3 en la base y la correspondiente columna pivote a (^) 3 se transforma como:

 = − = 1

a 3 B^1 a 3

Completando la tabla anterior:

Base X^ B B −^1

Columna pivote x^ H 4 11 1 0 0 1 x 6^ A 3 0 1 0 2 x 7^ A 1 0 0 1 1

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

min { 11 1 , 32 , 11 } = 1 , que corresponde a la variable x 7 A

Pivotamos, en el paso 4, sobre B −^1 de forma que en la columna pivote en lugar del pivote haya un 1 y el resto ceros:

Base X^ B B −^1 x^ H 4 10 1 0 - x 6^ A 1 0 1 - x 3 (^) 1 0 0 1

Para esta nueva solución factible básica X B = ( x 4 H , x 6 A , x 3 ) =( 10 , 1 , 1 ), comenzamos

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

 −

− λ = C^ BB −^ = − MM M

T T T

M

M M M c

c

c

= − 

− −

− − − − 

 = − 

 1

1

2 0 0

4 1 1

1 2 0 0 , , 2 1 0

1

3

5

2

1

No calculamos (^) c (^) 6 por ser xA 6 artificial y haber salido de la base.

El único (^) c j positivo corresponde a c 1 (^) = 1 , por lo tanto (^) x 1 es la variable que entra.

Así, la nueva tabla quedará como:

Base X (^) B B −^1

Columna pivote x^ H 4 12 1 2 -5 3 x 2 (^) 1 0 1 -2 0 x (^) 3 1 0 0 1 -

puesto que 

= 

− 

 −

− = − = 2

a 1 B^1 a 1

La única posibilidad es que salga (^) x 4 H. Pivotando sobre el primer elemento de la

columna pivote:

Base X^ B B −^1 x 1 (^) 4 1/3 2/3 -5/ x 2 (^) 1 0 1 - x 3 (^) 9 2/3 4/3 -7/

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

  

=^ − − 

− λ = − = − − 3

,^2 3

,^1 3

1 23 43 73

0 1 2

13 23 53 C (^) B B^13 , 1 , 1

T T T c

c 

 

 −

= − 

  − 

  

−^ − − 

  = 

 

 13

,^2

,^1

5

4

Como todos los c (^) j ≤ 0 para las variables no básicas, estamos en el óptimo:

  • 1 2 3

3 *

2 *

1 * ⇒ = − − = 

Z x x x x

x

x

Ejemplo:

max Z = 3 x 1 + x 2 + 3 x 3 max Z = 3 x 1 + x 2 + 3 x 3 s.a.: 2 x 1 (^) + x 2 + x 3 ≤ 2 s.a.: 2 x 1 + x 2 + x 3 + x 4 H = 2 x 1 (^) + 2 x 2 + 3 x 3 ≤ 5 x 1 + 2 x 2 + 3 x 3 + x 5 H = 5 2 x 1 (^) + 2 x 2 + x 3 ≤ 6 2 x 1 + 2 x 2 + x 3 + x 6 H = 6 x 1 (^) , x 2 , x 3 ≥ 0 x 1 , x 2 , x 3 , x 4 H^ , x 5 H , x 6^ H ≥ 0

Los datos en este problema son:

2 2 1 0 0 1

A , C =( 3 1 3 0 0 0 )

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

Base X (^) B B −^1 x^ H 4 2 1 0 0 x^ H 5 5 0 1 0 x^ H 6 6 0 0 1

Calculamos los multiplicadores del Simplex:

 λ = C (^) B B − =

T T T

c

c

c

 − 

3

2

1

Así, la tabla completa quedará como:

Base X (^) B B −^1

Columna pivote x 1 1 1/2 0 0 1/ x 5^ H 4 -1/2 1 0 5/ x 6^ H 4 -1 0 1 0

Calculamos = ⇒ 

 

 5

,^4

min^1 sale xH 5 , y pivotando tenemos que:

Base X^ B B −^1 x 1 (^) 1/5 3/5 -1/5 0 x 3 (^) 8/5 -1/5 2/5 0 x^ H 6 4 -1 0 1

En una siguiente iteración:

  

= 

− λ = −^ = , 0 5

,^3 5

6 1 0 1

15 25 0

35 15 0 C (^) B B^13 , 3 , 0

T T T

c

c

c

  

  

− 

35

65

75

2 0 0

2 0 1

1 1 0 , 0 5

,^3 5

6 0

0

1

5

4

2

Como todos los c (^) j < 0 para las variables no básicas actuales, se concluye que

estamos en el óptimo:

  • 1 2 3

6 *

3 *

1 ⇒ = + + = 

Z x x x x

x

x

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

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 m x n , la matriz asociada al nuevo problema será de orden ( m + n )x2 n ).

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 (^3) x 1 (^) + 2 x 2 max (^3) x 1 (^) + 2 x 2 s.a.: (^) x 1 (^) − x 2 ≤ 1 s.a.: x 1 − x 2 + x 3 H = 1 3 x 1 (^) − 2 x 2 ≤ 6 3 x 1 − 2 x 2 + x 4 H = 6 x 1 (^) , x 2 ≥ 0 x 1 ,^ x 2 , x 3 H^ , x 4 H ≥^0

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

x 1 x 2 x 3 H x 4^ H x 3^ H 1 1 -1 1 0 x 4^ H 6 3 -2 0 1 3 2 0 0

x 1 x 2 xH 3 x^ H 4 x 1 (^) 1 1 -1 1 0 x 4^ H 3 0 1 -3 1 0 5 -3 0

x 1 x 2 x 3 H x 4^ H x 1 4 1 0 -2 1 x 2 (^) 3 0 1 -3 1 0 0 12 -

Debería entrar x 3 H , 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

x 1 − x 2 = 1

3 x 1 − 2 x 2 = 6

A

x 1 x 2 xH 3 x^ H 4^ x 5^ H x^ H 3 1500 8 0 1 -1/2^0 x 2 (^) 200 2/5 1 0 1/10 0 x^ H 5 300 4/5 0 0 -3/10 1 0 0 0 -10 0

Óptimo: (^) x 1 * = 0 , (^) x * 2 = 200 , Z *^ = 20000

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

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

x 1 x 2 xH 3 x^ H 4^ x 5^ H x 1 (^) 375/2 1 0 1/8 -1/16 0 x 2 (^) 125 0 1 -1/20 1/8 0 x^ H 5 150 0 0 -1/10 -1/4 1 0 0 0 -10 0

Óptimo: 2

*^375 x 1 (^) = ,^ x * 2 = 125 ,^ Z *^ =^20000

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

  

λ + −λ , 125 2

0 , 200 1 375

Si ( ) 20000

,^325

  

=  

  

λ = ⇒ X = +  Z

Si ( ) , 125 ( 125 , 150 ) 20000

 

  

λ = ⇒ X = +  Z

Y así, infinidad de ellas variando λ en el intervalo (0,1).

Gráficamente, se puede observar mejor:

max (^) Z = x 1 + x 2 s.a.: (^) x 1 + x 2 ≤ 2 3 x 1 + x 2 ≤ 3 x 1 , x 2 ≥ 0

Z = k es paralela a (^) x 1 (^) + x 2 ≤ 2 , 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.

X *^ = ( 0 , 2 ) ⇒ Z *= 2

,^3

  

X =  Z

,^7

,^3

  

= 

  

λ = ⇒ X = +  Z

,^5

,^3

  

= 

  

λ = ⇒ X = +  Z

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

x 1 + x 2 = 2

3 x 1 + x 2 = 3 D (^) C

B

A

Introducimos las correspondientes variables de holgura:

max (^1 ) 2 20 1 4 Z =^3 xx + xx

s.a.: 8 9 0 4

1 x 1 − x 2 − x 3 + x 4 + x 5 H =

3 0 2

12 1 2

1 x 1 − x 2 − x 3 + x 4 + x 6 H = x 3 + x 7 H = 1 x 1 , x 2 , x 3 , x 4 , x 5 H^ , x 6 H , x 7 H ≥ 0

x 1 x 2 x 3^ x 4 x 5 H x 6^ H x^ H 7 x 5^ H 0 1/4 -8 -1 9 1 0 0 x 6^ H 0 1/2 -12 -1/2 3 0 1 0 x 7^ H 1 0 0 1 0 0 0 1 3/4 -20 1/2 -6 0 0 0

x 1 x 2 x 3^ x 4 x 5 H^ x 6^ H^ x^ H 7 x 1 0 1 -32 -4 36 4 0 0 x 6^ H 0 0 4 3/2 -15 -2 1 0 x 7^ H 1 0 0 1 0 0 0 1 0 4 7/2 -33 -3 0 0

x 1 x 2 x 3 x 4 x 5 H x 6^ H x^ H 7 x 1 (^) 0 1 0 8 -84 -12 8 0 x 2 (^) 0 0 1 3/8 -15/4 -1/2 1/4 0 x 7^ H 1 0 0 1 0 0 0 1 0 0 2 -18 -1 -1 0

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

- x 1 x 2 x 3 x 4 x 5 H x 6 H x H
  • x 3 0 1/8 0 1 -21/2 -3/2
  • x 2 0 -3/64 1 0 3/16 1/16 -1/8
  • x 7 H 1 -1/8 0 0 21/2 3/2 -1 - -1/4 0 0 3 2 -3 - x 1 x 2 x 3 x 4 x 5 H x 6 H x H
    • x 3 0 -5/2 56 1 0 2 -6
    • x 4 0 -1/4 16/3 0 1 1/3 -2/3
  • x 7 H 1 5/2 -56 0 0 -2 - 1/2 -16 0 0 1 -1 - x 1 x 2 x 3 x 4 x 5 H x 6 H x H
  • x 5 H 0 -5/4 28 1/2 0 1 -3
    • x 4 0 1/6 -4 -1/6 1 0 1/3
  • x 7 H - 7/4 -44 -1/2 - x 1 x 2 x 3 x 4 x 5 H x 6 H x H
  • x 5 H 0 1/4 -8 -1
  • x 6 H 0 1/2 -12 -1/2
  • x 7 H - 3/4 -20 1/2 -6