Standard Pooling Problem
The Pooling Problem is a challenging problem in the petrochemical refining, wastewater treatment, and mining industries. This problem can be regarded as a generalization of the minimum-cost flow problem and the blending problem. It is indeed important because of the significant savings it can generate, so it comes as no surprise that it has been studied extensively since Haverly pointed out the non-linear structure of this problem in 1978.
Two alternative formulations based on Bilinear Programming, a subclass of non-convex Quadratic Programming problems, are presented, namely:
- P-formulation (concentration).
- Q-formulation (proportion).
Key Features of the Solution
- Deployment of Bilinear Programs.
- Optimization based on Spatial Branch and Bound (sB&B).
- Benchmark run on an instance of the Standard Pooling Problem to compare the performance of the formulations mentioned above.
It is shown that solving Bilinear Programs with Gurobi is as easy as configuring a single global parameter. The dramatic difference in the performance of alternative formulations is also highlighted.
Request a Gurobi Evaluation License or Free Academic License
Modeling examples are coded using the Gurobi Python API in Jupyter Notebook. In order to use the Jupyter Notebooks, you must have a Gurobi License. If you do not have a license, you can request an Evaluation License as a Commercial User or download a free license as an Academic User.
Access the Jupyter Notebook Modeling Example
Click on the button below to be directed to the GitHub HTML page, where you can download the repository for the Standard Pooling Problem Jupyter Notebook modeling example.