Previous Page | Next Page

The Mixed Integer Linear Programming Solver

MILP Solver Options

This section describes the options that are recognized by the MILP solver in PROC OPTMODEL. These options can be specified after a forward slash (/) in the SOLVE statement, provided that the MILP solver is explicitly specified using a WITH clause. For example, the following line could appear in PROC OPTMODEL statements:

   solve with milp / allcuts=aggressive maxnodes=10000 primalin;


Presolve Option

PRESOLVER=option

specifies a presolve option or its corresponding value num, as listed in Table 11.2.

Table 11.2 Values for PRESOLVER= Option

Number

Option

Description

–1

AUTOMATIC

Apply the default level of presolve processing.

0

NONE

Disable presolver.

1

BASIC

Perform minimal presolve processing.

2

MODERATE

Apply a higher level of presolve processing.

3

AGGRESSIVE

Apply the highest level of presolve processing.

The default value is AUTOMATIC.

Warm Start Option

PRIMALIN

enables you to input an integer feasible solution in PROC OPTMODEL before invoking the MILP solver. Adding the PRIMALIN option to the SOLVE statement requests that the MILP solver use the current variable values as a starting integer feasible solution (warm start). If the MILP solver finds that the input solution is valid, then the input solution provides an incumbent solution and a bound for the branch-and-bound algorithm. If the solution is not valid, then the PRIMALIN data are ignored. When it is difficult to find a good integer feasible solution for a problem, warm start can reduce solution time significantly.

Control Options

ABSOBJGAP=num

specifies a stopping criterion. When the absolute difference between the best integer objective and the objective of the best node remaining falls below the value of num, the solver stops. The value of num can be any positive number; the default value is 1E6.

CUTOFF=num

cuts off any nodes in a minimization (maximization) problem with an objective value above (below) num. The value of num can be any number; the default value is the positive (negative) number that has the largest absolute value representable in your operating environment.

EMPHASIS=option

specifies a search emphasis option or its corresponding value num as listed in Table 11.3.

Table 11.3 Values for EMPHASIS= Option

Number

Option

Description

0

BALANCE

Perform a balanced search.

1

OPTIMAL

Emphasize optimality over feasibility.

2

FEASIBLE

Emphasize feasibility over optimality.

The default value is BALANCE.

INTTOL=num

specifies the amount by which an integer variable value can differ from an integer and still be considered integer feasible. The value of num can be any number between 0.0 and 1.0; the default value is 1E5. The MILP solver attempts to find an optimal solution with integer infeasibility less than num. If you assign a value smaller than 1E10 to num and the best solution found by the solver has integer infeasibility between num and 1E10, then the solver terminates with a solution status of OPTIMAL_COND (see the section Macro Variable _OROPTMODEL_ ).

MAXNODES=num

specifies the maximum number of branch-and-bound nodes to be processed. The value of num can be any nonnegative integer up to the largest four-byte signed integer, which is . The default value of num is .

MAXSOLS=num

specifies a stopping criterion. If num solutions have been found, then the solver stops. The value of num can be any positive integer up to the largest four-byte signed integer, which is . The default value of num is .

MAXTIME=num

specifies the maximum time allowed for the MILP solver to find a solution. The type of time, either CPU time or real time, is determined by the value of the TIMETYPE= option. The value of num can be any positive number; the default value is the positive number that has the largest absolute value representable in your operating environment.

PRINTFREQ=num

specifies how often information is printed in the node log. The value of num can be any nonnegative number up to the largest four-byte signed integer, which is . The default value of num is 100. If num is set to 0, then the node log is disabled. If num is positive, then an entry is made in the node log at the first node, at the last node, and at intervals dictated by the value of num. An entry is also made each time a better integer solution is found.

PRINTLEVEL2=option

controls the amount of information displayed in the SAS log by the MILP solver, from a short description of presolve information and summary to details at each node. Table 11.4 describes the valid values for this option.

Table 11.4 Values for PRINTLEVEL2= Option

Number

Option

Description

0

NONE

Turn off all solver-related messages to SAS log.

1

BASIC

Display a solver summary after stopping.

2

MODERATE

Print a solver summary and a node log by using the interval dictated by the PRINTFREQ= option.

3

AGGRESSIVE

Print a detailed solver summary and a node log by using the interval dictated by the PRINTFREQ= option.

The default value is MODERATE.

PROBE=option

specifies a probing option or its corresponding value num, as listed in the following table:

Table 11.5 Values for PROBE= Option

Number

Option

Description

-1

AUTOMATIC

Probing strategy determined by the MILP solver.

0

NONE

Disable probing.

1

MODERATE

Use probing moderately.

2

AGGRESSIVE

Use probing aggressively.

The default value is AUTOMATIC.

RELOBJGAP=num

specifies a stopping criterion based on the best integer objective (BestInteger) and the objective of the best remaining node (BestBound). The relative objective gap is equal to

     

When this value becomes smaller than the specified gap size num, the solver stops. The value of num can be any number between 0 and 1; the default value is 1E4.

SCALE=option

indicates whether or not to scale the problem matrix. SCALE= can take either of the values AUTOMATIC (–1) and NONE (0). SCALE=AUTOMATIC scales the matrix as determined by the MILP solver; SCALE=NONE disables scaling. The default value is AUTOMATIC.

TARGET=num

specifies a stopping criterion for minimization (maximization) problems. If the best integer objective is better than or equal to num, the solver stops. The value of num can be any number; the default value is the negative (positive) number that has the largest absolute value representable in your operating environment.

TIMETYPE=CPU(0) REAL(1)

specifies the measurement of time used by the MILP solver. Numeric values of time can be specified in the MAXTIME= option or reported in the _OROPTMODEL_ macro variable. The value of the TIMETYPE= option determines whether CPU time or real time is used. The default value of this option is CPU.

Heuristics Option

HEURISTICS=option

enables the user to control the level of primal heuristics applied by the MILP solver. This level determines how frequently primal heuristics are applied during the branch-and-bound tree search. It also affects the maximum number of iterations allowed in iterative heuristics. Some computationally expensive heuristics might be disabled by the solver at less aggressive levels. The values of option and the corresponding values of num are listed in Table 11.6.

Table 11.6 Values for HEURISTICS= Option

Number

Option

Description

–1

AUTOMATIC

Apply default level of heuristics, similar to MODERATE.

0

NONE

Disable all primal heuristics.

1

BASIC

Apply basic primal heuristics at low frequency.

2

MODERATE

Apply most primal heuristics at moderate frequency.

3

AGGRESSIVE

Apply all primal heuristics at high frequency.

The default value is AUTOMATIC. For details about primal heuristics, see the section Primal Heuristics.


Search Options

NODESEL=option

specifies the node selection strategy option or its corresponding value num as listed in Table 11.7.

Table 11.7 Values for NODESEL= Option

Number

Option

Description

–1

AUTOMATIC

Use automatic node selection.

0

BESTBOUND

Choose the node with the best relaxed objective (best-bound-first strategy).

1

BESTESTIMATE

Choose the node with the best estimate of the integer objective value (best-estimate-first strategy).

2

DEPTH

Choose the most recently created node (depth-first strategy).

The default value is AUTOMATIC. For details about node selection, see the section Node Selection.

PRIORITY=0 1

indicates whether or not to use specified branching priorities for integer variables. PRIORITY=0 ignores variable priorities; PRIORITY=1 uses priorities when they exist. The default value is 1. See the section Branching Priorities for details.

STRONGITER=num

specifies the number of simplex iterations performed for each variable in the candidate list when the strong branching variable selection strategy is used. The value of num can be any positive number; the default value is automatically calculated by the MILP solver.

STRONGLEN=num

specifies the number of candidates used when the strong branching variable selection strategy is performed. The value of num can be any positive integer up to the largest four-byte signed integer, which is . The default value of num is 10.

VARSEL=option

specifies the rule for selecting the branching variable. The values of option and the corresponding values of num are listed in Table 11.8.

Table 11.8 Values for VARSEL= Option

Number

Option

Description

–1

AUTOMATIC

Use automatic branching variable selection.

0

MAXINFEAS

Choose the variable with maximum infeasibility.

1

MININFEAS

Choose the variable with minimum infeasibility.

2

PSEUDO

Choose a branching variable based on pseudocost.

3

STRONG

Use strong branching variable selection strategy.

The default value is AUTOMATIC. For details about variable selection, see the section Variable Selection.

Cut Options

Table 11.9 describes the option and num values for the cut options in the OPTMODEL procedure.

Table 11.9 Values for Individual Cut Options

Number

Option

Description

–1

AUTOMATIC

Generates cutting planes based on a strategy determined by the MILP solver.

0

NONE

Disables generation of cutting planes.

1

MODERATE

Uses a moderate cut strategy.

2

AGGRESSIVE

Uses an aggressive cut strategy.

You can use the ALLCUTS= option to set all cut types to the same level. You can override the ALLCUTS= value by using the options that correspond to particular cut types. For example, if you want the MILP solver to generate only Gomory cuts, specify ALLCUTS=NONE and CUTGOMORY=AUTOMATIC. If you want to generate all cuts aggressively but generate no lift-and-project cuts, set ALLCUTS=AGGRESSIVE and CUTLAP=NONE.

ALLCUTS=option | num

provides a shorthand way of setting all the cuts-related options in one setting. In other words, ALLCUTS=num is equivalent to setting each of the individual cuts parameters to the same value num. Thus, ALLCUTS=–1 has the effect of setting CUTCLIQUE=–1, CUTFLOWCOVER=–1, CUTFLOWPATH=–1, ..., CUTLAP=–1, and CUTMIR=–1. Table 11.9 lists the values that can be assigned to option and num. In addition, you can override levels for individual cuts with the CUTCLIQUE=, CUTFLOWCOVER=, CUTFLOWPATH=, CUTGOMORY=, CUTGUB=, CUTIMPLIED=, CUTKNAPSACK=, CUTLAP=, CUTMILIFTED=, CUTMIR=, and CUTZEROHALF= options. If the ALLCUTS= option is not specified, then all the cuts-related options are either at their individually specified values (if the corresponding option is specified) or at their default values (if that option is not specified).

CUTCLIQUE=option | num

specifies the level of clique cuts that are generated by the MILP solver. Table 11.9 lists the values that can be assigned to option and num. The CUTCLIQUE= option overrides the ALLCUTS= option. The default value is AUTOMATIC.

CUTFLOWCOVER=option | num

specifies the level of flow cover cuts that are generated by the MILP solver. Table 11.9 lists the values that can be assigned to option and num. The CUTFLOWCOVER= option overrides the ALLCUTS= option. The default value is AUTOMATIC.

CUTFLOWPATH=option | num

specifies the level of flow path cuts that are generated by the MILP solver. Table 11.9 lists the values that can be assigned to option and num. The CUTFLOWPATH= option overrides the ALLCUTS= option. The default value is AUTOMATIC.

CUTGOMORY=option | num

specifies the level of Gomory cuts that are generated by the MILP solver. Table 11.9 lists the values that can be assigned to option and num. The CUTGOMORY= option overrides the ALLCUTS= option. The default value is AUTOMATIC.

CUTGUB=option | num

specifies the level of generalized upper bound (GUB) cover cuts that are generated by the MILP solver. Table 11.9 lists the values that can be assigned to option and num. The CUTGUB= option overrides the ALLCUTS= option. The default value is AUTOMATIC.

CUTIMPLIED=option | num

specifies the level of implied bound cuts that are generated by the MILP solver. Table 11.9 lists the values that can be assigned to option and num. The CUTIMPLIED= option overrides the ALLCUTS= option. The default value is AUTOMATIC.

CUTKNAPSACK=option | num

specifies the level of knapsack cover cuts that are generated by the MILP solver. Table 11.9 lists the values that can be assigned to option and num. The CUTKNAPSACK= option overrides the ALLCUTS= option. The default value is AUTOMATIC.

CUTLAP=option | num

specifies the level of lift-and-project (LAP) cuts that are generated by the MILP solver. Table 11.9 lists the values that can be assigned to option and num. The CUTLAP= option overrides the ALLCUTS= option. The default value is NONE.

CUTMILIFTED=option | num

specifies the level of mixed lifted 0-1 cuts that are generated by the MILP solver. Table 11.9 lists the values that can be assigned to option and num. The CUTMILIFTED= option overrides the ALLCUTS= option. The default value is AUTOMATIC.

CUTMIR=option | num

specifies the level of mixed integer rounding (MIR) cuts that are generated by the MILP solver. Table 11.9 lists the values that can be assigned to option and num. The CUTMIR= option overrides the ALLCUTS= option. The default value is AUTOMATIC.

CUTSFACTOR=num

specifies a row multiplier factor for cuts. The number of cuts added is limited to num times the original number of rows. The value of num can be any nonnegative number less than or equal to 100; the default value is 3.0.

CUTZEROHALF=option | num

specifies the level of zero-half cuts that are generated by the MILP solver. Table 11.9 lists the values that can be assigned to option and num. The CUTZEROHALF= option overrides the ALLCUTS= option. The default value is AUTOMATIC.

Previous Page | Next Page | Top of Page