Está en la página 1de 31

INDG1019: Programación Entera para Ingeniería

Métodos para resolver problemas


de optimización discreta

Profesora: Jenny Gutiérrez


Mail: jepiguti@espol.edu.ec
Resumen de la Unidad
Métodos para resolver problemas de optimización discreta
1. Enumeración exhaustiva
2. Relajación continua de modelos discretos
3. Ramificación y acotamiento (Branch and bound)
4. Ramificación y corte (Branch and cut)
Objetivos de aprendizaje
▪ Dimensionar la complejidad de un problema entero de tamaño real para la selección de la
mejor estrategia de solución.
▪ Aplicar métodos para la resolución de un problema entero de tamaño real para la obtención de
información útil que ayude a la mejora de la eficiencia de una empresa.
Enumeración Exhaustiva
▪Se conoce que un problema de optimización continua tiene infinitas soluciones dentro de su
región factible.
▪Por otro lado, un problema de optimización discreta tiene un número finito de opciones para las
variables de decisión.
Entonces
¿Por qué no probarlas todas?
Enumeración Exhaustiva

Si un modelo tiene solamente pocas variables de decisión,


el método más efectivo de análisis es a menudo el más
directo: enumerar todas las posibles alternativas.
Enumeración Exhaustiva
▪El método de enumeración exhaustiva o enumeración total requiere que se revisen todas las
posibles soluciones que pueden tomar las variables de decisión.
▪Este método resuelve un problema de optimización discreto probando todas las posibles
combinaciones de solución y luego seleccionado la combinación de los valores de las variables
de decisión que proporcione el mejor valor para la función objetivo.
Enumeración Exhaustiva
Podrían ocurrir tres casos:
▪ Problema entero mixto
▪ Problema entero puro
▪ Problema binario
Enumeración Exhaustiva
Problema entero mixto
min 𝑧 = 16 75 𝑦1 + 10 250 𝑦2 + 8𝑥3 + 9𝑥4 + 48𝑥5 + 60𝑥6 + 53𝑥7
Sujeto a
75𝑦1 + 250𝑦2 + 𝑥3 + 𝑥4 + 𝑥5 + 𝑥6 + 𝑥7 = 1000
0.0080(75)𝑦1 + 0.0070(250)𝑦2 + 0.0085𝑥3 + 0.0040𝑥4 ≥ 0.0065(1000)
0.0080(75)𝑦1 + 0.0070(250)𝑦2 + 0.0085𝑥3 + 0.0040𝑥4 ≤ 0.0075(1000)
0.180(75)𝑦1 + 0.032(250)𝑦2 + 1.0𝑥5 ≥ 0.030(1000)
0.180(75)𝑦1 + 0.032(250)𝑦2 + 1.0𝑥5 ≤ 0.035(1000)
0.120(75)𝑦1 + 0.011(250)𝑦2 + 1.0𝑥6 ≥ 0.010(1000)
0.120(75)𝑦1 + 0.011(250)𝑦2 + 1.0𝑥6 ≤ 0.012(1000)
0.001 (250)𝑦2 + 1.0𝑥7 ≥ 0.011(1000)
0.001 (250)𝑦2 + 1.0𝑥7 ≤ 0.013(1000)
𝑥3 , … , 𝑥7 ≥ 0
𝑦1 , 𝑦2 = 0 ó 1
Enumeración Exhaustiva
Problema entero mixto
Para el ejemplo anterior hay 2 posibles valores para 𝑦1 y 2 valores posibles para 𝑦2
Por lo tanto, hay 4 posibles combinaciones para enumerar.

Valor de la
Combinaciones
Soluciones continuas correspondientes función
discretas
objetivo
𝑦1 = 0, 𝑦2 = 0
𝑦1 = 0, 𝑦2 = 1
𝑦1 = 1, 𝑦2 = 0
𝑦1 = 0, 𝑦2 = 1
Enumeración Exhaustiva
Problema entero mixto
Para el ejemplo anterior hay 2 posibles valores para 𝑦1 y 2 valores posibles para 𝑦2
Por lo tanto, hay 4 posibles combinaciones para enumerar.

Valor de la
Combinaciones
Soluciones continuas correspondientes función
discretas
objetivo
𝑦1 = 0, 𝑦2 = 0 𝑥3 = 814.3, 𝑥4 = 114.6, 𝑥5 = 30.0, 𝑥6 = 10.0, 𝑥7 = 1.1, 9914.1
𝑦1 = 0, 𝑦2 = 1 𝑥3 = 637.9, 𝑥4 = 82.0, 𝑥5 = 22.0, 𝑥6 = 7.3, 𝑥7 = 0.9, 9877.3
𝑦1 = 1, 𝑦2 = 0 𝑥3 = 727.6, 𝑥4 = 178.8, 𝑥5 = 16.5, 𝑥6 = 1.0, 𝑥7 = 1.1, 9540.3
𝑦1 = 0, 𝑦2 = 1 𝑥3 = 552.8, 𝑥4 = 112.9, 𝑥5 = 8.5, 𝑥6 = 0.0, 𝑥7 = 0.9, 9591.1
Enumeración Exhaustiva
Problema entero puro
En este caso, debemos enumerar todos los valores posibles para las variables enteras y realizar
todas las combinaciones posibles hasta encontrar aquella que proporcione el valor óptimo de la
función objetivo y que cumpla todas las restricciones.
Enumeración Exhaustiva
Problema entero puro
max 𝑧 = 3𝑥1 + 5𝑥2
Sujeto a
𝑥1 + 𝑥2 ≤ 8
3𝑥1 + 2𝑥2 ≤ 7
𝑥1 , 𝑥2 ≥ 0
𝑥1 , 𝑥2 ∈ Ζ
Enumeremos:
Posibles valores para 𝑥1 , según 𝑥1 + 𝑥2 ≤ 8: 0, 1, 2, 3, 4, 5, 6, 7, 8
Posibles valores para 𝑥1 , según 3𝑥1 + 2𝑥2 ≤ 7: 0, 1, 2

Entonces 𝑥1 = 0, 1, 2
Enumeración Exhaustiva
Problema entero puro
max 𝑧 = 3𝑥1 + 5𝑥2
Sujeto a
𝑥1 + 𝑥2 ≤ 8
3𝑥1 + 2𝑥2 ≤ 7
𝑥1 , 𝑥2 ≥ 0
𝑥1 , 𝑥2 ∈ Ζ
Enumeremos:
Posibles valores para 𝑥2 , según 𝑥1 + 𝑥2 ≤ 8: 0, 1, 2, 3, 4, 5, 6, 7, 8
Posibles valores para 𝑥2 , según 3𝑥1 + 2𝑥2 ≤ 7: 0, 1, 2, 3
Entonces 𝑥2 = 0, 1, 2, 3
Enumeración Exhaustiva
Problema entero puro
max 𝑧 = 3𝑥1 + 5𝑥2 Los valores posibles para las variables de decisión son:
s.a. 𝑥1 = 0, 1, 2
𝑥1 + 𝑥2 ≤ 8 𝑥2 = 0, 1, 2, 3
3𝑥1 + 2𝑥2 ≤ 7
Ahora encontremos todos las combinaciones posibles
𝑥1 , 𝑥2 ≥ 0
aplicando estos valores y comprobemos si se cumplen las
𝑥1 , 𝑥2 ∈ Ζ
restricciones
𝑥1 0 0 0 0 1 1 1 1 2 2 2 2
𝑥2 0 1 2 3 0 1 2 3 0 1 2 3
𝑅1
𝑅2
𝑍
Factible?
Enumeración Exhaustiva
Problema entero puro
max 𝑧 = 3𝑥1 + 5𝑥2 Los valores posibles para las variables de decisión son:
s.a. 𝑥1 = 0, 1, 2
𝑥1 + 𝑥2 ≤ 8 𝑥2 = 0, 1, 2, 3
3𝑥1 + 2𝑥2 ≤ 7
Ahora encontremos todos las combinaciones posibles
𝑥1 , 𝑥2 ≥ 0
aplicando estos valores y comprobemos si se cumplen las
𝑥1 , 𝑥2 ∈ Ζ
restricciones
𝑥1 0 0 0 0 1 1 1 1 2 2 2 2
𝑥2 0 1 2 3 0 1 2 3 0 1 2 3
𝑅1 0 1 2 3 1 2 3 4 2 3 4 5
𝑅2 0 2 4 6 3 5 7 10 6 8 10 12
𝑍 0 5 10 15 3 8 13 - 6 - - -
Factible? si si si si si si si no si no no no
Enumeración Exhaustiva
Problema binario
De igual manera, deseamos probar todas las posibles alternativas para las variables de
decisión.
¿Cómo saber cuántas combinaciones se deben probar?
Existe un criterio que se llama crecimiento exponencial.
Un modelo con k variables binarias de decisión tendrá 𝟐𝒌 casos para enumerar.
Este criterio también prueba que el método de enumeración exhaustiva puede ser poco
práctico en los casos que se tengan un número considerable de variables de decisión.
Enumeración Exhaustiva
Problema binario
max 𝑧 = 7𝑥1 + 4𝑥2 + 19𝑥3
Sujeto a
𝑥1 + 𝑥3 ≤ 1
𝑥2 + 𝑥3 ≤ 1
𝑥1 , 𝑥2 , 𝑥3 = 0 ó 1

En este caso se tienen tres variables de decisión, por lo tanto son 23 = 8


combinaciones.
Enumeración Exhaustiva
Problema binario
𝑥1 𝑥2 𝑥3 Función
objetivo
0 0 0 0
max 𝑧 = 7𝑥1 + 4𝑥2 + 19𝑥3
0 0 1 19
Sujeto a 0 1 0 4
𝑥1 + 𝑥3 ≤ 1 0 1 1 No factible
𝑥2 + 𝑥3 ≤ 1 1 0 0 7
𝑥1 , 𝑥2 , 𝑥3 = 0 ó 1
1 0 1 No factible
1 1 0 11
1 1 1 No factible
Enumeración Exhaustiva
Problema binario - Práctica

max 𝑧 = 300𝑥1 + 90𝑥2 + 400𝑥3 + 150𝑥4


Sujeto a
35𝑥1 + 10𝑥2 + 25𝑥3 + 90𝑥4 ≤ 120
4𝑥1 + 2𝑥2 + 7𝑥3 + 3𝑥4 ≤ 12
𝑥1 + 𝑥2 ≤ 1
𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 = 0 ó 1
𝑥1 𝑥2 𝑥3 𝑥4 Función
objetivo Enumeración Exhaustiva
0 0 0 0 0
Problema binario - Práctica
0 0 0 1 150
0 0 1 0 400
0 0 1 1 550 max 𝑧 = 300𝑥1 + 90𝑥2 + 400𝑥3 + 150𝑥4
0 1 0 0 90 Sujeto a
0 1 0 1 240 35𝑥1 + 10𝑥2 + 25𝑥3 + 90𝑥4 ≤ 120
0 1 1 0 490 4𝑥1 + 2𝑥2 + 7𝑥3 + 3𝑥4 ≤ 12
0 1 1 1 No factible 𝑥1 + 𝑥2 ≤ 1
1 0 0 0 300 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 = 0 ó 1
1 0 0 1 No factible
1 0 1 0 700
1 0 1 1 No factible
1 1 0 0 No factible
1 1 0 1 No factible
1 1 1 0 No factible
1 1 1 1 No factible
Relajación Continua de Modelos Discretos
▪En cualquier problema dado de PE, el problema correspondiente de
programación lineal se conoce como su relajamiento de PL.
▪Existen casos en los cuales, los valores del relajamiento de PL satisface la
restricción de valores enteros del problema de PE.
▪Cuando ocurre esto la solución también debe ser óptima para el problema PE.
▪Entonces, es normal que un algoritmo de programación entera comience con la
aplicación del método simplex a su relajamiento de PL, para verificar si tiene
lugar este acontecimiento.
Relajación Continua de Modelos Discretos
▪Casi siempre es accidental que la solución óptima del relajamiento de PL sea entera.
Entonces,
¿Hay como saberlo?
Sí!
En realidad existen varios tipos especiales de problemas de PE para los que este resultado se puede garantizar.
▪ Problema de flujo de costo mínimo (con parámetros enteros)
▪ Problema de transporte
▪Problema de trasbordo
Compruébelo!
▪Problema de asignación Lea Hillier (2010), secciones 8.6 y 9.6
▪Problema de la ruta más corta
▪Problema de flujo máximo
Relajación Continua de Modelos Discretos

Debido a que, en general, es mucho más difícil resolver los problemas


de PE que los de programación lineal, a veces es tentador usar el
procedimiento aproximado y aplicar el método simplex al
relajamiento de PL, y después redondear los valores no enteros a
enteros en la solución que se obtuvo.*

* Este enfoque es adecuado en los casos donde los valores de las variables son tan grandes que el redondeo introduce
un error muy pequeño; sin embargo debe aplicarse con cuidado al poner en práctica este procedimiento
Relajación Continua de Modelos Discretos

Una desventaja es que una solución óptima de programación lineal


no necesariamente es factible después de redondearla

Veamos un ejemplo…
Ejemplo 1: La solución óptima del
relajamiento de PL no se puede
redondear de ninguna manera
que conserve la factibilidad
¿Podemos redondear 𝑥1 de tal manera
que la solución siga siendo factible?

C 𝑀𝑎𝑥 𝑧 = 𝑥2
s.a.
1
−𝑥1 + 𝑥2 ≤
2
1
𝑥1 + 𝑥2 ≤ 32
𝑥1 ≥ 0
𝑥2 ≥ 0
𝑥1 , 𝑥2 𝑠𝑜𝑛 𝑒𝑛𝑡𝑒𝑟𝑜𝑠
Relajación Continua de Modelos Discretos
Aún cuando podamos redondear con éxito, todavía existe otra
dificultad.
No existe garantía de que esta solución redondeada sea la solución
óptima de programación entera.

Veamos un ejemplo…
¿Podemos redondear 𝑥1 de tal manera
que la solución siga siendo factible?
Ejemplo 2: La solución del
relajamiento de PL redondeada
𝑥1 = 0 está muy lejos de ser óptima para
𝑥2 = 2 el problema PE
𝑧 = 11

𝑥1 = 2
9
𝑥2 =
5 𝑀𝑎𝑥 𝑧 = 𝑥1 + 5𝑥2
𝑧 = 10
s.a.
𝑥1 + 10𝑥2 ≤ 20
𝑥1 ≤ 2
𝑥1 = 2 𝑥1 ≥ 0
𝑥2 = 1 𝑥2 ≥ 0
𝑧=7 𝑥1 , 𝑥2 𝑠𝑜𝑛 𝑒𝑛𝑡𝑒𝑟𝑜𝑠
Relajación Continua de Modelos Discretos
Dado los inconvenientes de relajamiento de PL, se dispone de ciertos algoritmos
para resolver problemas de PE. Como por ejemplo:
1. Ramificación y acotamiento (Branch and bound)
2. Ramificación y corte (Branch and cut)
Conclusiones
¿QUÉ APRENDIMOS HOY?

29
Conclusiones
¿Qué aprendimos hoy?
¿Preguntas?

También podría gustarte