Optimizacion con Python (Pyomo vs GAMS vs AMPL)
-
Upload
cacheme -
Category
Engineering
-
view
4.323 -
download
20
Transcript of Optimizacion con Python (Pyomo vs GAMS vs AMPL)
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
Índice
• Programación matemática• AML (Algebraic Modeling Languages) • Optimización en Python: ¿Por qué
Pyomo?• Ejemplos• Bibliografía
www.cacheme.org
Índice
• Programación matemática• AML (Algebraic Modeling Languages) • Optimización en Python: ¿Por qué
Pyomo?• Ejemplos• Bibliografía
www.cacheme.org
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
…
cacheme.orgProgramación matemática
©Benmoran
©Benmoran
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)
cacheme.orgProgramación matemáticaProgramación Lineal (LP)
Función objetivo y restricciones lineales
Algoritmo de SIMPLEX
EJEMPLO: PROBLEMA DEL
TRANSPORTE
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ሽ
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
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
Índice
• Programación matemática• AML (Algebraic Modeling Languages) • Optimización en Python: ¿Por qué
Pyomo?• Ejemplos• Bibliografía
www.cacheme.org
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.
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.
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?
Índice
• Programación matemática• AML (Algebraic Modeling Languages) • Optimización en Python: ¿Por qué
Pyomo?• Ejemplos• Bibliografía
www.cacheme.org
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
cacheme.orgEjemplosEL PROBLEMA DEL TRANSPORTE
Linear Programing
cacheme.orgEjemplosEL PROBLEMA DEL TRANSPORTE
Linear Programing
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
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
cacheme.orgEjemplosEL PROBLEMA DEL TRANSPORTE
Por defecto minimiza. (Para maximizar teclear maximize)
Declaramos que es la función a optimizar
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
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
cacheme.orgEjemplosEL PROBLEMA DEL TRANSPORTE
Linear Programing
cacheme.orgEjemplosEL PROBLEMA DEL TRANSPORTE
Cantidad de producto de
cada planta al correspondien
te mercado
Coste total
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
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
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
cacheme.orgEjemplos
Declaración del resto de variables.
Costes asociados a las corrientes
Pueden ser positivas o negativas
PROCESS SYNTHESIS PROBLEM
cacheme.orgEjemplos
Declaración de las restricciones
PROCESS SYNTHESIS PROBLEM
cacheme.orgEjemplos
Declaración de las restricciones
PROCESS SYNTHESIS PROBLEM
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.
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
cacheme.orgEjemplosPROCESS SYNTHESIS PROBLEM
Máximo beneficio
cacheme.orgEjemplosPROCESS SYNTHESIS PROBLEM
Existe el proceso IIExiste el proceso I
“Es más barato producir B que comprarlo”
cacheme.orgEjemplosPROCESS SYNTHESIS PROBLEM
Caso de estudio
Caso para cuando aumenta la producción y el
exceso de C es menos rentable
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
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
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
cacheme.org
REACTOR DESIGNEjemplos
RESTRICCIONES
ESTADO ESTACIONARIO
Balance de componente A
Balance de componente B
Tiempo de residencia
cacheme.org
REACTOR DESIGNEjemplos
RESTRICCIONES
ESTADO ESTACIONARIO
Balance de componente C
Balance de componente B
cacheme.org
REACTOR DESIGNEjemplos
RESTRICCIONES
Función objetivo
Maximizar la concentración de B
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
www.cacheme.org
Muchas gracias por su atención
Chem. Engineer
Chem. Engineering Student
Daniel Domene
Carlos Planelles
https://github.com/CAChemE/pyomo