15.053 Jueves, 4 de abril Un programa entero de dos variables Introducción a la programación entera Modelos de programación entera Handouts: material de clase maximizar 3x + 4y sujeto a 5x + 8y 24 x, y 0 y entero Cuál es la solución óptima? 1 2 0 1 2 3 4 5 La región factible Resolver PL (ignorar integralidad) obtener x=24/5, y=0; y z =14 2/5. Redondeo, obtener x=5, y=0, no factible! Dividir, obtener x=4, y=0, y z =12 El mismo valor de solución en x=0, y=3. El punto óptimo es x=3, y=1, y z =13 Por qué programación entera? Ventajas de las variables restringidas en valores enteros Más realistas Más flexibles Desventajas Más difícil de modelar Quizás mucho más difícil de resolver 0 1 2 3 4 5 4 Variables 0-1 Programación entera: igualdades y desigualdades lineales más restricciones que dicen que una variable debe ser entera También permitimos x j {0,1}. Esto es equivalente a 0 x j 1 y x j entero El misterio de la programación lineal Algunos problemas de PL son fáciles (podemos resolver problemas con milliones de variables). Otros son más difíciles (incluso 100 variables pueden resultar complicadas). Hacen falta conocimientos y experiencia para saber cuál es cuál. Se trata de un área activa de investigación en el MIT y en otros centros. 5 6
El juego del fiver. El juego del fiver. Al hacer clic en un círculo cambia su color y el de los círculos adyacentes. Puede cambiar a rojo todos los círculos? 7 8 El juego del fiver. El juego del fiver. Escribamos un problema de optimización que resuelva el problema con el menor número de movimientos 9 10 1 2 3 4 5 La optimización del juego del fiver. 1 2 3 4 5 x(i,j) = 1 si hago clic en en el cuadro en la fila i y la columna j. x(i,j) = 0 de otro modo Observemos el elemento en fila 3, y columna 2. Para convertirlo a rojo necesitamos que x(2,2) + x(3,1) + x(3,2) + x(3,3) + x(4,2) sea impar La optimización del juego del fiver. (i, j) que sea rojo para i = 1 a 5 y para j = 1 a 5 Deseamos minimizar el número de movimientos. Minimizar Σ i,j=1 a 5 x(i,j) Sujeto a x(i, j) + x(i, j-1) + x(i, j+1) + x(i-1, j) + x(i+1, j) es impar para i = 1 a 5, j = 1 a 5 x(i, j) es 0 o 1 para i = 1 a 5 y j = 1 a 5 x(i, j) = 0 de otro modo. Esto (con pocas modificaciones) es programación entera 11 12
La optimización del juego del fiver. (i, j) que sea rojo para i = 1 a 5 y para j = 1 a 5 Deseamos minimizar el número de movimientos. Desvelo la solución? Minimizar Σ i,j=1 a 5 x(i,j) Sujeto a x(i, j) + x(i, j-1) + x(i, j+1) + x(i-1, j) + x(i+1, j) - 2y(i,j) = 1 para i = 1 a 5, j = 1 a 5 x(i, j) es 0 o 1 para i = 1 a 5 y j = 1 a 5 y(i,j) es integral x(i, j) = 0 de otro modo. Esto es programación entera. 13 14 Tipos de programación entera Toda programación entera tiene igualdades y desigualdades lineales y todas o parte de las variables requieren ser enteras. Si todas las variables han de ser enteras, entonces se la conoce como programación entera pura. Si se requiere que todas las variables sean 0 ó 1, se llama programación entera binaria, o 0-1 Si algunas variables pueden ser fracionales y otras han de ser enteras, se llama programación entera mixta (PEM) 15 El ejemplo de la compañía Stockco Stockco está estudiando 6 inversiones. El líquido que se requiere para cada inversión así como el VAN de la inversión se da más adelante. El líquido disponible para las inversiones es 14.000$. Stockco desea maximizar su VAN. Cuál es la estrategia óptima? La inversión ha de seleccionarse entera, no se puede seleccionar una fracción de una inversión. 16 Datos para el problema Stockco Presupuesto inversión = 14.000$ Formulación programación entera Inversión 1 2 3 4 5 6 Líquido necesario (miles) VAN añadido (miles) 5$ 7$ 4$ 3$ 4$ 6$ 16$ 22$ 12$ 8$ 11$ 19$ 17 Cuáles son las variables de decisión? 1, invirtiendo en i = 1,...,6, x i = 0, en otro caso Objetivo y restricciones? Max 16x 1 + 22x 2 + 12x 3 + 8x 4 + 11x 5 + 19x 6 5x 1 + 7x 2 + 4x 3 + 3x 4 + 4x 5 + 6x 6 14 x j ε {0,1} para cada j = 1 a 6 18
Restricciones en programaciones enteras Las restricciones en este caso son las indivisibilidades economicas, o se selecciona un proyecto, o no. No se puede seleccionar una fracción de un proyecto. Igualmente, la variables enteras pueden modelar requisitos lógicos (p. ej., si se selecciona el stock 2, también el stock 1.) Cómo modelar restricciones lógicas Se seleccionan 3 stocks. Si se selecciona el stock 2, también el stock 1. Si se selecciona el stock 1, el stock 3 no se selecciona. Se puede seleccionar el stock 4 o el stock 5, pero no ambos. 19 20 Formulación de restricciones Si se selecciona el stock 2, también el stock 1 Se seleccionan 3 stocks Representación bidimensional La restricción de la programación entera: x 1 + x 2 + x 3 + x 4 + x 5 + x 6 =3 x 1 x 2 Stock 2 21 Stock 1 Trabaje con su compañero 5 min para tratar de modelar las otras restricciones. 22 Si se selecciona el stock 1, el stock 3 no se selecciona Se puede seleccionar el stock 4 o el stock 5, pero no ambos Representación bidimensional La restricción de la programación entera: Representación bidimensional La restricción de la programación entera: Stock 3 x 1 + x 3 1 stock 5 x 4 + x 5 = 1 Stock 1 23 stock 4 24
Representación de funciones no lineales Coste de los PC Pongamos que el coste de los PC es el siguiente: 2000$ cada uno si compra de 1 a 10 1000$ cada uno si compra más de 10 Pongamos que se van a comprar como máximo 30 PC Asumamos que el nº de PC comprados sea x + y donde 0 x 10, y y 0 sólo si x = 10. coste es 2000$ x + 1000$ y. 35000 30000 25000 20000 15000 10000 5000 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 25 26 Formulación con programacíón entera crear una variable tal que w = 1 si x = 10. coste es 2000 x + 1000 y sujeto a 0 x 10 0 y w x/10 y 20 w w binario, x, y 0 entero Problema de localización del almacén n almacenes coste f i de abrir almacén i m clientes cliente j tiene una demanda de d j coste de envío por unidad c ij de servir al ciente i a través del almacén j. Variables: y j = 1 si se abre el almacén x ij = cantidad de la demanda del cliente i satisfecha a través del almacén j. 27 28 Supongamos que sabía qué almacenes estaban abiertos. S = conj. de alm. abiertos x ij = demanda satisfecha para cliente i en almacén j y j = 1 para j en S, y j = 0 para j no en S. sujeto a: los clientes ven su demanda satisfecha no se realizan envíos desde un almacén vacío minimice Σ i,j c ij x ij + Σ j S f j Σ i x ij = d j x ij d j if y j = 1 x ij = 0 if y j = 0 y, x 0 29 Más sobre localización de almacenes y i = 1 si se abre el almacén i y i = 0 en caso contrario x ij = flujo de i a j sujeto a: los clientes ven satisfecha su demanda los almacenes se abren o no se abren (no se dan aperturas parciales) no se realizan envíos desde un almacén vacío minimice Σ i,j c ij x ij + Σ i f i y i Σ i x ij = d j 0 y i 1 y i integral para todo i. x ij d j y i para todo i, j y, x 0 30
Dos aspectos clave de usar las variables enteras en el modelo Costes: incluimos el coste del almacén sólo si está abierto. Σ i f i y i Restricciones: no permitimos el envío desde el almacén j si no está abierto. x ij d j y i para todo i, j 31 Más sobre localización de almacenes El anterior es un subproblema que ocurre en la gestión de la cadena de suministo, y se puede enriquecer sistema de distribución más complejo restricciones de capacidad costes de transporte no lineales horarios de entrega productos múltiples normas de gestión y más 32 Utilización de Excel Solver para resolver programación entera Añadir las restricciones de las variables enteras (o añadir que una variable es binaria) Configurar Solver Tolerance. (La tolerancia es la desviación de porcentaje de la optimalidad permitida por Solver para resolver programación entera) el valor por defecto es 5% este valor es demasiado alto suele hallar el punto óptimo en pequeños problemas Comentarios sobre los modelos PE A menudo existen varios modos de modelar el mismo programa entero. Las calculadoras para resolver programación entera son muy sensibles a la formulación (lo que no sucede en la programación lineal) 33 34 Ejemplo restricción A: 2x 1 + 2x 2 + + 2x 50 51 restricción B: x 1 + x 2 + + x 50 25 asumir que x es binario restricciones C: x 1 y, x 2 y,, x 50 y donde y es binario) restricción D: x 1 + + x 50 50 y B domina A, C domina D La razón no es obvia, hasta que se ven los algoritmos. 35 Resumen sobre programación entera Mejora mucho la capacidad de modelar Indivisibilidades económicas Restricciones lógicas Construcción de modelos no lineales problemas clásicos sobre gestión de presupuesto y gestión de la cadena de suministro No es fácil de modelar No es fácil de resolver 36
El número de stocks seleccionado no es tres Bien x 1 +x 2 +x 3 +x 4 +x 5 +x 6 4 o (1) x 1 +x 2 +x 3 +x 4 +x 5 +x 6 2 (2) Añadir una variable auxiliar w {0,1} con las siguientes propiedades: Si w = 1, se satisface la primera restricción (A) Si w = 0, se satisface la segunda restricción (B) Ya que w es 0 ó 1, al menos una de las dos restricciones debe ser satisfecha. 37 El número de stocks seleccionado no es tres (continuación) Añadir la restricción: x 1 +x 2 +x 3 +x 4 +x 5 +x 6 4w (A) Así que, si w=1, x 1 +x 2 +x 3 +x 4 +x 5 +x 6 4 (1) Nota: si w = 0, la primera restricción se satisface automáticamente x 1 +x 2 +x 3 +x 4 +x 5 +x 6 2 + 4w (B) Así que, si w=0, x 1 +x 2 +x 3 +x 4 +x 5 +x 6 2 (2) Nota: si w = 1, la segunda restricción se satisface automáticamente (Si hubiésemos escrito 2 + 3w, habríamos eliminado de modo incorrecto la solución en la que x j = 1 para toda j) 38 Debe seleccionar el stock 1 salvo que el VAN de la cartera de valores supere 42.000$. Si VAN< 42 entonces x 1 =1. Añadir la restricción: x 1 (42 NPV)/42. Un denominador más grande también funciona. Recuerde que el VAN es 16x 1 + 22x 2 + 12x 3 + 8x 4 + 11x 5 + 19x 6 42x 1 42 - (16x 1 +22x 2 +12x 3 +8x 4 +11x 5 +19x 6 ) 39