Producción de cemento#
Tags: Inventario
Show code cell source
import os
# Por precaución, cambiamos el directorio activo de Python a aquel que contenga este notebook
if "optimizacion" in os.listdir():
os.chdir(r"optimizacion/Formulaciones/5. Produccion de cemento/")
Enunciado#
Artos S.A. es una empresa dedicada a la producción de cemento que cuenta con una única planta en la ciudad de Barranquilla. La empresa debe determinar la cantidad de toneladas de cemento a producir en cada una de las siguientes 12 semanas. Los costos de producción, costos de almacenamiento, así como la demanda y el precio por tonelada de cemento, varían semana a semana y se presentan en la siguiente tabla.
Tabla 1. Estructura de costos y precio
Semana |
Costo de producción [Miles de COP/ton] |
Costo de almacenamiento [Miles de COP/ton] |
Demanda [ton] |
Precio [Miles de COP/ton] |
---|---|---|---|---|
1 |
172.8 |
6.9 |
95,000 |
432.0 |
2 |
178.7 |
7.2 |
99,750 |
440.6 |
3 |
174.6 |
8.0 |
104,738 |
449.5 |
4 |
181.4 |
8.9 |
109,974 |
458.4 |
5 |
183.0 |
9.0 |
109,974 |
467.6 |
6 |
177.7 |
7.8 |
109,974 |
477.0 |
7 |
182.8 |
6.7 |
120,972 |
486.5 |
8 |
186.8 |
7.3 |
120,972 |
496.2 |
9 |
181.8 |
7.8 |
108,875 |
506.2 |
10 |
178.3 |
8.8 |
97,987 |
516.3 |
11 |
173.4 |
9.2 |
78,390 |
526.6 |
12 |
168.8 |
8.4 |
94,068 |
537.1 |
Tenga en cuenta que, al inicio de la planeación, se cuenta con 12,000 toneladas de cemento y que, por especificaciones de la maquinaria, no se puede producir más de 110,000 toneladas ni menos de 85,000 toneladas en una semana cualquiera. El objetivo de Artos S.A. es maximizar su utilidad.
Formulación#
a. Formula matemáticamente un modelo de optimización de forma general que represente la situación anterior. Defina clara y rigurosamente:
Conjuntos
Parámetros
Variables de decisión
Restricciones
Naturaleza de las variables
Función objetivo
Implementación#
b. Resuelve el modelo planteado utilizando la librería de PuLP en Python. ¿Cuál es la solución óptima del problema?
Librerías#
Importa el módulo matplotlib.pyplot
para crear gráficas y la librería pulp
para crear y resolver el modelo.
# Escribe en esta celda tu código.
Conjuntos#
Define el conjuntos S
que representa las semanas del horizonte de planeación.
Recuerda que por conveniencia de preservar el orden de los elementos de los conjuntos, no siempre deberás definirlos con el tipo set
.
# Escribe en esta celda tu código.
Parámetros#
Define o importa los parámetros del modelo.
# Costo de producción por tonelada en la semana i in S
c = {
1: 172.8,
2: 178.7,
3: 174.6,
4: 181.4,
5: 183.0,
6: 177.7,
7: 182.8,
8: 186.8,
9: 181.8,
10: 178.3,
11: 173.4,
12: 168.8,
}
# Costo de almacenamiento por tonelada en la semana i in S
h = {
1: 6.9,
2: 7.2,
3: 8.0,
4: 8.9,
5: 9.0,
6: 7.8,
7: 6.7,
8: 7.3,
9: 7.8,
10: 8.8,
11: 9.2,
12: 8.4,
}
# Demanda de la semana i in S
d = {
1: 95000,
2: 99750,
3: 104738,
4: 109974,
5: 109974,
6: 109974,
7: 120972,
8: 120972,
9: 108875,
10: 97987,
11: 78390,
12: 94068,
}
# Precio por tonelada en la semana i in S
p = {
1: 432.0,
2: 440.6,
3: 449.5,
4: 458.4,
5: 467.6,
6: 477.0,
7: 486.5,
8: 496.2,
9: 506.2,
10: 516.3,
11: 526.6,
12: 537.1,
}
# Inventario inicial de toneladas de cemento
I0 = 12000
Objeto del modelo#
Construye un problema al que luego agregarás las restricciones y la función objetivo.
# Escribe en esta celda tu código.
Variables de decisión#
Define las variables del problema de manera que estén contenidas en diccionarios indexados en los conjuntos de sus variables respectivas.
# Escribe en esta celda tu código.
Función objetivo#
Agrega al problema la función objetivo. Recuerda que al definir el problema, ya definiste si este es de maximización o minimización.
# Escribe en esta celda tu código.
Restricciones#
Agrega al problema las restricciones del modelo.
# Escribe en esta celda tu código.
Resolver el problema#
Invoca el optimizador. Este paso le asigna un valor a las variables incluidas en las restricciones o función objetivo del modelo.
# Escribe en esta celda tu código.
Imprimir resultados#
Antes de estudiar el óptimo del modelo, identifica en el estado del optimizador si pudo resolver el problema.
# Escribe en esta celda tu código.
Identifica también el valor de la función objetivo.
# Escribe en esta celda tu código.
Por último, imprime de manera estructurada el valor de las variables de decisión y otras expresiones de interés.
# Escribe en esta celda tu código.
Visualizar resultados#
Ahora que conoces el valor de las variables de decisión, desarrolla las siguientes visualizaciones del resultado.
Desarrolla una gráfica que ilustre el nivel de inventario final a lo largo del horizonte de planeación.
# Escribe en esta celda tu código.
Desarrolla una gráfica que ilustre el nivel de producción a lo largo del horizonte de planeación.
# Escribe en esta celda tu código.
Desarrolla una gráfica que ilustre el nivel de inventario inicial, la producción y la demanda a lo largo del horizonte de planeación.
# Escribe en esta celda tu código.
Créditos#
Equipo Principios de Optimización
Autores: Camilo Aguilar, Juan Felipe Rengifo
Desarrollo: Camilo Aguilar, Juan Felipe Rengifo, Alejandro Mantilla
Última fecha de modificación: 07/04/2023