Programacin entera En muchos problemas reales las variables
Programación entera En muchos problemas reales las variables sólo pueden tomar valores enteros n Ejemplos: n n decisiones sobre inversiones, compras, arranques, etc. n Cantidades de productos no divisibles, personas, etc. n Problemas con el método Simplex: n soluciones no están en vértices n ¿cómo saber si tenemos una solución? 1
Programación entera Problema entero puro: min c Tx s. a Ax = b x 0 xi entera i Problema entero mixto: min c Tx s. a Ax = b x 0 xi entera i I 2
Programación entera Por simplicidad: problema entero puro n Métodos también aplicables al problema mixto n Dificultad principal: n n no podemos emplear aproximaciones basadas en la continuidad de las funciones del problema n no podemos extraer conclusiones para puntos próximos 3
Programación entera n La solución no tiene que estar en un vértice, ni contigua a un vértice Solución relajada Solución entera 4
Programación entera Métodos de solución: Comparar todas las alternativas (no es eficiente) n Procedimientos eficientes para seleccionar o descartar alternativas n n Basados en la aproximación del problema mediante problemas lineales (que sabemos resolver) 5
Programación entera n Procedimiento más simple: n ignorar la condición de que las variables sean enteras, y redondear la solución n Inconvenientes: n ¿tiene significado la solución no entera? n ¿cómo se redondea la solución? n ¿cómo se obtiene una solución redondeada factible? n ¿cuándo es óptima una solución redondeada? 6
Programación entera n Método más sofisticado: n introducir restricciones adicionales que no eliminen soluciones enteras (cubierta convexa) Si las soluciones enteras son vértices, podemos aplicar el método Simplex n Inconvenientes: n n ¿Cómo se calculan las restricciones necesarias? n ¿Cuántas hacen falta? 7
Programación entera n Cubierta convexa 8
Programación entera n Métodos más eficientes: n Combinación de ideas n se añaden restricciones que aproximan la cubierta convexa (planos de corte), o n se añaden restricciones que eliminan puntos que no pueden ser solución (branch and bound) n se resuelven problemas lineales relajados 9
Programación entera Método de “branch and bound” n Se trata de: n dividir la región factible, y n descartar aquellas partes en las que no puede encontrarse la solución n Partes que no pueden descartarse: n se calcula la solución por el método Simplex, o n se subdividen en nuevas partes añadiendo restricciones 10
Programación entera Procedimiento: n Dado el problema min c Tx s. a Ax = b x 0 xi entera i se resuelve su versión relajada (P 0) n Si la solución de (P 0) es entera, se termina n Si no lo es, se subdivide el problema en varios 11
Programación entera División del problema Supongamos que la solución del problema relajado es xk*, y que (xk*)i no es entera n En la solución (entera) se cumplirá una de las dos condiciones siguientes: n xi (xk*)i , xi (xk*)i + 1 donde x denota la parte entera de x 12
Programación entera División del problema n Se generan los dos problemas siguientes: P 1 = P 0 {xi (xk*)i }, P 2 = P 0 {xi (xk*)i +1} n En general, se tiene una lista de problemas pendientes de resolver n Se toman los problemas de la lista, y se resuelven hasta que la lista queda vacía 13
Programación entera Ejemplo gráfico Solución P 0 P 4 no factible Solución P 1 Solución entera Solución P 2 Solución P 3 14
Programación entera P 4: NF P 0: NE P 1: NE P 6: NF P 2: NE P 3: E P 8: E P 12: B P 10: NE P 5: NE P 11: E P 7: NE P 9: NF 15
Programación entera ¿Qué sucede al resolver subproblemas? n Subproblema no factible: n nada n Subproblema con solución no entera: n se n generan nuevos subproblemas Subproblema con solución entera: n se compara con la mejor solución entera hasta el momento 16
Programación entera Eliminación de nodos n Método no eficiente si es necesario examinar todos los subproblemas n Número n de subproblemas: 2 n Eliminar subproblemas: n si la función objetivo óptima del problema relajado cumple ciertas condiciones 17
Programación entera Eliminación de subproblemas n Basada en mejor solución entera n Mejor valor de la función objetivo para una solución entera (hasta el momento): z n Si para un subproblema se cumple c T x k* > z n descartar el subproblema (y todos los subproblemas que se generen de él) n Todas sus soluciones enteras son peores que z 18
Programación entera Selección de subproblema n Análisis en profundidad del árbol de subproblemas n Se toma el último subproblema generado n Se obtienen rápidamente soluciones enteras n Alternativa: búsqueda en extensión n Se examinan primero todos los problemas de un nivel dado 19
Programación entera Arbol de subproblemas P 0 P 2 P 5 P 7 P 9 P 1 P 6 P 8 P 10 P 11 P 12 P 3 P 4 - Búsqueda en profundidad: P 0, P 1, P 3, P 4, P 2, P 5, P 7 P 9, P 10, P 11, P 12, P 8, P 6 - Búsqueda en extensión: P 0, P 1, P 2, P 3, P 4, P 5, P 6, P 7, P 8, P 9, P 10, P 11, P 12 20
Programación entera Generación de nuevos subproblemas: n ¿Qué variable no entera se escoge para generar los subproblemas? n Aquella que permita obtener la solución más rápidamente n Aquella que dé un menor valor de la función objetivo (más cerca de la solución) n Como el valor de la función objetivo relajada aumenta, variable con menor aumento 21
Programación entera n Estimación de cambios en la f. objetivo: x i xi n La variable i es básica y pasa a ser no básica Una variable no básica debe pasar a ser básica xi + (B -1 N )i x. N = (B -1 b )i c T (x - x ) (xi - xi ) mink (-ck /nik ) Se escoge la variable i con el menor cambio 22
Programación entera Resolución de subproblemas Dado un subproblema resuelto, añadimos una restricción al subproblema n La última solución no cumple la restricción n Aplicamos el método dual del Simplex: n n Ponemos la restricción en forma estándar n Añadimos la restricción a la tabla n Aplicamos el método dual 23
Programación entera Ejemplo: max 8 x 1 + 9 x 2 s. a 76 x 1 + 68 x 2 767 -38 x 1 + 32 x 2 29 2 x 2 3 x 0 entera n Solución del problema relajado: x 1 = 9/2 , x 2 = 25/4 3 = -299/2508 , 4 = -70/2508 24
Programación entera n Nuevas restricciones: x 1 4 , x 1 5 n Primer subproblema: x 1 + s 4 = 4 , s 4 0 n Nueva solución del primer subproblema: x 1 = 4 , x 2 = 181/32 4 = -9/32 , 4 = -299/16 25
Programación entera Métodos de planos de corte n Alternativa a métodos branch and bound n Introducir n n nuevas restricciones sin dividir el problema sin eliminar soluciones enteras n Objetivo: solución del problema relajado = solución del problema entero Universidad Carlos III de Madrid – Ingeniería Informática Investigación Operativa - Curso 2003/2004 26
Programación entera Planos de corte n Condiciones sobre las nuevas restricciones (cortes): n No eliminar soluciones enteras n Eliminar la última solución n Forma de las restricciones: n Restricciones lineales generales Universidad Carlos III de Madrid – Ingeniería Informática Investigación Operativa - Curso 2003/2004 27
Programación entera Planos de corte de Gomory Nuevas restricciones se generan a partir de solución del problema relajado n Suponemos que todas las variables han de ser enteras y no negativas n Basados en estudiar la parte entera y la fraccionaria de las restricciones n Universidad Carlos III de Madrid – Ingeniería Informática Investigación Operativa - Curso 2003/2004 28
Programación entera Planos de corte de Gomory n Supongamos una solución relajada no entera n Variable básica i-ésima no entera n Restricción correspondiente xi + k nik xk = bi n Lado derecho no entero (variable no entera) Universidad Carlos III de Madrid – Ingeniería Informática Investigación Operativa - Curso 2003/2004 29
Programación entera Planos de corte de Gomory n Justificación de la expresión del corte n Por ser las x positivas, xi + k nik xk = bi n Por ser las x enteras, xi + k nik xk = bi Universidad Carlos III de Madrid – Ingeniería Informática Investigación Operativa - Curso 2003/2004 30
Programación entera Planos de corte de Gomory n Combinando la restricción inicial con la nueva, k (fn )ik (fb )i n Nueva restricción a añadir al problema n La cumplen todas las soluciones enteras n No la cumple la última solución n Resolución eficiente: método dual del Simplex Universidad Carlos III de Madrid – Ingeniería Informática Investigación Operativa - Curso 2003/2004 31
Programación entera Ejemplo de planos de corte n Problema entero anterior. Solución: x 1 = 9/2 , x 2 = 25/4 16/2508 -34/2508 N = 19/2508 38/2508 76/2508 n Nueva restricción 16/2508 s 1 + 2474/2508 s 2 1/2 16 s 1 + 2474 s 2 - 2508 s 4 1254 , s 4 0 Universidad Carlos III de Madrid – Ingeniería Informática Investigación Operativa - Curso 2003/2004 32
Programación entera Ejemplo Corte 1 , x 1 Corte 1 - x 2 Corte 2 , x 2 Universidad Carlos III de Madrid – Ingeniería Informática Investigación Operativa - Curso 2003/2004 min -x 1 - x 2 s. a 4 x 1 - 2 x 2 - s 1 = 3 4 x 1 + 2 x 2 + s 2 = 9 x, s 0 33
Programación entera Limitaciones del procedimiento La ecuación que define el corte es válida si todas las variables son enteras n Los datos del problema (A, b, c ) han de ser enteros n Las variables de holgura han de introducirse sobre restricciones con coeficientes enteros n Universidad Carlos III de Madrid – Ingeniería Informática Investigación Operativa - Curso 2003/2004 34
Programación entera Convergencia n Al resolver un problema relajado n Problema no factible n n Problema no acotado n n el problema entero no está acotado (sólo para el primer problema) Problema óptimo con solución entera n n el problema entero no es factible es la solución del problema entero Problema óptimo con solución no entera n introducir cortes Universidad Carlos III de Madrid – Ingeniería Informática Investigación Operativa - Curso 2003/2004 35
Programación entera Convergencia finita n Si se siguen las reglas: n Se introducen cortes también sobre la función objetivo n Se selecciona la primera de las variables básicas que toman valores no enteros n La función objetivo se toma como la primera variable Universidad Carlos III de Madrid – Ingeniería Informática Investigación Operativa - Curso 2003/2004 36
Programación entera Cortes sobre la función objetivo n Se introduce una nueva restricción x 0 - i ci xi = 0 n Variable x 0 siempre básica. Corte: A= B -1 A = 1 -c T 0 A , b= 0 b 1 0 -cn. T + cb. TB -1 N 0 I B -1 N , B= 1 -cb. T 0 B , B -1 b = Universidad Carlos III de Madrid – Ingeniería Informática Investigación Operativa - Curso 2003/2004 cb. TB -1 b 37
Programación entera Cortes sobre la función objetivo n De los resultados anteriores, el corte k (f- )k xk fz se obtiene de las partes fraccionales de -cn. T + cb. TB -1 N = - n , cb. TB -1 b = z n Valores de los multiplicadores, cambiados de signo Universidad Carlos III de Madrid – Ingeniería Informática Investigación Operativa - Curso 2003/2004 38
Programación entera Problemas enteros mixtos n Si algunas variables no son enteras, k I fik xk + fi 0/(1 -fi 0) k J (1 -fik)xk + k K nik xk - fi 0/(1 -fi 0) k L nik xk fi 0 I = {i E : fik < fi 0 }, J = {i E : fik fi 0 }, K = {i E : nk > 0 }, L = {i E : nk 0 } n No es posible introducir cortes sobre la función objetivo (convergencia) Universidad Carlos III de Madrid – Ingeniería Informática Investigación Operativa - Curso 2003/2004 39
Programación entera Método Simplex dual Universidad Carlos III de Madrid – Ingeniería Informática Investigación Operativa - Curso 2003/2004 40
- Slides: 40