Documentos de Académico
Documentos de Profesional
Documentos de Cultura
7 𝑡𝑜𝑛
P1 𝑋1𝐴
6 𝑡𝑜𝑛
A
5 𝑡𝑜𝑛
P2
1 𝑡𝑜𝑛
B
3 𝑡𝑜𝑛
P3
10 𝑡𝑜𝑛
6 𝑡𝑜𝑛 C
P4
Recuerde que las variables de decisión son las toneladas diarias de hexano desde
cada proveedor hasta cada biorefinería consumidora. La tabla 3.4 registra los
términos utilizados para estas variables de decisión (ton/día), que también se
muestran en el diagrama.
Tabla 3.4. Variables de decisión para las cantidades transportadas (ton/día).
Función objetivo
Se desea minimizar los costos de transporte, por tanto, la función objetivo es la
siguiente:
𝐶𝑇𝑜𝑡 = 20𝑋1𝐴 + 10𝑋1𝐵 + 50𝑋1𝐶 + 30𝑋2𝐴 + 0𝑋2𝐵 + 80𝑋2𝐶 + 110𝑋3𝐴 + 60𝑋3𝐵
+ 150𝑋3𝐶 + 70𝑋4𝐴 + 10𝑋4𝐵 + 90𝑋4𝐶 (3.1)
Restricciones:
Demanda hexano Biorefinerías
𝑋1𝐴 + 𝑋2𝐴 + 𝑋3𝐴 + 𝑋4𝐴 = 6 𝐸𝑐. 3.2
𝑋1𝐵 + 𝑋2𝐵 + 𝑋3𝐵 + 𝑋4𝐵 = 1 𝐸𝑐. 3.3
𝑋1𝐶 + 𝑋2𝐶 + 𝑋3𝐶 + 𝑋4𝐶 = 10 𝐸𝑐. 3.4
Disponibilidad de hexano proveedores
𝑋1𝐴 + 𝑋1𝐵 + 𝑋1𝐶 ≤ 7 𝐸𝑐. 3.5
𝑋2𝐴 + 𝑋2𝐵 + 𝑋2𝐶 ≤ 5 𝐸𝑐. 3.6
𝑋3𝐴 + 𝑋3𝐵 + 𝑋3𝐶 ≤ 3 𝐸𝑐. 3.7
𝑋4𝐴 + 𝑋4𝐵 + 𝑋4𝐶 ≤ 6 𝐸𝑐. 3.8
Restricción de no negatividad
𝑋1𝐴 ≥ 0, 𝑋1𝐵 ≥ 0, … , 𝑋4𝐶 ≥ 0
Solución con LINGO
La formulación en LINGO es dada por el siguiente programa
TITLE ASIGNACION DE TRANSPORTE DE HEXANO;
!VARIABLES
X1A, X1B, X1C
X2A, X2B, X2B
X3A, X3C, X3C
X4A, X4B, X4C
FUNCION OBJETIVO;
!RESTRICCIONES;
Columna de enfriamiento
3000 ≤ 𝑓𝑙𝑢𝑗𝑜 𝑑𝑒 𝑎𝑔𝑢𝑎 𝑑𝑒 𝑒𝑛𝑓𝑟𝑖𝑎𝑚𝑖𝑒𝑛𝑡𝑜 𝑎𝑙𝑖𝑚𝑒𝑛𝑡𝑎𝑑𝑎 𝑎 𝑙𝑎 𝑐𝑜𝑙𝑢𝑚𝑛𝑎 (𝑘𝑔⁄ℎ) ≤ 3500
0.0 ≤ 𝑐𝑜𝑛𝑐𝑒𝑛𝑡𝑟𝑎𝑐𝑖ó𝑛 𝑑𝑒 𝑖𝑚𝑝𝑢𝑟𝑒𝑧𝑎𝑠 (% 𝑝⁄𝑝) ≤ 3.0
Reactor de hidrolisis
3000 ≤ 𝑓𝑙𝑢𝑗𝑜 𝑑𝑒 𝑎𝑔𝑢𝑎 𝑑𝑒 𝑒𝑛𝑓𝑟𝑖𝑎𝑚𝑖𝑒𝑛𝑡𝑜 𝑎𝑙𝑖𝑚𝑒𝑛𝑡𝑎𝑑𝑎 𝑎 𝑙𝑎 𝑐𝑜𝑙𝑢𝑚𝑛𝑎 (𝑘𝑔⁄ℎ) ≤ 3500
La tabla 3.5 resume los datos para los sumideros de proceso. La tabla 3.6
proporciona los datos para las fuentes de proceso organizadas en orden ascendente
de concentración de impurezas.
Tabla 3.5. Datos de sumidero para el problema de ácido fórmico
Máxima fracción Máxima carga de
Flujo
Sumidero másica de entrada de entrada de impurezas
(Kg/h)
impurezas (Kg/h)
Reactor de
6000 0.0100 60
hidrolisis
Columna de
3000 0.0300 90
enfriamiento
Estabilizador de
500 0.1000 50
cenizas volantes
Tabla 3.6. Datos de la fuente para el problema de ácido fórmico
Máxima fracción másica Máxima carga de
Flujo
Fuente de entrada de entrada de impurezas
(Kg/h)
impurezas (Kg/h)
Agua destilada 4000 0.0175 70
Efluente de
3000 0.0600 180
enfriamiento
Solución
El objetivo aquí es minimizar el uso de agua dulce. Se designa entonces el flujo del
agua como Fresh. Por lo tanto, la función objetivo se puede expresar como:
Función objetivo
Minimizar: Fresh
La velocidad de flujo del agua es la suma de las velocidades de flujo del agua
utilizada en los tres sumideros del proceso (j =3, reactor de hidrólisis, columna de
enfriamiento y estabilizador de cenizas volantes), que se denominan FreshHydro,
FreshQuen, FreshSta, respectivamente. Por lo tanto,
Fresh = FreshHidro + FreshQuen + FreshSta Ec.3.9
Al considerar el reciclo directo, el problema tiene dos fuentes de proceso (i = 2, agua
destilada y efluente de enfriamiento). Cada una de las fuentes de proceso se divide
y alimenta a los tres sumideros de proceso. Además, las fuentes de proceso no
recirculadas se descargan al sistema de tratamiento de residuos. Sea el flujo del
agua destilada designado como FDest y los flujos de agua destilada suministrada a
los tres sumideros del proceso y al tratamiento de aguas residuales como:
FDestHydro, FDestQuen, FDestSta, y FDestWaste.
Por lo tanto, la restricción de división de fuente para el agua destilada se puede
escribir como:
FDest = FDestHydro + FDestQuen + FDestSta + FDestWaste Ec.3.10
Similarmente, La restricción de división para la fuente de descarga de efluentes está
dada por:
FEflue = FEflueHydro + FEflueQuen + FEflueSta + FEflueWaste Ec.3.11
A continuación, se representa el punto de mezcla de las fuentes divididas y les
asignan a los sumideros. Las siguientes son las restricciones de equilibrio de flujo y
componentes para el agua y el contaminante que ingresa a cada sumidero:
Reactor de hidrolisis
FDestHydro + FEflueHydro + FreshHidro = 6000 Ec.3.12
FDestHydro ∗ 0.0175 + FEflueHydro ∗ 0.06 ≤ 6000 ∗ 0.01 Ec.3.13
Columna de enfriamiento
FDestQuen + FEflueQuen + FreshQuen = 3000 Ec.3.14
FDestQuen ∗ 0.0175 + FEflueQuen ∗ 0.06 ≤ 3000 ∗ 0.03 Ec.3.15
Del mismo modo, el flujo total que va a tratamiento de residuos está dado por:
Waste = FDestWaste + FEflueWaste Ec.3.18
Min=Fresh;
Fresh=FreshHydro+FreshQuen+FreshSta;
FDest=4000;
FDest=FDestHydro+FDestQuen+FDestSta+FDestWaste;
FEflue=3000;
FEflue=FEflueHydro+FEflueQuen+FEflueSta+FEflueWaste;
FDestQuen+FEflueQuen+FreshQuen =3000;
FDestQuen*0.0175+FEflueQuen*0.06 <=3000*0.03;
FDestSta + FEflueSta + FreshSta =500;
FDestSta*0.0175+FEflueSta*0.06 <=500*0.1;
Waste=FDestWaste + FEflueWaste;
Variable Value
FRESH 3666.667
FRESHHYDRO 3666.667
FRESHQUEN 0.000000
FRESHSTA 0.000000
FDEST 4000.000
FDESTHYDRO 1882.352
FDESTQUEN 2117.648
FDESTSTA 0.000000
FDESTWASTE 0.000000
FEFLUE 3000.000
FEFLUEHYDRO 450.9805
FEFLUEQUEN 882.3525
FEFLUESTA 500.0000
FEFLUEWASTE 1166.667
WASTE 1166.667
Figura 3.3b. Implementación alternativa de los objetivos para el proceso de ácido fórmico (todos los
números representan el flujo desde la fuente hasta el sumidero en kg/h)
Ejercicio 3.3. Asignación de una red de flujos
En este problema, se resolverá el ejercicio 2.1 del capítulo de MILP utilizando
LINGO, en este caso, se va a presentar como llamar variables binarias en la
formulación de LINGO.
En este problema se quiere asignar corrientes a intercambiadores de calor y el costo
(hasta cierto punto) de hacerlo se detalla la tabla 3.7.
Tabla 3.7. Costos de transferencia
Intercambiadores
Corrientes 1 2 3 4
A 94 1 54 68
B 74 10 88 82
C 73 88 8 76
D 11 74 81 21
Sujeto a
𝑛
@BIN(XA1);
@BIN(XA2);
@BIN(XA3);
@BIN(XA4);
@BIN(XB1);
@BIN(XB2);
@BIN(XB3);
@BIN(XB4);
@BIN(XC1);
@BIN(XC2);
@BIN(XC3);
@BIN(XC4);
@BIN(XD1);
@BIN(XD2);
@BIN(XD3);
@BIN(XD4);
END
Resolviendo con LINGO, se obtiene la siguiente solución optima
Objective value: 97.00000
Análisis de sensibilidad
Para problemas de programación lineal, LINGO puede ofrecer información adicional
sobre la solución. Para ello hacemos lo siguiente:
1. Ponemos en primer plano la ventana en la que hemos escrito el modelo (no la
que contiene la solución).
2. Vamos al menú LINGO - Range. Así se abrirá una nueva ventana con dos nuevas
tablas:
La primera tabla contiene, en su primera columna, el coeficiente de la función
objetivo de la variable correspondiente, y en las otras dos columnas lo que puede
aumentar y lo que puede disminuir dicho coeficiente para que la solución óptima
siga siendo la misma. La segunda tabla contiene, en su primera columna, el término
independiente de la restricción correspondiente, y en las otras dos columnas lo que
puede aumentar y lo que puede disminuir dicho coeficiente para que la solución
óptima tenga las mismas variables básicas.
Por ejemplo, el coste unitario de transporte entre el proveedor 1 y la biorefinería A
es de 20, y puede variar en el intervalo [0,30] sin que la solución del problema
cambie.
De forma similar, la producción diaria del proveedor 1 actualmente es de 7, pero
puede variar en el intervalo [6,11] y los precios sombra (holgura) seguirían siendo
los mismos.
(PDF) Una experiencia práctica de programación matemática con LINGO. Available
from:https://www.researchgate.net/publication/26428268_Una_experiencia_practic
a_de_programacion_matematica_con_LINGO [accessed May 30 2019].
Ejercicio 3.5. Desarrollo de una formulación con el comando SET para el
problema de transporte 3.2
El objetivo de este ejemplo es resolver el problema 3.2 utilizando la formulación de
conjuntos de LINGO descrita en el apéndice xxx. Los siguientes conjuntos se
definen primero:
FLOW_CONNECTIONS (SOURCE, SINKS): Conjunto de todas las conexiones
desde las fuentes a los sumideros
SINK: Conjunto de sumideros del proceso
SOURCE: Conjunto de fuentes del proceso