The Dantzig-Wolfe Decomposition Algorithm
Data Input
This subsection describes the format for describing the partition of the constraint system that defines the subproblem blocks.
In the OPTLP and OPTMILP procedures, partitioning is done by using a data table specified in the BLOCKS= data option in the DECOMP statement. In PROC OPTMODEL, partitioning is done by using the .block suffix on constraints.
The blocks must be disjoint with respect to variables. If two blocks contain a nonzero coefficient for the same variable, the Dantzig-Wolfe decomposition algorithm produces an error that contains information about where the blocks overlap.
The BLOCKS= Data Table in PROC OPTMILP and PROC OPTLP
The BLOCKS= data table has two required variables:
See the section Solving a MILP with DECOMP and PROC OPTMILP for an example of using this BLOCKS= data table with PROC OPTMILP.
The .block Constraint Suffix in PROC OPTMODEL
The .block constraint suffix specifies the numeric block identifier for each constraint in the problem. The block identifiers do not need to start from 0, nor do they need to be consecutive. Master (linking) constraints can be identified by using a missing value. Listing the linking constraints is optional.
See the section Solving a MILP with DECOMP and PROC OPTMODEL for an example of using the .block constraint suffix with PROC OPTMODEL.