Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Computer-aided Chemical Engineering
www.cacheme.org
Chem. Engineer
Daniel Domene
Python en la industria: el
problema de op...
Índice
• Programación matemática
• AML (Algebraic Modeling Languages)
• Optimización en Python: ¿Por qué
Pyomo?
• Ejemplos...
Índice
• Programación matemática
• AML (Algebraic Modeling Languages)
• Optimización en Python: ¿Por qué
Pyomo?
• Ejemplos...
cacheme.org
Programación matemáticacacheme.org
n matemática
ón: ¿por qué es importante?
producto
entales
ducción
uipos y r...
cacheme.org
Programación matemáticaOBJECTIVEFUNCTION
WITHCONSTRAINTS
©Benmoran
©Benmoran
cacheme.org
Programación matemática
Problemas de optimización
• Programación
Lineal (LP)
• Programación Lineal
Mixta Enter...
cacheme.org
Programación matemática
Programación Lineal (LP)
Función objetivo y
restricciones lineales
Algoritmo de SIMPLE...
cacheme.org
Programación matemática
Programación Lineal Mixta Entera (MILP)
Función objetivo y
restricciones lineales.
Inc...
cacheme.org
min z = f (x)
s.a h(x) = 0
g(x) £ 0
x Î » n
Programación matemática
Programación No Lineal (NLP)
Función objet...
cacheme.org
{ }
) +
) +
) +
min (
. (
(
, 0,1
: , : , :
, ,
T
mn
n n l n p
m l m p m
z f
s a
f
´ ´
=
=
£
Î Î
® ® ®
Î Î Î
¡...
Índice
• Programación matemática
• AML (Algebraic Modeling Languages)
• Optimización en Python: ¿Por qué
Pyomo?
• Ejemplos...
cacheme.org
AML (Algebraic modelling languages)
Software propietario:
AMPL (www.ampl.com) Lenguaje
sencillo, pero complica...
cacheme.org
Optimización en Python: ¿Por qué Pyomo?
Free Open source:
CVXOPT – M. Andersen, J. Dahl, L. Vandenberghe
Notac...
cacheme.org
• Se comunica directamente con los principales solvers de AMPL,
GLPK, Gurobi, CPLEZ, CBC y PICO.
• Programació...
Índice
• Programación matemática
• AML (Algebraic Modeling Languages)
• Optimización en Python: ¿Por qué
Pyomo?
• Ejemplos...
cacheme.org
Ejemplos
EL PROBLEMA DEL TRANSPORTE
Linear Programing
• Problema clásico de optimización LP
• Se puede resolve...
cacheme.org
Ejemplos
EL PROBLEMA DEL TRANSPORTE
Linear Programing
A1#
A2#
C1#
C2#
C3#
x2#
y2#
z2#
x1#
y1#
z1#
C3
C2
cacheme.org
Ejemplos
EL PROBLEMA DEL TRANSPORTE
Linear Programing
A1
A2
C1
C3
C2
0.1
0.7
0.8
0.3
cacheme.org
Ejemplos
EL PROBLEMA DEL TRANSPORTE
PROGRAMACIÓN ORIENTADA A
OBJETOS: se crea la clase.
Se importan las librer...
cacheme.org
Ejemplos
EL PROBLEMA DEL TRANSPORTE
Se nombran las variables, que corresponderán con la cantidad de
producto d...
cacheme.org
Ejemplos
EL PROBLEMA DEL TRANSPORTE
Por defecto minimiza. (Para
maximizar teclear maximize)
Declaramos que es ...
cacheme.org
Ejemplos
EL PROBLEMA DEL TRANSPORTE
Declaramos que es una restricción
Declaramos que es una restricción
Hace r...
cacheme.org
Ejemplos
EL PROBLEMA DEL TRANSPORTE
Archivo con los datos del problema:
Exigencias de los mercados, costes
por...
cacheme.org
Ejemplos
EL PROBLEMA DEL TRANSPORTE
Linear Programing
cacheme.org
Ejemplos
EL PROBLEMA DEL TRANSPORTE
Cantidad de
producto de
cada planta al
correspondie
nte mercado
Coste total
cacheme.org
Ejemplos
PROCESS SYNTHESIS PROBLEM
Mixed Integred Linear Programing
• Problema de optimización MILP
• Se puede...
cacheme.org
Ejemplos
PROGRAMACIÓN ORIENTADA A
OBJETOS: se genera el modelo.
Se cargan los operadores
y la biblioteca numpy...
cacheme.org
Ejemplos
Declaración del resto de variables.
Unidades de producción que circulan por las corrientes
Físicament...
cacheme.org
Ejemplos
Declaración del resto de variables.
Costes asociados a las corrientes
Pueden ser
positivas o
negativa...
cacheme.org
Ejemplos
Declaración de las restricciones
PROCESS SYNTHESIS PROBLEM
cacheme.org
Ejemplos
Declaración de las restricciones
PROCESS SYNTHESIS PROBLEM
cacheme.org
Ejemplos
Declaración de las restricciones
PROCESS SYNTHESIS PROBLEM
El proceso II y III son
excluyentes, por l...
cacheme.org
Ejemplos
FUNCIÓN OBJETIVO
PROCESS SYNTHESIS PROBLEM
Tiene en cuenta los beneficios de venta del producto final...
cacheme.org
Ejemplos
PROCESS SYNTHESIS PROBLEM
Máximo beneficio
cacheme.org
Ejemplos
PROCESS SYNTHESIS PROBLEM
Existe el proceso IIExiste el proceso I
“Es más barato producir B que compr...
cacheme.org
rices A 500 Euros / ton.
B 950 Euros / ton.
onversion Process I 90 % from A to B
Process II 82 % from B to C
P...
cacheme.org
Ejemplos
REACTOR DESIGN
Non Linear Programming
• Problema NLP
• Problema típico en la industria química
• Se p...
cacheme.org
Ejemplos
REACTOR DESIGN
Se cargan los datos del problema
Coeficientes de reacción y
concentración inicial de r...
cacheme.org
REACTOR DESIGN
Ejemplos
Se crean las variables
Se aporta un valor inicial
de las variables para
facilitar el c...
cacheme.org
REACTOR DESIGN
Ejemplos
RESTRICCIONES
ESTADO ESTACIONARIO
Balance de componente A
Balance de componente B
Tiem...
cacheme.org
REACTOR DESIGN
Ejemplos
RESTRICCIONES
ESTADO ESTACIONARIO
Balance de componente C
Balance de componente B
cacheme.org
REACTOR DESIGN
Ejemplos
RESTRICCIONES
Función objetivo
Maximizar la
concentración de B
cacheme.org
Bibliografía
• Apuntes de la asignatura Simulación y Optimización de procesos
Industriales del Grado en Ingeni...
@CAChemEorg
CAChemEorg
CAChemE
info@cacheme.orgmail
www.cacheme.org
Muchas gracias por su atención
Chem. Engineer
Chem. En...
Upcoming SlideShare
Loading in …5
×

Optimizacion con Python (Pyomo vs GAMS vs AMPL)

7,040 views

Published on

https://www.youtube.com/watch?v=LfBGGTUdbXU

La optimización o programación matemática mediante lenguajes de modelado algebraico ---comúnmente GAMS, AMPL y AIMMS--- es utilizada en la industria para la resolución de diferentes problemas que van desde la selección óptima de equipos y recursos a la gestión logística de una empresa. Pyomo es un paquete de software de código abierto ---licenciado bajo BSD por Sandia National Laboratories, USA--- desarrollado en Python, y que soporta un conjunto diverso de capacidades de optimización para la formulación y el análisis de modelos de optimización. En particular, Pyomo permite el modelado de problemas tipo LP, QP, NP, MILP, MINLP, MISP entre otros y se comunica con los principales solvers comerciales, gratuitos y/o libres, así como la plataforma ofrecida por NEOS server. La resolución mediante métodos de optimización ---comunes en un ámbito de investigación científica--- son a menudo desconocidos en la industria o bien delegados por falta de tiempo y/o recursos. Por tanto, su resolución acaba siendo mediante métodos menos eficientes que resultan en formas de trabajo con condiciones sustancialmente mejorables. Por este motivo, en esta charla, estudiantes de ingeniería química de la Universidad de Alicante realizarán una introducción visual a conceptos de optimización, presentarán Pyomo y mostrarán la resolución de casos de estudio de diferentes industrias mediante este lenguaje de modelado algebraico desarrollado en Python.

Published in: Engineering
  • Be the first to comment

Optimizacion con Python (Pyomo vs GAMS vs AMPL)

  1. 1. Computer-aided Chemical Engineering www.cacheme.org Chem. Engineer Daniel Domene Python en la industria: el problema de optimización (matemática) Carlos Planelles Chem. Engineering Student
  2. 2. Índice • Programación matemática • AML (Algebraic Modeling Languages) • Optimización en Python: ¿Por qué Pyomo? • Ejemplos • Bibliografía www.cacheme.org
  3. 3. Índice • Programación matemática • AML (Algebraic Modeling Languages) • Optimización en Python: ¿Por qué Pyomo? • Ejemplos • Bibliografía www.cacheme.org
  4. 4. cacheme.org Programación matemáticacacheme.org n matemática ón: ¿por qué es importante? producto entales ducción uipos y recursos a Interés empresarial (cc) Sam Derbyshire Optimizació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 equipos Gestión logística …
  5. 5. cacheme.org Programación matemáticaOBJECTIVEFUNCTION WITHCONSTRAINTS ©Benmoran ©Benmoran
  6. 6. cacheme.org Programación matemática Problemas 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)
  7. 7. cacheme.org Programación matemática Programación Lineal (LP) Función objetivo y restricciones lineales Algoritmo de SIMPLEX EJEMPLO: PROBLEMA DEL TRANSPORTE
  8. 8. cacheme.org Programación matemática Programació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
  9. 9. cacheme.org min z = f (x) s.a h(x) = 0 g(x) £ 0 x Î » n Programación matemática Programació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
  10. 10. cacheme.org { } ) + ) + ) + min ( . ( ( , 0,1 : , : , : , , T mn n n l n p m l m p m z f s a f ´ ´ = = £ Î Î ® ® ® Î Î Î ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ x d y h x By 0 g x Dy 0 x y h g d B D Programación matemática Programació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
  11. 11. Índice • Programación matemática • AML (Algebraic Modeling Languages) • Optimización en Python: ¿Por qué Pyomo? • Ejemplos • Bibliografía www.cacheme.org
  12. 12. cacheme.org AML (Algebraic modelling languages) Software propietario: AMPL (www.ampl.com) Lenguaje sencillo, pero complicado interactuar - GLPK es una alternativa libre para LP y MILP GAMS (www.gams.com) Se comunica con solvers incluso para resolver MINLP AIMMS (www.aiims.com) Diseñado para resolver problemas de optimización a gran escala, y programación de actividades.
  13. 13. cacheme.org Optimización en Python: ¿Por qué Pyomo? Free Open source: CVXOPT – M. Andersen, J. Dahl, L. Vandenberghe Notación matricial. Optimización Convexa PuLP – Trabaja con lenguaje Python. Muy buenos resultados para LP y MILP. No resuelve NLP OpenOpt – Más de 30 solvers para solucionar el modelado, incluyendo programación no lineal. Pyomo – Coopr. (Sandia National Laboratories, USA) Permite la formulación de modelos algebraicos en Python.
  14. 14. 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.cacheme.org ¿Por qué Pyomo? Se comunica directamente los principales solvers de AMPL, GLPK, Gurobi, CPLEX, CBC y PICO. Programación en Python tipo AMPL/GAMS Open source (COIN-OR) coin-or.org Optimización en Python: ¿Por qué Pyomo?
  15. 15. Índice • Programación matemática • AML (Algebraic Modeling Languages) • Optimización en Python: ¿Por qué Pyomo? • Ejemplos • Bibliografía www.cacheme.org
  16. 16. cacheme.org Ejemplos EL 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
  17. 17. cacheme.org Ejemplos EL PROBLEMA DEL TRANSPORTE Linear Programing A1# A2# C1# C2# C3# x2# y2# z2# x1# y1# z1# C3 C2
  18. 18. cacheme.org Ejemplos EL PROBLEMA DEL TRANSPORTE Linear Programing A1 A2 C1 C3 C2 0.1 0.7 0.8 0.3
  19. 19. cacheme.org Ejemplos EL PROBLEMA DEL TRANSPORTE PROGRAMACIÓN ORIENTADA A OBJETOS: se crea la clase. Se importan las librerias Mercados Plantas Demanda mínima Producción máxima Coste/distancia Distancia plata-mercado
  20. 20. cacheme.org Ejemplos EL 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
  21. 21. cacheme.org Ejemplos EL PROBLEMA DEL TRANSPORTE Por defecto minimiza. (Para maximizar teclear maximize) Declaramos que es la función a optimizar
  22. 22. cacheme.org Ejemplos EL 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
  23. 23. cacheme.org Ejemplos EL 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
  24. 24. cacheme.org Ejemplos EL PROBLEMA DEL TRANSPORTE Linear Programing
  25. 25. cacheme.org Ejemplos EL PROBLEMA DEL TRANSPORTE Cantidad de producto de cada planta al correspondie nte mercado Coste total
  26. 26. cacheme.org Ejemplos PROCESS 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 The goal is to maximize profits. Consider the following two cases: 1- The maximum demand for C is 10 tons / h, with a selling price of 1800 Euros / ton. 2- The maximum demand for C is 15 ton / h, the sale price is 1800 Euros / ton for the first 10 ton and 1500 Euros / ton for excess. Capital and operational costs Fixed cost (Euros / h.) Variable (Euros / ton of raw material entering the process) Process I 1000 250 Process II 1500 400 Process III 2000 550 Prices A 500 Euros / ton. B 950 Euros / ton. Conversion Process I 90 % from A to B Process II 82 % from B to C Process III 95 % from B to C Maximum availability for A: 16 ton / h. Solve again the problem for the case where the input-ouput relationships for process II and III are given by the following equations: Proceso II: C = 6.5 Ln(1+B) I II III A Bext CB https://github.com/Planelles20/pyomo/blob/master/MixedIntegerLinearProgramming/process_synthesis/EnunciadoProcess_Synthesis.pdf Simulation, design and optimization of chemical processes – compute lab GAMS Grado en Ingeniería Química – Universidad de Alicante
  27. 27. cacheme.org Ejemplos 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
  28. 28. cacheme.org Ejemplos Declaración del resto de variables. Unidades de producción que circulan por las corrientes Físicamente no pueden ser negativas PROCESS SYNTHESIS PROBLEM
  29. 29. cacheme.org Ejemplos Declaración del resto de variables. Costes asociados a las corrientes Pueden ser positivas o negativas PROCESS SYNTHESIS PROBLEM
  30. 30. cacheme.org Ejemplos Declaración de las restricciones PROCESS SYNTHESIS PROBLEM
  31. 31. cacheme.org Ejemplos Declaración de las restricciones PROCESS SYNTHESIS PROBLEM
  32. 32. cacheme.org Ejemplos 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.
  33. 33. cacheme.org Ejemplos 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
  34. 34. cacheme.org Ejemplos PROCESS SYNTHESIS PROBLEM Máximo beneficio
  35. 35. cacheme.org Ejemplos PROCESS SYNTHESIS PROBLEM Existe el proceso IIExiste el proceso I “Es más barato producir B que comprarlo”
  36. 36. cacheme.org rices A 500 Euros / ton. B 950 Euros / ton. onversion Process I 90 % from A to B Process II 82 % from B to C Process III 95 % from B to C Maximum availability for A: 16 ton / h. again the problem for the case where the input-ouput relationships for process II and III are given by the wing equations: Proceso II: C = 6.5 Ln(1+B) Proceso III: C= 7.2 Ln(1+B) e B y C are the mass flow rate (ton/h) for B y C, respectively. I II III A Bext CB Ejemplos PROCESS SYNTHESIS PROBLEM or excess. Capital and operational costs Fixed cost (Euros / h.) Variable (Euros / ton of raw material entering the process) rocess I 1000 250 rocess II 1500 400 rocess III 2000 550 rices A 500 Euros / ton. B 950 Euros / ton. onversion Process I 90 % from A to B Process II 82 % from B to C Process III 95 % from B to C Maximum availability for A: 16 ton / h. I II III A Bext CB Caso de estudio Caso para cuando aumenta la producción y el exceso de C es menos rentable or excess. Capital and operational costs Fixed cost (Euros / h.) Variable (Euros / ton of raw material entering the process) rocess I 1000 250 rocess II 1500 400 rocess III 2000 550 rices A 500 Euros / ton. B 950 Euros / ton. onversion Process I 90 % from A to B Process II 82 % from B to C Process III 95 % from B to C Maximum availability for A: 16 ton / h. I II III A Bext CB
  37. 37. cacheme.org Ejemplos REACTOR 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
  38. 38. cacheme.org Ejemplos REACTOR 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
  39. 39. cacheme.org REACTOR DESIGN Ejemplos Se crean las variables Se aporta un valor inicial de las variables para facilitar el cálculo Físicamente no pueden ser negativas Concentraciones de las especies
  40. 40. cacheme.org REACTOR DESIGN Ejemplos RESTRICCIONES ESTADO ESTACIONARIO Balance de componente A Balance de componente B Tiempo de residencia
  41. 41. cacheme.org REACTOR DESIGN Ejemplos RESTRICCIONES ESTADO ESTACIONARIO Balance de componente C Balance de componente B
  42. 42. cacheme.org REACTOR DESIGN Ejemplos RESTRICCIONES Función objetivo Maximizar la concentración de B
  43. 43. cacheme.org Bibliografí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
  44. 44. @CAChemEorg CAChemEorg CAChemE info@cacheme.orgmail www.cacheme.org Muchas gracias por su atención Chem. Engineer Chem. Engineering Student Daniel Domene Carlos Planelles https://github.com/CAChemE/pyomo

×