![Page 1: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/1.jpg)
Computer-aided Chemical Engineering
www.cacheme.org
Chem. EngineerDaniel Domene
Python en la industria: el problema de optimización
(matemática)
Carlos PlanellesChem. Engineering Student
![Page 2: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/2.jpg)
Índice
• Programación matemática• AML (Algebraic Modeling Languages) • Optimización en Python: ¿Por qué
Pyomo?• Ejemplos• Bibliografía
www.cacheme.org
![Page 3: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/3.jpg)
Índice
• Programación matemática• AML (Algebraic Modeling Languages) • Optimización en Python: ¿Por qué
Pyomo?• Ejemplos• Bibliografía
www.cacheme.org
![Page 4: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/4.jpg)
cacheme.orgProgramación matemáticaOptimización: ¿por qué es importante?
• Mejorar la calidad de un producto• Aumentar beneficios• Reducir riesgos ambientales• Reducir costes de producción• Etc.
En la Ingeniería Química
Selección de equiposGestión logística
…
![Page 5: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/5.jpg)
cacheme.orgProgramación matemática
©Benmoran
©Benmoran
![Page 6: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/6.jpg)
cacheme.orgProgramación matemáticaProblemas de optimización
• Programación Lineal (LP)• Programación Lineal Mixta Entera (MILP)• Programación No Lineal (NLP)• Programación No Lineal Mixta Entera (MINLP)
![Page 7: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/7.jpg)
cacheme.orgProgramación matemáticaProgramación Lineal (LP)
Función objetivo y restricciones lineales
Algoritmo de SIMPLEX
EJEMPLO: PROBLEMA DEL
TRANSPORTE
![Page 8: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/8.jpg)
cacheme.orgProgramación matemáticaProgramación Lineal Mixta Entera (MILP)
Función objetivo y restricciones lineales.
Incluye la toma de decisiones lógicas con la
incorporación de variables binarias.
Algoritmo de RAMIFICACIÓN Y ACOTAMIENTO
EJEMPLO: SELECCIÓN DE LA MEJOR RUTA DE
PRODUCCIÓN
𝒎𝒊𝒏: 𝒄𝑻𝒙+ 𝒅𝑻𝒚 𝑠.𝑎: 𝐴𝑥+ 𝐵𝑦 ≤ 𝑏 𝑥 ≥ 0 ,𝑥 ∈𝑋 ⊆ ℜ𝑛 𝑦 ∈ ሼ0,1ሽ
![Page 9: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/9.jpg)
cacheme.orgProgramación matemáticaProgramación No Lineal (NLP)
Función objetivo y/o restricciones lineales y no
lineales.
Algoritmo:Condiciones de optimalidad de
Karush-Kuhn-Tucker
EJEMPLO: DISEÑO DE UN REACTOR CONTINUO DE TANQUE AGITADO
![Page 10: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/10.jpg)
cacheme.org
{ }
) +) +) +
min (. (
(, 0,1
: , : , :, ,
T
mn
n n l n p
m l m p m
z fsa
f´ ´
==£
Πή ® ®
Î Î Î
¡¡ ¡ ¡ ¡ ¡ ¡¡ ¡ ¡
x d yh x By 0g x Dy 0
x yh g
d B D
Programación matemáticaProgramación No Lineal Mixta Entera (MINLP)
Función objetivo y/o restricciones lineales y no
lineales. Incorporación de decisiones lógicas
mediante la inclusión de variables binarias.
Algoritmo:APROXIMACIONES
EXTERIORES
EJEMPLO: SELECCIÓN DE LA MEJOR RUTA DE
PRODUCCIÓN
![Page 11: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/11.jpg)
Índice
• Programación matemática• AML (Algebraic Modeling Languages) • Optimización en Python: ¿Por qué
Pyomo?• Ejemplos• Bibliografía
www.cacheme.org
![Page 12: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/12.jpg)
cacheme.orgAML (Algebraic modelling languages)
Software propietario:
AMPL (www.ampl.com) Lenguajesencillo, pero complicado interactuar
- GLPK es una alternativa librepara LP y MILP
GAMS (www.gams.com) Se comunicacon solvers incluso para resolver MINLP
AIMMS (www.aiims.com) Diseñado pararesolver problemas de optimización a granescala, y programación de actividades.
![Page 13: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/13.jpg)
cacheme.org
Optimización en Python: ¿Por qué Pyomo?Free Open source:
CVXOPT – M. Andersen, J. Dahl, L. VandenbergheNotación matricial. Optimización Convexa
PuLP – Trabaja con lenguaje Python. Muy buenosresultados para LP y MILP. No resuelve NLP
OpenOpt – Más de 30 solvers para solucionar elmodelado, incluyendo programación no lineal.
Pyomo – Coopr. (Sandia National Laboratories, USA)Permite la formulación de modelos algebraicos enPython.
![Page 14: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/14.jpg)
cacheme.org
• Se comunica directamente con los principales solvers de AMPL, GLPK, Gurobi, CPLEZ, CBC y PICO.
• Programación en Python tipo AMPL/GAMS.• Compatible con Python 2 y 3. • Pyomo (Coopr) es un paquete gratuito con licencia BSD, maduro y
bien documentado. • Fácil instalación “pip install pyomo”, instalación de solver aparte. • Adaptabilidad a modelado de la mayoría de problemas.
Optimización en Python: ¿Por qué Pyomo?
![Page 15: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/15.jpg)
Índice
• Programación matemática• AML (Algebraic Modeling Languages) • Optimización en Python: ¿Por qué
Pyomo?• Ejemplos• Bibliografía
www.cacheme.org
![Page 16: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/16.jpg)
cacheme.orgEjemplosEL PROBLEMA DEL TRANSPORTE
Linear Programing
• Problema clásico de optimización LP• Se puede resolver con GLPK• Hay que minimizar el coste en el transporte del producto
![Page 17: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/17.jpg)
cacheme.orgEjemplosEL PROBLEMA DEL TRANSPORTE
Linear Programing
![Page 18: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/18.jpg)
cacheme.orgEjemplosEL PROBLEMA DEL TRANSPORTE
Linear Programing
![Page 19: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/19.jpg)
cacheme.orgEjemplosEL PROBLEMA DEL TRANSPORTE
PROGRAMACIÓN ORIENTADA A OBJETOS: se crea la clase.
Se importan las librerias
Mercados
PlantasDemanda mínima
Producción máxima
Coste/distancia
Distancia plata-mercado
![Page 20: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/20.jpg)
cacheme.orgEjemplosEL PROBLEMA DEL TRANSPORTE
Se nombran las variables, que corresponderán con la cantidad de producto desde una planta a un mercado.
No puede ser negativaDepende de las plantas y los mercados.
Declaramos que es una variable
![Page 21: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/21.jpg)
cacheme.orgEjemplosEL PROBLEMA DEL TRANSPORTE
Por defecto minimiza. (Para maximizar teclear maximize)
Declaramos que es la función a optimizar
![Page 22: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/22.jpg)
cacheme.orgEjemplosEL PROBLEMA DEL TRANSPORTE
Declaramos que es una restricción
Declaramos que es una restricción
Hace referencia a la demanda mínima de los mercados
Hace referencia a la máxima producción por planta
![Page 23: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/23.jpg)
cacheme.orgEjemplosEL PROBLEMA DEL TRANSPORTE
Archivo con los datos del problema:Exigencias de los mercados, costes
por transporte…
Mercados
Plantas
Demanda mínima
Producción máxima
Coste/distancia
Distancia plata-mercado
![Page 24: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/24.jpg)
cacheme.orgEjemplosEL PROBLEMA DEL TRANSPORTE
Linear Programing
![Page 25: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/25.jpg)
cacheme.orgEjemplosEL PROBLEMA DEL TRANSPORTE
Cantidad de producto de
cada planta al correspondien
te mercado
Coste total
![Page 26: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/26.jpg)
cacheme.orgEjemplosPROCESS SYNTHESIS PROBLEM
Mixed Integred Linear Programing• Problema de optimización MILP • Se puede resolver con Pyomo, GAMS… • Se puede emplear el solver GLPK• Hay que decidir la ruta optima de producción
https://github.com/Planelles20/pyomo/blob/master/MixedIntegerLinearProgramming/process_synthesis/EnunciadoProcess_Synthesis.pdfSimulation, design and optimization of chemical processes – compute lab GAMS
Grado en Ingeniería Química – Universidad de Alicante
![Page 27: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/27.jpg)
cacheme.orgEjemplos
PROGRAMACIÓN ORIENTADA A OBJETOS: se genera el modelo.
Se cargan los operadores y la biblioteca numpy
Variables binarias del sistema para toma de decisiones lógicas ( 0 , 1 )
0: No proceso I , 1: Si proceso I
0: No proceso II , 1: Si proceso II
0: No proceso III , 1: Si proceso III
PROCESS SYNTHESIS PROBLEM
![Page 28: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/28.jpg)
cacheme.orgEjemplos
Declaración del resto de variables.
Unidades de producción que circulan por las corrientes
Físicamente no pueden ser negativas
PROCESS SYNTHESIS PROBLEM
![Page 29: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/29.jpg)
cacheme.orgEjemplos
Declaración del resto de variables.
Costes asociados a las corrientes
Pueden ser positivas o negativas
PROCESS SYNTHESIS PROBLEM
![Page 30: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/30.jpg)
cacheme.orgEjemplos
Declaración de las restricciones
PROCESS SYNTHESIS PROBLEM
![Page 31: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/31.jpg)
cacheme.orgEjemplos
Declaración de las restricciones
PROCESS SYNTHESIS PROBLEM
![Page 32: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/32.jpg)
cacheme.orgEjemplos
Declaración de las restricciones
PROCESS SYNTHESIS PROBLEM
El proceso II y III son excluyentes, por lo se
introduce esta restricción para que en el resultado final solo se escoja uno de los dos
El problema también establece unos valores máximos para ciertas
variables, por lo que se ha de tener en cuenta con estas
restricciones de límite superior.
![Page 33: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/33.jpg)
cacheme.orgEjemplos
FUNCIÓN OBJETIVO
PROCESS SYNTHESIS PROBLEM
Tiene en cuenta los beneficios de venta del producto final
y el coste de los productos y de producción
![Page 34: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/34.jpg)
cacheme.orgEjemplosPROCESS SYNTHESIS PROBLEM
Máximo beneficio
![Page 35: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/35.jpg)
cacheme.orgEjemplosPROCESS SYNTHESIS PROBLEM
Existe el proceso IIExiste el proceso I
“Es más barato producir B que comprarlo”
![Page 36: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/36.jpg)
cacheme.orgEjemplosPROCESS SYNTHESIS PROBLEM
Caso de estudio
Caso para cuando aumenta la producción y el
exceso de C es menos rentable
![Page 37: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/37.jpg)
cacheme.orgEjemplosREACTOR DESIGN
Non Linear Programming • Problema NLP• Problema típico en la industria química• Se puede resolver con ipopt • Hay que maximizar la producción de B, atendiendo a la
velocidad espacial
https://en.wikipedia.org/wiki/Continuous_stirred-tank_reactor
Carl D. Laid Chemical Engineer
![Page 38: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/38.jpg)
cacheme.orgEjemplosREACTOR DESIGN
Se cargan los datos del problema
Coeficientes de reacción y concentración inicial de reactivo
PROGRAMACIÓN ORIENTADA A OBJETOS: se crea la clase
![Page 39: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/39.jpg)
cacheme.org
REACTOR DESIGNEjemplos
Se crean las variables
Se aporta un valor inicial de las variables para
facilitar el cálculoFísicamente no
pueden ser negativas
Concentraciones de las especies
![Page 40: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/40.jpg)
cacheme.org
REACTOR DESIGNEjemplos
RESTRICCIONES
ESTADO ESTACIONARIO
Balance de componente A
Balance de componente B
Tiempo de residencia
![Page 41: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/41.jpg)
cacheme.org
REACTOR DESIGNEjemplos
RESTRICCIONES
ESTADO ESTACIONARIO
Balance de componente C
Balance de componente B
![Page 42: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/42.jpg)
cacheme.org
REACTOR DESIGNEjemplos
RESTRICCIONES
Función objetivo
Maximizar la concentración de B
![Page 43: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/43.jpg)
cacheme.orgBibliografía• Apuntes de la asignatura Simulación y Optimización de procesos
Industriales del Grado en Ingeniería Química de la Universidad de Alicante.
• Pyomo – Optimization modeling in Python• Springer Optimization and its aplications Vol. 67. Willian E. Hart• Sandia National Laboratories
Agradecimientos• Dr. Rubén Ruiz-Femenia• Dr. Ignacio Aracil• Francisco J. Navarro-Brull
![Page 44: Optimizacion con Python (Pyomo vs GAMS vs AMPL)](https://reader033.vdocuments.net/reader033/viewer/2022061409/58ec4b2d1a28ab086d8b4705/html5/thumbnails/44.jpg)
www.cacheme.org
Muchas gracias por su atención
Chem. Engineer
Chem. Engineering Student
Daniel Domene
Carlos Planelles
https://github.com/CAChemE/pyomo