(40a) Romodel: Modelling Robust Optimization Problems in Pyomo | AIChE

(40a) Romodel: Modelling Robust Optimization Problems in Pyomo

Authors 

We present ROmodel (https://github.com/cog-imperial/romodel), an open source Python package extending the modelling capabilities of the algebraic modelling language Pyomo [6,7] to robust optimization problems. Robust optimization is a common way of managing optimization under uncertainty in process systems engineering: applications range from production scheduling to flexible chemical process design [5,9-12,16].

ROmodel enables Pyomo optimization model developers to easily transition from a deterministic to a robust optimization formulation. ROModel introduces several new Pyomo modelling objects which allow a user to represent robust models in close analogy to their mathematical formulation. ROmodel contains a library of commonly used uncertainty sets which can be generated using their matrix representations, but it also allows the definition of custom uncertainty sets using Pyomo constraints. ROmodel supports adjustable variables via linear decision rules. The resulting models can be solved using ROmodel’s solvers which implement both the robust reformulation and cutting plane approach. ROmodel is also a platform to implement and compare custom uncertainty sets and reformulations.

We demonstrate ROmodel’s capabilities by applying it to six case studies in portfolio optimization [1], knapsack optimization, pooling [15], capacitated facility location, production planning [14], and drill scheduling [14]. We implement custom uncertainty sets for black-box constrained optimization in ROmodel to showcase how ROmodel can help to integrate Python-based data-driven models with Pyomo modelling formulations.

There are a number of other software packages for solving robust optimization problems. In contrast to ROME [4], RSOME [2], ROC++ [13], and Pyros [8], which are designed for solving robust optimization problems, ROModel is tightly integrated with a specific algebraic modelling language (Pyomo) and is designed for modelling robust optimization problems. In contrast to the AIMMS modelling capabilities, ROModel is open source and allows possibilities for extension. JumPeR [3], which extends Julia’s modelling language JumP to robust optimization problems, is the most similar to ROModel. In contrast to JumPeR, ROModel is more tightly tied to its respective algebraic modelling language, e.g. developing new convex uncertainty sets in ROModel only requires adding Pyomo constraints while JumPeR would require adding Julia functionality. We will also justify why we think that the ROModel modelling choices are more natural to typical mathematical formulations.

A further advantage of ROmodel is that it is based on Python, which is popular in data analytics and machine learning. ROmodel therefore allows data-based techniques to be integrated seamlessly with robust optimization methods. As an example, we implement (warped) Gaussian process-based uncertainty sets in ROmodel [14]. These sets integrate Gaussian processes trained in the Python library GPy into robust optimization problems (https://github.com/cog-imperial/rogp).

[1] Bertsimas, D., Sim, M.: The price of robustness. Oper. Res. 52, 35–53 (2004).

[2] Chen, Z., Sim, M., Xiong, P.: Robust stochastic optimization made easy with RSOME. Management Science. 66, 3329–3339 (2020).

[3] Dunning, I.R.: Advances in robust and adaptive optimization: Algorithms, software, and insights. Ph.D. thesis, Sloan School of Management, MIT (2016).

[4] Goh, J., Sim, M.: Robust optimization made easy with ROME. Oper. Res. 59, 973–985 (2011)

[5] Grossmann, I.E., Apap, R.M., Calfa, B.A., García-Herreros, P., Zhang, Q.: Recent advances in mathematical programming techniques for the optimization of process systems under uncertainty. Chem. Eng. 91, 3–14 (2016).

[6] Hart, W.E., Laird, C.D., Watson, J.P., Woodruff, D.L., Hackebeil, G.A., Nicholson, B.L., Siirola, J.D.: Pyomo — Optimization Modeling in Python, vol. 67. Springer International Publishing (2017).

[7] Hart, W.E., Watson, J.P., Woodruff, D.L.: Pyomo: modeling and solving mathematical programs in python. Mathematical Programming Computation 3(3), 219–260 (2011).

[8] Isenberg, N.M., Siirola, J.D., Gounaris, C.E.: Pyros: A pyomo robust optimization solver for robust process design. In: 2020 Virtual AIChE Annual Meeting (2020)

[9] Janak, S.L., Floudas, C.A.: Advances in robust optimization approaches for scheduling under uncertainty. Comput. Chem. Eng. 20(C), 1051–1056 (2005)

[10] Li, Z., Ierapetritou, M.G.: Robust Optimization for Process Scheduling Under Uncertainty. Ind. Eng. Chem. Res. 47(12), 4148–4157 (2008).

[11] Ning, C., You, F.: A data-driven multistage adaptive robust optimization framework for planning and scheduling under uncertainty. AIChE J. 63(10), 4343–4369 (2017).

[12] Shang, C., You, F.: Distributionally robust optimization for planning and scheduling under uncertainty. Comput. Chem. Eng. 110, 53–68 (2018).

[13] Vayanos, P., Jin, Q., Elissaios, G.: ROC++: Robust optimization in C++. (2020)

[14] Wiebe, J., Cecílio, I., Dunlop, J., Misener, R.: A robust approach to warped Gaussian process-constrained optimization. arXiv:2006.08222 (2020)

[15] Wiebe, J., Cecílio, I., Misener, R.: Robust optimization for the pooling problem. Ind. Eng. Chem. Res. (2019)

[16] Zhang, Q., Grossmann, I.E., Heuberger, C.F., Sundaramoorthy, A., Pinto, J.M.: Air separation with cryogenic energy storage: Optimal scheduling considering electric energy and reserve markets. AIChE J. 61(5), 1547–1558 (2015).