Sunteți pe pagina 1din 90

Capítulo 6: El algoritmo simplex

Optimización – ICS1113

Mathias Klapp - 2018


Resumen de clases anteriores
• Solución Gráfica (revisitada)

• Forma Canónica y Estándar

• Geometría Poliedral

• Caracterización de soluciones óptimas en LP


❖ Solución básica y relación con vértices

❖ Introducción al algoritmo simplex (Fase II)

❖ Costos reducidos

❖ Casos especiales:
• Solución múltiple
• No acotamiento
• Degenerancia y ciclaje

❖ Fase I y problemas infactibles


Una forma simplista de optimizar
¡Probar todo vértice!
En general esto es una mala idea:
100
• Problema con 100 rest. y 50 vars. tiene hasta ≈ 1029 vértices.
50
• Supongamos un supercomputador con mil núcleos que evalúa 5 × 109
vértices por segundo (más que 5GHZ).
• Demoraría 2 × 1016 segundos ≈ 634 años.
Recordemos
Todo LP se puede escribir en forma estándar:
min 𝑐 𝑇 𝑥 s.t. 𝐴𝑥 = 𝑏
𝑥≥0

, donde 𝑐 ∈ ℝ𝑛 , 𝑏 ∈ ℝ𝑚
+ , 𝐴 ∈ ℝ 𝑚×𝑛 son datos.

Tres situaciones posibles:


1. El problema es no acotado (𝑣 ∗ → −∞)
2. El dominio es vacío: (𝑣 ∗ → ∞)
3. El problema admite solución óptima en un vértice.

Lección de clases pasadas: Si un problema lineal en forma


estándar tiene solución óptima, entonces tiene una en un vértice.
Ejemplo
Tomemos el ejemplo de la clase pasada en estándar (min 𝑐 𝑇 𝑥 s.t. 𝐴𝑥 = 𝑏)
𝑥≥0

max 3𝑥1 + 8𝑥2 s.t. min −3𝑥1 − 8𝑥2 s.t.


𝑥1 ,𝑥2 ≥0 𝑥≥0
2𝑥1 + 4𝑥2 ≤ 1600 2𝑥1 + 4𝑥2 + 𝑥3 = 1600
6𝑥1 + 2𝑥2 ≤ 1800 6𝑥1 + 2𝑥2 + 𝑥4 = 1800
𝑥2 ≤ 350 𝑥2 + 𝑥5 = 350

2 4 1 0 0
𝐴= 6 2 0 1 0
0 1 0 0 1

𝑐 𝑇 = −3 −8 0 0 0 Notación:
• 𝑎𝑖 es la fila 𝑖 de 𝐴
𝑏𝑇 = 1600 1800 350 • 𝐴𝑗 es la columna 𝑗 de 𝐴
• 𝐴 𝑖,𝑗,𝑘 es la submatriz formada por el
𝑛 = 5, 𝑚 = 3 conjunto de columnas {𝑖, 𝑗, 𝑘}.
• 𝑎𝑖𝑗 es el elemento (𝑖, 𝑗) de 𝐴
Base
Consideremos el sistema 𝐴𝑥 = 𝑏 del ejemplo con 𝑚 = 3 restricciones:
𝑥1 𝑥2 𝑥3 𝑥4 𝑥5
2 4 1 0 0 1600
6 2 0 1 0 𝑥 = 1800
0 1 0 0 1 350

Una Base 𝐵 es un subconjunto de 𝑚 índices de variables 𝐵 ⊂


{1, … , 𝑛}.

Por ejemplo: 𝐵1 = {1,2,3}, 𝐵2 = {1,2,4}, 𝐵3 = {3,4,5}

La matriz 𝐴𝐵 ∈ ℝ𝑚 se denomina matriz base y es invertible cuando


𝑟𝑎𝑛𝑘 𝐴 = 𝑚 (𝐴 de rango máximo).
2 4 1 2 4 0 1 0 0
𝐴𝐵1 = 6 2 0 𝐴𝐵2 = 6 2 1 𝐴𝐵3 = 0 1 0
0 1 0 0 1 0 0 0 1
Solución Básica

Dada una base 𝐵 se define:


• 𝑥𝐵 = 𝑥𝑖 𝑖∈𝐵 ∈ ℝ𝑚 el vector de variables básicas.
• 𝑥𝐷 = 𝑥𝑖 𝑖∉𝐵 ∈ ℝ𝑛−𝑚 el vector de variables no básicas.

Dada 𝐵 se puede reescribir 𝐴𝑥 = 𝑏 como 𝐴𝐵 𝑥𝐵 + 𝐴𝐷 𝑥𝐷 = 𝑏

La Solución Básica asociada a 𝐵 de 𝐴𝑥 = 𝑏 se define como:


• 𝑥D = 0
• 𝑥𝐵 = 𝐴−1𝐵 𝑏

Es factible si 𝐴−1
𝐵 𝑏 ≥0
Solución Básica: 𝑩 = 𝟏, 𝟐, 𝟑
2 4 1 0 0 1600
6 2 0 1 0 𝑥 = 1800
0 1 0 0 1 350

Hacemos 𝑥𝐷 = 0: 𝑥4 = 0, 𝑥5 = 0

Resolvemos 𝐴𝐵 𝑥𝐵 = 𝑏:
2 4 1 1600
6 2 0 𝑥 = 1800
0 1 0 350

𝑥1 = 183,3; 𝑥2 = 350; 𝑥3 = −166,7

Solución básica infactible!


Solución Básica: 𝑩 = 𝟑, 𝟒, 𝟓

2 4 1 0 0 1600
6 2 0 1 0 𝑥 = 1800
0 1 0 0 1 350

Hacemos 𝑥𝐷 = 0: 𝑥1 = 0, 𝑥2 = 0

Resolvemos:
1 0 0 1600
0 1 0 𝑥 = 1800
0 0 1 350

Solución básica factible!


Una solución básica factible es un vértice

Teorema:
Dado 𝐵, si su solución básica 𝑥𝐵 es factible (𝑥𝐵 ≥ 0), entonces:
𝑥𝐵
𝑥= ∈ ℝ𝑛 es un vértice de {𝑥 ∈ ℝ𝑛+ : 𝐴𝑥 = 𝑏}.
0
Una solución básica factible es un vértice

min −3𝑥1 − 8𝑥2 s.t.


𝑥≥0
2𝑥1 + 4𝑥2 + 𝑥3 = 1600
6𝑥1 + 2𝑥2 + 𝑥4 = 1800
𝑥2 + 𝑥5 = 350
𝐵 = (1,2,4) 𝐵 = (1,2,3)

𝐵 = (2,3,4)
𝐵 = (1,2,5)

𝐵 = (3,4,5) 𝐵 = (1,3,5)
❖ Solución básica y relación con vértices

❖ Introducción al algoritmo simplex (Fase II)

❖ Costos reducidos

❖ Casos especiales:
• Solución múltiple
• No acotamiento
• Degenerancia y ciclaje

❖ Fase I y problemas infactibles


Optimicemos el ejemplo inicial algebraicamente

Iniciamos búsqueda en el vértice donde es más fácil calcular 𝐴−1


𝐵 :
el origen
min −3𝑥1 − 8𝑥2 s.t.
𝑥≥0
2𝑥1 + 4𝑥2 + 𝑥3 = 1600
6𝑥1 + 2𝑥2 + 𝑥4 = 1800
𝑥2 + 𝑥5 = 350

Iteración 1: 𝑩 = {𝟑, 𝟒, 𝟓}
Despejamos las variable básicas 𝑥𝐵 + 𝐴−1
𝐵 𝐴 𝑥
𝐷 𝐷 = 𝐴−1
𝐵 𝑏
anulando las variables no básicas:
𝐴 ҧ𝐷 𝑏ത
𝑥3 = 1600 − 2𝑥1 − 4𝑥2 = 1600
𝑥4 = 1800 − 6𝑥1 − 2𝑥2 = 1800
𝑥5 = 350 − 0𝑥1 − 𝑥2 = 350
𝐵 = {3,4,5}

min −3𝑥1 − 8𝑥2 s.t.


𝑥≥0
2𝑥1 + 4𝑥2 + 𝑥3 = 1600
6𝑥1 + 2𝑥2 + 𝑥4 = 1800
𝑥2 + 𝑥5 = 350


𝑥𝐵 + 𝐴ҧ𝐷 𝑥𝐷 = 𝑏, con 𝐴ҧ𝐷 = 𝐴−1
𝐵 𝐴 𝐷 y ത
𝑏 = 𝐴−1
𝐵 𝑏

Análisis del objetivo en función de las variables no básicas:


𝑧 = 𝑐𝑇 𝑥
= 𝑐𝐵𝑇 𝑥𝐵 + 𝑐𝐷𝑇 𝑥𝐷
= 𝑐𝐵𝑇 𝑏ത − 𝐴ҧ𝐷 𝑥𝐷 + 𝑐𝐷𝑇 𝑥𝐷
𝑧 = 𝑐𝐵𝑇 𝑏ത + 𝑐𝐷𝑇 − 𝑐𝐵𝑇 𝐴ҧ𝐷 𝑥𝐷

𝑧𝐵 𝑟𝐷𝑇 : costos reducidos


Iteración 1: 𝐵 = {3,4,5}

min −3𝑥1 − 8𝑥2 s.t.


𝑥≥0
2𝑥1 + 4𝑥2 + 𝑥3 = 1600
6𝑥1 + 2𝑥2 + 𝑥4 = 1800
𝑥2 + 𝑥5 = 350

𝑇 ҧ
𝑧 = 𝑧𝐵 + 𝑟𝐷𝑇 𝑥𝐷 = 𝑐𝐵𝑇 𝐴−1
𝐵 𝑏 + (𝑐𝐷
𝑇
− 𝑐𝐵 𝐴𝐷 )𝑥𝐷
• 𝑧𝐵 = 𝑐𝐵𝑇 𝑏ത = 0 0 0 1600 1800 350 𝑇
=0
• 𝑟𝐷𝑇 = 𝑐𝐷𝑇 − 𝑐𝐵𝑇 𝐴ҧ𝐷 = −3 − 8

𝑧 = 0 − 3𝑥1 − 8𝑥2
𝑟1 = −3 (objetivo baja 3 por aumento unitario de 𝑥1 )
𝑟2 = −8 (objetivo baja 8 por aumento unitario de 𝑥2 )
Subamos el valor de 𝑥2
¿Cuánto puede subir 𝑥2 ? (actualmente igual a cero)
𝑥3
𝑥𝐵 + 𝐴ҧ𝐷 𝑥𝐷 = 𝑏ത 2 4 𝑥
𝑥4 + 6 2 1
1600
𝑥2 = 1800
𝑥5 0 1 350

𝑥4

𝑥3
𝑥1 = 0

𝑥5
𝑥2

𝑥2 puede subir hasta min (1600/4; 1800/2; 350/1) = 350.


En general, la variable entrante 𝑥𝑗 puede subir hasta min𝑘∈ 𝐵:𝑎ത𝑘𝑗 >0 𝑏ത𝑘 /𝑎ത𝑘𝑗
¿Cuánto puede subir 𝑥2 ? (actualmente igual a cero)
𝑥3
𝑥𝐵 + 𝐴ҧ𝐷 𝑥𝐷 = 𝑏ത 2 4 𝑥
𝑥4 + 6 2 1
1600
𝑥2 = 1800
𝑥5 0 1 350

𝑥4

𝑥3
𝑥1 = 0

𝑥5
𝑥2

La primera variable básica que se anula al incrementar 𝑥2 es 𝑥5 .


Cambio de Base: Entra 𝑥2 y sale 𝑥5 , nueva base 𝐵 = {3,4,2}
Iteración 2: 𝐵 = {3,4,2}

min −3𝑥1 − 8𝑥2 s.t.


𝑥≥0
2𝑥1 + 4𝑥2 + 𝑥3 = 1600
6𝑥1 + 2𝑥2 + 𝑥4 = 1800
𝑥2 + 𝑥5 = 350
ത con 𝐴ҧ𝐷 = 𝐴−1
Despejamos la base: 𝑥𝐵 + 𝐴ҧ𝐷 𝑥𝐷 = 𝑏, ത −1
𝐵 𝐴𝐷 y 𝑏 = 𝐴𝐵 𝑏

1 0 4 1 0 −4
𝐴𝐵 = 0 1 2 → 𝐴−1
𝐵 = 0 1 −2
0 0 1 0 0 1

1 0 −4 2 0 2 −4
𝐴ҧ𝐷 = 0 1 −2 6 0 = 6 −2
0 0 1 0 1 0 1

1 0 −4 1600 200
𝑏ത = 0 1 −2 1800 = 1100
0 0 1 350 350
Iteración 2: 𝐵 = {3,4,2}

min −3𝑥1 − 8𝑥2 s.t.


𝑥≥0
2𝑥1 + 4𝑥2 + 𝑥3 = 1600
6𝑥1 + 2𝑥2 + 𝑥4 = 1800
𝑥2 + 𝑥5 = 350
ത con 𝐴ҧ𝐷 = 𝐴−1
Despejamos la base: 𝑥𝐵 + 𝐴ҧ𝐷 𝑥𝐷 = 𝑏, ത −1
𝐵 𝐴𝐷 y 𝑏 = 𝐴𝐵 𝑏

𝑥3 2 −4 𝑥 200
𝑥4 + 6 −2 1 = 1100
𝑥5
𝑥2 0 1 350
Gráficamente: 3,4,5 → {3,4,2}
El cambio de base produjo movimiento a vértice vecino

min −3𝑥1 − 8𝑥2 s.t.


𝑥≥0
2𝑥1 + 4𝑥2 + 𝑥3 = 1600
6𝑥1 + 2𝑥2 + 𝑥4 = 1800
𝑥2 + 𝑥5 = 350

𝐵 = (3,4,2)

𝐵 = (3,4,5)
Iteración 2: 𝐵 = {3,4,2}
𝑥3 2 −4 𝑥 200
min −3𝑥1 − 8𝑥2 s.t. 1
𝑥≥0 𝑥4 + 6 −2 𝑥 = 1100
2𝑥1 + 4𝑥2 + 𝑥3 = 1600 5
𝑥2 0 1 350
6𝑥1 + 2𝑥2 + 𝑥4 = 1800
𝑥2 + 𝑥5 = 350

𝑇 ҧ
𝑧 = 𝑧𝐵 + 𝑟𝐷𝑇 𝑥𝐷 = 𝑐𝐵𝑇 𝐴−1
𝐵 𝑏 + (𝑐𝐷
𝑇
− 𝑐𝐵 𝐴𝐷 )𝑥𝐷
• 𝑧𝐵 = 𝑐𝐵𝑇 𝑏ത = 0 0 − 8 𝑇
200 1100 350
= −2800 𝑇
2 −4
𝑇 𝑇 𝑇 ҧ
• 𝑟𝐷 = 𝑐𝐷 − 𝑐𝐵 𝐴𝐷 = −3 0 − [0 0 − 8] 6 −2 = −3 8
0 1

𝑧 = −2800 − 3𝑥1 + 8𝑥5


𝑟1 = −3 (objetivo baja 3 por aumento unitario de 𝑥1 )
𝑟2 = 8 (objetivo sube 8 por aumento unitario de 𝑥5 )
Subamos el valor de 𝑥1
¿Cuánto puede subir 𝑥1 ? (actualmente igual a cero)
𝑥3 2 −4 𝑥 200
𝑥𝐵 + 𝐴ҧ𝐷 𝑥𝐷 = 𝑏ത 𝑥4 + 6 1
−2 𝑥 = 1100
5
𝑥2 0 1 350

200 1100
𝑥1 puede subir hasta min( ; ; ⋅ ) = 100.
2 6

Cambio de Base: Entra 𝑥1 y sale 𝑥3 , nueva base 𝐵 = {1,4,2}


Iteración 3: 𝐵 = {1,4,2}

min −3𝑥1 − 8𝑥2 s.t.


𝑥≥0
2𝑥1 + 4𝑥2 + 𝑥3 = 1600
6𝑥1 + 2𝑥2 + 𝑥4 = 1800
𝑥2 + 𝑥5 = 350
ത con 𝐴ҧ𝐷 = 𝐴−1
Despejamos la base: 𝑥𝐵 + 𝐴ҧ𝐷 𝑥𝐷 = 𝑏, ത −1
𝐵 𝐴𝐷 y 𝑏 = 𝐴𝐵 𝑏
1
2 0 4 0 −2
2
𝐴𝐵 = 6 1 2 → 𝐴−1
𝐵 = −3 1 10
0 0 1 0 0 1
1 1
0 −2 1 0 −2
2 2
𝐴ҧ𝐷 = −3 1 10 0 0 = −3 10
0 0 1 0 1 0 1
1
0 −2 1600 100
2
𝑏ത = −3 1 10 1800 = 500
0 0 1 350 350
Iteración 3: 𝐵 = {1,4,2}

min −3𝑥1 − 8𝑥2 s.t.


𝑥≥0
2𝑥1 + 4𝑥2 + 𝑥3 = 1600
6𝑥1 + 2𝑥2 + 𝑥4 = 1800
𝑥2 + 𝑥5 = 350
ത con 𝐴ҧ𝐷 = 𝐴−1
Despejamos la base: 𝑥𝐵 + 𝐴ҧ𝐷 𝑥𝐷 = 𝑏, ത −1
𝐵 𝐴𝐷 y 𝑏 = 𝐴𝐵 𝑏
1
2 0 4 0 −2
2
𝐴𝐵 = 6 1 2 → 𝐴−1
𝐵 = −3 1 10
0 0 1 0 0 1
1 1
0 −2 1 0 −2
2 2
𝐴ҧ𝐷 = −3 1 10 0 0 = −3 10
0 0 1 0 1 0 1
1
0 −2 1600 100
2
𝑏ത = −3 1 10 1800 = 500
0 0 1 350 350
Iteración 3: 𝐵 = {1,4,2}

min −3𝑥1 − 8𝑥2 s.t.


𝑥≥0
2𝑥1 + 4𝑥2 + 𝑥3 = 1600
6𝑥1 + 2𝑥2 + 𝑥4 = 1800
𝑥2 + 𝑥5 = 350

𝑥1 1
−2 𝑥3 100
𝑥4 + 2
−3 10 𝑥5 = 500
𝑥2 350
0 1
Gráficamente: 3,4,2 → {1,4,2}

min −3𝑥1 − 8𝑥2 s.t.


𝑥≥0
2𝑥1 + 4𝑥2 + 𝑥3 = 1600
6𝑥1 + 2𝑥2 + 𝑥4 = 1800
𝐵 = (1,4,2) 𝑥2 + 𝑥5 = 350
𝐵 = (3,4,2)

𝐵 = (3,4,5)
Iteración 3: 𝐵 = {1,4,2}

min −3𝑥1 − 8𝑥2 s.t. 𝑥1 1


𝑥≥0 −2 𝑥3 100
𝑥4 + 2 = 500
2𝑥1 + 4𝑥2 + 𝑥3 = 1600 𝑥2 −3 10 𝑥5
350
6𝑥1 + 2𝑥2 + 𝑥4 = 1800 0 1
𝑥2 + 𝑥5 = 350
𝑇 ҧ
𝑧 = 𝑧𝐵 + 𝑟𝐷𝑇 𝑥𝐷 = 𝑐𝐵𝑇 𝐴−1
𝐵 𝑏 + (𝑐𝐷
𝑇
− 𝑐𝐵 𝐴𝐷 )𝑥𝐷
• 𝑧𝐵 = 𝑐𝐵𝑇 𝑏ത = −3 0 − 8 𝑇
100 500 350 = −3100
1
−2
𝑇 𝑇 𝑇 ҧ 2
• 𝑟𝐷 = 𝑐𝐷 − 𝑐𝐵 𝐴𝐷 = 0 0 − [−3 0 − 8] −3 10 = 3/2 2
0 1
𝑧 = −3100 + 3/2𝑥3 + 2𝑥5
𝑟3 = 3/2 (objetivo sube 3/2 por aumento unitario de 𝑥3 )
𝑟5 = 2 (objetivo sube 2 por aumento unitario de 𝑥5 )

Solución óptima: 𝑥 ∗ = [100 350 0 500 0]


Valor óptimo: 𝑣 ∗ = −3100
¡No revisamos todos los vértices!

min −3𝑥1 − 8𝑥2 s.t.


𝑥≥0
2𝑥1 + 4𝑥2 + 𝑥3 = 1600
6𝑥1 + 2𝑥2 + 𝑥4 = 1800
𝐵 = (1,4,2) 𝑥2 + 𝑥5 = 350
𝐵 = (3,4,2)

𝐵 = (3,4,5)
Ejecutamos el algoritmo simplex (fase 2)

• Método que inicia en un vértice factible del dominio y transita


iterativamente hacia vértices vecinos (que difieren en una
variable básica) nunca empeorando el valor objetivo.

• En cada vértice visitado se verifican los costos reducidos.

• Si existe uno costo reducido negativo (∃𝑗 ∈ 𝐷: 𝑟𝑗 < 0) ,


entonces el método se desplaza a un vértice vecino que
potencialmene mejora el valor de la función objetivo.

• Si no existe un movimiento hacia un vértice vecino que


pueda mejorar el objetivo (𝑟𝐷 ≥ 0), entonces hay garantía
de optimalidad.
Análisis matricial del algoritmo SIMPLEX

Dada base 𝐵, reformulamos min{𝑐 𝑇 𝑥 𝑠. 𝑡. 𝐴𝑥 = 𝑏} como:


𝑥≥0

min 𝑐𝐵𝑇 𝑏ത + 𝑐𝐷𝑇 − 𝑐𝐵𝑇 𝐴ҧ𝐷 𝑥𝐷


𝑥≥0
s.t. 𝑥𝐵 + 𝐴ҧ𝐷 𝑥𝐷 = 𝑏ത
, donde 𝐴ҧ𝐷 = 𝐴−1 ത −1
𝐵 𝐴𝐷 y 𝑏 = 𝐴𝐵 𝑏

La solución básica asociada es factible si: 𝑏ത = 𝐴−1


𝐵 𝑏 ≥0

Valor objetivo de la solución básica es: 𝑧𝐵 = 𝑐𝐵𝑇 𝑏ത

Solución básica asociada es óptima si 𝑟𝐷𝑇 = 𝑐𝐷𝑇 − 𝑐𝐵𝑇 𝐴ҧ𝐷 ≥ 0


El algoritmo simplex
Desarrollado a mediados del siglo XX por
George Bernard Dantzig (1914-2005)

El ``Padre de la Programación Lineal’’

Largometraje ``Good Will Hunting’’ está


supuestamente basado en él.

Ver historia.
El algoritmo simplex

Paso Inicial
FASE I Encontrar un vértice del dominio, es decir,
una solución base factible

Paso Iterativo
Traslado a un mejor vértice

FASE II
NO
Prueba de Optimalidad
¿Es óptima la solución? FIN
SI
Algoritmo simplex (fase 2)

1. Entrada: 𝐴, 𝑏, 𝑐 en forma estándar y solución base 𝐵 factible.

2. Calcular base:
𝑏ത = 𝐴−1
𝐵 𝑏
𝐴ҧ𝐷 = 𝐴−1𝐵 𝐴𝐷
𝑟𝐷𝑇 = 𝑐𝐷𝑇 − 𝑐𝐵𝑇 𝐴ҧ𝐷

3. Prueba de Optimalidad:
ത 0], 𝑧𝐵∗ = 𝑐𝐵𝑇 𝑏ത
a) Si 𝑟𝐷 ≥ 0: retornar: 𝑥 ∗ = [𝑥𝐵 , 𝑥𝐷 ] = [𝑏,
b) Si ∃𝑗 ∈ 𝐷: 𝑟𝑗 < 0:
• Ingresar variable 𝑗 a la base
• Sacar variable 𝑘 = 𝑎𝑟𝑔𝑚𝑖𝑛𝑘∈ 𝐵:𝑎ത𝑘𝑗 >0 𝑏ത𝑘 /𝑎ത𝑘𝑗
• Cambiar base: 𝐵 ← 𝐵\{𝑘} ∪ {𝑗}
• Ir a paso 2.
Diferentes caminos llevan al óptimo

• Objetivo no empeora si variable entrante tiene costo reducido


negativo.
• No requiere ingresar la variable de costo reducido más negativo.
• En ejemplo podría haber ingresar 𝑥1 al comienzo (en vez de 𝑥2 )

?
❖ Solución básica y relación con vértices

❖ Introducción al algoritmo simplex (Fase II)

❖ Costos reducidos

❖ Casos especiales:
• Solución múltiple
• No acotamiento
• Degenerancia y ciclaje

❖ Fase I y problemas infactibles


Significado del costo reducido
Analizemos 𝑟 𝑇 = 𝑐 𝑇 − 𝑐𝐵𝑇 𝐴ҧ = 0 𝑐𝐷𝑇 − 𝑐𝐵𝑇 𝐴ҧ𝐷

𝑟𝑗 indica tasa de cambio de valor objetivo por aumento unitario de 𝑥𝑗 (si la


base no cambia)
𝑑𝑧
𝑟𝑗 = อ = 𝑐𝑗 − 𝑐𝐵𝑇 𝐴𝑗ҧ
𝑑𝑥𝑗
𝐵 𝑐𝑡𝑒

3 𝑇
En el ejemplo: 𝑟 = 0; 0; 2 ; 0; 2 . Geométricamente, son los multiplicadores de
gradientes de restricciones que forman el gradiente objetivo de maximización.

3 3 2 0
= +2
8 2 4 1
(3,8)
(0,1) (2,4)
Precio sombra (de una restricción)

El vector de precios sombra 𝜋 ∈ ℝ𝑚 asociado a una base 𝐵 se


se define como:
𝜋 = 𝐴−1𝐵
𝑇𝑐
𝐵

Cada 𝜋𝑖 indica tasa de cambio del valor objetivo al haber un


aumento unitario del recurso 𝑏𝑖 (manteniendo la base).

¿Por qué? Consideremos la variable de holgura 𝑥ℎ de la 𝑖 −esima


restricción: 𝑎𝑖𝑇 𝑥 + 𝑥ℎ = 𝑏𝑗 . Su costo reducido es:
𝑟ℎ = 𝑐ℎ − 𝑐𝐵𝑇 𝐴ҧℎ
𝑟ℎ = 𝑐ℎ − 𝜋 𝑇 𝐴ℎ
𝑟ℎ = −𝜋𝑖
𝑑z 𝑇 3
Luego, = −𝑟ℎ = 𝜋𝑖 . En ejemplo 𝜋 = − 2
0 −2
𝑑𝑏𝑖
❖ Solución básica y relación con vértices

❖ Introducción al algoritmo simplex (Fase II)

❖ Costos reducidos

❖ Casos especiales:
• Solución múltiple
• No acotamiento
• Degenerancia y ciclaje

❖ Fase I y problemas infactibles


Ejemplo 2

m𝑎𝑥 2𝑥1 + 𝑥2 s.t.


𝑥≥0
−𝑥1 + 3𝑥2 ≤ 9
2𝑥1 + 𝑥2 ≤ 6

Forma estándar:
m𝑖𝑛 −2𝑥1 − 𝑥2 s.t.
𝑥≥0
−𝑥1 + 3𝑥2 + 𝑥3 = 9
2𝑥1 + 𝑥2 + 𝑥4 = 6
Iteración 1: 𝐵 = {3,4}

Calculamos base: m𝑖𝑛 −2𝑥1 − 𝑥2 s.t.


1 0 𝑥≥0
𝐴−1
𝐵 = −𝑥1 + 3𝑥2 + 𝑥3 = 9
0 1
9 2𝑥1 + 𝑥2 + 𝑥4 = 6
𝑏ത = 𝐴−1
𝐵 𝑏 =
6
𝑧𝐵 = 𝑐𝐵 𝑏ത = 0
−1 3
𝐴ҧ𝐷 = 𝐴−1
𝐵 𝐴𝐷 =
2 1
𝑟𝐷 = 𝑐𝐷𝑇 − 𝑐𝐵𝑇 𝐴ҧ𝐷 = [−2 −1]

No es óptimo.

6
• Entra 𝑥1 : min ⋅;
= 3, sale 𝑥4
2
• Cambio de base 3,4 → {3,1}
Iteración 2: 𝐵 = {3,1}

Calculamos base: m𝑖𝑛 −2𝑥1 − 𝑥2 s.t.


1 1/2 𝑥≥0
𝐴−1
𝐵 = −𝑥1 + 3𝑥2 + 𝑥3 = 9
0 1/2
𝑏ത =
12 2𝑥1 + 𝑥2 + 𝑥4 = 6
3
𝑧𝐵 = −6
ҧ 7/2 1/2
𝐴𝐷 =
1/2 1/2
𝑟𝐷 = [0 1]

Es óptimo, pero 𝑥2 fuera de base con 𝑟2 = 0. El cambio de base no


altera el objetivo, es decir, hay otro vértice con igual valor.
SOLUCIÓN ÓPTIMA MÚLTIPLE
12 3
• Entra 𝑥2 : min ; = 24/7, sale 𝑥3
7/2 1/2
• Cambio de base 3,1 → {2,1}
Iteración 3: 𝐵 = {2,1}

Calculamos base: m𝑖𝑛 −2𝑥1 − 𝑥2 s.t.


2/7 1/7 𝑥≥0
𝐴−1
𝐵 = −𝑥1 + 3𝑥2 + 𝑥3 = 9
−1/7 3/7
ത 24/7 2𝑥1 + 𝑥2 + 𝑥4 = 6
𝑏=
9/7
𝑧𝐵 = −6
2/7 1/7
𝐴ҧ𝐷 =
−1/7 3/7
𝑟𝐷 = [0 1]

También hay óptimalidad. Esta vez 𝑥3 fuera de base con 𝑟3 = 0.


Toda combinación convexa de soluciones óptimas es solución
óptima (¿Por qué?). El conjunto de soluciones óptimas es:
3 9/7
24/7
𝑋∗ = 𝜆 ⋅ 0 + 1 − 𝜆 ⋅ : 𝜆 ∈ 0,1
12 0
0 0
Gráficamente: Solución Múltiple

Gráficamente: m𝑎𝑥 2𝑥1 + 𝑥2 s.t. m𝑖𝑛 −2𝑥1 − 𝑥2 s.t.


𝑥≥0 𝑥≥0
−𝑥1 + 3𝑥2 ≤ 9 −𝑥1 + 3𝑥2 + 𝑥3 = 9
2𝑥1 + 𝑥2 ≤ 6 2𝑥1 + 𝑥2 + 𝑥4 = 6

3 9/7
24/7
𝑋∗ = 𝜆 ⋅ 0 + 1 − 𝜆 ⋅ : 𝜆 ∈ 0,1
12 0
0 0
Solución Múltiple

Hay un vértice óptimo adicional por cada costo reducido nulo en


una base óptima.

Conjunto completo de soluciones óptimas es la combinación


convexa de los vértices óptimos encontrados.

Recomendación del Chef: Estudiar el siguiente problema


𝑚𝑎𝑥 −8𝑥3 s.t.
𝑥≥0
𝑥1 + 3𝑥2 + 2𝑥3 ≤ 2
2𝑥1 + 4𝑥2 + 5𝑥3 ≤ 5
❖ Solución básica y relación con vértices

❖ Introducción al algoritmo simplex (Fase II)

❖ Costos reducidos

❖ Casos especiales:
• Solución múltiple
• No acotamiento
• Degenerancia y ciclaje

❖ Fase I y problemas infactibles


Ejemplo 3

m𝑎𝑥 2𝑥2 s.t.


𝑥≥0
𝑥1 − 𝑥2 ≤ 6
2𝑥1 − 3𝑥2 ≤ 8

Forma estándar:
m𝑖𝑛 −2𝑥2 s.t.
𝑥≥0
𝑥1 − 𝑥2 + 𝑥3 = 6
2𝑥1 − 3𝑥2 + 𝑥4 = 8
Iteración 1: 𝐵 = {3,4}

𝐴−1
𝐵 =𝐼 m𝑖𝑛 −2𝑥2 s.t.
6 𝑥≥0
𝑏ത = 𝐴−1
𝐵 𝑏 = 𝑥1 − 𝑥2 + 𝑥3 = 6
8
𝑧𝐵 = 𝑐𝐵 𝑥𝐵 = 0 2𝑥1 − 3𝑥2 + 𝑥4 = 8
1 −1
𝐴ҧ𝐷 = 𝐴−1
𝐵 𝐴𝐷 =
2 −3
𝑇 𝑇 ҧ
𝑟𝐷 = 𝑐𝐷 − 𝑐𝐵 𝐴𝐷 = [0 −2]

No es óptimo: entra 𝑥2 , sale min ⋅ ;⋅ =?

PROBLEMA NO ACOTADO

¿Por qué? El conjunto de soluciones:


𝑥1 0 0
𝑥2 0 + 𝜆 1 es factible para todo 𝜆 ≥ 0 con 𝑧 = 0 − 2𝜆 →
𝑥3 = 𝜆→∞ −∞
6 1
𝑥4 8 3
• ℎ = [0,1,1,3] es rayo de escape (𝑐 𝑇 ℎ < 0, 𝐴ℎ ≤ 0)
Problema no acotado

m𝑖𝑛 −2𝑥2 s.t.


𝑥≥0
El conjunto de soluciones: 𝑥1 − 𝑥2 + 𝑥3 = 6
𝑥1 0 0 2𝑥1 − 3𝑥2 + 𝑥4 = 8
𝑥2 0 + 𝜆 1 es factible para todo 𝜆 ≥ 0 con 𝑧 = 0 − 2𝜆 →
𝑥3 = 𝜆→∞ −∞
6 1
𝑥4 8 3

Notar que ℎ𝑇 = [0,1,1,3] es un rayo del cono recesivo con mejora del objetivo.
¿Por qué?
1 −1 1 0 0
• 𝐴ℎ = ℎ= ,ℎ ≥0
2 −3 0 1 0
𝑇
• 𝑐 ℎ= 0 −2 0 0 ℎ = −2 < 0
Problema no acotado

Sucede cuando una variable 𝑥𝑗 tiene costo reducido negativo (𝑟𝑗 < 0) e
impactos positivos en cada variable básica 𝐴ҧj ≤ 0 .

El vector ℎ dado por:


−𝑎ത𝑘𝑗 𝑘∈𝐵
ℎ𝑘 = ൞ 0 𝑘 ∉ 𝐵: 𝑘 ≠ 𝑗, ∀𝑘 ∈ {1, … , 𝑛}
1 𝑘 ∉ 𝐵: 𝑘 = 𝑗
está en el cono C = {𝐴ℎ = 0, ℎ ≥ 0} y mejora el objetivo 𝑐 𝑇 ℎ < 0.

Lo anterior implica que ℎ se puede sumar infinitas veces a cualquier solución


factible 𝑥0 . La solución 𝑥0 + 𝜆ℎ es factible para todo 𝜆 ≥ 0 y su objetivo
𝑐 𝑇 𝑥0 + 𝜆ℎ → −∞ cuando 𝜆 → ∞.
Algoritmo simplex fase 2 (corregido)
1. Entrada: 𝐴, 𝑏, 𝑐 en forma estándar y solución base 𝐵 factible.

2. Calcular base:
𝑏ത = 𝐴−1
𝐵 𝑏
𝐴ҧ𝐷 = 𝐴−1𝐵 𝐴𝐷
𝑟𝐷𝑇 = 𝑐𝐷𝑇 − 𝑐𝐵𝑇 𝐴ҧ𝐷

3. Prueba de Optimalidad:
ത 0], 𝑧𝐵∗ = 𝑐𝐵𝑇 𝑏ത
a) Si 𝑟𝐷 ≥ 0: retornar: 𝑥 ∗ = [𝑥𝐵 , 𝑥𝐷 ] = [𝑏,
b) Si ∃𝑗 ∈ 𝐷: 𝑟𝑗 < 0:
• Ingresar variable 𝑗 a la base
• Si 𝐴𝑗 ≤ 0: retornar: ℎ (problema no acotado)
• Sacar variable 𝑘 = argmin𝑘∈ 𝐵:𝑎ത𝑘𝑗 >0 𝑏ത𝑘 /𝑎ത𝑘𝑗
• Cambiar base: 𝐵 ← 𝐵\{𝑘} ∪ {𝑗}
• Ir a paso 2.
❖ Solución básica y relación con vértices

❖ Introducción al algoritmo simplex (Fase II)

❖ Costos reducidos

❖ Casos especiales:
• Solución múltiple
• No acotamiento
• Degenerancia y ciclaje

❖ Fase I y problemas infactibles


Ejemplo 4:

m𝑖𝑛 −𝑥1 − 𝑥2 s.t.


𝑥≥0
2𝑥1 + 𝑥2 ≤ 2
3𝑥2 ≤ 2
6𝑥1 + 9𝑥2 ≤ 10

Forma estándar:
m𝑖𝑛 −𝑥1 − 𝑥2 s.t.
𝑥≥0
2𝑥1 + 𝑥2 + 𝑥3 = 2
3𝑥2 + 𝑥4 = 2
6𝑥1 + 9𝑥2 + 𝑥5 = 10
Iteración 1: 𝐵 = {3,4,5}
𝐴−1
𝐵 =𝐼 m𝑖𝑛 −𝑥1 − 𝑥2 s.t.
2 𝑥≥0
𝑏ത = 𝐴−1
𝐵 𝑏= 2 2𝑥1 + 𝑥2 + 𝑥3 = 2
10 3𝑥2 + 𝑥4 = 2
𝑧𝐵 = 𝑐𝐵 𝑥𝐵 = 0
2 1 6𝑥1 + 9𝑥2 + 𝑥5 = 10
𝐴ҧ𝐷 = 𝐴−1
𝐵 𝐴𝐷 = 0 3
6 9
𝑟𝐷 = 𝑐𝐷𝑇 − 𝑐𝐵𝑇 𝐴ҧ𝐷 = [−1 −1]

No es óptimo
2 2 10
• Entra 𝑥1 , sale min ; ; = 1→ 𝑥3
2 0 6
• Cambio de base 3,4,5 → {1,4,5}
Iteración 2: 𝐵 = {1,4,5}
1
2 0 0 −1
0 0 m𝑖𝑛 −𝑥1 − 𝑥2 s.t.
−1 2 𝑥≥0
𝐴𝐵 = 0 1 0 = 0 1 0 2𝑥1 + 𝑥2 + 𝑥3 = 2
6 0 1 −3 0 1 3𝑥2 + 𝑥4 = 2
1
𝑏ത = 2 6𝑥1 + 9𝑥2 + 𝑥5 = 10
4
𝑧𝐵 = −1
1/2 1/2
𝐴ҧ𝐷 = 3 0
6 −3
1 1
𝑟𝐷 = − 2 2

No es óptimo!
1 2 4
• Entra 𝑥2 , sale min ; ; = 2/3→ 𝑥4 𝑜 𝑥5 Hay empate!
1/2 3 6
• Cambio de base 1,4,5 → {1,2,5} ó 1,4,5 → {1,4,2}
Iteración 3: 𝐵 = {1,2,5} (si sale 4)
1 1
2 1 0 −1
2

6
0 m𝑖𝑛 −𝑥1 − 𝑥2 s.t.
𝐴−1 = 0 3 0 = 1 𝑥≥0
𝐵 0 0
6 9 1 3 2𝑥1 + 𝑥2 + 𝑥3 = 2
−3 −2 1
2/3 3𝑥2 + 𝑥4 = 2
𝑏ത = 2/3 6𝑥1 + 9𝑥2 + 𝑥5 = 10
0
𝑧𝐵 = −4/3
1 1
2
− 6
ҧ
𝐴𝐷 = 0 1
3
−3 −2
1 1
𝑟𝐷 = 2 6

2 2
Solución óptima: [ ; ; 0; 0; 0]
3 3
Iteración 3: 𝐵 = {1,4,2} (si sale 5)
3 1
2 0 1 −1 4
0 −
12 m𝑖𝑛 −𝑥1 − 𝑥2 s.t.
3 1 𝑥≥0
𝐴−1 = 0 1 3 = 1 −
𝐵
6 0 9
2
1 1
2 2𝑥1 + 𝑥2 + 𝑥3 = 2
− 0
2 6 3𝑥2 + 𝑥4 = 2
2/3
𝑏ത = 0 6𝑥1 + 9𝑥2 + 𝑥5 = 10
2/3
𝑧𝐵 = −4/3
3 1

4 12
3 1
𝐴ҧ𝐷 = 2

2
1 1

2 6
1 1
𝑟𝐷 = 4 12

2 2
Solución óptima: [ ; ; 0; 0; 0]. ¡La misma que antes, pero otra
3 3
base y con otros costos reducidos!
¿Qué pasó?

Al ingresar una variable entrante hay empate en salida y dos


variables básicas se anulan.

Se debe escoger variable saliente y dejar una variable nula en


base.

Un vértice, pero con dos diferentes configuraciones de base.


• ¡Dos bases en un vértice: {1,2,5} y {1,4,2}
• Conceptualmente, hay sobredeterminación de un vértice.
• En este caso hay 3 restricciones activas en 2𝐷.

En ℝ𝑛 hay degenerancia cuando más de 𝑛 restricciones activas


determinan un vértice.
Solución Degenerada

Hay sobre-determinación de un vértice: m𝑖𝑛 −𝑥1 − 𝑥2 s.t.


3 restricciones activas en un punto 2D. 𝑥≥0
2𝑥1 + 𝑥2 + 𝑥3 = 2
3𝑥2 + 𝑥4 = 2
6𝑥1 + 9𝑥2 + 𝑥5 = 10

Dos formas de generar el gradiente objetivo:


1 1
(1; 1) = (2; 1) + (0; 3)
2 6
1 1
(1; 1) = (2; 1) + (6; 9)
4 12
Solución Degenerada
Una solución degenerada posee tantas bases como restricciones adicionales
sobredeterminando el vértice. Por cada base adicional que tenga una solución
degenerada, se tendrá una variable básica adicional que es nula.

Degenerancia es el colapso infinitesimal de dos o más vértices en uno.

En el ejemplo, la solución degenerada era óptima, pero puede ser degenerada


sin ser óptima.

Problema Grave: eventualmente se podría iterar infinitamente entre diferentes


bases de un mismo vértice sin salir de este y sin mejorar el objetivo. Este
fenómeno se conoce como ciclaje y, si se gatilla, el algoritmo simplex no
termina.
Ejemplo con ciclaje

m𝑖𝑛 −10𝑥1 + 57𝑥2 + 9𝑥3 + 24𝑥4 s.t.


𝑥≥0
𝑥1 − 11𝑥2 − 5𝑥3 + 18𝑥4 + 𝑥5 = 0
𝑥1 − 3𝑥2 − 𝑥3 + 2𝑥4 + 𝑥6 = 0
𝑥1 + 𝑥7 = 1

𝐵 = {1,6,7} 𝐵 = {1,2,7} 𝐵 = {3,2,7}


𝐵 = {5,6,7}
𝐵 = {5,4,7} 𝐵 = {3,4,7}

Ver archivo .xls complementario


Regla de Bland (para cambio de base)
En un cambio de base:
• Siempre ingresar a la base la variable de costo reducido negativo de menor
índice, i.e. 𝑗 = min{𝑗 ∈ 𝐷: 𝑟𝑗 < 0}
• Si hay empate, siempre sacar la variable de menor valor de índice de la
base.

Teorema:

El algoritmo simplex equipado con regla de Bland termina en un


número finito de iteraciones. Esta regla hace que nunca se visite
una base más de una vez.
Propuestos

3 1
m𝑖𝑛 − 𝑥1 + 150𝑥2 − 𝑥3 s.t.
𝑥≥0 4 50
1 1
𝑥 − 60𝑥2 − 𝑥 + 9𝑥4 ≤ 0 m𝑖𝑛 −𝑥1 − 𝑥2 s.t.
4 1 25 3 𝑥≥0
1 1 𝑥1 + 𝑥2 ≤ 1
𝑥 − 90𝑥2 − 𝑥 + 3𝑥4 ≤ 0
2 1 50 3 −𝑥1 + 𝑥2 ≤ 0
𝑥3 ≤ 1
Solución degenerada. Degenerada y múltiple.
Otro propuesto
m𝑖𝑛 −3𝑥1 − 2𝑥2 − 5𝑥3 s.t.
𝑥
3𝑥1 + 2𝑥3 ≤ 460
𝑥1 + 4𝑥2 ≤ 420
𝑥1 + 2𝑥2 + 𝑥3 ≤ 430
𝑥1 , 𝑥2 ≥ 0, 𝑥3 𝑙𝑖𝑏𝑟𝑒

Problema con variables libres:

Para estandarizarlo, defina dos variables nuevas 𝑥3+ , 𝑥3− ≥ 0 tal


que 𝑥3 = 𝑥3+ − 𝑥3− .

Explique porqué va a tener soluciones óptimas múltiples no


acotadas
Casos que hemos manejado
Caso Caracterización Comentario
Solución Base
𝑏ത ≥ 0 Iterar y encontrar el óptimo.
Factible (SBF)
Solución Óptima
SBF con 𝑟𝐷𝑇 > 0 vértice óptimo y único
Única (SOU)
SBF con 𝑟𝐷𝑇 ≥ 0
Solución Óptima
y al menos una variable no básica Vértice óptimo, pero no único.
Múltiple (SOM)
𝑗 ∉ 𝐵 con 𝑟𝑗 = 0

SOM y ∃𝑘 ∈ 𝐵 que decrece al Conjunto de soluciones óptimas es la


SOM acotada ingresar 𝑗 ∉ 𝐵: 𝑟𝑗 = 0. Es decir se combinación convexa de vértices
tiene 𝐴𝑗ҧ > 0 óptimos.
𝑘

Existe rayo del cono recesivo ℎ con


SOM no acotada SOM y ∃ 𝑗 ∉ 𝐵 con 𝑟𝑗 = 0 y𝐴𝑗ҧ ≤ 0 𝑐 𝑇 ℎ = 0 tal que 𝑏; ത 0 + 𝜆ℎ es óptimo
∀𝜆 ≥ 0.
Ok, si es vértice óptimo. Si no, iterar y
Solución Degenerada SBF con algún 𝑏ത𝑖 = 0
salir. Usar regla de Bland
Existe rayo ℎ con 𝑐 𝑇 ℎ < 0 tal que
𝑗 ത 0 + 𝜆ℎ mejora infinitamente. No hay
No Acotado SBF y ∃ 𝑗 ∉ 𝐵 con 𝑟𝑗 < 0 y 𝐴ҧ𝐷 ≤ 0 𝑏;
solución.
❖ Solución básica y relación con vértices

❖ Introducción al algoritmo simplex (Fase II)

❖ Costos reducidos

❖ Casos especiales:
• Solución múltiple
• No acotamiento
• Degenerancia y ciclaje

❖ Fase I y problemas infactibles


Recordemos: el algoritmo simplex

Paso Inicial
FASE I Encontrar un vértice del dominio, es decir,
una solución base factible

Paso Iterativo
Traslado a un mejor vértice

FASE II
NO
Prueba de Optimalidad
¿Es óptima la solución? FIN
SI
Buscando una base factible inicial …

• SIMPLEX requiere una solución inicial básica factible (vértice).

• Hasta el momento hemos usado al origen en problemas del tipo


min{𝑐 𝑇 𝑥 𝑠. 𝑡. 𝐴𝑥 ≤ 𝑏}, con 𝑏 ≥ 0.
𝑥≥0

¿Qué hacer si el origen es infactible?

Esto puede pasar con restricciones “=” y “≥” con 𝑏𝑖 > 0.


Forma estándar general
Consideremos el problema:
min 𝑐 𝑇 𝑥
𝑥≥0
𝐴𝑥 ≤ 𝑏
s.t. 𝐷𝑥 ≥ 𝑓
𝐺𝑥 = ℎ

𝑚 𝑚 𝑚
con 𝑐 ∈ ℝ𝑛 , 𝐴 ∈ ℝ𝑛×𝑚1 , 𝐷 ∈ ℝ𝑛×𝑚2 , 𝐺 ∈ ℝ𝑛×𝑚3 , 𝑏 ∈ ℝ+ 1 , 𝑓 ∈ ℝ+ 2 , ℎ ∈ ℝ+ 3 y
𝑚 = 𝑚1 + 𝑚2 + 𝑚3 .

𝑚 𝑚
Forma estándar requiere variables de holgura ℎ ∈ ℝ+ 1 y exceso 𝑒 ∈ ℝ+ 2 :

min 𝑐 𝑇 𝑥
𝑥,ℎ,𝑒≥0
𝐴𝑥 + 𝐼𝑚1 ℎ = 𝑏
s.t. 𝐷𝑥 − 𝐼𝑚2 𝑒 = 𝑓
𝐺𝑥 = ℎ
Ejemplo 5
Consideremos el siguiente problema y llevémoslo a formato estándar…

min −𝑥1 −𝑥2 min −𝑥1 −𝑥2


𝑥≥0 𝑥≥0
s.t. s.t.
3𝑥1 + 2𝑥2 ≤ 20 3𝑥1 + 2𝑥2 + 𝑥3 = 20
2𝑥1 + 3𝑥2 ≤ 20 2𝑥1 + 3𝑥2 + 𝑥4 = 20
𝑥1 + 2𝑥2 ≥ 2 𝑥1 + 2𝑥2 − 𝑥5 = 2
No tenemos la matriz identidad 3 × 3 en 𝐴.

Debemos ejecutar simplex fase 1.


Problema de Fase I

min 1𝑇 𝑦
𝑥,ℎ,𝑒,𝑦≥0
𝐴𝑥 + 𝐼𝑚1 ℎ = 𝑏
s.t. 𝐷𝑥 − 𝐼𝑚2 𝑒 + 𝐼𝑚2 𝑦′ = 𝑓
𝐺𝑥 + 𝐼𝑚3 𝑦′′ = ℎ
𝑦′ 𝑚 +𝑚
Variables artificiales nonegativas 𝑦 = ′′ ∈ ℝ+ 2 3 para “=” y “≥”.
𝑦
Aumento artificial de dimensión que genera origen factible.
Base inicial factible: {ℎ, 𝑦 ′ , 𝑦′′}
En el Ejemplo

Problema de Fase II: Problema de Fase I:

min −𝑥1 −𝑥2 min 𝑦


𝑥≥0 𝑦≥0,𝑥≥0
s.t. s.t.
3𝑥1 + 2𝑥2 + 𝑥3 = 20 3𝑥1 + 2𝑥2 + 𝑥3 = 20
2𝑥1 + 3𝑥2 + 𝑥4 = 20 2𝑥1 + 3𝑥2 + 𝑥4 = 20
𝑥1 + 2𝑥2 − 𝑥5 = 2 𝑥1 + 2𝑥2 − 𝑥5 + 𝑦 = 2

En la 3𝑟𝑎 fila agregamos variable artificial para completar identidad 3 × 3.


Tenemos luz verde para inicial SIMPLEX: 𝐵 = {3,4, 𝑦}
Iteración 1 Fase I: B = {3,4, 𝑦}

Calculamos base: min 𝑦 s.t.


𝑦≥0,𝑥≥0
• 𝐴−1
𝐵 =𝐼 3𝑥1 + 2𝑥2 + 𝑥3 = 20
20
2𝑥1 + 3𝑥2 + 𝑥4 = 20
• 𝑏ത = 20
𝑥1 + 2𝑥2 − 𝑥5 + 𝑦 = 2
2
• 𝑧𝐵 = 2
3 2 0
• 𝐴ҧ𝐷 = 2 3 0
1 2 −1
• 𝑟𝐷 = [−1 −2 1]

20 20 2
Entra 𝑥2 : min ; ;
= 1, sale 𝑦
2 3 2
Cambio de base 3,4, 𝑦 → {3,4,2}
Iteración 2 Fase I: B = {3,4,2}
Calculamos base: min 𝑦 s.t.
𝑦≥0,𝑥≥0
−1 1 0 −1
1 0 2 3 3𝑥1 + 2𝑥2 + 𝑥3 = 20
• 𝐴−1 = 0 1 3 == 0 1 −
𝐵 2 2𝑥1 + 3𝑥2 + 𝑥4 = 20
1
0 0 2 0 0 2 𝑥1 + 2𝑥2 − 𝑥5 + 𝑦 = 2
18
• 𝑏ത = 17
1
• 𝑧𝐵 = 0
2 1 −1
1 3 3
• 𝐴ҧ𝐷 = −
2 2 2
1 1 1
−2
2 2
• 𝑟𝐷 = [0 0 1]

Solución óptima de Fase I: 𝑥 𝐼 = 0,1,18,17,0 , 𝑦 = 0


El vértice es factible para Fase II.
Iteración 2 Fase I: B = {3,4,2}
Calculamos base: min 𝑦 s.t.
𝑦≥0,𝑥≥0
−1 1 0 −1
1 0 2 3 3𝑥1 + 2𝑥2 + 𝑥3 = 20
• 𝐴−1
𝐵 = 0 1 3 = 0 1 −2
2𝑥1 + 3𝑥2 + 𝑥4 = 20
1
0 0 2 0 0 𝑥1 + 2𝑥2 − 𝑥5 + 𝑦 = 2
2
18
• 𝑏ത = 17
1
• 𝑧𝐵 = 𝑐𝐵 𝑥𝐵 = 0
2 1 −1
1 3 3
• 𝐴ҧ = −
𝐷 2 2 2
1 1 1
−2
2 2
• 𝑟𝐷 = [0 0 1]

Solución óptima de Fase I: 𝑥 𝐼 = 0,1,18,17,0 , 𝑦 = 0


El vértice es factible para Fase II. Eliminar información de 𝑦
Iteración 1 Fase II: B = {3,4,2}
Reparación de costos para salto a fase 2: min − 𝑥1 − 𝑥2 s.t.
𝑥≥0
−1 1 0 −1 3𝑥1 + 2𝑥2 + 𝑥3 = 20
1 0 2 3
• 𝐴−1
𝐵 = 0 1 3 = 0 1 −2 2𝑥1 + 3𝑥2 + 𝑥4 = 20
1
0 0 2 0 0 𝑥1 + 2𝑥2 − 𝑥5 = 2
2
18
• 𝑏ത = 17
1
18
• 𝑧𝐵 = 𝑐𝐵𝑇 𝑏ത = 0 0 −1 17 = −1
1
2 1
1 3
• 𝐴ҧ𝐷 = 2 2
1 1
−2
2
2 1
1 3
1 1
• 𝑟𝐷 = 𝑐𝐷𝑇 − 𝑐𝐵𝑇 𝐴ҧ𝐷 = −1 0 − 0 0 −1 2 2 = −2 −2
1 1
2
−2
18 17
Entra 𝑥5 , sale min ; ; ⋅ = 2, sale 𝑥4
1 3/2
Iteración 2 Fase II: B = {3,5,2}

Calculamos base: min − 𝑥1 − 𝑥2 s.t.


𝑥≥0
1 0 2 −1 1 −2/3 0 3𝑥1 + 2𝑥2 + 𝑥3 = 20
• 𝐴−1
𝐵 = 0 0 3 = 0 2/3 −1 2𝑥1 + 3𝑥2 + 𝑥4 = 20
0 −1 2 0 −1/3 0
𝑥1 + 2𝑥2 − 𝑥5 = 2
20/3
• 𝑏ത = 34/3
20/3
• 𝑧𝐵 = −20/3
5/3 −2/3
• 𝐴ҧ𝐷 = 1/3 2/3
2/3 1/3
1 1
• 𝑟𝐷 = − 3 3
20 34 20
3 3 3
Entra x1 , sale min 5 ; 1 ; 2 = 4, sale 𝑥3
3 3 3
Iteración 3 Fase II: B = {1,5,2}
Calculamos base: min − 𝑥1 − 𝑥2 s.t.
𝑥≥0
3 0 2 −1 3/5 −2/5 0 3𝑥1 + 2𝑥2 + 𝑥3 = 20
• 𝐴−1
𝐵 = 2 0 3 = −1/5 4/5 −1 2𝑥1 + 3𝑥2 + 𝑥4 = 20
1 −1 2 −2/5 3/5 0
𝑥1 + 2𝑥2 − 𝑥5 = 2
4
• 𝑏ത = 10
4
• 𝑧𝐵 = −8
3/5 −2/5
• 𝐴ҧ𝐷 = −1/5 4/5
−1 3/5
2 1
• 𝑟𝐷 = 5 5

Solución óptima y única: 𝑥 ∗ = 4,4,0,0,10 , 𝑣 ∗ = −8


Ejemplo: Análisis Gráfico

En Fase I iniciamos desde el origen e iteramos


hasta entrar al dominio por un vértice factible.

Continuamos Fase II hasta llegar al óptimo


(It1→It2→It3).
Teorema de Fase I
El problema de Fase I tiene solución óptima con 𝑣𝐼∗ = 0

El dominio de Fase II es factible y todos sus vértices son sol. óptima en Fase I.

Algorimo simplex de dos fases:


1. Estandarizar y añadir variables artificiales.

2. Resolver problema de Fase I. Iniciar con origen.

3. Si 𝑣𝐼∗ > 0: retornar que el problema es infactible.

4. Si 𝑣𝐼∗ = 0: Eliminar información de variables artificiales y resolver Fase II.


Iniciando simplex en vértice entregado por Fase I. Luego, retornar
solución óptima o certificado de no acotamiento.
Ahorros de cómputo 1
A veces es posible ahorrar trabajo….

Ejemplo:
min 𝑐 𝑇 𝑥 s.t.
𝑥≥0
𝑥1 + 3𝑥2 + 5𝑥5 = 6
𝑥2 − 4𝑥3 + 𝑥4 + 𝑥5 = 20

Problema de FASE I (𝐵 = {𝑦1 , 𝑦2 })


min 𝑦1 + 𝑦2 s.t.
𝑥≥0,y≥0
𝑥1 + 3𝑥2 + 5𝑥5 + 𝑦1 = 6
𝑥2 − 4𝑥3 + 𝑥4 + 𝑥5 + 𝑦2 = 20

Pero se podría iniciar Fase II directamente con 𝐵 = {1,4}


Ahorros de cómputo 2
A veces es posible ahorrar trabajo….

Ejemplo:
min 𝑐 𝑇 𝑥 s.t.
𝑥≥0
𝑥1 + 3𝑥2 + 2𝑥4 + 5𝑥5 = 6
𝑥2 − 4𝑥3 + 𝑥4 + 𝑥5 = 20
Problema de FASE I (𝐵 = {𝑦1 , 𝑦2 })
min 𝑦1 + 𝑦2 s.t.
𝑥≥0,y≥0
𝑥1 + 3𝑥2 + 2𝑥4 + 5𝑥5 + 𝑦1 = 6
𝑥2 − 4𝑥3 + 𝑥4 + 𝑥5 + 𝑦2 = 20

Problema de FASE I ``inteligente’’ (𝐵 = {1, 𝑦2 })


min 𝑦2 s.t.
𝑥≥0,y≥0
𝑥1 + 3𝑥2 + 2𝑥4 + 5𝑥5 = 6
𝑥2 − 4𝑥3 + 𝑥4 + 𝑥5 + 𝑦2 = 20
Propuestos

min − 𝑥1 − 𝑥2 s.t.
𝑥≥0
14𝑥1 + 9𝑥2 ≥ 63
𝑥1 − 𝑥2 ≤ −1
7𝑥1 + 3𝑥2 ≤ 42
2𝑥1 + 8𝑥2 ≤ 52
Problema con más de una
variable artificial min − 3𝑥1 + 𝑥2 + 𝑥3 s.t.
𝑥≥0
𝑥1 − 2𝑥2 + 𝑥3 ≤ 11
−4𝑥1 + 𝑥2 + 2𝑥3 ≥ 3
2𝑥1 − 𝑥3 = −1
Problema con restricciones
de Igualdad
Certificado de infactibilidad

Demostrar que el siguiente conjunto es infactible:


{𝑥 ∈ ℝ2+ : 𝑥1 + 2𝑥2 ≤ 2, 𝑥1 + 𝑥2 ≥ 4}

Problema de Fase I:

min 𝑦 s.t.
𝑥≥0
𝑥1 + 2𝑥2 + 𝑥3 = 2
𝑥1 + 𝑥2 − 𝑥4 + 𝑦 = 4
Iteración 1 Fase I: B = {3, 𝑦}

Calculamos base: min 𝑦 s.t.


• 𝐴−1
𝐵 =𝐼 𝑥≥0
• 𝑏ത =
2 𝑥1 + 2𝑥2 + 𝑥3 = 2
4
• 𝑧𝐵 = 4 𝑥1 + 𝑥2 − 𝑥4 + 𝑦 = 4
1 2 0
• 𝐴ҧ𝐷 =
1 1 −1
• 𝑟𝐷 = [−1 −1 1]

2 4
Entra 𝑥1 : min ; ; = 2, sale 𝑥3
1 1
Cambio de base 3, 𝑦 → {1, 𝑦}
Iteración 2 Fase I: B = {1, 𝑦}

Calculamos base: min 𝑦 s.t.


1 0 −1 1 0 𝑥≥0
• 𝐴−1 = =
𝐵
2
1 1 −1 1 𝑥1 + 2𝑥2 + 𝑥3 = 2
• 𝑏ത =
2 𝑥1 + 𝑥2 − 𝑥4 + 𝑦 = 4
• 𝑧𝐵 = 2
2 1 0
• 𝐴ҧ𝐷 =
−1 −1 −1
• 𝑟𝐷 = [1 1 1]

Solución óptima, pero 𝑦 > 0. En el mejor de los casos, 𝑦 = 2.

Es imposible estar dentro del dominio. El conjunto es INFACTIBLE


Certificado de Infactibilidad

𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 ≥ 0
𝑥1 + 2𝑥2 + 𝑥3 = 2
𝑥1 + 𝑥2 − 𝑥4 = 4

Los costos reducidos 𝑟1 = 0, 𝑟2 = 1, 𝑟3 = 1, 𝑟4 = 1 certifican


infactibilidad, pues implican una contradicción:

𝑥1 ≥ 0 (× 0)
𝑥2 ≥ 0 (× 1)
2 − 𝑥1 − 2𝑥2 ≥ 0 (× 1)
𝑥1 + 𝑥2 − 4 ≥ 0 (× 1)
−2 ≥ 0
. Casos de Inexistencia de Solución

Problema no acotado:
Columna completa de variable no básica
entrante es no positiva.

Dominio Infactible:
Fase I con valor óptimo positivo.
. Si realmente desea aprender esto bien….
Recomiendo programar el algoritmo simplex.
Doy 8 puntos a los primeros tres estudiantes que me muestren
después de clase un programa (hecho por el mismo) funcionando
en cualquier caso.

Que reciba como input cualquier 𝐴, 𝑏, 𝑐 en forma estándar.

Que retorne dependiendo del caso:


• Una solución óptima (sólo una) ó
• Un certificado de no acotamiento (rayo de escape) ó
• Un certificado de infactibilidad (una contradicción)

Debe evitar ciclaje usando la regla de Bland.


Capítulo 6: El algoritmo simplex

Optimización – ICS1113

Mathias Klapp - 2018

S-ar putea să vă placă și