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 18.2. (As the table indicates, you can specify some options only in the PROC OPTMILP statement.)

The options in Table 18.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 18.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 18.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: June 14, 2018