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 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.

Planificación de la Producción y Empaque en el Programa Maestro de Producción

El Plan Maestro de la Producción (PMP) especifica las fechas y las cantidades de producción que corresponden a cada uno de los elementos de la familia de productos (manufactura). En muchas aplicaciones el producto no esta terminado en la medida que no haya sido empacado, es decir, que este en una condición de uso suficiente para su comercialización. El siguiente artículo aborda el problema que enfrenta una empresa que debe programar los niveles de producción y empaque para 4 productos en un horizonte de planificación de 8 meses (4 bimestres), buscando satisfacer una demanda estimada al mínimo costo y haciendo uso de recursos limitados.

Planificación de la Producción

Una firma desea planificar la producción de los próximos 4 bimestres para sus productos finales, representados por los productos A, B, C y D. Esto se hará usando una política óptima de elaboración contra stock para satisfacer las demandas estimadas en cada periodo y cuyos valores se resumen en la siguiente tabla:

tabla-produccion-y-empaque

En la tabla se entrega igualmente una capacidad máxima de producción por producto, excepto para las labores de empacado. Asuma que estas capacidades son constantes sobre todo el periodo de planificación. En el caso de la sección de empaque esta transforma el producto en un producto empacado, de modo que hay una capacidad global sobre el número total de unidades que pueden ser empacadas en cada periodo y alcanza las 50.000 unidades por bimestre.

Es posible almacenar tanto productos finales como productos finales empacados en una cantidad ilimitada pues la bodega es bastante grande. Sin embargo, hay un costo unitario de mantención de unidades en inventario que se lista en la última columna de la tabla para un producto final empacado y que se asume no cambia en este horizonte de planificación. Asuma que el costo unitario de inventario de un producto final no empacado consiste en restar 4 euros por unidad al valor dado en la tabla para el costo de inventario de uno empacado. El actual inventario es nulo y no hay requerimientos de inventario al final del periodo de planificación.

Cada vez que se emplea la línea de empaque esta debe ser limpiada cuando se planifica empacar cada tipo de producto en un periodo y este proceso de limpieza o esterilización tiene un costo elevado. Dado lo anterior, se espera encontrar una solución donde no necesariamente se empaque de todos los tipos de productos finales en cada periodo. Para representar correctamente esta situación se tomará en cuenta un costo de setup que es independiente del periodo y la cantidad empacada pero si del tipo de producto y está dado por 500.000, 900.000, 800.000 y 900.000 euros para A, B, C y D, respectivamente.

Formule y resuelva computacionalmente un modelo de optimización que permita hallar una política óptima de producción que minimice los costos de inventario y setup, satisfaciendo los requerimientos (estimados) de demanda y las limitaciones en la capacidad de las instalaciones.

Variables de Decisión:

variables-produccion-y-empa

Parámetros: Dada la cantidad de datos del problema propuesto es conveniente trabajar con parámetros, de modo de utilizar una notación más compacta que es equivalente, a saber:

parametros-empaque

Función Objetivo: Se busca minimizar los costos asociados al proceso de empaque y almacenamiento de productos en inventario (empacados y no empacados) durante el período de planificación. Lo anterior se representa por la siguiente expresión:

funcion-objetivo-empaque

Restricciones:

Demanda producto empacado para cada producto i y bimestre t: La demanda de producto empacado de cada uno de los 4 productos en los 4 bimestres se debe satisfacer a través de lo empacado en dicho período y los saldos del mismo (si los hubiere) almacenados en períodos previos.

demanda-producto-empacado

Balance entre no-empacado y empacados para producto i y bimestre t: De forma similar a las restricciones anteriores, la cantidad de producto a empacar en un período (para cualquiera de las 4 variedades: A, B, B o D) se obtiene como un diferencial entre la producción de producto no empacado más el inventario inicial de producto no empacado menos la cantidad de producto no empacado que se deje en inventario al final del período.

balance-empacado-y-no-empac

Restricciones Lógicas: La cantidad de producto en un bimestre para un producto en particular no podrá superar las 50.000 unidades en caso que se decida empacar dicho producto en aquel período, en caso contrario no se empaca.

restricciones-logicas-empaq

Capacidad de empacado para cada bimestre t: La cantidad de productos A, B, C o D que en total se empaquen en cada período no puede superar la capacidad de empaque de 50.000 unidades por período.

capacidad-empacado-por-peri

Capacidad de producción en cada familia y bimestre t: Se debe respetar la capacidad de producción de producto no empacado para cada variedad y en cada período del horizonte de planificación.

capacidad-produccion-empaqu

No negatividad: Las variables de decisión deben adoptar valores no negativos.

no-negatividad-empaque

La siguiente imagen muestra la solución óptima (celdas amarillas) y valor óptimo (celda celeste) alcanzado a implementar este modelo de Programación Entera Mixta haciendo uso de Premium Solver Pro.

solucion-produccion-y-empaq

Consideremos el producto A de modo de ejemplificar respecto a la interpretación de los resultados. Se producen 6.000 unidades del producto A  y se empacan sólo 5.000 de ellas en el bimestre 1 (con las que se satisface la demanda del bimestre 1), en consecuencia, al final del período se dispone de 1.000 unidades de producto A no empacado.  Notar adicionalmente que a excepción del producto D para el resto de los productos no se empaca en todos los períodos.

¿Quieres tener el archivo Excel con la resolución en Premium Solver Pro de este problema?.

[sociallocker]solver-produccion-y-empaque[/sociallocker]

Solver, Premium Solver Pro y What’sBest! en la resolución del Problema de Localización y Transporte

¿Qué complemento de Excel es mejor para resolver un modelo de optimización: SolverPremium Solver Pro o What’sBest!?. Esta consulta fue enviada por uno de nuestros seguidores de México y en este artículo trataremos de presentar algunos argumentos que permitan al lector formar una opinión al respecto. Para ello utilizaremos como caso aplicado la resolución del Problema de Localización y Transporte (Programación Entera Mixta). A continuación te presentamos los resultados que alcanzamos con Solver, Premium Solver Pro y What’sBest!.

Resolución con Solver: Se alcanza una solución factible con un costo total asociado de US$12.617.919.

solver-pem

Resolución con Premium Solver Pro: Se alcanza una solución factible con un costo total de US$12.414.340.

solver-premium-pro-pem

Resolución con What’sBest!: Se alcanza una solución factible con un costo total de US$12.414.340. Notar sin embargo que la solución óptima difiere de la alcanzada al implementar el modelo con Premium Solver Pro aun cuando tiene asociado idéntico valor de la función objetivo.

whatsbest-pem

Comentarios: Se puede apreciar que la versión básica de Solver genera una solución factible con un costo mayor a la obtenida tanto con Premium Solver Pro y What’sBest!. Lo anterior sugiere la conveniencia de implementar este tipo de problemas con una herramienta de resolución mejorada. Adicionalmente, en la medida que un modelo de optimización crece en tamaño y complejidad es recomendable poder contrastar los resultados obtenidos con distintas herramientas de resolución de modo de tener una mayor claridad si las soluciones obtenidas son sólo factibles o eventualmente óptimas. A continuación encontrarás un tutorial que hemos subido a Youtube con la resolución del problema de localización y transporte.