Вы находитесь на странице: 1из 19

VI.

Simplex
Revisado.

Simplex Revisado

Aspectos
computacionales.

VI. Simplex Revisado.


VI. Simplex
Revisado. Simplex Revisado.
Este método hace uso de la notación y de las ideas
Simplex Revisado

Aspectos
desarrolladas en la sección anterior.
computacionales. Consideremos
Max z = ct x
sujeto a
Ax = b (1)
x≥0
Por el momento, centraremos nuestra atención al caso donde la
forma estándar fue obtenida usando sólamente variables de
holgura y no artificiales.
Definimos
B = [ai1 , ..., aim ],
donde ir es el índice de la r-ésima var. básica.
xB = (xi1 , ..., xim )t
y
xB = B−1 b, (2)
cB = (ci1 , ..., cim )t ,
y
VI. Simplex
Revisado.

Combinando (2) y (3), tenemos que


Simplex Revisado
M(z, xB )t = (0, b)t
Aspectos
computacionales. con
M=
1 −ctB
 

0 B
es una matriz (m + 1) × (m + 1), y puede verificarse que
M −1 =
1 ctB B−1
 

0 B−1
Entonces
(z, xB )t = M −1 (0, b)t
(z, xB )t = (ctB B−1 b, B−1 b)t (4)
El Simplex revisado explota esta forma de solución en (4)
trabajando sólo con M −1 , en lugar de la tabla entera.
VI. Simplex
Revisado.

Simplex Revisado M −1 tiene una forma particular simple, por lo que necesitamos
Aspectos sólo considerar B−1 . Al principio B = Im , con Im matriz
computacionales.
identidad m × m y B−1 = Im . El método simplex revisado usa
un procedimiento simple para encontrar B−1 para la siguiente
iteración de la información acerca de la var. que entra y la que
sale, junto con la B−1 actual. Empezamos por escribir:
(B−1 )nueva = E(B−1 )ant
donde E es una matriz m × m que puede obtenerse como sigue:
a) Empezamos con Im . Supongamos que xp es la var. que entra
y xiq la que sale. Ya hemos visto que:
tp = B−1 ap ,
donde ap es la columna p de la matriz original.
Denotemos las entradas de la columna pivote por
tp = (t1p , ..., tmp )t .
VI. Simplex b) Se reemplaza la columna q de Im por el vector
Revisado.
 
−t1p /tqp
Simplex Revisado
 −t2p /tqp 
Aspectos  
computacionales. 
 ... 

 1/tqp 
 
 ... 
−tmp /tqp
O sea, en la entrada q va 1/tqp . Con esta modificación de la
matriz identidad hemos construido E
Nota: Nunca tenemos que invertir una matriz numéricamente,
ya que es un proceso que requiere mucho cuidado. El Simplex
revisado consta de los siguientes pasos:
1. Determine la var. que entra xp , eligiendo el zj − cj más
negativo, para j=1,s.
Recuerde que
zj − cj = ctB tj − cj = ctB B−1 aj − cj
o sea
zj − cj = (1, ctB B−1 )(−cj , aj )t .
VI. Simplex
Revisado.

Simplex Revisado
2. Determine la var. que sale xiq . Esta es aquella que tiene el
Aspectos
computacionales. mínimo cociente
xir /trp , trp > 0,
donde xir es la entrada entrada en xB en el lado derecho de la
tabla. para esto calculamos
tp = B−1 ap ,
y
xB = B−1 b.
−1
3. Determine B como se acaba de describir.
4. Determine
(xB )nueva = (B−1 )nueva b = E(B−1 )ant b = E(xB )anterior
y entonces
(xB )nueva = ExB .
VI. Simplex
Revisado.
Ejemplo:
Max z = 120x1 + 100x2
Simplex Revisado sujeto a
Aspectos 2x1 + 2x2 + x3 = 8
computacionales.
5x1 + 3x2 + x4 = 15
xj ≥ 0, j=1,4
A=  
2 2 1 0
5 3 0 1
b=  
8
15
c=
 
120
 100 
 
 0 
0
Como x3 y x4 son básicas, i1 = 3, i2 = 4.
VI. Simplex
Revisado.

B−1 = I2×2 , cB = (0, 0)t . Entonces, como


Simplex Revisado M −1 =
1 ctB B−1
 
Aspectos
computacionales.
0 B−1
M −1 =  
1 0 0
 0 1 0 
0 0 1
(z, xB )t = M −1 (0, b)t = (0, 8, 15)t
Calculamos ahora
z1 − c1 = −c1 = −120
z2 − c2 = −c2 = −100
z3 − c3 = −c3 = 0
z4 − c4 = −c4 = 0
Entonces p = 1, entra x1 .
VI. Simplex
Revisado.

Simplex Revisado

Aspectos
Encontramos t1 = B−1 a1 = a1 = (2, 5)t , y calculamos
computacionales. min {8/2, 15/5} = 3.
Entonces xi2 = x4 es la var. que sale, o sea, q=2.
Encontramos E reemplazando la segunda columna de I2 por
(−2/5, 1/5)t y obtenemos:
E=  
1 −2/5
0 1/5
y
(B−1 )nueva = E(B−1 )ant = I2 E = E
Segunda iteración:
Ahora, i1 = 3, i2 = 1, y cB = (0, 120)t
VI. Simplex
Revisado.

 
Simplex Revisado  1 −2/5
ctB B−1 = 0 20
  
= 0 24
Aspectos
computacionales.
0 1/5
M −1 =  
1 0 24
 0 1 −2/5 
0 0 1/5
   
    1 0 24  360
z 0 
= M −1 = 0 1 −2/5 0 8 15 =  2 
xB b
0 0 1/5 3
Ahora calculamos
   
  −cj   −cj
zj − cj = 1 ctB B−1 = 1 0 24
aj aj
VI. Simplex
Revisado.

 
Simplex Revisado
  −120
Aspectos z1 − c1 = 1 0 24  2  = 0
computacionales.
5
 
  −100
z2 − c2 = 1 0 24  2  = −28
3
 
  0
z3 − c3 = 1 0 24 1 = 0
0
 
  0
z4 − c4 = 1 0 24 0 = 24
1
Entonces entra x2 (p=2).
VI. Simplex
Revisado.

    
Simplex Revisado
−1 1 −2/5 2 4/5
t2 = B a2 = =
Aspectos
computacionales.
0 1/5 3 3/5
y calculamos
Min {2/ 45 , 3/ 53 } = 5/2
y esto implica que x3 = xi1 es la var.que sale.
Calculamos E reemplazando la primera columna de I2 por
   
1/(4/5) 5/4
=
(−3/5)/(4/5) −3/4
 
5/4 0
E=
−3/4 1
    
−1 5/4 0 1 −2/5 5/4 −1/2
(B )nueva = =
−3/4 1 0 1/5 −3/4 1/2
VI. Simplex 3a. iteración
Revisado.
Ahora, i1 = 2, i2 = 1, cB = (100, 120)t
  
Simplex Revisado   1 35 10 0
z
Aspectos = 0 5/4 −1/2  8 
computacionales. xB
0 −3/4 1/2 15
Entonces
 
  430
z
= 5/2
xB
3/2
Ahora
 
  −cj
zj − cj = 1 35 10
aj
z1 − c1 = 0
z2 − c2 = 0
z3 − c3 = 35
z4 − c4 = 10
Estamos entonces en el óptimo.
VI. Simplex
Revisado. Aspectos computacionales.
Simplex Revisado
El desarrollo de la programación lineal y sus aplicaciones ha
Aspectos
computacionales. ido paralelo con el desarrollo de la computadora digital.
Un sistema L.P. o código, es un programa o paquete que
resuelve un P.P.L. Ejemplos
-Univac’s Mathematical Programming System-FMPS.
-IBM’s Mathematical Programming System Extended.
-LINDO (Linear Interactive aNd Discrete Optimizer). Para
Pc’s.
Se necesita proporcionar
a) Tipo de problema (Max o Min)
b) Matriz de coeficientes A.
c) Lados derechos de las restricciones (b).
d) La relación (≤≥=) para cada restricción.
1. Algunos códigos suponen que los problemas son de Min,
que todas las entradas de b con mayores o iguales a cero, y que
las restricciones son del tipo =.
VI. Simplex 2. En la mayoría de los problemas grandes, la mayoría de las
Revisado.
entradas de A son cero, entonces, algunos códigos pedirán
Simplex Revisado
sólamente los valores distintos de cero. Se usan rutinas
Aspectos
especiales para manejar matrices ralas. Consecuentemente, la
computacionales.
entrada debe identificar la restricción y la var. a la cual
pertenece el coeficiente. Se pide entonces al usuario que asigne
un nombre a cada restricción y a cada var. . Entonces, el
coeficiente puede darse, indicando el nombre de la var. y la
restricción a la que pertenece.
La función objetivo se da por separado, dando el nombre de la
var. y su coeficiente en la f.o. o se da com parte de las
restricciones. Se usa por ejemplo en este caso, la palabra
reservada OBJECT.
Los lados derechos se dan, indicando el nombre de la
restricción y el valor del coeficiente. El tipo de relación
también debe especificarse.
3. La mayoría de los códigos provee una opción para calcular
B−1 basada en un procedimiento de álgebra lineal numérica
llamado factorización LU.
B−1 = U −1 L−1
VI. Simplex
Revisado.
4. El Simplex revisado, con el cálculo iterativo de B−1 se
programa para checarse a si mismo en intervalos especificados.
Simplex Revisado Entre tanto, sigue el comportamiento descrito anteriormente.
Aspectos La revisión involucra calcular B−1 de manera diferente. La
computacionales.
matriz B puede ser construida de la lista de vars. básicas y del
problema original tal como fue leido y almacenado. Entonces,
un muy bien método para invertir numéricamente B es usar la
factorización LU anteriormente descrita.
El procedimiento de recalcular ocasionalmente B−1 del
problema dado sirve para producir s.b.f más exactas, sin
embargo, este proceso es caro, y no debe usarse
frecuentemente.
5. La mayoría de los paquetes proveen diversas opciones para
manejar la degeneración. Usualmente, la opción default es
ignorarla.
6. Hay, como hemos visto, una gran cantidad de información
sobre la solución a un P.P.L. que está contenida en la tabla final.
Algunos códigos permiten salvar la salida, por ejemplo, en
disco, como entrada futura a un generador de reportes.
VI. Simplex
Revisado.

7. La salida de un paquete de P.L. por lo general tendrá un


Simplex Revisado encabezado del problema, el número de iteraciones y el valor
Aspectos
computacionales.
óptimo de la f.o.
Luego se dan, usualmente, la lista de las variables especificadas
originalmente por el problema, y después el valor de las vars.
de holgura. Puesto que cada restricción corresponde a una var.
dual, que puede ser interpretada como el costo marginal de
cada valor del lado derecho (o recurso), el valor de las vars.
duales también aparece. finalmente, se dan los rangos de los
valores para cada coeficiente de la f.o. y cada valor de los
coeficientes del lado derecho. Estos rangos vienen del análisis
de sensibilidad de la solución óptima.
Uno debe interpretar cada rango como dando los valores que
dicho coeficiente en particular debe tomar suponiendo que:
a) no cambian otros coeficientes.
b)el valor óptimo calculado continúa siendo el óptimo.
VI. Simplex
Revisado.

Simplex Revisado 8. Escalamiento. Una cosa que el usuario puede hacer para
Aspectos minimizar los errores generados por el algoritmo, es asegurarse
computacionales.
que el problema esté apropiadamente escalado. Esto significa
que todos los elementos de la matriz de coeficientes A sean
aproximadamente de la misma magnitud.
Si los coeficientes de una restricción son grandes con respecto a
otra, se puede dividir los coeficientes de la restricción por un
cierto valor.
Ejemplo:
8x1 + 5x2 + x3 = 10
1000x1 + 500x2 + 1000x4 = 250
Se pueden dividir los coeficientes de la segunda restricción por
1000, quedando
x1 + .5x2 + x4 = .25
VI. Simplex
Revisado.

Simplex Revisado

Aspectos
computacionales.

Si los coeficientes de una var. son muy grandes con respecto a


las otras, se puede hacer un cambio de var.
2100x1 + 6x2 − x3 = 21
1500x1 − x2 + x4 = 50
Haciendo x∗1 = 1000x1 , queda
2.1x∗1 + 6x2 − x3 = 21
1.5x∗1 − x2 + x4 = 30

Вам также может понравиться