The Dantzig-Wolfe Decomposition Algorithm

DECOMPMASTERIP Statement

  • DECOMPMASTERIP <masterip-options>;

  • DECOMPOSITIONMASTERIP <masterip-options>;

  • MASTERIP <masterip-options>;

For mixed integer linear programming problems, the DECOMPMASTERIP statement controls the (restricted) master problem, which is solved as a MILP with the current set of columns in an effort to obtain an integer feasible solution.

Table 5 summarizes the options available in the DECOMPMASTERIP statement. These options control the MILP solver that is used to solve the integer version of the master problem. For descriptions of these options, see the section MILP Solver Options in Chapter 14, The Mixed Integer Linear Programming Solver, and the section PROC OPTMILP Statement in Chapter 6, The OPTMILP Procedure. Some options have different defaults when you use the Dantzig-Wolfe decomposition algorithm, as shown in Table 5.

Table 5: Options in the DECOMPMASTERIP Statement

Description masterip-option Different
Default
Presolve Option
Specifies the type of presolve PRESOLVER=
Control Options
Specifies the stopping criterion based on an absolute objective gap ABSOBJGAP=
Specifies the cutoff value for node removal CUTOFF=
Emphasizes feasibility or optimality EMPHASIS=
Specifies the maximum violation on variables and constraints FEASTOL= 1E–7
Specifies the maximum difference allowed between an integer variable’s value and an integer INTTOL=
Specifies how frequently to print the node log LOGFREQ=
Specifies the level of detail of solution progress to print in the log LOGLEVEL= NONE
Specifies the maximum number of nodes to process MAXNODES=
Specifies the maximum number of solutions to find MAXSOLS=
Specifies the time limit for the optimization process MAXTIME=
Specifies the number of threads to use in the master integer solver NTHREADS=
Specifies the tolerance to use in determining the optimality of nodes in the branch-and-bound tree OPTTOL= 1E–7
Specifies whether to use the previous best primal solution as a warm start PRIMALIN=
Specifies the probing level PROBE=
Specifies the stopping criterion based on a relative objective gap RELOBJGAP= 0.01
Specifies the scale of the problem matrix SCALE=
Specifies the initial seed for the random number generator SEED=
Specifies the stopping criterion based on a target objective value TARGET=
Specifies whether time units are CPU time or real time TIMETYPE=
Heuristics Option
Specifies the primal heuristics level HEURISTICS=
Search Options
Specifies the level of conflict search CONFLICTSEARCH=
Specifies the node selection strategy NODESEL=
Specifies the restarting strategy RESTARTS=
Specifies the number of iterations to perform on each variable for strong branching strategy STRONGITER=
Specifies the number of candidates for strong branching STRONGLEN=
Specifies the level of symmetry detection SYMMETRY=
Specifies the rule for selecting branching variable VARSEL=
Cut Options
Specifies the cut level for all cuts ALLCUTS=
Specifies the clique cut level CUTCLIQUE=
Specifies the flow cover cut level CUTFLOWCOVER=
Specifies the flow path cut level CUTFLOWPATH=
Specifies the Gomory cut level CUTGOMORY=
Specifies the generalized upper bound (GUB) cover cut level CUTGUB=
Specifies the implied bounds cut level CUTIMPLIED=
Specifies the knapsack cover cut level CUTKNAPSACK=
Specifies the lift-and-project cut level CUTLAP=
Specifies the mixed lifted 0-1 cut level CUTMILIFTED=
Specifies the mixed integer rounding (MIR) cut level CUTMIR=
Specifies the multicommodity network flow cut level CUTMULTICOMMODITY=
Specifies the path mixing cut level CUTPATHMIXING=
Specifies the RLT cut level CUTRLT=
Specifies the row multiplier factor for cuts CUTSFACTOR=
Specifies the overall cut aggressiveness CUTSTRATEGY=
Specifies the zero-half cut level CUTZEROHALF=


† MAXNODES=100000 in the root node, and MAXNODES=10000 in nodes that are not the root.

The following options are listed in Table 5 but are not described in the MILP solver sections. These options are specific to the DECOMPMASTERIP statement.

NTHREADS=number
NUMTHREADS=number

specifies the number of threads to use in the master integer solver (if the selected solver method supports multithreading). The value of the NTHREADS= option in the main solver statement serves as the overall capacity for the number of active threads that can run at one time. By default, the number of master integer threads is the value of the NTHREADS= option in the main solver statement.

PRIMALIN=FALSE | TRUE
PIN=FALSE | TRUE

specifies whether the MILP solver is to use the previous best solution’s variables values as a starting solution (warm start). If the MILP solver finds that the input solution is feasible, then the input solution provides an incumbent solution and a bound for the branch-and-bound algorithm. If the solution is not feasible, the MILP solver tries to repair it. When it is difficult to find a good integer feasible solution for a problem, a warm start can reduce solution time significantly. You can specify the following values:

FALSE

ignores the previous solution.

TRUE

starts from the previous solution.

By default, PRIMALIN=TRUE.

Last updated: June 22, 2026