Programación Lineal: Modelos PLE CCIR / Matemáticas euresti@itesm.mx CCIR / Matemáticas Programación Lineal: Modelos PLE euresti@itesm.mx 1 / 35 Introduccion Introduccion En esta lectura se verán cómo se puede modelar situaciones mediante un modelo de programación lineal entera o entera mixta (PLE). También veremos algunos ejemplos que ilustran cómo modelar situaciones que nos son lineales, tanto en las restricciones como en la función objetivo, que mediante la introducción de variables binarias se pueden convertir a un modelo lineal. CCIR / Matemáticas Programación Lineal: Modelos PLE euresti@itesm.mx 2 / 35 0-1 Knapsack problem 0-1 Knapsack problem Suponga que hay n proyectos y que el costo del proyecto i es ci y que por otro lado el valor del proyecto es ai . Cada proyecto se realiza o no, de manera que no es posible realizar una fracción de él. El presupuesto disponible es limitado y tiene el valor b. El problema de la mochila consiste en elegir un subconjunto de proyectos que maximice el valor obtenido y que no exceda el presupuesto dado: Max n X ai xi i=1 sujeto a n X c i xi ≤ b i=1 La variable binaria xi sirve para determinar cuando el proyecto i es seleccionado: 0 si no lo es, 1 si sı́ lo es. CCIR / Matemáticas Programación Lineal: Modelos PLE euresti@itesm.mx 3 / 35 Ejemplo 1 Ejemplo 1 StockCo considera cuatro inversiones. La inversión 1 proporcionará un valor actual neto (VAN) de 16,000 dólares; la inversión 2 un VAN de 20,000 dólares; la inversión 3 un VAN de 12,000 dólares; y la inversión 4 un VAN de 8,000 dólares. Cada inversión requiere cierto flujo de caja en el momento actual; la inversión 1 requiere 5,000 dólares; la inversión 2 requiere 7,000 dólares; la inversión 3 requiere 4,000 dólares; y la inversión 4 requiere 3,000 dólares. Se dispone de 14,000 dólares para la inversión. Formule y resuelva un modelo PLE para maximizar el VAN obtenido por StockCo. CCIR / Matemáticas Programación Lineal: Modelos PLE euresti@itesm.mx 4 / 35 Ejemplo 1 Ejemplo 1 StockCo considera cuatro inversiones. La inversión 1 proporcionará un valor actual neto (VAN) de 16,000 dólares; la inversión 2 un VAN de 20,000 dólares; la inversión 3 un VAN de 12,000 dólares; y la inversión 4 un VAN de 8,000 dólares. Cada inversión requiere cierto flujo de caja en el momento actual; la inversión 1 requiere 5,000 dólares; la inversión 2 requiere 7,000 dólares; la inversión 3 requiere 4,000 dólares; y la inversión 4 requiere 3,000 dólares. Se dispone de 14,000 dólares para la inversión. Formule y resuelva un modelo PLE para maximizar el VAN obtenido por StockCo. Variables de Decisión: 1 si se realiza la inversión i 0 otro caso Objetivo: Maximizar el VAN: Max z = 16, 000 x1 + 20, 000 x2 + 12, 000 x3 + 8, 000 x4 xi = Restricciones: 5, 000 x1 + 7, 000 x2 + 4, 000 x3 + 3, 000 x4 ≤ 14, 000 xi = 1 ó 0, para i = 1, 2, 3, 4. CCIR / Matemáticas Programación Lineal: Modelos PLE euresti@itesm.mx 4 / 35 Ejemplo 1 Código LINDO y reporte Euing MAX 0.12X11+0.12X21+0.14X12+0.14X22-CX1 ST X1 -X11 - X12=0 X2 -X21 + X22=0 X2 <= 1000 X1 <= 2000 0.5X11 + 0.5X21 - X11 <=0 0.6X12 + 0.6X22 - X12 <= 0 125Z3 + 225Z4 + 300Z5 - CX1=0 Z1 - Y1 <= 0 Z2 - Y2 - Y1 <=0 Z3 - Y3 - Y2 <=0 Z4 - Y4 - Y3 <=0 Z5 - Y4 <= 0 Y1 + Y2 + Y3 + Y4 = 1 Z1 + Z2 + Z3 + Z4 + Z5 = 1 1000Z3 + 1500Z4 + 2000Z5 - X1 <=0 END INTE Y1 INTE Y2 INTE Y3 INTE Y4 CCIR / Matemáticas OBJECTIVE FUNCTION VALUE 1) 476.0000 VARIABLE VALUE REDUCED COST Y1 1.000000 0.000000 Y2 0.000000 0.000000 Y3 0.000000 0.000000 Y4 0.000000 0.000000 X11 1400.000000 0.000000 X21 1400.000000 0.000000 X12 600.000000 0.000000 X22 400.000000 0.000000 CX1 0.000000 0.000000 X1 2000.000000 0.000000 X2 1000.000000 0.000000 Z3 0.000000 125.000000 Z4 0.000000 225.000000 Z5 0.000000 300.000000 Z1 0.000000 0.000000 Z2 1.000000 0.000000 ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 -0.236000 3) 0.000000 -0.004000 4) 0.000000 0.004000 5) 0.000000 0.236000 6) 0.000000 0.232000 7) 0.000000 0.240000 8) 0.000000 1.000000 9) 1.000000 0.000000 10) 0.000000 0.000000 11) 0.000000 0.000000 12) 0.000000 0.000000 13) 0.000000 0.000000 14) 0.000000 0.000000 15) 0.000000 0.000000 16) 2000.000000 0.000000 Programación Lineal: Modelos PLE euresti@itesm.mx 5 / 35 Ejemplo 1 Modifique el modelo para StockCo para considerar por separado cada una de las siguientes restricciones: 1 StockCo puede realizar los más dos inversiones. 2 Si StockCo invierte en la inversión 2, entonces debe también invertir en la 1. 3 Si StockCo invierte en la inversión 2, entonces no podrá invertir en la 4. CCIR / Matemáticas Programación Lineal: Modelos PLE euresti@itesm.mx 6 / 35 Ejemplo 1 Modifique el modelo para StockCo para considerar por separado cada una de las siguientes restricciones: 1 StockCo puede realizar los más dos inversiones. 2 Si StockCo invierte en la inversión 2, entonces debe también invertir en la 1. 3 Si StockCo invierte en la inversión 2, entonces no podrá invertir en la 4. Respuestas 1 Basta añadir al modelo la restricción: x1 + x2 + x3 + x4 ≤ 2 Esto hace que entre todos los proyectos hay a lo más dos sı́’s 2 Basta añadir al modelo la restricción: x2 ≤ x1 Esto hace que un sı́ para el proyecto 2 implique un sı́ para el proyecto 1. 3 Basta añadir al modelo la restricción: x2 + x4 ≤ 1 Esto hace que entre los proyectos 2 y 4 hay a lo más un sı́. CCIR / Matemáticas Programación Lineal: Modelos PLE euresti@itesm.mx 6 / 35 Ejemplo 2 Ejemplo 2 Gandhi Cloth Co puede fabricar 3 tipos de ropa: camisas, shorts y pantalones. Para poder fabricar la ropa, la compañı́a debe disponer de la maquinaria adecuada la cual debe rentar. Para fabricar camisas la maquinaria se renta en 200 dólares por semana; la maquinaria para hacer shorts se renta en 150 dólares por semana; y la maquinaria para hacer pantalones cuesta 100 dólares por semana. La siguiente tabla contiene información sobre los requerimientos para fabricar la ropa en tela y en horas de trabajo, ası́ mismo contiene información sobre los precios de venta y los costos de la matera primas. TRABAJO Horas TELA m2 PRECIO VENTA dólares COSTO dólares Camisa Short Pantalón 3 2 6 4 3 4 12 8 15 6 4 8 Disponibles 150 160 Suponiendo que los costos de renta son independientes de las cantidades de ropa a producir, formule y resuelva un modelo PLE para la compañı́a Gandhi de manera que maximice sus ganancias semanales. CCIR / Matemáticas Programación Lineal: Modelos PLE euresti@itesm.mx 7 / 35 Ejemplo 2 Variables de Decisión: x1 = número de camisas a fabricar x2 = número de shorts a fabticar x3 = número de pantalones a fabricar Relativas a la renta de maquinaria: 1 si se fabrican camisas y1 = 0 otro caso 1 si se fabrican shorts y2 = 0 otro caso 1 si se fabrican pantalones y3 = 0 otro caso Objetivo Maximizar: z CCIR / Matemáticas = + (12 x1 + 8 x2 + 15 x3 ) − (6 x1 + 4 x2 + 8 x3 ) − (200 y1 + 150 y2 + 100 y3 ) Programación Lineal: Modelos PLE euresti@itesm.mx 8 / 35 Ejemplo 2 Restricciones No exceder el número de horas disponibles de trabajo 3 x1 + 2 x2 + 6 x3 ≤ 150 No exceder la cantidad semanda de tela disponible: 4 x1 + 3 x2 + 4 x3 ≤ 160 Si se decide hacer al menos una camisa, debe rentarse la maquinaria de hacer camisas: x1 ≤ M1 y1 Si se decide hacer al menos un short, debe rentarse la maquinaria de hacer shorts: x2 ≤ M2 y2 Si se decide hacer al menos una pantalón, debe rentarse la maquinaria de hacer pantalones: x3 ≤ M3 y3 x1 , x2 , x3 enteros no negativos, y1 , y2 , y3 1 ó 0. CCIR / Matemáticas Programación Lineal: Modelos PLE euresti@itesm.mx 9 / 35 Ejemplo 2 Para las restricciones anteriores, M1 , M2 y M3 son números grandes de forma tal que un 0 en yi condiciona a que xi = 0 y un 1 en yi no pone restricciones a xi . Estos valores de Mi son calculables por las restricciones. Por ejemplo, si sólo se hicieran camisas (x2 = 0 y x3 = 0) por las horas de trabajo se debe cumplir que 3 x1 ≤ 150, ası́ x1 ≤ 50. Por tanto, se puede elegir M1 = 50 o un número mayor. De igual manera, si sólo se hacen shorts (x1 = 0 y x3 = 0) de la restricción de horas de trabajo se tiene que cumplir 2 x2 ≤ 150, y sı́ x2 ≤ 75. Por tanto, se puede elegir M2 = 75 o cualquier número mayor. Si ahora decidimos elegir sólo hacer pantalones (x1 = 0 y x2 = 0) por el número de horas disponibles se debe cumplir 6 x3 ≤ 150, y ası́ x3 ≤ 25. Por tanto, se puede elegir M3 = 25 o cualquier número mayor. CCIR / Matemáticas Programación Lineal: Modelos PLE euresti@itesm.mx 10 / 35 Ejemplo 2 Código LINDO y reporte Euing MAX 0.12X11+0.12X21+0.14X12+0.14X22-CX1 ST X1 -X11 - X12=0 X2 -X21 + X22=0 X2 <= 1000 X1 <= 2000 0.5X11 + 0.5X21 - X11 <=0 0.6X12 + 0.6X22 - X12 <= 0 125Z3 + 225Z4 + 300Z5 - CX1=0 Z1 - Y1 <= 0 Z2 - Y2 - Y1 <=0 Z3 - Y3 - Y2 <=0 Z4 - Y4 - Y3 <=0 Z5 - Y4 <= 0 Y1 + Y2 + Y3 + Y4 = 1 Z1 + Z2 + Z3 + Z4 + Z5 = 1 1000Z3 + 1500Z4 + 2000Z5 - X1 <=0 END INTE Y1 INTE Y2 INTE Y3 INTE Y4 CCIR / Matemáticas OBJECTIVE FUNCTION VALUE 1) 476.0000 VARIABLE VALUE REDUCED COST Y1 1.000000 0.000000 Y2 0.000000 0.000000 Y3 0.000000 0.000000 Y4 0.000000 0.000000 X11 1400.000000 0.000000 X21 1400.000000 0.000000 X12 600.000000 0.000000 X22 400.000000 0.000000 CX1 0.000000 0.000000 X1 2000.000000 0.000000 X2 1000.000000 0.000000 Z3 0.000000 125.000000 Z4 0.000000 225.000000 Z5 0.000000 300.000000 Z1 0.000000 0.000000 Z2 1.000000 0.000000 ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 -0.236000 3) 0.000000 -0.004000 4) 0.000000 0.004000 5) 0.000000 0.236000 6) 0.000000 0.232000 7) 0.000000 0.240000 8) 0.000000 1.000000 9) 1.000000 0.000000 10) 0.000000 0.000000 11) 0.000000 0.000000 12) 0.000000 0.000000 13) 0.000000 0.000000 14) 0.000000 0.000000 15) 0.000000 0.000000 16) 2000.000000 0.000000 Programación Lineal: Modelos PLE euresti@itesm.mx 11 / 35 Ejemplo 3 Ejemplo 3 Hay seis ciudades (ciudades 1-6) en el Condado Kilroy. El condado debe determinar en qué ciudad construir estaciones de bomberos. El condado quiere construir una cantidad mı́nima de estaciones, pero quiere asegurarse que para cada ciudad hay al menos una estación que está a 15 minutos de viaje. Los datos de los tiempos de viaje, en minutos, de una ciudad a otra están en la siguiente tabla. Formule y resuelva un modelo PLE que dirá en qué ciudades construir una estacı́ón de bomberos. DE Ciudad Ciudad Ciudad Ciudad Ciudad Ciudad 1 2 3 4 5 6 CCIR / Matemáticas Ciudad 1 Ciudad 2 0 10 20 30 30 20 10 0 25 35 20 10 HACIA Ciudad 3 Ciudad 4 20 25 0 15 30 20 30 35 15 0 15 25 Programación Lineal: Modelos PLE Ciudad 5 Ciudad 6 30 20 30 15 0 14 20 10 20 15 14 0 euresti@itesm.mx 12 / 35 Ejemplo 3 Variables de decisión: 1 xi = 0 si estación de bomberos en la ciudad i si no Objetivo: P6 Minimizar el total de estaciones de bomberos: Minimizar i=1 xi Restricciones Cubrir a la ciudad 1: Como sólo ella misma y la ciudad 2 están a 15 minutos o menos, entonces la ciudad 1 se cubrirı́a teniendo estaciones de bomberos en la ciudad 1 y/o en la ciudad 2: x1 + x2 ≥ 1 Cubrir a la ciudad 2: x1 + x2 + x6 ≥ 1 Cubrir a la ciudad 3: x3 + x4 ≥ 1 Cubrir a la ciudad 4: x3 + x4 + x5 ≥ 1 Cubrir a la ciudad 5: x4 + x5 + x6 ≥ 1 Cubrir a la ciudad 6: x2 + x5 + x6 ≥ 1 CCIR / Matemáticas Programación Lineal: Modelos PLE euresti@itesm.mx 13 / 35 Ejemplo 3 Código LINDO y reporte Euing MAX 0.12X11+0.12X21+0.14X12+0.14X22-CX1 ST X1 -X11 - X12=0 X2 -X21 + X22=0 X2 <= 1000 X1 <= 2000 0.5X11 + 0.5X21 - X11 <=0 0.6X12 + 0.6X22 - X12 <= 0 125Z3 + 225Z4 + 300Z5 - CX1=0 Z1 - Y1 <= 0 Z2 - Y2 - Y1 <=0 Z3 - Y3 - Y2 <=0 Z4 - Y4 - Y3 <=0 Z5 - Y4 <= 0 Y1 + Y2 + Y3 + Y4 = 1 Z1 + Z2 + Z3 + Z4 + Z5 = 1 1000Z3 + 1500Z4 + 2000Z5 - X1 <=0 END INTE Y1 INTE Y2 INTE Y3 INTE Y4 CCIR / Matemáticas OBJECTIVE FUNCTION VALUE 1) 476.0000 VARIABLE VALUE REDUCED COST Y1 1.000000 0.000000 Y2 0.000000 0.000000 Y3 0.000000 0.000000 Y4 0.000000 0.000000 X11 1400.000000 0.000000 X21 1400.000000 0.000000 X12 600.000000 0.000000 X22 400.000000 0.000000 CX1 0.000000 0.000000 X1 2000.000000 0.000000 X2 1000.000000 0.000000 Z3 0.000000 125.000000 Z4 0.000000 225.000000 Z5 0.000000 300.000000 Z1 0.000000 0.000000 Z2 1.000000 0.000000 ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 -0.236000 3) 0.000000 -0.004000 4) 0.000000 0.004000 5) 0.000000 0.236000 6) 0.000000 0.232000 7) 0.000000 0.240000 8) 0.000000 1.000000 9) 1.000000 0.000000 10) 0.000000 0.000000 11) 0.000000 0.000000 12) 0.000000 0.000000 13) 0.000000 0.000000 14) 0.000000 0.000000 15) 0.000000 0.000000 16) 2000.000000 0.000000 Programación Lineal: Modelos PLE euresti@itesm.mx 14 / 35 Ejemplo 4 Ejemplo 4 FC-Co considera construir plantas en tres localidades desde donde se proveerán productos a otras 4 ciudades distintas. La primera de las posibles plantas tendrı́a una capacidad de 39 productos y un costo de 91 unidades de capital; la segunda tendrı́a una capacidad de 35 productos y un costo de 70 unidades de capital; la tercera tendrı́a una capacidad de 31 productos a un costo de construcción de 24 unidades de capital. La ciudad 1 tiene una demanda de 15 productos, la segunda de 17, la tercera de 22 y la cuarta ciudad de 12 productos. Determine cuáles de las plantas debe construir de manera que se minimice el costo de construcción y el costo por envio total. Suponga que debe proporcionar a las ciudades los productos requeridos y que no debe exceder las capacidades de las plantas. Los costos de envio unitarios en unidades de capital desde cada planta a cada ciiudad están dados en la siguiente tabla. P1 P2 P3 CCIR / Matemáticas C1 6 4 8 C2 2 9 8 C3 6 5 1 C4 7 3 5 Programación Lineal: Modelos PLE euresti@itesm.mx 15 / 35 Ejemplo 4 Variables de decisión yi : variable binaria que indica si la planta i se construye xi,j : Variable entera que determina cuántos productos se envian desde la plata i a la ciudad j. Objetivo Min z = 3 X i=1 cpi · yi + 3 X 4 X ci,j · xi,j i=1 j=1 Restricciones Cumplir demandas: Para toda ciudad j = 1, 2, 3, 4, P3 No exceder capacidades: Para toda planta i = 1, 2, 3, i=1 xi,j P4 ≥ dj j=1 xi,j ≤ s i · yi Naturales: Para toda i = 1, 2, 3, yi es binaria. Naturales: Para toda i = 1, 2, 3 y para toda j = 1, 2, 3, 4, xi,j es entera. CCIR / Matemáticas Programación Lineal: Modelos PLE euresti@itesm.mx 16 / 35 Ejemplo 4 Código LINDO y reporte Euing MAX 0.12X11+0.12X21+0.14X12+0.14X22-CX1 ST X1 -X11 - X12=0 X2 -X21 + X22=0 X2 <= 1000 X1 <= 2000 0.5X11 + 0.5X21 - X11 <=0 0.6X12 + 0.6X22 - X12 <= 0 125Z3 + 225Z4 + 300Z5 - CX1=0 Z1 - Y1 <= 0 Z2 - Y2 - Y1 <=0 Z3 - Y3 - Y2 <=0 Z4 - Y4 - Y3 <=0 Z5 - Y4 <= 0 Y1 + Y2 + Y3 + Y4 = 1 Z1 + Z2 + Z3 + Z4 + Z5 = 1 1000Z3 + 1500Z4 + 2000Z5 - X1 <=0 END INTE Y1 INTE Y2 INTE Y3 INTE Y4 CCIR / Matemáticas OBJECTIVE FUNCTION VALUE 1) 476.0000 VARIABLE VALUE REDUCED COST Y1 1.000000 0.000000 Y2 0.000000 0.000000 Y3 0.000000 0.000000 Y4 0.000000 0.000000 X11 1400.000000 0.000000 X21 1400.000000 0.000000 X12 600.000000 0.000000 X22 400.000000 0.000000 CX1 0.000000 0.000000 X1 2000.000000 0.000000 X2 1000.000000 0.000000 Z3 0.000000 125.000000 Z4 0.000000 225.000000 Z5 0.000000 300.000000 Z1 0.000000 0.000000 Z2 1.000000 0.000000 ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 -0.236000 3) 0.000000 -0.004000 4) 0.000000 0.004000 5) 0.000000 0.236000 6) 0.000000 0.232000 7) 0.000000 0.240000 8) 0.000000 1.000000 9) 1.000000 0.000000 10) 0.000000 0.000000 11) 0.000000 0.000000 12) 0.000000 0.000000 13) 0.000000 0.000000 14) 0.000000 0.000000 15) 0.000000 0.000000 16) 2000.000000 0.000000 Programación Lineal: Modelos PLE euresti@itesm.mx 17 / 35 Restricciones del tipo O BIEN Restricciones del tipo O BIEN Para codificar una restricción del tipo f (x1 , x2 , . . . , xn ) ≤ 0 o bien g (x1 , x2 , . . . , xn ) ≤ 0 el truco consiste en introducir una variable binaria (0 ó 1) y que indica cuál restricción se cumple, y lo anterior se codifica como f (x1 , x2 , . . . , xn ) ≤ g (x1 , x2 , . . . , xn ) ≤ My M (1 − y ) donde M es un número positivo muy grande. CCIR / Matemáticas Programación Lineal: Modelos PLE euresti@itesm.mx 18 / 35 Ejemplo 5 Ejemplo 5 Dorian Auto considera la fabricación de 3 tipos de autos: Compacto, mediano, y grande. En la siguiente tabla se muestran los recursos requeridos y las ganancias por cada tipo de auto. En la actualidad se cuenta con 600 toneladas de acero y 60,000 horas de trabajo. Para que la producción de un tipo de auto sea factible, hay que fabricar al menos 100 automóviles. Formule un modelo PLE para maximizar la ganancia de Dorian Auto. Acero requerido Trabajo requerido Gancia obtenida CCIR / Matemáticas COMPACTO 1.5 ton 30 horas 2,000 dólares MEDIANO 3 ton 25 horas 3,000 dólares Programación Lineal: Modelos PLE GRANDE 5 ton 40 horas 4,000 dólares euresti@itesm.mx 19 / 35 Variables de Decisión Ejemplo 5 xi = Num de autos i a producir (i = 1 Compacto, i = 2 mediano, i = 3 grande) Objetivo Max z = 3 X gi · xi i=1 Restricciones Recursos: Acero: 1.5 x1 + 3 x2 + 5 x3 ≤ 600 Trabajo: 30 x1 + 25 x2 + 40 x2 ≤ 60, 000 Producción: 400 ≤ xi ó xi = 0 Restricciones naturales xi ≥ 0 Truco: 400 ≤ xi ó xi = 0 → f = 400 − xi ≤ 0 ó g = xi ≤ 0 → (400 − xi ) ≤ M yi y xi ≤ M (1 − yi ) CCIR / Matemáticas Programación Lineal: Modelos PLE euresti@itesm.mx 20 / 35 Ejemplo 5 Código LINDO y reporte Euing MAX 0.12X11+0.12X21+0.14X12+0.14X22-CX1 ST X1 -X11 - X12=0 X2 -X21 + X22=0 X2 <= 1000 X1 <= 2000 0.5X11 + 0.5X21 - X11 <=0 0.6X12 + 0.6X22 - X12 <= 0 125Z3 + 225Z4 + 300Z5 - CX1=0 Z1 - Y1 <= 0 Z2 - Y2 - Y1 <=0 Z3 - Y3 - Y2 <=0 Z4 - Y4 - Y3 <=0 Z5 - Y4 <= 0 Y1 + Y2 + Y3 + Y4 = 1 Z1 + Z2 + Z3 + Z4 + Z5 = 1 1000Z3 + 1500Z4 + 2000Z5 - X1 <=0 END INTE Y1 INTE Y2 INTE Y3 INTE Y4 CCIR / Matemáticas OBJECTIVE FUNCTION VALUE 1) 476.0000 VARIABLE VALUE REDUCED COST Y1 1.000000 0.000000 Y2 0.000000 0.000000 Y3 0.000000 0.000000 Y4 0.000000 0.000000 X11 1400.000000 0.000000 X21 1400.000000 0.000000 X12 600.000000 0.000000 X22 400.000000 0.000000 CX1 0.000000 0.000000 X1 2000.000000 0.000000 X2 1000.000000 0.000000 Z3 0.000000 125.000000 Z4 0.000000 225.000000 Z5 0.000000 300.000000 Z1 0.000000 0.000000 Z2 1.000000 0.000000 ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 -0.236000 3) 0.000000 -0.004000 4) 0.000000 0.004000 5) 0.000000 0.236000 6) 0.000000 0.232000 7) 0.000000 0.240000 8) 0.000000 1.000000 9) 1.000000 0.000000 10) 0.000000 0.000000 11) 0.000000 0.000000 12) 0.000000 0.000000 13) 0.000000 0.000000 14) 0.000000 0.000000 15) 0.000000 0.000000 16) 2000.000000 0.000000 Programación Lineal: Modelos PLE euresti@itesm.mx 21 / 35 Funciones Linealmente Seccionadas Funciones Linealmente Seccionadas Suponga una función linealmente seccionada en la variable var , f (var ); cuyos puntos de ruptura son var = b1 , var = b2 , . . . var = bn . Para algún k (k = 1, 2, . . . , n − 1) se tiene que var = zk bk + (1 − zk ) bk+1 y ası́ f (var ) = zk f (bk ) + (1 − zk ) f (bk+1 ) f (bk+1 ) f (var ) f (bk ) bk CCIR / Matemáticas var Programación Lineal: Modelos PLE bk+1 euresti@itesm.mx 22 / 35 Funciones Linealmente Seccionadas Estrategia de modelación con variables enteras: Reemplace: f (var ) = z1 f (b1 ) + z2 f (b2 ) + · · · + zn f (bn ) Adicione al modelo las restricciones: z1 ≤ y1 z2 ≤ y1 + y2 z3 ≤ y2 + y3 .. . zn−1 ≤ yn−2 + yn−1 zn ≤ yn−1 y1 + y2 + · · · + yn−1 = 1 z1 + z2 + · · · + zn = 1 var = z1 b1 + · · · + zn bn yi = 0 ó 1 para i = 1, 2, . . . n − 1, zi ≥ 0 para i = 1, 2, . . . , n CCIR / Matemáticas Programación Lineal: Modelos PLE euresti@itesm.mx 23 / 35 Ejemplo 6 Ejemplo 6 La compañı́a MyCo produce dos tipos de productos que vende a granel, digamos A y B. Estos productos se basan en una misma materia prima y diferentes cantidades de mano de obra. El precio de venta de cada kilogramo de A es de 200 pesos y cada kilogramo de B se vende en 250 pesos. Cada kilogramo de A requiere 4 horas de mano de obra y dos kilogramos de materia prima (1 kilogramo de materia prima se pierde en el proceso). Cada kilogramo de B requiere 6 horas de mano de obra y dos kilogramos y medio de materia prima (Un y medio kilogramos se pierden en el proceso). La compañı́a dispone de 400 horas de mano de obra a la semana y la materia prima la compra por semana a un proveedor a un precio de 50 pesos cada kilogramo, pero por cada kilogramo después de comprar 100 recibe un descuento de 5 pesos. El proveedor no puede proporcionar más de 200 kilogramos por semana. Suponga que la materia prima no puede ser almancenada por la compañı́a. Modele y resuelva mediante PLE la situación de MyCo para maximizar sus ganancias semanales. CCIR / Matemáticas Programación Lineal: Modelos PLE euresti@itesm.mx 24 / 35 Ejemplo 6 MODELO VD x= total de kg de A a producir y = total de kg de B a producir z= total de kg de materia prima a comprar Objetivo Max w = Costo(plan) = ventas − costos = (200 x + 250 y ) − C (z) f (b3 ) = 9500 C (z) f (b2 ) = 5000 f (b1 ) = 0 b1 = 0 CCIR / Matemáticas b2 = 100 Programación Lineal: Modelos PLE b3 = 200 euresti@itesm.mx 25 / 35 Ejemplo 6 Las restricciones quedan: Referente a la materia prima: Usada = 2 x + 2.5 y ≤ Disponible = z (en kg) Referente a las horas de mano de obra: Usada = 4 x + 6 y ≤ Disponible = 400 (en hrs) La capacidad del proveedor de surtir materia prima z ≤ 200 (en kg) Naturales x, y , z ≥ 0 Ahora tenemos el pendiente de la función C (z) que no es lineal. CCIR / Matemáticas Programación Lineal: Modelos PLE euresti@itesm.mx 26 / 35 Ejemplo 6 En este caso, la función linealmente seccionada C (z) tiene 3 puntos de ruptura: (b1 = 0, C (0) = 0), (b2 = 100, C (100) = 5000) y (b3 = 200, C (200) = 9500). Por tanto, requerimos sólo 3 − 1 = 2 variables binarias yi (y1 y y2 ) y 3 variables auxiliares zi (z1 , z2 y z3 ). Cambiaremos C (z) = z1 · f (b1 ) + z2 · f (b2 ) + z3 · f (b3 ) = z1 · 0 + z2 · 5000 + z3 · 9500 = 5000 z2 + 9500 z3 y añadiremos al modelo las restricciones: z1 ≤ y1 , z2 ≤ y1 + y2 , z3 ≤ y2 , y1 + y2 = 1, z1 + z2 + z3 = 1, z = z1 · b1 + z2 · b2 + z3 · b3 = 100 z2 + 200 z3 CCIR / Matemáticas Programación Lineal: Modelos PLE euresti@itesm.mx 27 / 35 Ejemplo 6 Código LINDO y reporte Euing MAX 0.12X11+0.12X21+0.14X12+0.14X22-CX1 ST X1 -X11 - X12=0 X2 -X21 + X22=0 X2 <= 1000 X1 <= 2000 0.5X11 + 0.5X21 - X11 <=0 0.6X12 + 0.6X22 - X12 <= 0 125Z3 + 225Z4 + 300Z5 - CX1=0 Z1 - Y1 <= 0 Z2 - Y2 - Y1 <=0 Z3 - Y3 - Y2 <=0 Z4 - Y4 - Y3 <=0 Z5 - Y4 <= 0 Y1 + Y2 + Y3 + Y4 = 1 Z1 + Z2 + Z3 + Z4 + Z5 = 1 1000Z3 + 1500Z4 + 2000Z5 - X1 <=0 END INTE Y1 INTE Y2 INTE Y3 INTE Y4 CCIR / Matemáticas OBJECTIVE FUNCTION VALUE 1) 476.0000 VARIABLE VALUE REDUCED COST Y1 1.000000 0.000000 Y2 0.000000 0.000000 Y3 0.000000 0.000000 Y4 0.000000 0.000000 X11 1400.000000 0.000000 X21 1400.000000 0.000000 X12 600.000000 0.000000 X22 400.000000 0.000000 CX1 0.000000 0.000000 X1 2000.000000 0.000000 X2 1000.000000 0.000000 Z3 0.000000 125.000000 Z4 0.000000 225.000000 Z5 0.000000 300.000000 Z1 0.000000 0.000000 Z2 1.000000 0.000000 ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 -0.236000 3) 0.000000 -0.004000 4) 0.000000 0.004000 5) 0.000000 0.236000 6) 0.000000 0.232000 7) 0.000000 0.240000 8) 0.000000 1.000000 9) 1.000000 0.000000 10) 0.000000 0.000000 11) 0.000000 0.000000 12) 0.000000 0.000000 13) 0.000000 0.000000 14) 0.000000 0.000000 15) 0.000000 0.000000 16) 2000.000000 0.000000 Programación Lineal: Modelos PLE euresti@itesm.mx 28 / 35 Ejemplo 7 Ejemplo 7 Euing Gas produce dos tipos de gasolina (G1 y G2) a partir de dos tipos de petróleo (P1 y P2). Cada galón de G1 debe contener al menos 50 % de P1, y cada galón de G2 debe contener al menos 60 % de P1. Cada galón de G1 se vende 12 centavos de G2 a 14 centavos. Actualmente se disponen 500 galones de P1 y 1,000 galones de P2. Se pueden comprar 1,500 galones extra de P1 a los siguientes precios: los primeros 500 a 25 centavos el galón, los siguientes 500 a 20 centavos el galón, y los últimos 500 a 15 centavos el galón. Modele y resuelva mediante PLE la situación de Euing Gas para maximizar sus ganancias. CCIR / Matemáticas Programación Lineal: Modelos PLE euresti@itesm.mx 29 / 35 Ejemplo 7 Variables de Decisión xij = Num de galones del petróleo i destinados a gasolina j. Xi = Num de galones del petróleo i usados en total. Objetivo Max z = 0.12 (x11 + x21 ) + 0.14 (x12 + x22 ) − Costo(X1 ) Restricciones Producción: X1 = x11 + x12 Producción: X2 = x21 + x22 Recursos petróleo 2: X2 ≤ 1, 000 Recursos petróleo 1: X1 ≤ 2, 000 Calidad: x11 ≥ 0.5 (x11 + x21 ) Calidad: x12 ≥ 0.6 (x12 + x22 ) Restricciones naturales xi ≥ 0 CCIR / Matemáticas Programación Lineal: Modelos PLE euresti@itesm.mx 30 / 35 Ejemplo 7 Problema: Costo(X1 ) es una función seccionada Costo(x) = 0 para 0 ≤ x ≤ 500 (Los primeros 500 ya se tienen) Costo(x) = 0 + 0.25(x − 500) para 500 ≤ x ≤ 1, 000 Costo(x) = 125 + 0.20(x − 1, 000) para 1, 000 ≤ x ≤ 1, 500 Costo(x) = 125 + 100 + 0.15(x − 1, 500) para 1, 500 ≤ x ≤ 2, 000 Los extremos de la gráfica de la función costo son: P1 (b1 = 0, f (b1 ) = 0), P2 (b2 = 500, f (b2 ) = 0), P3 (b3 = 1000, f (b3 ) = 125), P4 (b4 = 1500, f (b4 ) = 225), y P5 (b5 = 2000, f (b5 ) = 300): Reemplazaremos: Costo(X1 ) por z1 · 0 + z2 · 0 + z3 · 125 + z4 225 + z5 · 300 Adicionaremos al modelo: z1 ≤ y1 , z2 ≤ y1 + y2 , z3 ≤ y2 + y3 , z4 ≤ y3 + y4 , z5 ≤ y4 y1 + y2 + y3 + y4 = 1 z1 + z1 + z3 + z4 + z5 = 1 X1 = z1 · 0 + z2 · 500 + z3 · 1, 000 + z4 · 1, 500 + z5 · 2, 000 yi binaria para i = 1, 2, 3, 4y zi ≥ 0 para i = 1, 2, 3, 4, 5 CCIR / Matemáticas Programación Lineal: Modelos PLE euresti@itesm.mx 31 / 35 Ejemplo 7 Código LINDO y reporte Euing MAX 0.12X11+0.12X21+0.14X12+0.14X22-CX1 ST X1 -X11 - X12=0 X2 -X21 + X22=0 X2 <= 1000 X1 <= 2000 0.5X11 + 0.5X21 - X11 <=0 0.6X12 + 0.6X22 - X12 <= 0 125Z3 + 225Z4 + 300Z5 - CX1=0 Z1 - Y1 <= 0 Z2 - Y2 - Y1 <=0 Z3 - Y3 - Y2 <=0 Z4 - Y4 - Y3 <=0 Z5 - Y4 <= 0 Y1 + Y2 + Y3 + Y4 = 1 Z1 + Z2 + Z3 + Z4 + Z5 = 1 1000Z3 + 1500Z4 + 2000Z5 - X1 <=0 END INTE Y1 INTE Y2 INTE Y3 INTE Y4 CCIR / Matemáticas OBJECTIVE FUNCTION VALUE 1) 476.0000 VARIABLE VALUE REDUCED COST Y1 1.000000 0.000000 Y2 0.000000 0.000000 Y3 0.000000 0.000000 Y4 0.000000 0.000000 X11 1400.000000 0.000000 X21 1400.000000 0.000000 X12 600.000000 0.000000 X22 400.000000 0.000000 CX1 0.000000 0.000000 X1 2000.000000 0.000000 X2 1000.000000 0.000000 Z3 0.000000 125.000000 Z4 0.000000 225.000000 Z5 0.000000 300.000000 Z1 0.000000 0.000000 Z2 1.000000 0.000000 ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 -0.236000 3) 0.000000 -0.004000 4) 0.000000 0.004000 5) 0.000000 0.236000 6) 0.000000 0.232000 7) 0.000000 0.240000 8) 0.000000 1.000000 9) 1.000000 0.000000 10) 0.000000 0.000000 11) 0.000000 0.000000 12) 0.000000 0.000000 13) 0.000000 0.000000 14) 0.000000 0.000000 15) 0.000000 0.000000 16) 2000.000000 0.000000 Programación Lineal: Modelos PLE euresti@itesm.mx 32 / 35 Restricciones del tipo SI , ENTONCES Restricciones del tipo SI , ENTONCES Para codificar una restricción del tipo Si f (x1 , x2 , . . . , xn ) > 0 entonces g (x1 , x2 , . . . , xn ) ≥ 0 el truco consiste en introducir una variable binaria (0 ó 1) y que indica cuál restricción se cumple, y lo anterior se codifica como −g (x1 , x2 , . . . , xn ) ≤ M y f (x1 , x2 , . . . , xn ) ≤ M (1 − y ) donde M es un número positivo muy grande. CCIR / Matemáticas Programación Lineal: Modelos PLE euresti@itesm.mx 33 / 35 Ejemplo 8 Ejemplo 8 Hay que realizar cuatro trabajos en una misma máquina. En la tabla siguiente se indica el tiempo requerido por trabajo y la fecha lı́mite para entregarlo. El retraso de un trabajo es el número de dı́as, después de la fecha lı́mite, hasta la la terminación del trabajo. Si se termina el trabajo a tiempo o antes el retraso es cero. Formule y resuelva un modelo PLE para minimizar el retraso total de los cuatro trabajos. Trabajo Trabajo Trabajo Trabajo CCIR / Matemáticas 1 2 3 4 TIEMPO REQUERIDO PARA TERMINAR (dı́as)(ti ) FECHA LÍMITE (di ) 6 4 5 8 Final del dı́a 8 Final del dı́a 4 Final del dı́a 12 Final del dı́a 16 Programación Lineal: Modelos PLE euresti@itesm.mx 34 / 35 Ejemplo 8 Variables de decisión yi = dı́as de retraso en el trabajo i. xi = el dı́a en el cual el trabajo i se inicia. P4 Función Objetivo Minimizar Z = i=1 yi Restricciones Dos trabajos no se pueden empalmar: Para todo i 6= j: xi + ti ≤ xj ó xj + tj ≤ xi → → xi + ti − xj ≤ 0 ó xj + tj − xi ≤ 0 xi + ti − xj ≤ M zij y xj + tj − xi ≤ M (1 − zij ) con zij binario. Contabilización del retraso: Si xi + ti > di , entonces yi = xi + ti − di : De otra manera Si xi + ti − di > 0, entonces yi − xi − ti + di ≥ 0. xi + ti − di − yi ≤ M wi y xi + ti − di ≤ M(1 − wi ) con wi binario. CCIR / Matemáticas Programación Lineal: Modelos PLE euresti@itesm.mx 35 / 35