Optimización de una Red Logística de Transporte y Localización de Centros de Distribución

Los problemas de optimización que modelan el desempeño de una red logística o cadena de suministro admiten distintas extensiones que permiten representar la particularidad de distintos escenarios. Es así como en el Blog hemos abordado anteriormente el Problema de Transporte que simplemente aborda el transporte de productos desde oferentes a demandantes al mínimo costo y una extensión al mismo como el Problema de Transporte con Transbordo que incorpora intermediarios en dicho proceso con un objetivo similar. En el siguiente artículo se propone un problema de transporte con transbordo que incorpora adicionalmente la decisión de utilizar centros de distribución que operan como intermediarios entre los oferentes (plantas) y los demandantes (mercados).

Una compañía tiene una red logística que consta de dos plantas y dos centros de distribución (CD). Una de las plantas tiene una capacidad de producción de 150.000 unidades semanales y la otra de sólo 95.000 unidades semanales. Por otra parte la capacidad de despacho en cada ruta es de 65.000 unidades semanales (por ejemplo de la primera planta al segundo CD no se pueden enviar más de 65.000 unidades, lo mismo ocurre desde cualquier CD a cualquier mercado).

La compañía debe entregar sus productos semanalmente en tres mercados diferentes con demandas de 50.000, 80.000 y 45.000, respectivamente (no considerar el valor de demanda de 35.000 para el Mercado 2 que se observa en la imagen a continuación). El siguiente diagrama muestra los costos unitarios de transporte entre las distintas ubicaciones (por ejemplo el costo de transportar una unidad de la planta 1 al centro de distribución 2 cuesta $5).

diagrama-red-logistica

Existe un costo fijo semanal por concepto de arriendo asociado a utilizar un centro de distribución correspondiente a $2.000 y $3.000, para el centro de distribución 1 y 2, respectivamente. El pago de dicho costo fijo habilita al centro de distribución para recibir productos de las plantas y despachar productos a los mercados (en caso de no asumir el costo fijo de un centro de distribución, éste no se podrá utilizar).

Formule y resuelva un modelo de optimización que permita escoger la política de producción y transporte de los productos, además del arriendo de centros de distribución que minimice los costos totales.

Variables de Decisión:

variables-red-logistica

Parámetros:

parametros-red-logistica

Función Objetivo: Se desea minimizar los costos totales asociados a la logística de transporte desde las plantas a los centros de distribución, como de éstos hacia los mercados. Adicionalmente los costos de arriendo de los centros de distribución que se decidan utilizar.

funcion-red-logistica

Restricciones:

Capacidad de Producción de las Plantas (Semanal): la cantidad de unidades que puede enviar cada planta a los distintos centros de distribución no puede superar la capacidad de producción de la respectiva planta.

capacidad-de-las-plantas-lo

Disponibilidad de los Centros de Distribución: un centro de distribución puede recibir unidades desde las plantas en la medida que se decida su utilización (arriendo). En dicho caso se podrá recibir como máximo 130.000 unidades (2*M), en caso contrario no recibe nada.

disponibilidad-de-los-centr

Demanda de los Mercados: cada mercado debe recibir las unidades que demanda semanalmente desde los centros de distribución.

demanda-mercados-red-logist

Máximo a Despachar en cada Ruta: en cada ruta (combinación de transporte de una planta a un centro de distribución o de un centro de distribución a un mercado) no se podrá enviar más de 65.000 unidades (representado por el parámetro M).

capacidad-ruta

Balance en los Centros de Distribución: la cantidad de unidades que recibe un centro de distribución desde las plantas debe ser igual a las unidades que éste envíe a los mercados.

balance-centros-de-distribu

No Negatividad: se debe respetar las no negatividad para las variables de decisión continuas que representan la logística de transporte (eventualmente se podría exigir adicionalmente que adopten valores enteros)

no-negatividad-logistica

La implementación del problema anterior haciendo uso de OpenSolver, permite alcanzar los resultados que se observan a continuación:

opensolver-red-logistica

En la solución óptima de este problema de red logística de transporte y localización de centros de distribución se deben arrendar los 2 centros de distribución. La planta 1 produce 110.000 unidades semanales de las cuales envía 65.000 al centro de distribución 1 y 45.000 unidades al centro de distribución 2. Por otra parte la planta 2 produce sólo 65.000 unidades las cuales envía en su totalidad al centro de distribución 2. El centro de distribución 1 envía 50.000 unidades al mercado 1 y 15.000 unidades al mercado 2 (en el caso del centro de distribución 2, éste envía 65.000 y 45.000 unidades al mercado 2 y 3, respectivamente). Se puede apreciar que se satisfacen las condiciones anteriormente expuestas y se minimiza el costo total semanal que corresponde a $790.000 (valor óptimo).

¿Quieres tener el archivo Excel con la implementación computacional en Solver de este ejemplo?

[sociallocker]

MUCHAS GRACIAS!. DESCARGA AQUÍ EL ARCHIVO

[/sociallocker]

Problema de Arriendo de Camiones y Distribución de Carga en Programación Entera

Los problemas de optimización asociados a redes logísticas de distribución o cadenas de suministro, admiten distintas variantes que buscan representar los aspectos más relevantes de estas problemáticas. Tal es el caso del problema de localización y transporte, problema de producción y transporte, problema de transporte con transbordo, entre otros. En el siguiente artículo presentamos la formulación y resolución con Solver de Excel de un problema de arriendo de camiones y distribución de carga, que por su naturaleza se puede clasificar como un modelo de Programación Entera Mixta.

Una empresa debe transportar grava a tres construcciones. La empresa puede comprar hasta 18 toneladas de grava al norte de la ciudad (Foso 1) y hasta 14 toneladas al sur de la ciudad (Foso 2). Se necesitan 10, 5 y 10 toneladas de grava en las construcciones 1, 2 y 3, respectivamente. Los costos de transporte por tonelada desde cada foso a cada construcción y el precio de compra por tonelada de material en cada foso están dados en la siguiente tabla:

costo-transporte-grava

Adicionalmente, suponga que los camiones necesarios para el transporte de dicho material deben ser arrendados. Cada camión puede ser usado para llevar grava de un solo foso a una sola construcción. El arriendo de un camión es de $5 por camión. Un camión puede transportar 5 toneladas pero no tiene que ir necesariamente lleno. Formule y resuelva un modelo de programación lineal entera-mixta que permita tomar una decisión óptima del número de camiones a usar y la cantidad de material que va a transportar cada uno.

Variables de Decisión: Se debe establecer las toneladas de grava a transportar desde cada foso a cada construcción y adicionalmente especificar la cantidad de camiones utilizados para transportar grava para cada combinación origen destino.

variables-arriendo-de-camio

Función Objetivo: Se busca minimizar los costos totales de compra, la logística de distribución y arriendo de camiones. En color amarillo se observan los costos de compra, con color verde los costos de transporte y con color celeste el costo de arriendo de los camiones.

funcion-objetivo-arriendo-y

Restricciones: A continuación se detallan las condiciones que deben satisfacer las variables de decisión para este problema.

Demanda de las Construcciones: cada construcción (1, 2 y 3, respectivamente) debe recibir las toneladas de grava.

demanda-construcciones

Capacidad de Abastecimiento de los Fosos: la cantidad de toneladas de grava que cada foso puede despachar a las distintas construcciones no puede superar el máximo de compra.

capacidad-de-los-fosos

Capacidad de Transporte de los Camiones: cada camión puede transportar como máximo 5 toneladas de grava. En consecuencia las toneladas de grava que como máximo se pueden transportar en cada combinación origen destino estará limitada a la cantidad de camiones contratados en dicho trayecto. Por ejemplo, si se arriendan 2 camiones para transportar grava desde el foso 1 a la construcción 1 (el lector podrá apreciar que en efecto eso es lo que sucede en la solución óptima que se detalla más abajo) la cantidad máxima a transportar serán 10 toneladas.

capacidad-transporte-camion

No Negatividad y Enteros: el número de camiones contratados para transportar grava en cada combinación origen destino necesariamente deberá ser un número entero mayor o igual a cero.

no-negatividad-y-enteros-ca

No Negatividad: las toneladas de grava a transportar desde cada foso a cada construcción deberá respetar las condiciones de no negatividad (se permite transportar fracciones de tonelada de grava).

no-negatividad-transporte

Al implementar el modelo de optimización anterior haciendo uso de Solver de Excel se alcanza la siguiente solución óptima y valor óptimo.

solver-arriendo-y-transport

Se observa que se arriendan en total 5 camiones (por un total de $25 por concepto de costo de arriendo): 2 camiones para llevar grava del foso 1 a la construcción 1 (transportando 10 toneladas), un camión para llevar grava del foso 2 a la construcción 2 (transportando 5 toneladas), un camión para transportar grava del foso 1 a la construcción 3 (transportando 5 toneladas) y un camión del foso 2 a la construcción 3 (transportando 5 toneladas). En consecuencia el costo de transporte total es de $90, asumiendo adicionalmente un costo de compra de $270. Finalmente el costo total (valor óptimo) es de $385 (sumatoria de los costos de arriendo de camiones, costo de transporte y costo de compra).

Problema de Inversión y Selección de Proyectos

Los modelos de Programación Entera constituyen una alternativa eficiente para apoyar la toma de decisiones en aquellos problemas donde se debe implementar (o no) una alternativa o curso de acción que no admite soluciones intermedias. Tal es el caso del Problema de Selección de Cartera de Proyectos donde no es razonable, por ejemplo, si se destina la mitad de los fondos requeridos para un proyecto, asumir que de éste se obtendrá la mitad de sus beneficios o Valor Presente Neto (VPN). Dicho de otro modo, el cumplimiento del supuesto de la proporcionalidad de la Programación Lineal no es adecuado.

El problema que se presenta a continuación aborda estos aspectos y adicionalmente se busca proponer distintas alternativas al momento de establecer las restricciones o condiciones del problema.

Problema de Inversión y Selección de Proyectos

Una empresa está pensando invertir en cuatro proyectos diferentes, cada proyecto se finaliza a lo más en 3 años. Los flujos de caja requeridos en cada año junto con el Valor Presente Neto (VPN) de cada proyecto, concluidos los años de ejecución, y las disponibilidades de recursos financieros se resumen en la siguiente tabla:

tabla-inversion-y-vpn-proye

Interesa determinar en cuáles proyectos invertir de modo de conseguir el mayor VPN de la inversión.

Variables de Decisión: Se desea determina en cuáles proyectos invertir de las 4 alternativas posibles.

variables-decision-inversio

Función Objetivo: Maximizar la sumatoria del Valor Presente Neto (VPN) de los proyectos en los cuales se decida invertir.

maximizar-vpn-inversion

Restricciones: Se proponen 3 escenarios para definir las restricciones del problema.

Alternativa 1: Reinvirtiendo el dinero no utilizado en un período, es decir, el dinero que eventualmente quede disponible al final del año 1 y año 2 se puede considerar como parte del presupuesto disponible para el año siguiente. Lo anterior se representa a través de las variables s_{1} y s_{2}, respectivamente.

alternativa-1-inversion-pro

La implementación computacional del problema haciendo uso de Solver de Excel nos entrega los siguientes resultados:

solucion-optima-inversion-1

Se debe invertir en los proyectos 1 y 4. El VPN total es de $51.

Alternativa 2: Sin invertir el dinero no utilizado en un período, pero utilizando el retorno de los proyectos concluidos.

alternativa-2-inversion

En este caso se debe invertir en los proyectos 1, 2 y 4, alcanzando un VPN total de $69.

solucion-optima-inversion-2

Alternativa 3: Reinvirtiendo el dinero no utilizado en un período y también el retorno de los proyectos concluidos.

alternativa-3-inversion

En este caso la solución óptima y valor óptimo es equivalente al escenario planteado en la Alternativa 3.

solucion-optima-inversion-3

Cabe destacar que la Alternativa 3 es la que provee mayor flexibilidad (en cuanto a los presupuestos para inversión) en comparación a las Alternativas 1 y 2, en consecuencia era razonable esperar en este caso que el VPN total de la Alternativa 3 sea mayor o igual que los VPN de las Alternativas 1 y 2.

Notar que el conjunto de las soluciones factibles es finito. Esto ocurrirá generalmente con los problemas de Programación Entera (puros). En el ejemplo, el número de soluciones factibles no supera el número de las soluciones binarias del problema (variables restringidas sólo a valores 0 o 1) que son 2^{4}=16, dado el número de variables utilizadas, de hecho las soluciones factibles son menos de 16 pues en particular x_{i}=1 para i=1,2,3,4 no satisface las disponibilidades de capital en cualquiera de las tres alternativas.

Problema de Generación Eléctrica mediante Programación Entera Mixta

Una de las particularidades de los modelos de Programación Entera es que permiten incorporar en la representación matemática costos fijos que no son proporcionales al nivel de actividad en un sistema. Tal sería el caso, por ejemplo, de una empresa que desea determinar lotes de compra de un producto dado, en los que incurre en costos fijos asociados a la gestión de compra (independiente del volumen de unidades compradas dentro de los límites máximos impuestos por el proveedor) y costos variables (proporcionales) a la cantidad de unidades compradas. En este contexto se presenta a continuación un problema de generación de energía eléctrica donde se debe determinar la utilización y actividad de generadores que busca satisfacer requerimientos proyectados de energía de un día particular.

EGE abastece de electricidad a tres ciudades. La compañía dispone de cuatro generadores que son utilizados para proporcionar la potencia eléctrica requerida. El generador principal es empleado las 24 horas del día y no es materia de planificación en este problema.

Los otros tres generadores (que llamaremos 1, 2 y 3) están disponibles para generar la potencia adicional cuando se requiera. Considerar que se incurre en un costo de arranque cada vez que uno de estos generadores comienza a operar.

Los costos de arranque son de $6.000 para el generador 1, de $5.000 para el generador 2 y de $4.000 para el generador 3. Estos generadores se utilizan (por separado) únicamente de la siguiente manera: se puede poner en operación a las 6am y funcionar 8 horas (hasta las 2pm) o 16 horas (hasta las 10pm), o puede ponerse en funcionamiento a las 2pm y funcionar 8 horas (hasta las 10pm).

Los pronósticos para mañana indican la necesidad de contar con 3.200 MW adicionales entre las 6am y las 2pm, necesidad que se eleva a 5.700 MW entre las 2pm y las 10pm. El generador 1 puede proporcionar hasta 2.400 MW, el 2 hasta 2.100 MW y el 3 hasta 3.300MW. El costo por MW utilizado durante un periodo de 8 horas es de $8 en el caso del generador 1, $9 en el de el generador 2 y $7 en el caso del generador 3.

Formule y resuelva un modelo de Programación Entera Mixta para determinar los niveles óptimos de operación de cada generador para el día de mañana que minimice los costos totales satisfaciendo los requerimientos adicionales de potencia eléctrica.

Variables de Decisión:

variables-generacion-energi

Si bien se podría considerar cierta similitud en la definición de Y_{it} y Z_{it}, su utilización se justifica dado que el costo fijo de arranque se debe asociar precisamente a dicho concepto (puesta en marcha de un generador) el cual se produce (en caso de ser utilizado) sólo una vez durante el período de planificación.

Función Objetivo:

funcion-objetivo-generacion

Se busca minimizar los costos fijos asociados al arranque de los generadores más el costo variable que resulte de la cantidad de MW aportados por éstos al sistema en los 2 tramos o períodos de planificación.

Restricciones:

Capacidad Generadores: La cantidad de MW que aporta cada generador al sistema no puede superar su capacidad máxima disponible (en caso que se emplee) en cada uno de los períodos de planificación.

capacidad-mw-generadores

Demanda MW: En conjunto los generadores deben aportar la cantidad de MW adicionales para cada tramo horario, es decir, de 6am a 2pm y de 2pm a 10pm.

demanda-mw

Relación Arranque Funcionamiento: Un generador sólo podrá ser empleado si arranco en el período de planificación actual o inmediatamente anterior, en caso contrario el generador no arranca (y por tanto no funciona en ninguno de los 2 períodos).

arranque-funcionamiento-gen

No Negatividad: La cantidad que aporta cada generador en los 2 tramos horarios de 8 horas debe ser mayor o igual a 0 (MW).

no-negatividad-generadores

Al implementar el modelo anterior haciendo uso de Solver se alcanzan los siguientes resultados:

solucion-optima-generadores

Notar que sólo arranca el generador 1 (a las 2 pm) y el generador 3 (a las 6 am). El generador 2 no arranca (y en consecuencia no se emplea) durante todo el día. El generador aporta 2.400 MW de 2pm a 10 pm, en tanto el generador 3 aporta con 3.200 MW de 6 am a 2 pm y 3.3o0 MW de 2 pm a 10 pm, respetando en cada caso las capacidadidas disponibles y satisfaciendo los requerimientos de demanda. Finalmente el costo óptimo (mínimo) es de $74.700.

Algoritmo del Plano de Corte en el Problema del Vendedor Viajero

Según lo descrito en el artículo Solución del Problema del Vendedor Viajero, una de las situaciones potenciales a la que nos podemos enfrentar es que la solución de asignación obtenida represente un subcircuito, lo cual naturalmente no da respuesta a la problemática que el modelo de agente viajero desea abordar. En este contexto existen diversas estrategias algorítmicas que permiten enfrentar esta situación entre las cuales destaca el Algoritmo de Plano de Corte.

La idea del Algoritmo del Plano de Corte es agregar un conjunto de restricciones que, cuando se incorporan al Problema de Asignación garanticen evitar la formación de un subcircuito. Consideremos un problema con n ciudades, asociar una variable continua u_{j}\geq 0 con las ciudades 2,3,…,n. A continuación definir un conjunto de restricciones adicionales de la siguiente forma:

restricciones-plano-de-cort

Estas restricciones al añadirse al Modelo de Asignación, eliminarán todas las soluciones de subcircuito de forma automática, pero no eliminarán alguna solución de circuito.

A modo de ejemplo consideremos nuevamente el problema de secuenciamiento de la producción donde nos interesa determinar el orden en el cual se deben producir 4 colores de pintura.

tabla-tiempos-setup-pintura

A continuación se define un modelo de optimización haciendo uso del lenguaje de programación matemática AMPL. Para ello se puede utilizar un editor de texto como Bloc de Notas o WordPad. La siguiente imagen muestra la sintaxis utilizada en la definición del modelo del ejemplo propuesto donde se incorpora las restricciones que evitan los subcircuitos. Notar que es importante guardar el archivo con el formato adecuado (.mod) para lo cual simplemente en el caso de utilizar Bloc de Notas seleccionamos “Archivo”, seguido de “Guardar como …” y luego en “Nombre” se ingresa un nombre arbitrario seguido de .mod (por ejemplo, modelo.mod).

modelo-ampl-plano-de-corte

El siguiente paso es generar un nuevo archivo con los datos o parámetros del problema. Básicamente aquellos que resumen el tiempo (en minutos) necesarios para la limpieza al realizar un cambio de colores, según se describe al inicio de este artículo. Notar que para evitar aquellas asignaciones infactibles (como que a un color le precede el mismo en la secuencia) se asignan “constantes grandes” a los elementos en la diagonal. El archivo se procesa y guarda de forma similar al caso del modelo pero con la extensión .dat (por ejemplo, matriz.dat).

datos-ampl-plano-de-corte

Finalmente será necesario construir un tercer archivo con extensión .run que provee de instrucciones adicionales para efectos de la resolución computacional y que facilita la interpretación de los resultados (por ejemplo, solucion.run).

solucion-run-ampl-plano-de-

Una vez definido el modelo, datos y archivo run, podemos utilizar un solver de Programación Entera Mixta de los disponibles en el Servidor NEOS. En particular recomendamos utilizar el solver XpressMP donde se deberá adjuntar los archivos con extensión .mod, .dat y .run (respectivamente) según se muestra a continuación (recordar que el nombre asignado al archivo es arbitrario, no así su extensión).

xpressmp-neos

Luego seleccionamos “Submit to NEOS” y los resultados se mostraran en el navegador de Internet, además de recibir un informe de respuestas en la dirección de correo electrónico que ingresamos. La siguiente imagen muestra un extracto de dichos resultados:

solucion-ampl-plano-de-cort

Notar que XpressMP encuentra como recorrido óptimo la secuencia 1-2-4-3-1, es decir, corresponde a producir en el siguiente orden: Blanco, Amarillo, Rojo, Negro, con un tiempo total de setup de 98 minutos.