Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Simplex

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 5

ALGORITMO SIMPLEX LINEAL Y NO LINEAL

Andrés L. Granados M., 01/Sep/2024


UNIVERSIDAD SIMON BOLIVAR
Departamento de Mecánica
Caracas - Venezuela

Este popular método fue creado en el año de 1947 por el estadounidense George Bernard Dantzig y
el ruso Leonid Vitalievich Kantorovich, con el ánimo de crear un algoritmo capaz de solucionar problemas
lineales de optimización de m restricciones y n variables positivas (n < m) [Dantzig & Thapa,1997/2003].

MAXIMIZAR

Consideremos el modelo de programación lineal



⎪ Maximizar



⎪ z = c1 x1 + c2 x2 + · · · + cn xn



⎪ Sujeto a:

⎪ a11 x1 + a12 x2 + · · · + a1n xn ≤ b1


a21 x1 + a22 x2 + · · · + a2n xn ≤ b2 (1)

⎪ .. .. ..

⎪ . . .



⎪ a x +a x + · · ·+a x n ≤ bm


m1 1 m2 2 mn

⎪ con

x1 , x2 , . . . , xn ≥ 0

puede ser representado mediante matrices de la siguiente forma



⎪ Maximizar



⎪ z = c.x

Sujeto a:
(2)

⎪ A.x ≤ b



⎩ con
x≥0

donde ⎧ ⎫ ⎧ ⎫
⎪ x1 ⎪ ⎪ b1 ⎪

⎨ x2 ⎬⎪ ⎪
⎨ b2 ⎪ ⎬
c = {c1 , c2 , · · · , cn } x= .. b= .. (3.a, b, c)

⎪ ⎪ ⎪ ⎪
⎩ . ⎪ ⎭ ⎪
⎩ . ⎪ ⎭
xn bm
⎡ ⎤ ⎧ ⎫
a11 a12 ··· a1n ⎪ 0⎪

⎨0⎪⎬
⎢ a21 a22 ··· a2n ⎥
A=⎢
⎣ ... .. .. .. ⎥ 0 = .. ó {0, 0, · · · , 0}1×m (3.d, e)
. . . ⎦ ⎪

⎩.⎪


am1 am2 · · · amn 0 m×1

Esto es
c ∈ R1×n , x ∈ Rn×1 , b ∈ Rm×1 , A ∈ Rm×n y 0 ∈ Rn×1 ó R1×n (4)

En su totalidad, realmente son n + m restricciones, m restricciones del tipo A.x ≤ b y n restricciones


del tipo x ≥ 0. Consideradas como igualdades, las restricciones son hiperplanos cada una de ellas, que
rodean en parte la frontera de una región convexa de Rn , siendo n la dimensión del espacio donde está
sumergido el problema. Dicha región poliédrica convexa de factibilidad serı́a las intersecciones de todas
las restricciones, consideradas como desigualdades. Cada dos restricciones se intersectan en una hiperarista

1
(para n = 2 la hiperarista es un punto-vértice) y cada n restricciones se intersectan en un único vértice,
considerado uno o varios de ellos la solución básica factible al problema (se puede demostrar por reducción
al absurdo que la solución al problema debe estar en un vértice y no en una hiperarista o hiperplano [Hillier
& Lieberman,2010]). El número total d vértices que pueden ofrecer una solución tiene como cota superior a
(n+m)!
la combinación ( n+m
n ) = m!n! (que es el mismo número de ecuaciones posibles de formar del total), de las
cuales sólamente la mitad o un tercio son factibles.
Para obtener la forma aumentada del problema de programación lineal, introducimos el vector columna
de las variables de holgura xs , esto es
⎧ ⎫
⎪ xn+1 ⎪
⎨ xn+2 ⎪
⎪ ⎬
xs = .. (5)

⎪ . ⎪

⎩ ⎭
xn+m m×1
de tal manera que las restricciones se convierten en una igualdad (sistema de ecuaciones lineales, puesto que
cada variable de holgura compensa cada una de las desigualdades)
   
x x
[A| I ] . =b ≥0 (6)
xs xs

donde ⎡ ⎤
1 0 ··· 0
⎢0 1 ··· 0⎥
I=⎢
⎣ ... ... .. .⎥ (7)
. .. ⎦
0 0 · · · 1 m×m
es la matriz identidad de orden m × m (en (6), {0}(n+m)×1).
Debemos identificar las variables básicas y no básicas de
 
x
[A| I ] . =b (8)
xs
dado que se tienen que eliminar las variables no básicas al igualarlas a cero entonces queda un conjunto de m
ecuaciones con m incógnitas (las variables básicas). Este sistema de ecuaciones lo denotamos por B.xb = b,
donde el vector de variables básicas ⎧ ⎫
⎪ xb1 ⎪
⎨ xb2 ⎪
⎪ ⎬
xb = .. (9)

⎪ ⎪
⎩ . ⎪ ⎭
xbm
se obtiene al eliminar las variables no básicas del total de variables (n + m variables)
 
x
(10)
xs

escogiendo por defecto las básicas (m variables) y la matriz base B a partir del sistema más grande (8)
(n+m)!
(existen en total ( n+m
m ) = m!n!
opciones, algunas válidas, invertibles, esas son el número de iteraciones, y
otras no, descartadas). Esta matriz denotada por B ∈ Rm×m es
⎡ ⎤
B11 B12 ··· B1m
⎢ B21 B22 ··· B2m ⎥
B=⎢
⎣ ... .. .. ⎥ (11)
. ⎦
..
. .
Bm1 Bm2 · · · Bmm

2
y se obtiene al eliminar las columnas de
[A| I ] (12)
correspondientes a las variables no básicas. Como la matriz base B es invertible entonces la solución deseada
para las variables básicas es xb = B−1. b. La escogencia de las variables básicas es fundamental en el método,
puesto que cada escogencia debe ser un sistema invertible y da un valor de z diferente, y la correcta es la
solución al problema con el mayor valor de z.
Sea cb el vector renglón cuyos elementos son los coeficientes de la función objetivo (incluye los ceros
para las variables de holgura) que corresponden a los elementos de xb . Ası́, el vector de la función objetivo
de la solución básica xb = B−1. b es z = cb .xb = cb .B−1. b.
En el caso del conjunto de ecuaciones originales del modelo inicial aumentado, incluyendo la ecuación
de la función objetivo z, se puede representar como
⎧ ⎫
  ⎨ z ⎬  
1 −c 0 0
. x = (13)
0 A I ⎩ ⎭ b
xs

dado que xb = B−1 . b y z = cb .B−1 . b entonces


       
z cb .B−1. b 1 cb .B−1 0
= = . (14)
xb B−1. b 0 B−1 b

Premultiplicando la última matriz con la expresión hallada anteriormente obtenemos


⎧ ⎫
    ⎨ z ⎬    
1 cb .B−1 1 −c 0 1 cb .B−1 0
. . x = . (15)
0 B−1 0 A I ⎩ ⎭ 0 B−1 b
xs
⎧ ⎫
 −1 −1
 ⎨ z ⎬  
1 cb .B . A − c cb .B cb .B−1. b
. x = (16)
0 B−1. A B−1 ⎩ ⎭ B−1. b
xs
Está forma matricial proporciona el conjunto de ecuaciones de cualquier iteración. Se utilizan las expresiones
matriciales cb .B−1. A − c y cb .B−1 para calcular los coeficientes de las variables no básicas de la función
objetivo, a partir de la primera de las dos ecuaciones matriciales de arriba, (16).

MINIMIZAR

Consideremos ahora el problema de la dieta de minimización



⎪ Minimizar

⎪ z = c.x



Sujeto a:
(17)

⎪ A.x ≥ b



⎩ con
x≥0

La forma ampliada en este caso se logra mediante


   
x x
[A| − I ] . =b ≥0 (18)
xs xs

en lugar de (6), donde se ha invertido el procedimiento restando la variables de holgura, ahora de exceso, una
para cada desigualdad para compensar la diferencia. El procedimiento iterativo se vuelve similar al anterior,

3
sólo que en éste, al contrario, se busca minimizar z. Las ecuaciones (13) y (15) ahora cambian sustituyendo
−I en lugar de I, -1 en lugar de 1 y c en lugar de −c, como se indica a continuación
⎧ ⎫
  ⎨ z ⎬  
−1 c 0 0
. x = (19)
0 A −I ⎩ ⎭ b
xs

lógicamente también cambia de signo la última columna de la matrix de (16)


Una forma de evitarse el trabajo de escoger las variables básicas en el sistema (13), en cada iteración,
de ⎧ ⎫
    ⎨ z ⎬
1 −c 0 0
Ã.x̂ = b̃ Ã = b̃ = x̂ = x (20)
0 A I b ⎩ ⎭
xs
y resolver el problema en un solo paso, realizamos la pre-multiplicación del sistema de ecuaciones lineales
anterior por la matriz Ãt , con lo cual queda un sistema completo en toda las variables x̂, con igual número
(n + m + 1) de variables y ecuaciones
⎡ ⎤ ⎧ ⎫
1 −c 0 ⎨ 0 ⎬
Â.x̂ = b̂ Â = Ãt.Ã = ⎣ −ct ct c + At.A At ⎦ b̂ = Ãt.b̃ = At.b (21)
⎩ ⎭
0 A I b

el cual es compatible determinado (la matriz à es simétrica y diagonalmente dominante). El término ct c


equivalente a la diádica cc = c ⊗ c, es una matriz (componentes de un tensor 2do orden diádico cc) cuadrada
simétrica de n × n, al igual que At.A. Para la minimización lo único que cambia en  es A, At y b, que en
su lugar son los opuestos a estos, todo lo demás queda igual.

NO LINEAL

Para los problemas no lineales de maximizar o minimizar el planteamiento es el siguiente


⎧ ⎧
⎪ Maximizar ⎪ Minimizar

⎪ z = h(x) ⎪


⎪ ⎪
⎪ z = h(x)
⎨ ⎨
Sujeto a: Sujeto a:
(22)

⎪ g(x) ≤ b ⎪
⎪ g(x) ≥ b

⎪ ⎪


⎩ con ⎪
⎩ con
x≥0 x≥0
donde las funciones objetivo h(x) : Rn → R y de restricciones g(x) : Rn → Rm ahora son no lineales, lo
que hace que en parte el poliedro de la región de factibilidad tenga como fronteras hipersuperficies curvas en
lugar de hiperplanos. Se replantea el problema para generar un sistema de ecuaciones no lineales homogénea,
de la forma ⎧ ⎧
⎪ Maximizar z ⎪ Minimizar z

⎪ ⎪


⎪ z − h(x) = 0 ⎪
⎪ h(x) − z = 0
⎨ ⎨
Sujeto a: Sujeto a:
(22 )

⎪ g(x) + I.xs − b = 0 ⎪
⎪ g(x) − I.xs − b = 0

⎪ ⎪


⎩ con ⎪
⎩ con
x≥0 x≥0
Un procedimiento para resolver este sistema de ecuaciones no lineales con un algoritmo iterativo es usando
el método de Newton-Raphson ( aunque el número de ecuaciones m + 1 no sea igual al número de incógnitas
m + n + 1), trabajando con las variables totales x̂ = {z, x, xs }t . De aquı́ resulta que la solución del siguiente
sistema de ecuaciones lineales evaluado en la iteración k
   
±1 ∓∇h(x) 0 ±z ∓ h(x)
[A(x̂ )].Δx̂ = −f (x̂ )
k k k
[A(x̂)] = f (x̂) = (23)
0 Jg (x) ±I g(x) ± I.xs − b

4
(Signo de arriba para maximizar y el de abajo para minimizar) nos permite encontrar el nuevo iterado en la
iteración k + 1
x̂k+1 = x̂k + ω Δx̂k Jg (x) = [∇g(x)]t (24)

donde ∇h(x) es el gradiente de la función escalar h(x) evaluada en x y Jg (x) es el jacobiano de la función
vectorial g(x) evaluada en x y ω es el factor de relajación (∇ = ei ∂i ∈ Rn ).
Cuando pre-multiplicamos el sistema de ecuaciones lineales con desiguales incógnitas y ecuación por
[A(x̂k )]t igualamos el número de ecuaciones y variables a (n + m + 1), similar a como se hizo en (21). Con
lo cual nos queda el sistema lineal para la iteración k de la forma

[Â(x̂k )].Δx̂k = b̂(x̂k ) [Â(x̂k )] = [A(x̂k )]t . [A(x̂k )] b̂(x̂k ) = −[A(x̂k )]t . f (x̂k ) (25)

donde, después de operar con las matrices queda la matriz del sistema
⎡ ⎤
1 −∇h(x) 0
[Â(x̂)] = ⎣ −∇h(x) ∇h(x)t ∇h(x) + [Jg (x)]t .[Jg (x)] ±[Jg (x)] ⎦ (26.a)
0 ±Jg (x)] I

y el término independiente
⎧ ⎫
⎨ z − h(x) ⎬
b̂(x̂) = − ∇ht [ h(x) − z ] + [Jg (x)]t. [ g(x) ± I.xs − b ] (26.b)
⎩ ⎭
±[ g(x) ± I.xs − b ]

los cuales cambian ambos en cada iteración. La observaciones hechas antes para el termino central de (21.b)
son también válidas para el término central de (26.a).
Este artı́culo es prácticamente una copia de la sección II.1.3.5 del capı́tulo II de [Granados,2024].

REFERENCIAS

[1] Dantzig, G. B. Linear Programming and Extensions Princeton University Press (New Jersey),
1963.
[2] Dantzig, G. B.; Thapa, M. N. Linear Programming, Vol.1 Introduction, Vol.2 Theory and Exten-
sions. Springer-Verlag (New York), 1997/2003.
[3] Granados M., A. L. Curso Sobre: Métodos Numéricos. Universidad Simón Bolı́var, Agosto, 2016.
Editorial Académica Española (ISBN 978-3-8417-5153-9 Saarbrücken, Alemania), Ago., 2016. Editorial
Digiterı́a (Depósito Legal MI2016000489 Caracas Venezuela), Nov., 2016. Revisión Ene., 2024.
[4] Hillier, F. S.; Gerald J. Lieberman, G. J. Introducción a La Investigacion de Operaciones, 9na
Edición. McGraw-Hill (México), 2010.
[5] Taha, H. A. Investigacion de Operaciones, 9na Edición. Pearson Educación (México), 2012.

También podría gustarte