Description
La optimización de procesos industriales ha experimentado un crecimiento considerable durante los últimos años. Las industrias modernas apuestan por ella para mejorar la producción, reducir los costes, disminuir el impacto ambiental e incrementar la seguridad. En este sentido, es sensata la introducción y formación de los nuevos ingenieros en esta rama de la ciencia. Resulta curioso pensar que en el ámbito de las ciencias de la computación, la optimización suele hacer referencia a la reducción en el tiempo de ejecución del programa. Pero la optimización matemática (también conocida como investigación de operaciones o programación matemática) no tiene nada que ver con este problema y, en muchos casos, la formación que se recibe en las universidades no pasa de explicar el algoritmo SIMPLEX para la resolución de problemas lineales con variables continuas.
Un problema de optimización consiste, a grandes rasgos, en maximizar o minimizar una función real eligiendo sistemáticamente valores de entrada (tomados de un conjunto permitido) y calculando el valor de la función. Este problema se vuelve interesante cuando aparecen restricciones (lineales y no lineales) y variables enteras (para modelar la toma de decisiones discretas).
Multitud de problemas de optimización en las empresas pueden llegar a expresarse a partir de un pequeño conjunto de problemas de optimización sencillos, como el problema de la mochila o el problema del viajante de comercio. Estos problemas se incrustan, a veces de manera indirecta, en problemas relacionados con la organización de la logística de la empresa. Por este motivo, el estudio y buen conocimiento de esta serie de problemas es básico para comprender y abordar problemas de una magnitud superior, además de ser un buen entrenamiento para introducirse en la sintaxis del modelado algebraico.
Dos de los lenguajes de modelado comerciales más utilizados para resolver este tipo de problemas matemáticos son GAMS y AMPL. En Python existen varias bibliotecas que permiten resolver el mismo tipo de problemas como son CVXOpt, CVXPy, PulP, OpenOpt, o Pyomo. Este último, Pyomo.org, resulta interesante ya que: Permite la modelización matemática en Python tipo AMPL/GAMS Se comunica directamente los principales solvers como GLPK, Gurobi, CPLEX, CBC y PICO Es open source (licencia BSD) y está desarrollado por Sandia National Laboratories, USA. Pyomo (antiguamente conocido como Coopr) es 100% gratuito, maduro y bien documentado Soporta Python 3 y su instalación es sencilla Se comunica con NEOS server (plataforma web que da acceso a solvers comerciales de forma gratuita) * Se adapta al modelado de problemas de todo tipo al estar desarrollado en Python
Por lo tanto, Pyomo proporciona una capacidad que se asocia comúnmente con lenguajes de modelado algebraico comerciales como AMPL, AIMMS y GAMS, pero los objetos de modelado de Pyomo están incrustados dentro de Python, un lenguaje de programación de alto nivel con todas las funciones con un rico conjunto bibliotecas científicas. Respecto a sus capacidades como lenguaje de modelado algebraico, Pyomo es compatible con una amplia gama de tipos de problemas de optimización, incluyendo entre otros: Programación lineal Programación cuadrática Programación no lineal Programación lineal entera mixta Programación cuadrática mixta entero Programación lineal entera mixta Programación estocástica entera mixta Programación disyuntiva generalizada * Ecuaciones algebraicas diferenciales
La charla queda estructurada de la siguiente manera: Introducción a la optimización matemática (10 min). Se realizará una introducción a los conceptos de optimización con restricciones. Breves notas de instalación e introducción a la sintaxis de Pyomo (5 min): donde se explicará de manera breve como instalar Pyomo y como se trabaja con él. * Ejemplos (15 min): Resolución del problema de la mochila y el problema del viajante de comercio con Pyomo.
¿Quiénes somos? CAChemE es una asociación sin ánimo de lucro formada por ingenieros químicos (profesionales, docentes y estudiantes) que pretende estimular las posibilidades de software en la ingeniería de procesos químicos. Nuestro objetivo es promover las ventajas de las nuevas herramientas de software libre disponibles y fomentar su uso tanto en la industria como en la universidad. La sede central de CAChemE se encuentra en el Instituto Universitario de Ingeniería de Procesos Químicos de la Universidad de Alicante.
Material de la charla disponible en https://github.com/planelles20/PyConES-PythonEmpresa/blob/master/PyConES16_Python.ipynb