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.


Proposed Solution

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.


Added Value

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.

Commercial Users: Free Evaluation Version Academic Users: Free Academic Version



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.

Standard Pooling Problem