(448f) Pyosyn - a Python Tool for General Process Synthesis

Chen, Q., Carnegie Mellon University
Burgard, A. P., National Energy technology Laboratory
Eslick, J., National Energy Technology Laboratory
Lee, A., National Energy Technology Laboratory
Siirola, J. D., Sandia National Laboratories
Miller, D. C., National Energy Technology Laboratory
Grossmann, I., Carnegie Mellon University

Pyosyn - a Python tool for general process synthesis

Qi Chen1, Anthony Burgard2, John Eslick2, Andrew Lee2,
John Siirola3, David Miller2, Ignacio Grossmann1

1Department of Chemical Engineering, Carnegie Mellon University, 5000 Forbes Avenue, Pittsburgh, PA 15213, USA

2National Energy Technology Laboratory, 1268 Wallace Road, South Park Township, PA 15129, USA

3Center for Computing Research, Sandia National Laboratories, P.O. Box 5800, Albuquerque, NM 87185, USA


Process synthesis allows industrial practitioners to identify optimal configurations among process flowsheet alternatives and enables researchers to guide development of new technologies towards areas with the greatest promise. One of the main approaches to synthesis is superstructure optimization, which facilitates the representation, modeling, and solution of diverse synthesis problems as mathematical programs [1]. However, few computational tools are available to support mathematical programming-based conceptual design. The most prominent software implementations for conceptual design include PROSYN [2], ICAS [3], and MIPSYN [4]. PROSYN and ICAS predominantly utilize heuristic rules driven by thermodynamic insights and general rules-of-thumb. MIPSYN is one of the few mathematical-programming-oriented implementations. However, these tools have had limited penetration in industrial practice. As a result, mathematical programming-based conceptual design has seen little adoption in industry [5]. In order to encourage industrial adoption of optimization-based synthesis methods, an easy-to-use general purpose software platform for synthesis is needed.

In this paper, we present implementation progress for Pyosyn, a high-level Python-based tool for process synthesis. Process synthesis problems involve both nonlinear, nonconvex equations and discrete design decisions. A general purpose solution must therefore effectively manage the complexities associated with modeling and solving these problems. Pyosyn supports superstructure optimization by providing a toolset for defining unit models, linking them to form a superstructure, generating an algebraic representation, and applying one of several optimization algorithms to solve the synthesis problem. The Pyosyn toolset leverages the Pyomo optimization modeling library [6] in Python, which allows for the programmatic modification and manipulation of modeling objects such as variables and constraints. This enables development of generally applicable automatic model transformations to reformulate, relax, and/or constrict the optimization problem, all in one language, which can reduce the number and complexity of programmatic interfaces. It also enables the implementation of meta-solvers that iteratively apply a set of transformations and sub-solvers to find a solution, such as logic-based outer approximation (LOA) [7, 8].

LOA decomposes the synthesis problem into a mixed-integer linear program (MILP) master problem which selects new flowsheet configurations and a series of reduced space nonlinear program (NLP) sub-problems to optimize selected flowsheets. Outer approximation with equality-relaxation (OA/ER) cuts [9] generated at the solution of each sub-problem augment the quality of the MILP master problem linear approximation with each iteration. Solution of the NLP sub-problems in reduced space—only the variables and constraints for active flowsheet units are included—decreases the dimensionality and thus complexity of sub-problems. Use of reduced space NLPs also avoids issues from zero-flow singularities that arise when attempting to solve equations for inactive flowsheet units. Pyosyn includes a built-in implementation of LOA.

Pyosyn also features the ability to formulate and solve synthesis problems in a high-level, intuitive manner. Unit models in Pyosyn group together variables, parameters, and constraints that represent a particular processing task or equipment in the superstructure. Unit models can contain other unit models, allowing for hierarchical description of the superstructure. In conjunction with modeling using Generalized Disjunctive Programming (GDP) [7], this preserves the logical structure of the synthesis problem for reformulations or transformations. The unit models are also independently solvable, allowing for granular testing and facilitating model initialization procedures during the solution process.

Use of Pyosyn is demonstrated in detail through two case studies: the synthesis of a chemical looping process and a desulfurization process [10]. We explain the implementation of LOA as a series of model transformations and show that Pyosyn facilitates joint modeling efforts by both expert and non-expert optimization users.


[1] Chen Q, Grossmann IE. 2017. Recent developments and challenges in optimization-based process synthesis, Annu. Rev. Chem. and Biomol. Eng. 8:12.1-12.35. doi:10.1146/annurev-chembioeng-080615-033546

[2] Schembecker G, Simmrock KH, Wolff A. 1994. Synthesis of chemical process flowsheets by means of cooperating knowledge integrating systems. Presented at 4th Eur. Symp., Comput. Aided Process Eng., Inst. Chem. Eng. Symp. Ser. 133:333–41. Dublin, Ireland.

[3] Gani R, Hytoft G, Jaksland C, Jensen AK. 1997. An integrated computer aided system for integrated design of chemical processes. Comput. Chem. Eng. 21(10):1135–46. doi:10.1016/S0098-1354(96)00324-9

[4] Kravanja Z, Grossmann IE. 1996. A computational approach for the modeling/decomposition strategy in the MINLP optimization of process flowsheets with implicit models. Ind. Eng. Chem. Res. 35(6):2065–70. doi: 10.1021/ie950424f

[5] Harmsen GJ. 2004. Industrial best practices of conceptual process design. Chem. Eng. Process. Process Intensif. 43(5):677–81. doi:10.1016/j.cep.2003.02.003

[6] Hart WE, Laird C, Watson J-P, Woodruff DL. 2012. Pyomo - Optimization Modeling in Python, Springer US, Boston, MA. doi:10.1007/978-1-4614-3226-5.

[7] Turkay M, Grossmann IE. 1996. Logic-based MINLP algorithms for the optimal synthesis of process networks, Comput. Chem. Eng. 20: 959-978. doi:10.1016/0098-1354(95)00219-7.

[8] Duran MA, Grossmann IE. 1986. An outer-approximation algorithm for a class of mixed-integer nonlinear programs, Math. Program. 36: 307. doi:10.1007/BF02592064.

[9] Viswanathan J, Grossmann IE. 1990. A combined penalty function and outer-approximation method for MINLP optimization. Comput. Chem. Eng. 14(7):769–82. doi:10.1016/0098-1354(90)87085-4

[10] Qian Z, Chen Q, Grossmann IE. 2017. Optimal synthesis of rotating packed bed reactor, Comput. Chem. Eng. To appear. doi:10.1016/j.compchemeng.2017.02.026