Utility minimization

The IDAES Process Modeling Framework includes support for incorporating utility minimization into a flowsheet to allow for calculation and optimization of utilities. The formulation is implemented from M. A. Duran, I. E. Grossmann, Simultaneous optimization and heat integration of chemical processes, AIChE Journal (1986).

This model is effective because the combinatorial search for the pinch candidate is cast as the inequality constraint, which is efficiently handled in equation oriented process optimization.

To create the constraints and utility variables Qs and Qw we utilize the function:

idaes.core.util.utility_minimization.min_utility(blk, heating, cooling, DTmin, eps=1e-06, DG_units=<pyomo.core.base.units_container._PyomoUnit object>)[source]

Function for Duran-Grossmann for minimization of utilities This function adds variables and constraints to the flowsheet to minimize utilities

  • blk – flowsheet

  • heating – Equipment that requires Heat

  • cooling – Equipment from wich heat is being removed

  • DTmin – HRAT (Heat Recovery Approximation Temperature)

  • eps – Epsilon for smoothing operation


Constraint and variable object representing the calculation for hot utility and cold utility

To effectively utilize the formulation, we need to add an objective function to minimize the new variables, or a cost associated with them.

To generate composite curves, we must utilize the function heat_ex_data show bellow to extract the heat exchanger and utility data.

idaes.core.util.utility_minimization.heat_ex_data(blk, heating, cooling)[source]

Function for turning IDAES heat exchanging equipment into a class for use in plotting

  • blk – Flowsheet

  • heating – Equipment that heats streams

  • cooling – Equipment that cools streams


Class with heating and cooling equipment as arrays

Return type


We can just run the function utilizing the data class previously obtained to print composite curves with heat_ex_data:


Function for plotting composite curves


CD – Class containing curve data


Composite curves