Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CAMPUS GUANAJUATO
DIVISIÓN DE CIENCIAS NATURALES Y EXACTAS
DEPARTAMENTO DE INGENIERÍA QUÍMICA
LICENCIATURA EN INGENIERÍA QUÍMICA
El modelaje matemático es una de las herramientas más importantes con las que
cuenta un ingeniero para poder resolver problemas de la vida diaria de manera
exacta, basada en fundamentos físicos y matemáticos. La complejidad de dichos
modelos dependerá directamente de la naturaleza del problema, así como de los
resultados esperados.
La mejor forma de plantear y resolver estos modelos es con el método de
programación matemática, ya que permite la evaluación de diferentes
posibilidades y resultados, mediante la selección adecuada de variables
representativas del problema, las cuales suelen ser de carácter cuantitativo.
Existen diferentes tipos de problemas de programación matemática. Uno de ellos,
por ejemplo, es el problema de programación lineal, el cual es un problema
caracterizado por restricciones lineales, además de que todas sus variables son
continuas.
También existen otros tipos de problemas de programación matemática, como por
ejemplo los problemas de programación no lineal, los cuales son problemas cuyas
restricciones y funciones representativas no son funciones lineales. El análisis de
este tipo de problemas es muy importante, pues en la realidad, no todos los
problemas podrán ser descritos por modelos lineales.
Entonces, podemos definir los problemas de programación no lineal a todos
aquellos problemas cuyas restricciones y funciones características no sean
funciones lineales.
Dado que la resolución de los modelos matemáticos de un problema puede
resultar ser un problema matemático muy complejo, es necesario hacer uso de
herramientas computacionales que nos faciliten realizar los cálculos en un periodo
de tiempo corto. Un software muy utilizado hoy en día es el software GAMS.
Para obtener los resultados, GAMS utiliza diferentes procedimientos de solución
de acuerdo con el tipo de problema que se esté presentando. Por ejemplo, para
problemas de programación lineal, GAMS cuenta con diferentes procedimientos
de solución, por ejemplo, el método CPLEX.
Para resolver problemas de tipo programación no lineal, cuenta con otros
resolvedores como CONOPT y BARON. Para este tipo de problemas, es
importante hacer la selección del resolvedor adecuado, ya que no todos los
métodos convergen a las soluciones, y eso dependerá de la naturaleza del
problema.
1
GAMS, al ser un software especializado en resolución de problemas de
optimización, cuenta en su base de datos una cantidad grande de métodos de
solución para las distintas clasificaciones de los problemas de programación
matemática. Dentro de su base de datos podemos encontrar decenas de métodos
de solución. En la tabla 1 podemos observar algunos ejemplos.
Tabla 1: Algunos resolvedores del software GAMS
2
Metodología
Planteamiento:
Antes de comenzar con la resolución en el software GAMS, es importante analizar
los casos de estudio, determinar cuáles son las posibles restricciones, cual es el
objetivo, si es minimización, maximización y determinar cuáles serán las variables
de nuestro problema en cuestión.
Problema 1:
Haciendo el análisis del problema, dado a que es un parámetro que nos permiten
comprobar, podemos definir la demanda química de oxígeno inicial como la única
estricción del problema. Por lo tanto, este problema sólo contará con una
restricción para ambos incisos y 4 variables, que son, demanda química de
oxígeno, concentración de hierro y concentración de peróxido, además de la
variable del tiempo. Aunado a esto, también la función objetivo, la cual es descrita
durante el planteamiento del problema.
Restricciones: 1 (CODo)
Variables: 4 (COD, CFE, CPER, t)
Función objetivo: Max Z.
Problema 2:
De forma similar al problema 1, se analiza el segundo caso de estudio para
determinar cuáles serán las restricciones y las variables características del
problema, así como la representación de la función objetivo del caso analizado.
El caso de estudio nos proporciona ciertas variables que ya tienen un valor
definido, por lo que las podemos considerar como constantes, sin embargo, para
poder hacer un análisis de sensibilidad adecuado, dichas variables se definirán
como restricciones caracterizadas por los valores proporcionados en el problema.
Haciendo esto, solo tendremos 2 variables (capacidad y tamaño del barco) y 7
restricciones, además de la función objetivo:
Restricciones: 7 (a, cc, ci, cx,i , n, p)
Variables: 2 (q, t)
Función objetivo: Min Z.
Programación:
1. Cambiar el resolvedor del software.
Como ya se analizó, los casos de estudio a analizar en esta práctica sobre
problemas de programación no lineal, por lo que es necesario cambiar el
3
resolvedor del software GAMS. Para esto es necesario ir a la pestaña de
solvers y seleccionar la casilla de BARON/NLP, tal como se muestra en la
ilustración 1.
File>>Options>>Solvers>>BARON/NLP
Problema 1, inciso a)
1. Denominar el título del código.
$Title Practica3Remocion.
2. Realizar las separaciones pertinentes en el código.
*Título de separación
4
3. Definir las ecuaciones y restricciones del sistema.
variables z, t,CFE,CPER,COD;
Rest1.COD=e=100;
Fobj..z=e=-(20.602)+(1.14238*CFE)+(0.102791*CPER)+(0.138419*COD)
+(5.87343*t)-(0.0043153*(CFE**2))-(0.000406362*CFE*CPER)
-(0.000813263*CFE*COD)-(0.0222401*CFE*t)
-(0.0000252268*(CPER**2))-(0.0000666185*CPER*COD)
-(0.00462*CPER*t)-(0.0000277821*(COD**2))
-(0.00615258*COD*t)-(0.0165629*(t**2));
CFE.lo=13;
CPER.lo=100;
t.up=20;
t.lo=5;
5
Se repiten los pasos 5 – 9, pero con los diferentes valores de CODo
propuestos por el problema (100, 200, 300, 400).
Problema 1, inciso b)
Se repiten los pasos 1 – 9, únicamente se modifica el paso 7, el cual
determina los límites de las variables. Únicamente cambiamos el límite
superior de t a 15. Se prueba para los diferentes valores de CODo.
Problema 2, inciso a)
1. Denominar el título del código.
$Title Practica3Petrolero.
2. Realizar las separaciones pertinentes en el código.
*Título de separación
3. Definir las ecuaciones y restricciones del sistema.
Ec1..a=e=0.20;
Ec2..cc=e=12.50;
Ec3..ci=e=0.5;
Ec4..cx=e=0.9;
Ec5..i=e=0.1;
Ec6..n=e=2;
Ec7..p=e=7000;
6
Fobj..z=e=cc+ci+cx+(((2.09*(10**4))*(1/(t**.3017)))/(360))+
(((1.064*(10**6))*a*(t**.4925))/(52.47*q*360))+
(((4.242*(10**4))*a*(t**.7952))/(52.47*q*360))+
((1.813*i*p*((n*t+1.2*q)**.861))/(52.47*q*360))+
(((4.25*(10**3))*a*(n*t+1.2*q))/(52.47*q*360))+
(((5.042*(10**3))*(1/(q**.1899)))/(360))+
((0.1049*(q**.671))/(360));
7. Definir los límites de las variables. El límite inferior para las dos variables de
estudio no debe ser 0, en cuestión de cálculos se genera una
indeterminación, físicamente no es viable tener medidas nulas,
particularmente para este caso, tamaños de petroleros y capacidades de
producción. Se atiende la parte matemática se propone un valor superior a
0, además es necesario definir el tamaño máximo:
q.lo=1;
t.lo=1;
t.up=300000;
Problema 2, inciso b)
Se repiten los pasos 1- 9, únicamente se modifica el paso 5, en el cual tendremos
que cambiar la restricción relacionada al precio del crudo, quedando de la
siguiente manera:
Ec2..cc=e=12.50*(1+0.12);
Problema 2, inciso c)
Se hace el mismo procedimiento que el inciso b), pero al ser un decremento, la
restricción queda como:
7
Ec2..cc=e=12.50*(1-0.08);
Resultados
Problema_1a)
Se ha realizado el ajuste de datos experimentales de un sistema de tratamiento de agua
con el fin de obtener una correlación que permita determinar el porcentaje de remoción de
contaminantes (Ret), medido en términos de la demanda química de oxígeno inicial
(CODo). La ecuación resultante del ajuste es la siguiente (Páramo-Vargas et al., 2017):
Se sabe que hay tres casos de estudio, estos son los escenarios cuando COD
tiene valores de 100, 200, 400 mg/L. En dos de estos escenarios se obtienen
valores de remoción de contaminantes superiores a 100, lo que matemáticamente
es correcto, pero, en cambio físicamente no es viables. Al ser un porcentaje su
valor debe ser menor o igual a 100, valores superiores implicarían cantidades
negativas de materia puesto que su forma de cálculo es:
CODinicial −COD final
ℜt =
CODinicial
8
Se propuso hacer el análisis de los tres escenarios planteados, pero forzando a
una recuperación máxima de 100%, de lo cual se obtuvieron tiempos ‘óptimos’ de
operación.
*** Las ilustraciones presentadas a continuación fueron realizadas mediante la
implementación de un código de búsqueda de valores máximos de remoción,
siguiendo las condiciones descritas en el problema planteado. El programa fue
realizado en Matlab. La precisión de datos obtenidos fue sujeta al poder de cálculo
de los equipos con que contábamos. Se hizo lo posible para generar gráficos
representativos y significativos. ***
9
Ilustración 3.- Tiempos óptimos de remoción.
10
Ilustración 4.- Concentraciones iniciales de ion ferroso y peróxido de hidrogeno.
El primer par de gráficos en la Ilustración, que muestra el caso sin ajuste, muestra
las concentraciones de los iones que actúan como reactivos en el proceso. La
concentración del peróxido requerido es constante para todo el rango de demanda
de oxígeno estudiado, en cambio, la concentración de ion ferroso va en descenso
conforme la demanda de oxígeno aumenta.
El segundo par de gráficos, correspondiente al caso ajustado, confirma que la
cantidad de peróxido utilizado es constante independientemente de la cantidad de
demanda de oxígeno que se tenga. Pero la concentración de ion ferroso parte de
un valor cercano a 20 mg/L cuando COD inicial es 100 mg/L, permanece
constante conforme se aumenta COD hasta un valor 190 aproximadamente, a
partir el cual tiene un aumento paulatino hasta llegar a un valor máximo de 45
mg/L cuando COD es 330 mg/L. Conforme aumenta la demanda de oxígeno, por
encima de 330 mg/L, se ve una disminución de ion ferroso inicial en la remoción.
***Uso del programa en Matlab: ***
***[Remocion_20minutos.m]***
Problema_1b)
Para cada uno de los casos anteriores, ¿cómo se modifica el resultado si el tiempo
máximo de tratamiento se reduce a 15 minutos?
11
Tabla 3.- Resumen de datos obtenidos en GAMS [Datos con * representan un ajuste forzado a 100% de Re].
El porcentaje de remoción de
contaminantes en todos los
escenarios planteados se
encuentra en un rango de 89% a
98%, por tanto, los tres escenarios
son viables. Conforme sea mayor
la demanda química de oxígeno
inicial menor será el porcentaje de
remoción de contaminantes.
12
Ilustración 7.- Concentraciones iniciales de ion ferroso y peróxido de hidrogeno.
Los gráficos mostrados en Ilustración 7 son las concentraciones de los iones
‘reactivos’ al inicio de la remoción. La concentración de peróxido de hidrógeno es
constante independientemente de la demanda de oxígeno. Por su parte, el ion
ferroso requerido disminuye conforme la demanda de oxigeno aumenta, su rango
va de los 80 mg/L a 50 mg/L dentro de los casos de estudio planteados.
Haciendo una rápida comparación de resultados con respecto los valores vistos en
procesos de 20 minutos, se deduce que la reducción de tiempos de operación
afecta negativamente el porcentaje de remoción de contaminantes, y aumenta la
demanda de ion ferroso inicial. Por lo anterior queda a discusión el tema de que
tan efectivo se pretende sea la remoción, faltan datos de costos (operación y
materia prima) para concluir si es correcto alargar el tiempo de operación o no
hacerlo.
***Uso del programa en Matlab: ***
***[Remocion_15minutos.m]***
Problema_2a)
El costo del petróleo refinado al enviarse vía marítima desde el Estrecho de Malaca hasta
Japón en dólares por kilolitro ha sido modelado (Uchiyama, 1968) como la suma lineal de
los costos del petróleo crudo, el seguro, aduana, costos de carga y descarga, costos de
tubería submarina, costo de almacenamiento, costo del área del tanque, costo de
refinación y costo de carga del producto, como se presenta a continuación:
Donde:
a = cargos fijos anuales (0.20)
13
cc = precio del petróleo crudo, USD/kL (12.50)
ci = costo de seguro, USD/kL (0.50)
cx = costo de aduana, USD/kL (0.90)
i = interés (0.10)
n = número de puertos (2)
p = precio de terreno, USD/m2 (7000)
q = capacidad de la refinería, bbl/día
t = tamaño del petrolero, kL
Considerando los valores dados entre paréntesis, determine el costo mínimo del petróleo
refinado, así como el tamaño óptimo del petrolero y la capacidad óptima de la refinería, si
el tamaño máximo que puede tener el petrolero corresponde a 300,000 kL.
Tras plantear el modelo del sistema de estudio y resolver mediante el uso del
programa GAMS, se obtuvieron los datos mostrados en Tabla 4.
Tabla 4-. Condiciones de las variables para la minimización de costo del petróleo.
Para corroborar los datos arrojados por la optimización en GAMS se opto por graficar la
función objetivo. Se diseño el código en Matlab. Luego de varios intentos por ajustar el
rango de trabajo para observar el mínimo reportado, se sugirió tener los siguientes rangos
para la capacidad de la refinería y el tamaño del petrolero, [100000 200000] y [100000
300000] respectivamente.
Ilustración 8.- Variación del costo del petróleo refinado con respecto a la capacidad de la refinería y tamaño
del petrolero de transporte.
14
***[Costo_petroleo.m]***
Problema_2b)
Resuelva y analice los resultados si el precio del petróleo crudo se reduce en un 8% del
precio original.
Tabla 5-. Condiciones de las variables para la minimización de costo del petróleo [Reducción del 8%].
Para corroborar los datos arrojados por la optimización en GAMS se optó por graficar la
función objetivo. Se diseño el código en Matlab. Luego de varios intentos por ajustar el
rango de trabajo para observar el mínimo reportado, se sugirió tener los siguientes rangos
para la capacidad de la refinería y el tamaño del petrolero, [100000 200000] y [100000
300000] respectivamente.
Ilustración 9-. Variación del costo del petróleo refinado con respecto a la capacidad de la refinería y tamaño
del petrolero de transporte [Reducción del 8%].
15
Problema_2c)
Resuelva y analice los resultados si el precio del petróleo crudo aumenta un 12% del
precio original.
Tabla 6-. Condiciones de las variables para la minimización de costo del petróleo [Reducción del 8%].
Para corroborar los datos arrojados por la optimización en GAMS se optó por graficar la
función objetivo. Se diseño el código en Matlab. Luego de varios intentos por ajustar el
rango de trabajo para observar el mínimo reportado, se sugirió tener los siguientes rangos
para la capacidad de la refinería y el tamaño del petrolero, [100000 200000] y [100000
300000] respectivamente.
Ilustración 10-. Variación del costo del petróleo refinado con respecto a la capacidad de la refinería y tamaño
del petrolero de transporte [Aumento del 12%].
16
Luego de comparar los tres incisos propuestos se puede deducir que, el costo
mínimo de petróleo refinado se presenta bajo las mismas condiciones de
capacidad y tamaño dentro espacio de estudio planteado. Por tanto, se puede
decir que, si se continúa trabajando con la misma función para definir el costo de
petróleo, con las mismas condiciones planteadas, y solo con una variación en el
precio de costo de crudo, se presentara el valor mínimo de precio cuando el
tamaño del petrolero sea de 300000 kL y la capacidad de nuestra refinería ronde
los 151630 bbl/día. Además, se tendrá una variación del precio del petróleo
directamente proporcional a la variación del crudo.
Ilustración 11-. Costo del petróleo refinado en función de la variación del precio del crudo.
***Uso del programa en Matlab: ***
***[Variacion_costo_petroleo.m]***
17
Conclusiones
En ambos casos de estudio, podemos observar que las funciones objetivos
representativas de los problemas son funciones altamente no lineales, por lo que
un método de resolución de LP nunca hubiera convergido a una solución factible.
Además, se comprueba una vez más la efectividad del software GAMS para la
resolución de problemas matemáticamente complejos, en este caso, para la
resolución de problemas de programación no lineal, los cuales estaban basados
en modelos matemáticos representativos de la realidad.
Además de practicar la codificación y resolución de problemas de optimización en
el programa GAMS, se tuvo la oportunidad de analizar los resultados obtenidos, a
tal grado de lograr discernir de la viabilidad matemática y física de las respuestas.
Particularmente en los problemas estudiados, el primero de ellos presentó valores
no viables físicamente, como ya se menciono en los resultados, algunas
respuestas implicaban flujos de materia negativos.
Para la resolución de segundo problema estudiado no hubo problema alguno, de
hecho, se prestó a poder graficar el comportamiento, favorecido por tratarse de
una función dependiente de dos variables, dando así un gráfico en tres
dimensiones.
Bibliografía
[1] GAMS Development corporation. (2020). GAMS - Documentation. USA: GAMS.
(https://www.gams.com/latest/docs/S_BARON.html) Recuperado el 14 de marzo
del 2020.
[2] Enrique Castillo, Antonio J. Conejo, Pablo Pedregal. (2002). Formulación y
Resolución de Modelos de Programación Matemática en Ingeniería y Ciencia.
Ciudad Real, España: Universidad de Castilla.
[3] Nick Sahinidis (2010) BARON. The optimization firm.
(https://www.minlp.com/baron) Recuperado el 14 de marzo del 2020.
[4] Páramo-Vargas J, Maldonado-Rubio MI, Gómez-Castro FI, Peralta-Hernández
JM (2017). Modeling the Fenton depuration of the effluent from a slaughterhouse
based on design of experiments. MOJ Ecology & Environmental Sciences.
[5] https://la.mathworks.com/help/matlab/ Consultada el 17 marzo del 2020.
18