Programación Lineal Entera Los modelos de programación entera son una extensión de los modelos lineales en los que algunas variables toman valores enteros. Con frecuencia las variables enteras sólo toman valores en 0-1, ya que este tipo de variables permiten representar condiciones lógicas. Este tipo de modelos permite representar sistemas mucho más complejos. A cambio, la resolución de los mismos se complica excesivamente. No se puede utilizar la suavidad de las funciones para inferir el comportamiento de las mismas cerca del óptimo. Problemas con unas solas decenas de variables pueden ser casi imposibles de resolver. 1 Programación Entera: contenidos 1. Introducción 2. Algunos modelos básicos y modelización con variables binarias a) Problema de la mochila b) Problema de asignación y de asignación generalizada c) Problema del cubrimiento d) Relaciones lógicas 3. Resolución del problema. a) Relajaciones lineales y relación fundamental. b) Calidad de una solución entera: brecha de suboptimalidad. c) Ramificación y acotación (Branch and Bound). 2 Programación Entera: ejemplos mı́n ctx Ax ≤ b x≥0 xi entera para i ∈ I ⊆ {1, . . . , n} X Si I = {1, . . . , n} ⇒ Programación Lineal Entera Pura. X Si I 6= {1, . . . , n} ⇒ Programación Lineal Entera Mixta. X Si xi ∈ {0, 1}, ∀ i ∈ I ⇒ Programación Binaria o 0–1. 3 Problema de la Mochila: ejemplo Un ingeniero informático autónomo quiere optar a realizar un proyecto informático de entre 5 que salen a concurso. Sólo tiene presupuesto para pagar las tasas de solicitud en 3 proyectos. ¿A qué 3 proyectos optar? Beneficio esperado (en miles de euros) que puede obtener a los 3 años con cada uno de los proyectos. Estimación de la probabilidad de que no le concedan cada uno de los proyectos Proyecto Beneficio (miles euros) Probabilidad de rechazo 1 90 0.4 2 150 0.7 3 80 0.4 4 100 0.5 5 120 0.6 Problema: qué proyectos deberı́a solicitar para obtener un beneficio mayor y asegurarse de que la suma de las probabilidades de rechazo no sea superior a 1.5 4 Problema de la Mochila: ejemplo (cont.) Variables de decisión: xi = 1, 0, si se solicita el proyecto i, si no se soliciota el proyecto i. i = 1, 2, 3, 4, 5 Restricciones: • Lı́mite presupuestario: x1 + x2 + x3 + x4 + x5 ≤ 3 • Suma de las probabilidades de rechazo no exceda 1.5 0,4x1 + 0,7x2 + 0,4x3 + 0,5x4 + 0,6x5 ≤ 1,5 • Condición de variables binarias: xi ∈ {0, 1}, i = 1, 2, 3, 4, 5 5 Problema de la Mochila: ejemplo (cont.) Objetivo: maximizar el beneficio esperado 90x1 + 150x2 + 80x3 + 100x4 + 120x5 ¿Cómo cambiarı́as el modelo anterior si se hubiera pedido que la probabilidad de no obtener ningún proyecto fuese, a lo sumo, del 10 %? Si seleccionamos, por ejemplo, los proyectos 1, 2 y 3: P {no obtener ningún proyecto} = P {rechazan P1 y P2 y P3 } = (0,4)(0,7)(0,4) =⇒ P {no obtener ningún proyecto} ≤ 0,1 ⇐⇒ (0,4)(0,7)(0,4) ≤ 0,1 ⇐⇒ log((0,4)(0,7)(0,4)) ≤ log(0,1) ⇐⇒ log(0,4) + log(0,7) + log(0,4) ≤ log(0,1) − log(0,4)x1 − log(0,7)x2 − log(0,4)x3 − log(0,5)x4 − log(0,6)x5 ≥ 1 6 Problema de la Mochila Se dispone de n objetos para llenar una mochila. El objeto j tiene un peso pj y tiene una utilidad (valor) cj . La mochila admite un peso máximo de b. El problema consiste en decidir qué objetos se introducen en la mochila de forma que se maximice la utilidad de los objetos seleccionados. Variables: xj = 1 0 si el objeto j es seleccionado, en otro caso. ∀j = 1, . . . , n 7 Problema de la Mochila Restricciones: • Lı́mite de peso de la mochila: n X pj xj ≤ b j=1 • Condición de variables binarias: xj ∈ {0, 1} Función objetivo: máx n X ∀j = 1, . . . , n cj xj j=1 Se pueden considerar variantes en las que se incluya también el volumen, etc. O la posibilidad de que haya más de una unidad de cada objeto. Entonces, las variables serı́an xj igual al número de unidades del objeto j seleccionadas. 8 Problema de asignación El modelo de asignación permite asignar eficientemente un conjunto de personas a un conjunto de trabajos, máquinas a tareas, coches de policı́a a sectores de una ciudad, vendedores a zonas, etc. El objetivo es minimizar los costes, tiempos de desplazamiento, o maximizar la efectividad. Es un modelo muy frecuente como submodelo en otros más complejos. 9 Problema de asignación. Ejemplo Juan es el jefe de un bufete de jóvenes abogados y está interesado en la utilización más efectiva de sus recursos de personal buscando la forma de hacer las mejores asignaciones de abogado-cliente. El 1 de Marzo le llegan 4 nuevos clientes. Revisando a su personal encuentra que 4 abogados: Ana, Bruno, Carmen y Domingo. Todos pueden ser asignados a los casos. Cada uno de ellos sólo se puede hacer cargo de un caso. 10 Problema de asignación. Ejemplo (cont.) Para decidir la mejor asignación Juan tiene en cuenta una tasa de efectividad (de 1 a 9) construida sobre actuaciones anteriores de dichos abogados, ya que no todos son igual de buenos (especialistas) en todo tipo de procesos: Abogado ana (1) bruno (2) carmen (3) domingo (4) tasa de efectividad según caso de cliente divorcio (1) fusión desfalco (3) herencias (4) empresarial (2) 6 2 8 5 9 3 5 8 4 8 3 4 6 7 6 4 11 Problema de asignación. Ejemplo (cont.) Para determinar la asignación más efectiva Juan debe resolver el siguiente problema de asignación máx 6x11 + 2x12 + 8x13 + 5x14 + 9x21 + 3x22 + 5x33 + 8x44+ 4x31 + 8x32 + 3x33 + 4x34 + 6x41 + 7x42 + 6x43 + 4x44 s.a. 4 X i=1 4 X xij = 1, ∀ j = 1, . . . , 4, xij = 1, ∀ i = 1, . . . , 4, j=1 xij ∈ {0, 1}, ∀ i = 1, . . . , 4, ∀j = 1, . . . , 4. donde las variables xij , i = 1, . . . , 4, j = 1, . . . , 4, se definen como xij = 1, 0, si el abogado i lleva el caso del cliente j, en otro caso. 12 Problema de Asignación Generalizada. Ejemplo Es una generalización del modelo anterior. Cada abogado puede hacerse cargo de más de un cliente simultáneamente, siempre y cuando no supere su capacidad Un sistema de procesamiento compartido tiene 3 ordenadores diferentes (Oj , j = 1, 2, 3) y tiene que procesar 6 tareas (Ti i = 1, . . . , 6) Todas las tareas se pueden realizar en cualquier ordenador, pero no pueden fraccionarse (se deben completar en el ordenador en que se inician) Los tiempos de procesamiento de cada tarea i en cada ordenador j, tij , varı́a según el ordenador El tiempo disponible de cada ordenador para ejecutar las tareas está limitado 13 Problema de Asignación Generalizada. Ejemplo (cont.) Tarea T1 T2 T3 T4 T5 T6 T. disp. (Cj ) Ordenador O1 O2 O3 18 16 12 14 21 19 23 27 33 16 24 23 17 24 24 25 28 30 47 41 46 ¿A qué ordenador debemos mandar cada tarea si queremos minimizar el tiempo total de procesamiento? Variables xij = 1, 0, si la tarea i se asigna al ordenador j, , en otro caso. i = 1, . . . , 6, j = 1, 2, 3. 14 Problema de Asignación Generalizada. Ejemplo (cont.) Función objetivo T = 18x11 + 16x12 + 12x13 + 14x21 + 21x22 + 19x23+ + 23x31 + 27x32 + 33x33 + 16x41 + 24x42 + 23x43+ + 17x51 + 24x52 + 24x53 + 25x61 + 28x62 + 30x63 Restricciones X Cada tarea se procesa en un sólo ordenador: 3 X xij = 1, i = 1, . . . , 6. j=1 X Limitación de tiempo disponible en cada ordenador: 18x11 + 14x21 + 23x31 + 16x41 + 17x51 + 25x61 ≤ 47 16x12 + 21x22 + 27x32 + 24x42 + 24x52 + 28x62 ≤ 41 12x13 + 19x23 + 33x33 + 23x43 + 24x53 + 30x63 ≤ 46 15 Problema de Asignación Generalizada. Ejemplo (cont.) T = mı́n 6 X 3 X tij xij i=1 j=1 3 X xij = 1, 6 X tij xij ≤ Cj , i = 1, . . . , 6 j=1 j = 1, 2, 3 i=1 xij ∈ {0, 1} ¿Cómo cambiarı́as el modelo para que el tiempo de procesamiento total fuese el tiempo que tardan en completarse todas las tareas que se procesan en paralelo en los 3 ordenadores? 16 Problema de Asignación Generalizada. Ejemplo (cont.) Función objetivo n T = máx 18x11 + 14x21 + 23x31 + 16x41 + 17x51 + 25x61, 16x12 + 21x22 + 27x32 + 24x42 + 24x52 + 28x62o , 12x13 + 19x23 + 33x33 + 23x43 + 24x53 + 30x63 T = mı́n máx 6 X 6 X 6 X ti1xi1, ti2xi2, ti3xi3 , i=1 i=1 i=1 3 X xij = 1, 6 X tij xij ≤ Cj , i = 1, . . . , 6 j=1 j = 1, 2, 3 i=1 xij ∈ {0, 1} 17 Problema de Asignación Generalizada. Ejemplo (cont.) T = mı́n z 6 X ti1xi1 ≤ z 6 X ti2xi2 ≤ z 6 X ti3xi3 ≤ z 3 X xij = 1, 6 X tij xij ≤ Cj , i=1 i=1 i=1 i = 1, . . . , 6 j=1 j = 1, 2, 3 i=1 xij ∈ {0, 1} 18 Problema de Cubrimiento. Ejemplo Un técnico de sistemas del laboratorio de cálculo de la Escuela Politécnica Superior quiere acceder a cinco archivos distintos. Hay copia de estos archivos en distintas cintas de backup: f1 f2 f3 f4 f5 C1, C1, C2, C3, C1, CINTAS C2, C5, C6, C8, C9, C10 C3 C5, C7, C10 C6, C8 C2, C4, C6, C7, C9, C10 Los tamaños de las cintas de backup C1, . . . ,C10 son: (30, 50, 10, 20, 10, 40, 30, 10, 20, 20) Para poder recuperar los archivos, primero hay que hacer un volcado de las cintas al disco duro. Éste tiene que ser de la cinta completa, no puede copiarse sólo una parte. ¿Cómo determinar el conjunto de cintas a volcar de forma que se ocupe el menor espacio de disco posible y se puedan recuperar todos los archivos? 19 Problema de Cubrimiento. Ejemplo (cont.) Variables xi = 1 0 si volcamos la cinta i al disco duro, si no la volcamos. ∀i = 1, . . . , 10. Restricciones El archivo 1 tiene que ser accesible ⇒ al menos 1 de las cintas de backup que tiene copia del archivo 1 se debe volcar: x1 + x2 + x5 + x6 + x8 + x9 + x10 ≥ 1 El resto de archivos debe ser también accesible: x1 + x3 > 1 x2 + x5 + x7 + x10 > 1 x3 + x6 + x8 > 1 x1 + x2 + x4 + x6 + x7 + x9 + x10 > 1 Condición de variables binarias: xij ∈ {0, 1}, ∀i = 1, . . . , n. 20 Problema de Cubrimiento. Ejemplo (cont.) Función objetivo: Espacio disco ocupado 30x1 + 50x2 + 10x3 + 20x4 + 10x5 + 40x6 + 30x7 + 10x8 + 20x9 + 20x10 mı́n 30x1 + 50x2 + 10x3 + 20x4 + 10x5 + 40x6 + 30x7 + 10x8 + 20x9 + 20x10 x1 + x2 + x5 + x6 + x8 + x9 + x10 > 1 x1 + x3 > 1 x2 + x5 + x7 + x10 > 1 x3 + x6 + x8 > 1 x1 + x2 + x4 + x6 + x7 + x9 + x10 > 1 xi ∈ {0, 1}; i = 1, . . . , 10 21 Implicaciones entre variables binarias ¿Cómo le añadirı́as al modelo las siguientes condiciones? X Si se vuelca la cinta 4, debe volcarse la 6: x4 ≤ x6 X Si no se vuelca la cinta 3, debe volcarse la 1: x3 + x1 ≥ 1 (⇔ 1 − x3 ≤ x1) X Si se vuelca la cinta 2, no se puede volcar la cinta 6: x2 + x6 ≤ 1 (⇔ x6 ≤ 1 − x2) X No se pueden volcar a la vez las cintas 1, 9 y 10: x1 + x9 + x10 ≤ 2 22 Implicaciones entre variables binarias (cont.) X Si se vuelca la cinta 2 o la 5, no pueden volcarse ni la 6, ni la 9. Existen varias alternativas: Si se vuelca la cinta 2, no se puede volcar la cinta 6, y si se vuelca la cinta 5 tampoco: x2 + x6 6 1 x5 + x6 6 1 Lo mismo para la cintas 9: x2 + x9 6 1 x5 + x9 6 1 Otra posibilidad es modelar esta condición como: x6 + x9 6 2 − 2x2 x6 + x9 6 2 − 2x5 23 Implicaciones entre variables binarias En general, cuando un valor concreto de una variable binaria condiciona el valor que han de tomar otras variables binarias. X La condición (y = 0 ⇒ x = 0), es equivalente a x ≤ y. Si no se vuelca la cinta y, entonces tampoco se puede volcar la cinta x. X La condición (y = 0 ⇒ x = 1), es equivalente a x ≥ 1 − y. Si no se vuelca la cinta y, entonces se debe volcar la cinta x. X La condición (y = 1 ⇒ x = 0), es equivalente a x ≤ 1 − y. Si se vuelca la cinta y, entonces no se puede volcar la cinta x. X La condición (y = 1 ⇒ x = 1), es equivalente a x ≥ y. Si se vuelca la cinta y, entonces también hay que volcar la cinta x. 24 Resolución del problema 25 La resolución se complica: el redondeo La primera tentación a la hora de abordar la resolución de un problema de programación entera es redondear la solución obtenida al relajar la condición de integralidad. Esta no es una buena estrategia ya que: 1. No siempre proporciona la solución óptima. 2. No garantiza la obtención de soluciones factibles. 3. La selección del redondeo adecuado es un problema exponencial. 26 El redondeo: ejemplo Consideremos el siguiente problema de programación lineal entera z = mı́nx1 − 11x2 − x1 + 10x2 ≤ 40 10x1 + 10x2 ≤ 205 x1, x2 ≥ 0 y enteras Solución óptima sin considerar las condiciones de integralidad: x1 = 15 y x2 = 5,5 27 El redondeo: ejemplo La región factible del modelo es: (15, 11 ) 2 (15, 6) r r r r (10, 5) (15, 5) Posibles redondeos: x1 = 15 y x2 = 6: no verifica la primera restricción. x1 = 15 y x2 = 5: es factible y z = −40. La solución x1 = 10 y x2 = 5 es factible y z = −45 28 Resolución de un problema entero Idea: Un problema lineal continuo es “muy sencillo” de resolver ⇒ ¿por qué no desarrollar métodos de resolución que empleen la programación lineal continua como una herramienta para resolver el problema entero? ¿cómo desarrollar estos métodos? a partir de las propiedades de la solución de un problema continuo y de las del método de resolución del mismo, y a partir de las caracterı́sticas de un problema entero (cómo se modele el problema será muy importante) 29 Resolución del problema Los métodos más usados parten de la relajación del problema Idea: sustituir el problema entero original por un problema más sencillo, que pueda ser resuelto más fácilmente y, por tanto, que pueda ser utilizado para obtener cotas. La más usada es la relajación lineal que consiste en eliminar la condición de que las variables tomen valores enteros. Pero, no es la única r r r r r r r r r r r 30