Análisis Geométrico en Programación Lineal
Análisis Geométrico en Programación Lineal
M in ct x
Ax =b
x ≥0
S = {x ∈ IRn / Ax = b, x ≥ 0}
A = {a1 , a2 , . . . , an }
donde ⎛ ⎞
a1j
⎜ ⎟
⎜ a2j ⎟
⎜ ⎟
aj = ⎜ . ⎟ ∀j ∈ {1, . . . , n}
⎜ .. ⎟
⎝ ⎠
amj
rg(A) = m
según
xt = (xtB , xtN )
siendo
xtB = (x1 , x5 , x3 ) xtN = (x2 , x4 )
M in ct x
Ax =b
x ≥0
se dice que x ∈ IRn es una solución básica cuando existe una base B ⊂ A, tal
que las variables secundarias son nulas, es decir:
xB B −1 b
x= =
xN 0
k
λj x j ∈ C
j=1
Demostración:
Dados x1 , x2 ∈ S y dado un λ ∈ (0, 1) se define el vector x = λx1 +(1−λ)x2 .
Para demostrar que x ∈ S es suficiente comprobar que x ≥ 0, lo que se
concluye al serlo x1 y x2 y, por otra parte, hay que comprobar que Ax = b :
x̄ es punto extremo de S ⇐⇒
x̄B B −1 b
0, B −1 b ≥ 0 tal que x̄ =
∃B ⊂ A tal que |B| = =
x̄N 0
Demostración :
x̄B B −1 b
0 y B −1 b ≥ 0 y x̄ =
⇐ Sea A = (B, N ), donde |B| = =
x̄N 0
Según se comentó anteriormente, las componentes básicas son las m pri-
meras.
Supongamos que x̄ = λx̄1 + (1 − λ)x̄2 x̄1 , x̄2 ∈ S, siendo 0 < λ < 1.
Descomponiendo x̄1 y x̄2 en las componentes básicas y secundarias, se
tiene:
x̄B B −1 b x̄1B x̄2B
x̄ = = =λ + (1 − λ)
x̄N 0 x̄1N x̄2N
1 x̄1B
Ax̄ = (B, N ) = Bx̄1B + N 0 = b
0
2 x̄2B
Ax̄ = (B, N ) = Bx̄2B + N 0 = b
0
Puntos extremos de S I.O. Introducción 33
x̄1B = x̄2B = B −1 b
k
λj aj = 0
j=1
λt = (λ1 , . . . , λk , 0, . . . , 0) ∈ IRn
1 1 1 2
x̄ = x̄ + x̄
2 2
x̄B
Ax = (B, N ) =b
0
x̄B B −1 b
x̄ = =
x̄N 0
Demostración :
Al ser S no vacı́o, sea x̄ ∈ S una solución factible. Siempre se pueden reor-
denar las coordenadas de forma que las k primeras, siendo 0 ≤ k ≤ n, sean
positivas: x̄t = (x̄1 , . . . , x̄k , 0, . . . , 0).
Sea p = rg(a1 , . . . , ak ) el rango de los vectores columna de A asociados a
estas componentes positivas. Hay dos opciones:
k
αj aj = 0
j=1
k
1
ar = − α j aj
αr j=1
j=r
se tiene
n
k
k
k
1
b= aj x̄j = aj x̄j = aj x̄j − αj aj x̄r
j=1 j=1 j=1
αr j=1
j=r j=r
k
αj
b= aj (x̄j − x̄r )
j=1
αr
j=r
αj
x̄j ≡ (x̄j − x̄r ) ∀j = 1, . . . , k
αr
se deduce que x̄ es una solución con al menos una componente nula más
que x̄, puesto que x̄r = 0. Para garantizar que x̄ sea solución factible hay
que elegir el subı́ndice r adecuadamente; para ello, basta observar las dos
posibilidades respecto los αj :
• αj > 0
αj x̄j x̄r
(x̄j − x̄r ) ≥ 0 ⇐⇒ − ≥0
αr αj αr
x̄r x̄j
≡ M in{ /αj > 0}
αr αj
• αj ≤ 0
αj
x̄j = (x̄j − x̄r ) ≥ x̄j ≥ 0
αr
Ası́ pues, la solución x̄ es factible y tiene menos componentes positivas
que x̄.
Puntos extremos de S I.O. Introducción 37
Ejemplo 2.2. Determinar los puntos extremos del conjunto de soluciones fac-
tibles asociadas al PPL cuya matriz A de coeficientes y vector b de términos
independientes son:
1 −3 −4 5
A= b=
0 2 1 7
5 31/2 5 33
B1−1 = ≥0 B2−1 = ≥0
7 7/2 7 7
5 33/5
B3−1 = ≥ 0
7 −31/5
Sólo los dos primeros vectores tienen todas las componentes mayores o igua-
les que 0 y son, por tanto, soluciones básicas factibles; geométricamente, corres-
ponden a los dos puntos extremos del conjunto de soluciones factibles:
I.O. Introducción 38 Análisis teórico del problema
⎛ ⎞ ⎛ ⎞
31/2 33
⎜ ⎟ ⎜ ⎟
x1 = ⎜ ⎟
⎝ 7/2 ⎠ ; x2 = ⎜ ⎟
⎝ 0 ⎠
0 7
x1 − 3x2 − 4x3 = 5
2x2 + x3 = 7
definidos por cada una de las restricciones. Los extremos de dicho segmento son
los citados puntos extremos y cualquier solución factible se puede expresar como
combinación lineal convexa de ambos.
Hay que observar cómo a partir de los puntos extremos del conjunto S se
pueden generar por combinaciones lineales convexas otras soluciones factibles
para el problema P .
Ejemplo 2.3.
M in x1 −x2 −x3
x1 −x2 +x3 = 1
−2x1 −x2 +x3 = 1
xj ≥ 0 ∀i = 1, 2, 3
Direcciones extremas de S I.O. Introducción 39
x3
x2
x1
∀x ∈ C, ∀μ ≥ 0 x + μd ∈ C
En el ejemplo 2.3 existe una dirección, dt = (0, 1, 1), que coincide con la
dirección de la semirrecta definida por el conjunto S.
d es dirección de S ⇐⇒ d ≥ 0 , d = 0 y Ad = 0
Demostración:
x + μd ≥ 0
•
Direcciones extremas de S I.O. Introducción 41
M in 3x1 − x2
sujeto a −x1 + x2 + xh1 = 2
x1 − 2x2 + xh2 = 2
xj , xhi ≥ 0 ∀i, j = 1, 2
⎛ ⎞
3
⎜ ⎟
−1 1 1 0 2 ⎜ −1 ⎟
n=4 m=2 A= b= ⎜
c=⎜ ⎟
−2 ⎟
1 0 1 2 ⎝ 0 ⎠
0
⎝ ⎠
1
el concepto de dirección extrema como aquella dirección que no puede ser re-
presentada como combinación lineal positiva de direcciones distintas. Conviene
observar que no se exige en el caso de direcciones extremas que los coeficientes
de la combinación lineal sumen 1, exigiendo sólo que sean no negativos.
d = μ1 d 1 + μ2 d 2
d d1 d2
aj ∈ N verificando
(B, N ), y existe un vector columna B −1 aj ≤ 0 de forma que
−B −1 aj
d = αd0 , siendo α > 0 y d0 = .
ej
El vector d0 es de dimensión n y tiene dos partes diferenciadas:
Demostración :
dB −B −1 aj d1B d2B
d= = = μ1 + μ2
dN ej d1N d2N
d1t 1
N = (0, . . . , dj , . . . , 0) ∈ IR
n−m
d2t 2
N = (0, . . . , dj , . . . , 0) ∈ IR
n−m
Al ser B una base y ser 0 ≤ d = 0, se concluye que d1j > 0, puesto que
en caso contrario existirı́a una combinación lineal no nula de los vectores
columna de B igual al vector 0. Se concluye ası́ que
d1B = −d1j B −1 aj
d2B = −d2j B −1 aj
I.O. Introducción 44 Análisis teórico del problema
k
λl al = 0
l=1
λt = (λ1 , . . . , λk , 0, . . . , 0)
d1 = d + αλ ≥ 0
d2 = d − αλ ≥ 0
que, además, son no nulos por ser dj > 0 y λj = 0. Por otra parte, al
verificar
Direcciones extremas de S I.O. Introducción 45
Ad1 = Ad + αAλ = 0 + 0 = 0
Ad2 = Ad − αAλ = 0 + 0 = 0
1 1
se concluye que son direcciones de S verificando que d = 2d + 12 d2 ,
contradiciendo la hipótesis de ser d dirección extrema y demostrando que
el conjunto {a1 , . . . , ak } es linealmente independiente.
Se deduce entonces que k ≤ m y siempre se puede encontrar, al ser rg(A) =
m, un conjunto de m − k vectores para completar una base del espacio
vectorial IRm . Esta base B no puede contener al vector aj puesto que,
según se ha visto anteriormente, el conjunto de vectores {a1 , . . . , ak , aj }
es linealmente dependiente.
A partir de B se descompone la matriz A = (B, N ), con la propiedad de
que aj ∈ N . Al ser d una dirección, se verifica que
dB
0 = Ad = (B, N ) = BdB + aj dj
dN
0 0 −B −1 aj
d = dj d d =
ej
Se puede comprobar que en el ejemplo 2.3 existe una dirección extrema ca-
racterizada por la base B = (a1 , a2 ) y por el vector a3 según las condiciones del
teorema anterior. En efecto:
1 −1 1/3 −1/3 1 0
B= B −1 = B −1 = ≤0
−2 −1 −2/3 −1/3 1 −1
I.O. Introducción 46 Análisis teórico del problema
−1 1
A partir de B2 = (a1 , ah1 ) =
1 0
Eligiendo a2 , se verifica que
0 1 1 −2
B2−1 a2 = = ≤0
1 1 −2 −1
Teorema de representación de S I.O. Introducción 47
k
l
x= λi x i + μj d j
i=1 j=1
En el ejemplo 2.2, hay dos puntos extremos y no hay direcciones, por lo que
el conjunto de soluciones factibles se puede expresar según:
⎧ ⎛ ⎞ ⎛ ⎞ ⎫
⎪
⎪ 31/2 33 ⎪
⎪
⎨ ⎜ ⎟ ⎜ ⎟ ⎬
S= x = λ⎜
⎝ 7/2 ⎟
⎠ + (1 − λ) ⎜
⎝ 0 ⎟
⎠ / 0 ≤ λ ≤ 1⎪
⎪
⎪ ⎪
⎩ 0 7 ⎭
En el ejemplo 2.3, que sólo tiene un punto extremo y una dirección extrema,
el conjunto de soluciones factibles se puede expresar según:
⎧ ⎛ ⎞ ⎛ ⎞ ⎫
⎪
⎪ 0 0 ⎪
⎪
⎨ ⎜ ⎟ ⎜ ⎟ ⎬
S= x=⎜
⎝ 0 ⎟
⎠ + μ⎜
⎝ 1 ⎟
⎠ / μ ≥ 0⎪
⎪
⎪ ⎪
⎩ 1 1 ⎭
En el ejemplo 2.4, hay tres puntos extremos, asociados a las bases (ah1 , ah2 ),
(a1 , ah1 ) y (a2 , ah2 ), y dos direcciones extremas, d1 y d2 , por lo que el conjunto
de soluciones factibles se puede expresar según:
⎧ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞⎫⎞ ⎛ ⎞ ⎛
⎪
⎪ 0 2 0 ⎪
⎪ 1 2
⎪
⎪ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎪ ⎪
⎨ ⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ 2 ⎟ ⎜ 1 ⎟ ⎜ 1 ⎟⎬
⎜
S = x = λ1 ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟
⎪ ⎟ + λ 2 ⎜ 4 ⎟ + λ 3 ⎜ 0 ⎟ + μ 1 ⎜ 0 ⎟ + μ 2 ⎜ 1 ⎟⎪
⎪
⎪ ⎝ 2 ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠⎪ ⎪
⎪
⎩ ⎪
⎭
2 0 6 1 0
Teorema de representación de S I.O. Introducción 49
x2 −−−→
(1, 1)
(0, 2)
S
−−−→
(2, 1)
(0, 0) (2, 0) x1
k
l
ct x = λ i ct x i + μ j ct d j
i=1 j=1
Demostración:
El mı́nimo se alcanzarı́a asignando a μj el valor 0, en el caso de que existan
direcciones extremas, y
λs = 1 , λi = 0 ∀i = s
ct xs = M in{ct xi /1 ≤ i ≤ k}
siendo
I ∗ ≡ s ∈ {1, . . . , k} / ct xs = M in{ct xi /1 ≤ i ≤ k}
J ∗ ≡ r ∈ {1, . . . , l} / ct dr = 0
M in ct x
Ax =b
x ≥0
basándose en la proposición 2.2 y en los corolarios 2.2 y 2.3, del teorema 2.3, se
propone el siguiente algoritmo que determina, si es el caso, una solución óptima:
⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞
0 2 0 1 2
⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟
⎜ 0 ⎟ ⎜ 0 ⎟ ⎜ 2 ⎟ ⎜ 1 ⎟ ⎜ 1 ⎟
x =⎜
1 ⎟
⎜ 2 ⎟
2 ⎜
x =⎜ ⎟
⎟ x =⎜ 3 ⎟
⎜ 0 ⎟ d =⎜
1 ⎟
⎜ 0 ⎟ d =⎜
2 ⎟
⎜ 1 ⎟
⎝ ⎠ ⎝ 4 ⎠ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠
2 0 6 1 0
1. ct = (2, −3, 0, 0)
I.O. Introducción 52 Análisis teórico del problema
⎛ ⎞ ⎛ ⎞
1 2
⎜ ⎟ ⎜ ⎟
⎜ 1 ⎟ ⎜ 1 ⎟
t 1 ⎜
c d = (2, −3, 0, 0) ⎜ ⎟ = −1 < 0 c d = (2, −3, 0, 0) ⎜
t 2 ⎟
⎟ ⎜ 1 ⎟=1≥0
⎝ 0 ⎠ ⎝ ⎠
1 0
2. ct = (4, −3, 0, 0)
⎛ ⎞ ⎛ ⎞
1 2
⎜ ⎟ ⎜ ⎟
⎜ 1 ⎟ ⎜ 1 ⎟
ct d1 = (4, −3, 0, 0) ⎜ ⎟
⎜ 0 ⎟=1≥0 ct d2 = (4, −3, 0, 0) ⎜ ⎟
⎜ 1 ⎟=5≥0
⎝ ⎠ ⎝ ⎠
1 0
⎛ ⎞ ⎛ ⎞
0 2
⎜ ⎟ ⎜ ⎟
⎜ 0 ⎟ ⎜ 0 ⎟
ct x1 = (4, −3, 0, 0) ⎜ ⎟
⎜ 2 ⎟=0 ct x2 = (4, −3, 0, 0) ⎜ ⎟
⎜ 4 ⎟=8
⎝ ⎠ ⎝ ⎠
2 0
⎛ ⎞
0
⎜ ⎟
⎜ 2 ⎟
ct x3 = (4, −3, 0, 0) ⎜ ⎟
⎜ 0 ⎟ = −6
⎝ ⎠
6
⎧⎛ ⎞⎫
⎪
⎪ 0 ⎪ ⎪
⎪
⎪ ⎟⎪
⎨⎜⎜ 2 ⎟
⎪
⎬
S∗ = ⎜ ⎟
⎜ 0 ⎟⎪
⎪
⎪ ⎝ ⎠⎪
⎪
⎪ ⎪
⎪
⎩ ⎭
6
Teorema de representación de S I.O. Introducción 53
3. ct = (0, 1, 0, 0)
⎛ ⎞ ⎛ ⎞
1 2
⎜ ⎟ ⎜ ⎟
⎜ 1 ⎟ ⎜ 1 ⎟
ct d1 = (0, 1, 0, 0) ⎜ ⎟
⎜ 0 ⎟=1≥0 ct d2 = (0, 1, 0, 0) ⎜ ⎟
⎜ 1 ⎟=1≥0
⎝ ⎠ ⎝ ⎠
1 0
⎛ ⎞ ⎛ ⎞
0 2
⎜ ⎟ ⎜ ⎟
⎜ 0 ⎟ ⎜ 0 ⎟
ct x1 = (0, 1, 0, 0) ⎜ ⎟
⎜ 2 ⎟=0 ct x2 = (0, 1, 0, 0) ⎜ ⎟
⎜ 4 ⎟=0
⎝ ⎠ ⎝ ⎠
2 0
⎛ ⎞
0
⎜ ⎟
⎜ 2 ⎟
ct x3 = (0, 1, 0, 0) ⎜ ⎟
⎜ 0 ⎟=2
⎝ ⎠
6
⎧ ⎛ ⎞ ⎛ ⎞⎫ ⎧ ⎛ ⎞ ⎫
⎪
⎪ 0 2 ⎪
⎪ ⎪
⎪ 2 − 2λ ⎪
⎪
⎪
⎪ ⎟⎪⎪ ⎪
⎪ ⎜ ⎟ ⎪
⎪
⎨ ⎜ ⎟
⎜ 0 ⎟
⎜
⎜ ⎟
0 ⎟ ⎬ ⎨ ⎜ 0 ⎟ ⎬
S∗ = λ ⎜ ⎟ + (1 − λ) ⎜ = ⎜ ⎟ ; λ ∈ [0, 1]
⎪ ⎜ ⎟ ⎜ ⎟
4 ⎠⎪ ⎪ ⎜ ⎟ ⎪
⎪
⎪ ⎝ 2 ⎠ ⎝ ⎪
⎪
⎪ ⎪⎝ 4 − 2λ ⎠
⎪ ⎪
⎪
⎪
⎪
⎩ ⎭ ⎪ ⎩ ⎭
2 0 2λ
4. ct = (1, −1, 0, 0)
⎛ ⎞ ⎛ ⎞
1 2
⎜ ⎟ ⎜ ⎟
⎜ 1 ⎟ ⎜ 1 ⎟
t 1 ⎜
c d = (1, −1, 0, 0) ⎜ ⎟=0≥0 c d = (1, −1, 0, 0) ⎜
t 2 ⎟
⎟ ⎜ 1 ⎟=1≥0
⎝ 0 ⎠ ⎝ ⎠
1 0
I.O. Introducción 54 Análisis teórico del problema
⎛ ⎞ ⎛ ⎞
0 2
⎜ ⎟ ⎜ ⎟
⎜ 0 ⎟ ⎜ 0 ⎟
c x = (1, −1, 0, 0) ⎜
t 1 ⎟
⎜ 2 ⎟=0
t 2 ⎜
c x = (1, −1, 0, 0) ⎜ ⎟=2
⎟
⎝ ⎠ ⎝ 4 ⎠
2 0
⎛ ⎞
0
⎜ ⎟
⎜ 2 ⎟
t 3 ⎜
c x = (1, −1, 0, 0) ⎜ ⎟ = −2
⎟
⎝ 0 ⎠
6
⎧⎛ ⎞ ⎛ ⎞ ⎧⎛⎫ ⎞ ⎫
⎪
⎪ 0 1 ⎪
⎪ ⎪
⎪ μ1 ⎪
⎪
⎪
⎪ ⎪ ⎪ ⎪
⎨⎜ ⎟
⎜ 2 ⎟
⎜
⎜
⎟
1 ⎟
⎪
⎨ ⎜
⎪
⎬
⎜
⎟
⎟
⎪
⎬
∗
S = ⎜⎜ ⎟ + μ1 ⎜ ⎟ ; μ1 ≥ 0 = ⎜ 2 + μ1 ⎟ ; μ1 ≥ 0
⎪ ⎟ ⎜ ⎟ ⎪ ⎪ ⎜ ⎟ ⎪
⎪
⎪ ⎝ 0 ⎠ ⎝ 0 ⎠ ⎪
⎪ ⎪⎝ 0 ⎠ ⎪
⎪
⎩ ⎪ ⎪
⎭ ⎪
⎩
⎪
⎪
⎭
6 1 6 + μ1
es decir, hay que invertir más de 2 billones de matrices con 15 filas y columnas.
En el siguiente capı́tulo se detalla un algoritmo, el algoritmo del simplex,
que de una forma muy eficiente resuelve el problema de programación lineal.
Demostración del teorema de representación (*) I.O. Introducción 55
2 2 2 2
a + b + a − b = 2 a + 2 b
2 2 2
a + b = a + b + 2at b
2 2 2
a − b = a + b − 2at b
y y
x x
S S
xk − xm 2 = 2 xk − y 2 +2 xm − y 2 − xk + xm − 2y 2 =
xm + xk
= 2 xk − y 2 +2 xm − y 2 −4 − y 2 ≤
2
≤ 2 xk − y 2 +2 xm − y 2 −4γ 2
xm + xk
∈ S,
2
Demostración del teorema de representación (*) I.O. Introducción 57
xm + xk
− y ≥ γ
2
Si k, m → ∞ se verifica
xk − y , xm − y → γ
xk − xm → 0
⇐) Considerando que
x − y = (x − x) + (x − y)
se concluye que
y − x 2 ≤ y − x 2 ∀x ∈ S
x + λ(x − x) ∈ S
λ2 x − x 2 +2λ(x − x)t (x − y) ≥ 0
Dividiendo los dos miembros de la desigualdad por λ, para que sea cierta
la desigualdad anterior, es necesario que se verifique
(x − x)t (x − y) ≥ 0 ∀x ∈ S
Demostración:
Demostración del teorema de representación (*) I.O. Introducción 59
Al verificarse las hipótesis del teorema 2.4, existe un único punto x̄ que
minimiza la distancia entre y y S verificándose, además, que x ∈ S, y que
(x − x)t (y − x) ≤ 0 ∀x ∈ S
Esta última desigualdad es equivalente a
(y − x̄)t x ≤ (y − x̄)t x̄ ∀x ∈ S
Introduciendo el vector
p ≡ y − x̄ = 0
y el escalar
α ≡ (y − x̄)t x̄
pt x ≤ pt x̄ = α ∀x ∈ S
0 < p 2 = pt (y − x̄)
pt y > pt x̄ = α
pt y > α ≥ pt x ∀x ∈ S
pt x = α y
p=y−x
x
es decir
⎧ ⎫
⎨k l
k
⎬
Λ= λi x i + μj dj / λi , μj ≥ 0 ∀i = 1, . . . , k ∀j = 1, . . . , l; λi = 1
⎩ ⎭
i=1 j=1 i=1
pt s > α ≥ pt x ∀x ∈ Λ
lo cual contradirı́a
pt x ≤ α ∀x ∈ Λ
2. pt xi ≤ α ∀i = 1, . . . , k
Sólo hay que considerar λi = 1 y λh = 0 ∀h = i y μj = 0 ∀j = 1, . . . , l.
pt x = máx {pt xi }
1≤i≤k
−ptB B −1 aj + pj ≤ 0
Ax̄ = B B −1 b − λB −1 aj + λaj = b
El que B sea base se garantiza al ser yrj = 0. Por consiguiente, x̄ es también
un punto extremo de S por el teorema de representación.
Sólo queda, por último, llegar a una contradicción al haber supuesto que
S ⊂ Λ. La contradicción se verifica al comprobar que este nuevo punto extre-
mo x al ser multiplicado escalarmente por p alcanza un valor mayor que el
correspondiente a x, que era, por definición el máximo posible:
t B −1 b − λyj
px= (ptB , ptN ) = ptB B −1 b − λptB yj + λpj =
λej