Compute an ordered partition of the provided variables and
constraints such that their incidence matrix is block lower triangular
Subsets in the partition correspond to the strongly connected components
of the bipartite incidence graph, projected with respect to a perfect
matching.
Note
Breaking change in Pyomo 6.5.0
The pre-6.5.0 block_triangularize method returned maps from
each variable or constraint to the index of its block in a block
lower triangularization as the original intent of this function
was to identify when variables do or don’t share a diagonal block
in this partition. Since then, the dominant use case of
block_triangularize has been to partition variables and
constraints into these blocks and inspect or solve each block
individually. A natural return type for this functionality is the
ordered partition of variables and constraints, as lists of lists.
This functionality was previously available via the
get_diagonal_blocks method, which was confusing as it did not
capture that the partition was the diagonal of a block
triangularization (as opposed to diagonalization). The pre-6.5.0
functionality of block_triangularize is still available via the
map_nodes_to_block_triangular_indices method.