Optimización y Programación Lineal El Problema del Transporte Departamento de Matemáticas ITESM El Problema del Transporte TC3001 - p. 1/25 Introducción Veamos ahora el problema del transporte, cuál es su formulación general y cómo se resuelve mediante LINGO. El Problema del Transporte Introducción Ejemplo 1 Formulación Modelación Gráfica Tableau LINGO Comentarios Ejemplo 2 Ejemplo 3 Transbordo Conversion Ejemplo 4 TC3001 - p. 2/25 Ejemplo 1 tiene tres plantas de generación de energía eléctrica que suministran energía a cuatro ciudades. Cada planta puede suministrar una cierta cantidad límite y cada ciudad tiene una cierta demanda máxima conocida la cual debe satisfacerse. Los costos para enviar la energía de cada planta a cada ciudad así como las demandas y capacidades de suministro se dan en la siguiente tabla. PowerCo HACIA (Costo en dólares por enviar 1 millón de kwh) OFERTA DESDE Ciudad 1 Ciudad 2 Ciudad 3 Ciudad 4 (En millones de kwh) Planta 1 8 6 10 9 35 Planta 2 9 12 13 7 50 Planta 3 14 9 16 5 40 DEMANDA 45 20 30 30 Introducción Ejemplo 1 Formulación Modelación Gráfica Tableau LINGO Comentarios Ejemplo 2 Ejemplo 3 Transbordo Conversion Ejemplo 4 (En millones de kwh) Formule un modelo de PL que minimice el costo del envio y que satisfaga la demanda máxima de energía en cada ciudad. El Problema del Transporte TC3001 - p. 3/25 La solución se obtiene indicando cuánto debe enviarse de cada planta a cada ciudad, por ello es que las variables de decisión son: xij = El número de millones de khw enviados de la planta i a la ciudad j HACIA (Costo en dólares por enviar 1 millón de kwh) OFERTA DESDE Ciudad 1 Ciudad 2 Ciudad 3 Ciudad 4 (En millones de kwh) Planta 1 8 6 10 9 35 Planta 2 9 12 13 7 50 Planta 3 14 9 16 5 40 DEMANDA 45 20 30 30 (En millones de kwh) La función a minimizar es la función de costo total del envio de energía eléctrica: z = 8 x11 + 6 x12 + 10 x13 + 9 x14 (Costo de enviar energía de la planta 1) +9 x21 + 12 x22 + 13 x23 + 7 x24 (Costo de enviar energía de la planta 2) +14 x31 + 9 x32 + 16 x33 + 5 x34 (Costo de enviar energía de la planta 3) El Problema del Transporte TC3001 - p. 4/25 HACIA (Costo en dólares por enviar 1 millón de kwh) OFERTA DESDE Ciudad 1 Ciudad 2 Ciudad 3 Ciudad 4 (En millones de kwh) Planta 1 8 6 10 9 35 Planta 2 9 12 13 7 50 Planta 3 14 9 16 5 40 DEMANDA 45 20 30 30 (En millones de kwh) Las restricciones son de dos tipos: las relativas a la capacidad de cada planta y las relativas al cumplimiento mínimo de la demanda máxima en cada ciudad: ■ Capacidad de la planta 1: x11 + x12 + x13 + x14 ≤ 35 ■ Capacidad de la planta 2: x21 + x22 + x23 + x24 ≤ 50 ■ ■ Capacidad de la planta 3: x31 + x32 + x33 + x34 ≤ 40 Demanda en la ciudad 1: x11 + x21 + x31 ≥ 45 ■ Demanda en la ciudad 2: x12 + x22 + x32 ≥ 20 ■ Demanda en la ciudad 3: x13 + x23 + x33 ≥ 30 ■ Demanda en la ciudad 4: x14 + x24 + x34 ≥ 30 Y las restricciones de signo xij ≥ 0. El Problema del Transporte TC3001 - p. 5/25 Formulación del Problema del Transporte El problema del transporte en general se especifica mediante la siguiente información: 1. Un conjunto de m puntos de oferta desde los cuales se envian utilidades o bienes. 2. Una lista de capacidades de suministro máximo de cada sitio de oferta si para i = 1, 2, . . . , m. 3. Un conjunto de n puntos de demanda hacia los cuales se envia una utilidad o bien. 4. Una lista de demandas de utilidades o bienes dj de cada punto de demanda j las cuales deben satisfacerse mínimamente. Introducción Ejemplo 1 Formulación Modelación Gráfica Tableau LINGO Comentarios Ejemplo 2 Ejemplo 3 Transbordo Conversion Ejemplo 4 5. Una matriz de valores que indica el costo fijo en el que se incurre al enviar una unidad producida en el punto de oferta i y enviada al punto de demanda j, cij . El Problema del Transporte TC3001 - p. 6/25 Modelación del Problema del Transporte Si xij es el total de unidades producidas y enviadas del punto de oferta i al punto de demanda j, entonces, el planteamiento del problema de transporte es: Minimizar m X n X cij xij i=1 j=1 sujeto a ■ Satisfacer la solicitud de bienes de cada punto de demanda: ∀j = 1, 2, . . . , n : m X Introducción Ejemplo 1 Formulación Modelación Gráfica Tableau LINGO Comentarios Ejemplo 2 Ejemplo 3 Transbordo Conversion Ejemplo 4 xij ≥ dj i=1 ■ No exceder las capacidades de cada punto de oferta: ∀i = 1, 2, . . . , m : n X xij ≤ si j=1 ■ Restricciones naturales: xij ≥ 0 (Total de n × m restricciones). El Problema del Transporte TC3001 - p. 7/25 Representación gráfica s3 s2 s1 City 4 d4 City 3 d3 City 2 d2 City 1 d1 Plant 3 Plant 2 Introducción Ejemplo 1 Formulación Modelación Gráfica Tableau LINGO Comentarios Ejemplo 2 Ejemplo 3 Transbordo Conversion Ejemplo 4 Plant 1 El Problema del Transporte TC3001 - p. 8/25 Tableau x12 s1 c2n c22 c21 x21 x22 .. . .. . cm1 ... ... s2 .. . .. . cmn cm2 ... d1 El Problema del Transporte ... d2 Demandas Suministros x11 c1n c12 c11 Introducción Ejemplo 1 Formulación Modelación Gráfica Tableau LINGO Comentarios Ejemplo 2 Ejemplo 3 Transbordo Conversion Ejemplo 4 sm dn TC3001 - p. 9/25 Código LINGO del ejemplo 1 model: sets: ! Indice para el suministro. Se usara i como variable indice de suministro; ! s = vector de datos con capacidades por suministro; m /1..3/:s; ! Indice para los puntos de demanda. Se usara j como variable indice de punto de demanda; ! d = vector de datos con demandas; n /1..4/:d; ! c = matriz (m x n) con los datos de costos de envio desde suministro i al punto de demanda j; ! x = matriz (m x n) con las variables de decisión, x(i,j) tendrá numero de unidades enviadas desde el suministro i al punto de demanda j; links (m,n): x, c; endsets data: ! Capacidad de cada punto de suministro; s = 35, 50, 40; ! Cantidad solicitada en cada punto de demanda; d = 45, 20, 30, 30; ! Matriz de costos ; c = 8, 6, 10, 9, 9, 12, 13, 7, 14, 9, 16, 5; Introducción Ejemplo 1 Formulación Modelación Gráfica Tableau LINGO Comentarios Ejemplo 2 Ejemplo 3 Transbordo Conversion Ejemplo 4 enddata ! Objetivo: Minimizar el costo total del envio; min = @sum( m(i): @sum( n(j): c(i,j)*x(i,j)) ); ! Familia de restricciones 1: Para cada suministro i, la cantidad total de salida no debe exceder su capacidad; @for(m(i): @sum( n(j): x(i,j) ) <= s(i) ); ! Familia de restricciones 2: Para cada punto de demanda j, la cantidad de ingreso no debe se menor que la demanda; @for(n(j): @sum( m(i): x(i,j) ) >= d(j) ); end El Problema del Transporte TC3001 - p. 10/25 model: sets: m /1..3/:s; n /1..4/:d; links (m,n): x, c; endsets data: s=@FILE(’C:/Usuarios/uresti/cursos/tc3001/lecturas/red70101s.tex’); d=@FILE(’C:/Usuarios/uresti/cursos/tc3001/lecturas/red70101d.tex’); c=@FILE(’C:/Usuarios/uresti/cursos/tc3001/lecturas/red70101c.tex’); Introducción Ejemplo 1 Formulación Modelación Gráfica Tableau LINGO Comentarios Ejemplo 2 Ejemplo 3 Transbordo Conversion Ejemplo 4 enddata min = @sum(links:c*x); @for(m(i): @sum(n(j):x(i,j)) <= s(i) ); @for(n(j): @sum(m(i):x(i,j)) >= d(j) ); end Versión sin comentarios, con otras funcionalidades El Problema del Transporte TC3001 - p. 11/25 Comentarios ■ Cuando la suma total de las demandas es igual a la suma total de las capacidades de suministros se dice que es un problema de transporte balanceado. ■ Existen técnicas específicas para generar una solución básica factible en el caso balanceado y por ello es que se balancea artificialmente el problema: ◆ Cuando la oferta excede la demanda se introduce un punto de demanda ficticio (dummy demand point). ◆ Cuando la demanda excede la oferta no hay solución básica factible. En este caso se introducen castigos por no cumplir ciertas demandas y la función objetivo incluye tales castigos. ■ Entre las técnicas para encontrar una SBF en el caso balanceado están: ◆ El método de la Esquina Noroeste ◆ El método de Vogel ◆ El método de Mínimo Costo Pero nosotros le dejaremos el trabajo a LINDO o a LINGO. El Problema del Transporte Introducción Ejemplo 1 Formulación Modelación Gráfica Tableau LINGO Comentarios Ejemplo 2 Ejemplo 3 Transbordo Conversion Ejemplo 4 TC3001 - p. 12/25 Ejemplo 2 Hay dos presas que suministran agua a tres ciudades. Cada presa puede suministrar hasta 50 millones de galones de agua por día. Cada ciudad quisiera recibir 40 millones de galones de agua por día. Por cada millón de galones de demanda diaria no cumplida hay una multa. En la ciudad 1, la multa es de 20 dólares; en la ciudad 2, la multa es de 22 dólares; y en la ciudad 3, la multa es de 23 dólares. En la tabla se muestran los costos de enviar un millón de galones de cada presa a cada ciudad. Formule y resuelva un modelo de transporte balanceado que se pueda usar para minimizar los costos de escasez y transporte. Introducción Ejemplo 1 Formulación Modelación Gráfica Tableau LINGO Comentarios Ejemplo 2 Ejemplo 3 Transbordo Conversion Ejemplo 4 HACIA DESDE Ciudad 1 Ciudad 2 Ciudad 3 Presa 1 7 8 10 Presa 2 9 7 8 El Problema del Transporte TC3001 - p. 13/25 HACIA DESDE Ciudad 1 Ciudad 2 Ciudad 3 Presa 1 7 8 10 Presa 2 9 7 8 Escasez = Demanda Total − Oferta Total = X di − X Ciudad 1 Ciudad 2 Ciudad 3 7 8 sj = 120 − 100 = 20 Oferta Introducción Ejemplo 1 Formulación Modelación Gráfica Tableau LINGO Comentarios Ejemplo 2 Ejemplo 3 Transbordo Conversion Ejemplo 4 10 Presa 1 50 9 7 8 Presa 2 50 20 22 23 Escasez 20 40 El Problema del Transporte 40 40 TC3001 - p. 14/25 Código LINGO para el ejemplo 2: model: sets: m /1..3/:s; n /1..3/:d; links (m,n): x, c; endsets data: s = 50, 50, 20; d = 40, 40, 40; c = 7, 8, 10, 9, 7, 8, 20, 22, 23; Introducción Ejemplo 1 Formulación Modelación Gráfica Tableau LINGO Comentarios Ejemplo 2 Ejemplo 3 Transbordo Conversion Ejemplo 4 enddata min = @sum( m(i): @sum( n(j): c(i,j)*x(i,j)) ); @for(m(i): @sum( n(j): x(i,j) ) <= s(i) ); @for(n(j): @sum( m(i): x(i,j) ) >= d(j) ); end El Problema del Transporte TC3001 - p. 15/25 Solución al Problema de las Presas Se deben enviar los siguientes millones de galones de agua de cada presa a cada ciudada: Ciudad 1 Ciudad 2 Ciudad 3 7 Presa 1 20 8 30 9 Presa 2 0 7 20 Escasez 10 0 10 50 8 40 22 50 23 20 0 0 40 40 40 El Problema del Transporte Oferta Introducción Ejemplo 1 Formulación Modelación Gráfica Tableau LINGO Comentarios Ejemplo 2 Ejemplo 3 Transbordo Conversion Ejemplo 4 20 TC3001 - p. 16/25 Ejemplo 3 SailCo tiene qué determinar cuántos veleros hay que producir en cada uno de los cuatro trimestres del año. La demanda de veleros en cada uno de ellos es conocida: 40, 60, 75 y 25 veleros en cada uno de los semestres. La empresa tiene que cumplir con tales demandas. Al principio tiene un inventario de 10 veleros. La compañía decide al principio de cada trimestre cuántos veleros hay que producir en él. Suponga que los veleros construidos durante un trimestre pueden ser utilizados para cubrir la demanda en el mismo Introducción Ejemplo 1 Formulación Modelación Gráfica Tableau LINGO Comentarios Ejemplo 2 Ejemplo 3 Transbordo Conversion Ejemplo 4 trimestre. La compañía puede producir 40 veleros en tiempo normal de trabajo a un costo de 400 dólares el velero y puede producir hasta 20 veleros adicionales utilizando tiempo extra a un costo de 600 dólares cada velero. Al final de cada trimestre se presentan costos de menejo de inventario por 20 dólares por cada velero. Formule y resuelva un modelo de transporte balanceado que se pueda usar para minimizar los costos de producción y manejo de inventario durante los 4 trimestres próximos. El Problema del Transporte TC3001 - p. 17/25 Puntos de oferta Puntos de demanda Punto 1 Inventario inicial (s1 = 10) Punto 1 Demanda trimestre 1 (d1 = 40) Punto 2 Prod regular trim 1 (s2 = 40) Punto 2 Demanda trimestre 2 (d2 = 60) Punto 3 Prod extra trim 1 (s3 = 20) Punto 3 Demanda trimestre 3 (d3 = 75) Punto 4 Prod regular trim 2 (s4 = 40) Punto 4 Demanda trimestre 4 (d4 = 25) Punto 5 Prod extra trim 2 (s5 = 20) Punto 6 Prod regular trim 3 (s6 = 40) Punto 7 Prod extra trim 3 (s7 = 20) Punto 8 Prod regular trim 4 (s8 = 40) Punto 9 Prod extra trim 4 (s9 = 20) El Problema del Transporte Introducción Ejemplo 1 Formulación Modelación Gráfica Tableau LINGO Comentarios Ejemplo 2 Ejemplo 3 Transbordo Conversion Ejemplo 4 TC3001 - p. 18/25 Consumidor Fuentes T1 T2 T3 T4 Oferta Stock 10 PR1 40 PE1 20 PR2 M 40 PE2 M 20 PR3 M M 40 PE3 M M 20 PR4 M M M 40 PE4 M M M 20 Demandas 40 60 75 El Problema del Transporte Introducción Ejemplo 1 Formulación Modelación Gráfica Tableau LINGO Comentarios Ejemplo 2 Ejemplo 3 Transbordo Conversion Ejemplo 4 25 TC3001 - p. 19/25 model: sets: m /1..9/:s; n /1..4/:d; links (m,n): x, c; endsets data: s = 10, 40, 20, 40, 20, 40, 20, 40, 20; d = 40, 60, 75, 25; c= ! Costos del inventario inicial; 0, 20, 40, 60, ! Costos del trimestre 1; 400, 420, 440, 460, 600, 620, 640, 6600, ! Costos del trimestre 2; 10000, 400, 420, 440, 10000, 600, 620, 640, ! Costos del trimestre 3; 10000, 10000, 400, 420, 10000, 10000, 600, 620, ! Costos del trimestre 4; 10000, 10000, 10000, 400, 10000, 10000, 10000, 600; enddata min = @sum(links:c*x); @for(m(i): @sum(n(j):x(i,j)) <= s(i) ); @for(n(j): @sum(m(i):x(i,j)) >= d(j) ); Introducción Ejemplo 1 Formulación Modelación Gráfica Tableau LINGO Comentarios Ejemplo 2 Ejemplo 3 Transbordo Conversion Ejemplo 4 end El Problema del Transporte TC3001 - p. 20/25 Consumidor Fuentes T1 T2 T3 T4 Oferta Stock 0 0 10 0 10 PR1 40 0 0 0 40 PE1 0 0 5 0 5 PR2 0 40 0 0 40 PE2 0 20 0 0 20 PR3 0 0 40 0 40 PE3 0 0 20 0 20 PR4 0 0 0 25 25 PE4 0 0 0 0 0 Demandas 40 60 75 25 El Problema del Transporte Introducción Ejemplo 1 Formulación Modelación Gráfica Tableau LINGO Comentarios Ejemplo 2 Ejemplo 3 Transbordo Conversion Ejemplo 4 TC3001 - p. 21/25 Transbordo Mientras que en el problema del transporte se tienen envíos que van directamente desde un punto de oferta a un punto de demanda, en el Problema del Transbordo existen puntos intermedios (puntos de transbordo) donde se pueden recibir bienes para ser enviados a puntos de demanda. En su formalización hay tres tipos de puntos: ■ Puntos de oferta. Son puntos que pueden enviar bienes hacia otro punto pero no se pueden recibir bienes. ■ Puntos de demanda. Son puntos donde se reciben bienes pero no tienen forma de enviarlos. ■ Puntos de transbordo. Son puntos donde se pueden recibir y enviar bienes. El Problema del Transporte Introducción Ejemplo 1 Formulación Modelación Gráfica Tableau LINGO Comentarios Ejemplo 2 Ejemplo 3 Transbordo Conversion Ejemplo 4 TC3001 - p. 22/25 Conversión a un problema de Transporte Los problemas de transbordo pueden ser convertidos en problemas Pn de transporte de la siguiente manera. Sea s = i=1 si la oferta P total disponible y d = n j=1 dj la demanda total. 1. Si s > d, añada un punto de demanda ficticio con una oferta 0 y con una demanda s − d. El costo de enviar un bien desde cualquier punto de oferta a este nodo ficticio será cero. 2. Construya el cuadro de transporte de la siguiente manera. Tendrá un renglón por cada punto de oferta y de transbordo. En cada punto de oferta tendrá una oferta igual a la oferta original, mientras que cada punto de transbordo tendrá una oferta que será la suma de su oferta inicial más s. Tendrá una columna por cada punto de demanda y por cada punto de transbordo. En cada punto de demanda, la demanda será igual a la demanda original y en cada punto de transbordo la demanda será igual a la suma de la demanda original y s. Note que se tiene la posibilidad que en los puntos de transbordo exista una oferta o una demanda. El Problema del Transporte Introducción Ejemplo 1 Formulación Modelación Gráfica Tableau LINGO Comentarios Ejemplo 2 Ejemplo 3 Transbordo Conversion Ejemplo 4 TC3001 - p. 23/25 Ejemplo 4 produce dispositivos mecánicos en dos fábricas; una en Memphis y otro en Denver. La fábricas de Memphis puede producir hasta 150 dispositivos mientras que la de Denver hasta 200. Los dispositivos se envían en avión hasta sus clientes que están en Los Ángeles y en Boston. Los clientes en cada ciudad requieren 130 dispositivos. Debido a la falta de reglamentación en las tarifas aéreas, WidgetCo cree que es más barato enviar algunos dispositivos a Nueva York o a Chicago, para después enviarlos a sus destinos finales. Los costos de envio de cada dispositivo están en la siguiente tabla. Plantee y resuelva un modelo para WidgetCo de manera que se minimice el costo total de enviar los dispositivos requeridos a sus clientes. WidgetCo Introducción Ejemplo 1 Formulación Modelación Gráfica Tableau LINGO Comentarios Ejemplo 2 Ejemplo 3 Transbordo Conversion Ejemplo 4 HACIA (Costo en dólares por enviar 1 dispositivo) DESDE NY Chicago Los Ángeles Boston Memphis 8 13 25 28 Denver 15 12 26 26 NY 0 6 16 17 Chicago 6 0 14 16 El Problema del Transporte TC3001 - p. 24/25 s = sM en + sChi = 150 + 200 = 350 d = dLA + dBos = 130 + 130 = 260 Como s > d, se crea nodo de demanda ficticio. NY Chicago LA Boston Ficticia Memphis Denver NY Chicago El Problema del Transporte TC3001 - p. 25/25 s = sM en + sChi = 150 + 200 = 350 d = dLA + dBos = 130 + 130 = 260 Como s > d, se crea nodo de demanda ficticio. NY Chicago LA Boston Ficticia Oferta Memphis 150 Denver 200 NY 350 Chicago 350 Demanda 350 El Problema del Transporte 350 130 130 90 TC3001 - p. 25/25 s = sM en + sChi = 150 + 200 = 350 d = dLA + dBos = 130 + 130 = 260 Como s > d, se crea nodo de demanda ficticio. NY 8 Chicago 13 LA 25 Boston Ficticia 28 0 Memphis 150 15 12 26 26 0 200 Denver 0 6 16 0 17 NY 350 6 0 14 16 0 Chicago Demanda Oferta 350 350 El Problema del Transporte 350 130 130 90 TC3001 - p. 25/25