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