Clase 24 - Prog. Entera I

Anuncio
Departamento de Ingeniería Industrial y de Sistemas
Pontificia Universidad Católica de Chile
Clase 24 - Programación Entera I
ICS 1102 • Optimización
Prof. Claudio Seebach
-
2do Semestre 2006
Programación Entera
• Ventajas de restringir variables a tomar
valores enteros
! Más realista
• Desventajas
! Más difícil de modelar
! Puede se mucho más difícil de resolver
• Variables 0-1
! Equivalente a:
Prof. Claudio Seebach
0 ! x j ! 1 con x j entero
ICS 1102 – Optimización / Clase 24
El misterio de programación entera
• Algunos problemas enteros son fáciles
! Podemos resolver problemas con millones de variables
• Algunos problemas enteros son difíciles
! Incluso 100 variables puede ser un gran desafío
• Se requiere de conocimientos y experiencia
para saber cuál es cuál
• Es un área de investigación muy activa
Prof. Claudio Seebach
ICS 1102 – Optimización / Clase 24
Tipos de problemas enteros
• Problema entero puro
! Todas las variables son enteras
• Problema entero binario
! Todas las variables deben tomar valores 0 o 1
• Problema entero mixto
! Algunas variables son enteras y otras son continuas
Prof. Claudio Seebach
ICS 1102 – Optimización / Clase 24
Técnicas para resolver problemas enteros
• Técnicas de enumeración
! Enumeración completa
• Lista con todas las soluciones… elegir la mejor
! Branch & bound
• Búsqueda implícita de todas las soluciones, pero
eliminando inteligentemente muchas de ellas antes de
haberlas evaluado
• Técnicas de planos cortantes
! Usar programación lineal (PL) para resolver problemas
enteros, agregando restricciones que eliminan las
soluciones fraccionales (o continuas)
Prof. Claudio Seebach
ICS 1102 – Optimización / Clase 24
Ejemplo de Programación Entera
Max z = 5 x1 + 8 x2
s.a. x1 + x2 " 6
5 x1 + 9 x2 " 45
x1 , x2 ! Z 0+
Prof. Claudio Seebach
ICS 1102 – Optimización / Clase 24
Dominio y solución óptima
Max z = 5 x1 + 8 x2
s.a. x1 + x2 " 6
5 x1 + 9 x2 " 45
x1 , x2 ! Z 0+
Prof. Claudio Seebach
ICS 1102 – Optimización / Clase 24
Soluciones alternativas
Prof. Claudio Seebach
ICS 1102 – Optimización / Clase 24
Branch & Bound
• Idea general:
! Buscar en árbol de enumeración, en cada nodo:
• Resolver un problema lineal en el nodo
• Eliminar el sub-árbol si:
– La solución es entera (no es necesario seguir)
– La mejor solución del sub-árbol no es superior a la mejor
solución disponible
– No hay solución factible
Prof. Claudio Seebach
ICS 1102 – Optimización / Clase 24
Branch and Bound: L1 y L2
Prof. Claudio Seebach
ICS 1102 – Optimización / Clase 24
L1 y L2
Prof. Claudio Seebach
ICS 1102 – Optimización / Clase 24
L3 y L4
Prof. Claudio Seebach
ICS 1102 – Optimización / Clase 24
L3 y L4
Prof. Claudio Seebach
ICS 1102 – Optimización / Clase 24
L5 y L6
Prof. Claudio Seebach
ICS 1102 – Optimización / Clase 24
L5 y L6
Prof. Claudio Seebach
ICS 1102 – Optimización / Clase 24
Branch & Bound (revisión)
• Idea general
! Buscar en árbol de enumeración, en cada nodo:
• Resolver un problema lineal en el nodo
• Eliminar el sub-árbol si:
– La solución es entera (no es necesario seguir)
– La mejor solución del sub-árbol no es superior a la mejor
solución disponible
– No hay solución factible
Prof. Claudio Seebach
ICS 1102 – Optimización / Clase 24
Problemas enteros
• Usando Excel para problemas enteros
! Agregar las restricciones de integralidad
! Fijar la tolerancia del solver
• Tolerancia es el porcentaje de desviación del óptimo
permitido por el solver al resolver problemas enteros
• El valor por defecto es 5%
• Hay múltiples formas de modelar el mismo
problema entero
• Los solvers son extremadamente sensibles a la
formulación de un problema entero
Prof. Claudio Seebach
ICS 1102 – Optimización / Clase 24
Ejemplo de Programación Entera
Max z = 2x1 + 3x 2
s.a. x1 + 2x 2 " 10
3x1 + 4 x 2 " 25
x1, x 2 # Z 0+
!
Prof. Claudio Seebach
ICS 1102 – Optimización / Clase 24
Descargar