The Decomposition Algorithm

Decomposition Algorithm Options in the PROC OPTMILP Statement or the SOLVE WITH MILP Statement in PROC OPTMODEL

To solve a mixed integer linear program, you can specify the decomposition algorithm in a SOLVE WITH MILP statement in the OPTMODEL procedure or in a PROC OPTMILP statement in the OPTMILP procedure. To control the overall decomposition algorithm, you can specify one or more of the MILP solver options shown in Table 2. (As the table indicates, you can specify some options only in the PROC OPTMILP statement.)

The options in Table 2 control the overall process flow for solving a mixed integer linear program; they are equivalent to the options that are used in the OPTMILP and OPTMODEL procedures with standard methods. These options are called main solver options in this chapter. They are described in detail in the section Syntax: MILP Solver and the section Syntax: OPTMILP Procedure.

Table 2: MILP Options in the PROC OPTMILP Statement or SOLVE WITH MILP Statement

Description option
Data Table Options (OPTMILP procedure only)
Specifies the input data table DATA=
Specifies the constraint activities output data table DUALOUT=
Specifies whether the model is a maximization or minimization problem OBJSENSE=
Specifies the primal solution input data table (warm start) PRIMALIN=
Specifies the primal solution output data table PRIMALOUT=
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 of variables and constraints FEASTOL=
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=
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 overall capacity for the number of active threads (per machine) NTHREADS=
Specifies the tolerance to use in determining the optimality of nodes in the branch-and-bound tree OPTTOL=
Uses the input primal solution (warm start) (OPTMODEL procedure only) PRIMALIN
Enables or disables printing summary (OPTMILP procedure only) PRINTLEVEL=
Specifies the probing level PROBE=
Specifies the stopping criterion based on a relative objective gap RELOBJGAP=
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=
Control Options (OPTMODEL procedure only)
Specifies the maximum number of solutions to return from the pool MAXPOOLSOLS=
Heuristics Option
Specifies the primal heuristics level HEURISTICS=
Search Options
Specifies the restarting strategy RESTARTS=
Specifies the number of iterations to perform on each variable for strong branching STRONGITER=
Specifies the number of candidates for strong branching STRONGLEN=
Specifies the level of symmetry detection SYMMETRY=
Specifies the rule for selecting the 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 row multiplier factor for cuts CUTSFACTOR=
Specifies the overall cut aggressiveness CUTSTRATEGY=
Specifies the zero-half cut level CUTZEROHALF=


The HYBRID= option in the DECOMP statement indicates the processing mode for the root node of the branch-and-bound search tree. When HYBRID=TRUE, the root node is first processed using standard MILP techniques, as described in the section Details: MILP Solver. When HYBRID=FALSE, the root processing is done solely by the decomposition algorithm, and the following direct MILP options are ignored: CUTOFF=, EMPHASIS=, RESTARTS=, SEED=, TARGET=, and all the cut options.

The following search options, listed in Table 2, have a different interpretation or a different set of options from what is described in the MILP solver sections:

LOGFREQ=number
PRINTFREQ=number

specifies how often to print information in the node log, where number can be any 32-bit integer greater than or equal to 0. If number is 0, then the node log is disabled. If number is positive, then an entry is made every number seconds. An entry is also made in the node log each time the solver finds a better integer solution or improved bound. By default, LOGFREQ=10.

STRONGITER=number | AUTOMATIC

specifies the number of pricing iterations that are performed for each variable in the candidate list when you use the strong branching variable selection strategy. The value of number can be any positive 32-bit integer. If you specify the keyword AUTOMATIC, the MILP solver uses the default value, which is calculated automatically.

VARSEL=AUTOMATIC | MAXINFEAS | PSEUDO | RYANFOSTER | STRONG

specifies the rule for selecting the branching variable. You can specify the following values:

AUTOMATIC

uses automatic branching variable selection.

MAXINFEAS

selects the variable in the original compact formulation with maximum infeasibility.

PSEUDO

selects the variable in the original compact formulation that maximizes the weighted up and down pseudocosts.

RYANFOSTER

when appropriate, uses a specialized branching rule known as Ryan-Foster branching.

STRONG

selects the variable in the original compact formulation that maximizes the estimated improvement in the objective value based on strong branching.

By default, VARSEL=AUTOMATIC. For more information about variable selection, see the sections Variable Selection and Special Case: Identical Blocks and Ryan-Foster Branching.

Last updated: November 11, 2022