La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Programación entera En muchos problemas reales las variables sólo pueden tomar valores enteros Ejemplos: decisiones sobre inversiones, compras, arranques,

Presentaciones similares


Presentación del tema: "Programación entera En muchos problemas reales las variables sólo pueden tomar valores enteros Ejemplos: decisiones sobre inversiones, compras, arranques,"— Transcripción de la presentación:

1 Programación entera En muchos problemas reales las variables sólo pueden tomar valores enteros Ejemplos: decisiones sobre inversiones, compras, arranques, etc. Cantidades de productos no divisibles, personas, etc. Problemas con el método Simplex: soluciones no están en vértices ¿cómo saber si tenemos una solución? 1

2 Programación entera Problema entero puro: min c T x s.a Ax = b x 0 x i entera i Problema entero mixto: min c T x s.a Ax = b x 0 x i entera i I 2

3 Programación entera Por simplicidad: problema entero puro Métodos también aplicables al problema mixto Dificultad principal: no podemos emplear aproximaciones basadas en la continuidad de las funciones del problema no podemos extraer conclusiones para puntos próximos 3

4 Programación entera Métodos de solución: Comparar todas las alternativas (no es eficiente) Procedimientos eficientes para seleccionar o descartar alternativas Basados en la aproximación del problema mediante problemas lineales (que sabemos resolver) 4

5 Programación entera Procedimiento más simple: ignorar la condición de que las variables sean enteras, y redondear la solución Inconvenientes: ¿tiene significado la solución no entera? ¿cómo se redondea la solución? ¿cómo se obtiene una solución redondeada factible? ¿cuándo es óptima una solución redondeada? 5

6 ¿Es válida una solución aproximada?

7

8

9

10 Algunos ejemplos. Formulación Hoja de problemas: formulación de problemas enteros Modelización de condiciones lógicas

11 Programación entera Método más sofisticado: introducir restricciones adicionales que no eliminen soluciones enteras (cubierta convexa) Si las soluciones enteras son vértices, podemos aplicar el método Simplex Inconvenientes: ¿Cómo se calculan las restricciones necesarias? ¿Cuántas hacen falta? 11

12 Programación entera Cubierta convexa 12

13 Programación entera Métodos más eficientes: Combinación de ideas se añaden restricciones que aproximan la cubierta convexa (planos de corte), o se añaden restricciones que eliminan puntos que no pueden ser solución (branch and bound) se resuelven problemas lineales relajados 13

14 Programación entera Método de branch and bound Se trata de: dividir la región factible, y descartar aquellas partes en las que no puede encontrarse la solución Partes que no pueden descartarse: se calcula la solución por el método Simplex, o se subdividen en nuevas partes añadiendo restricciones 14

15 Programación entera Procedimiento: Dado el problema min c T x s.a Ax = b x 0 x i entera i se resuelve su versión relajada (P 0 ) Si la solución de (P 0 ) es entera, se termina Si no lo es, se subdivide el problema en varios 15

16 Programación entera División del problema Supongamos que la solución del problema relajado es x k *, y que (x k * ) i no es entera En la solución (entera) se cumplirá una de las dos condiciones siguientes: x i (x k * ) i, x i (x k * ) i + 1 donde x denota la parte entera de x 16

17 Programación entera División del problema Se generan los dos problemas siguientes: P 1 = P 0 {x i (x k * ) i }, P 2 = P 0 {x i (x k * ) i +1} En general, se tiene una lista de problemas pendientes de resolver Se toman los problemas de la lista, y se resuelven hasta que la lista queda vacía 17

18 Programación entera Ejemplo gráfico Solución P0 Solución P1 Solución P2 Solución P3 P4 no factible Solución entera 18

19 Programación entera ¿Qué sucede al resolver subproblemas? Subproblema no factible: nada Subproblema con solución no entera: se generan nuevos subproblemas Subproblema con solución entera: se compara con la mejor solución entera hasta el momento 19

20 Programación entera Eliminación de nodos Método no eficiente si es necesario examinar todos los subproblemas Número de subproblemas: 2 n Eliminar subproblemas: si la función objetivo óptima del problema relajado cumple ciertas condiciones 20

21 Programación entera Eliminación de subproblemas Basada en mejor solución entera Mejor valor de la función objetivo para una solución entera (hasta el momento): z Si para un subproblema se cumple c T x k * > z descartar el subproblema (y todos los subproblemas que se generen de él) Todas sus soluciones enteras son peores que z 21

22 Programación entera Selección de subproblema Análisis en profundidad del árbol de subproblemas Se toma el último subproblema generado Se obtienen rápidamente soluciones enteras Alternativa: búsqueda en extensión Se examinan primero todos los problemas de un nivel dado 22

23 Programación entera Arbol de subproblemasP0P8 P5 P1 P6 P4P3 P7 P2 P9 P11 P10 P12 -Búsqueda en profundidad: - Búsqueda en profundidad: P0, P1, P3, P4, P2, P5, P7 P9, P10, P11, P12, P8, P6 - Búsqueda en extensión: P0, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12 23

24 Programación entera Generación de nuevos subproblemas: ¿Qué variable no entera se escoge para generar los subproblemas? Aquella que permita obtener la solución más rápidamente Aquella que dé un menor valor de la función objetivo (más cerca de la solución) Como el valor de la función objetivo relajada aumenta, variable con menor aumento 24

25 Programación entera Estimación de cambios en la f. objetivo: x i x i La variable i es básica y pasa a ser no básica Una variable no básica debe pasar a ser básica x i + (B -1 N ) i x N = (B -1 b ) i c T (x - x ) (x i - x i ) min k (-c k /n ik ) Se escoge la variable i con el menor cambio 25

26 Programación entera Resolución de subproblemas Dado un subproblema resuelto, añadimos una restricción al subproblema La última solución no cumple la restricción Aplicamos el método dual del Simplex: Ponemos la restricción en forma estándar Añadimos la restricción a la tabla Aplicamos el método dual 26

27 Programación entera Ejemplo: max 8x 1 + 9x 2 s.a 76 x x x x x 2 3 x 0 entera Solución del problema relajado: x 1 = 9/2, x 2 = 25/4 3 = -299/2508, 4 = -70/

28 Programación entera Nuevas restricciones: x 1 4, x 1 5 Primer subproblema: x 1 + s 4 = 4, s 4 0 Nueva solución del primer subproblema: x 1 = 4, x 2 = 181/32 4 = -9/32, 4 = -299/16 28

29 Programación entera Métodos de planos de corte Alternativa a métodos branch and bound Introducir nuevas restricciones sin dividir el problema sin eliminar soluciones enteras Objetivo: solución del problema relajado = solución del problema entero 29


Descargar ppt "Programación entera En muchos problemas reales las variables sólo pueden tomar valores enteros Ejemplos: decisiones sobre inversiones, compras, arranques,"

Presentaciones similares


Anuncios Google