PROC OPTMILP Statement
- PROC OPTMILP < options > ;
You can specify the following options in the PROC OPTMILP statement.
-
DATA=SAS-data-set
-
specifies the input data set corresponding to the MILP model. If this option is not specified,
PROC OPTMILP will use the most recently created SAS data set. See
Chapter 14, "The MPS-Format SAS Data Set", for more details about the input data set.
-
DUALOUT=SAS-data-set
- DOUT=SAS-data-set
-
specifies the output data set containing the constraint activities.
-
OBJSENSE=MIN MAX
-
specifies whether the MILP model is a minimization or a maximization problem. You can use
OBJSENSE=MIN for a minimization problem and OBJSENSE=MAX for a maximization problem.
Alternatively, you can specify the objective sense in the input data set. This option
supersedes the objective sense specified in the input data set. If the objective sense
is not specified anywhere, then PROC OPTMILP interprets and solves the MILP as a
minimization problem.
-
PRIMALIN=SAS-data-set
-
enables you to input an integer feasible solution in a SAS data set. PROC OPTMILP validates both
the data set and the solution stored in the data set. If both are valid, then the input solution
provides an incumbent solution and a bound for the branch-and-bound algorithm. If either the data
set or the solution is not valid, then the PRIMALIN= data are ignored. See
the section "Warm Start" for details.
-
PRIMALOUT=SAS-data-set
- POUT=SAS-data-set
-
specifies the output data set for the primal solution. This data set contains the primal solution
information. See the section "Data Input and Output" for details.
-
PRESOLVER=option
-
specifies a presolve option or its corresponding value num,
as listed in Table 16.2.
Table 16.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.
-
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 procedure stops. The value of num can be any positive number;
the default value is 1E-6.
-
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 16.3.
Table 16.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 1E-5. PROC OPTMILP attempts to find an optimal solution with
integer infeasibility less than num. If you assign a value smaller than 1E-10 to num and the best solution found by PROC OPTMILP has integer infeasibility between num and 1E-10, then PROC OPTMILP ends with a solution status of OPTIMAL_COND (see the section "Macro Variable").
-
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 is .
-
MAXSOLS=num
-
specifies a stopping criterion. If num solutions have been found, then the procedure
stops. The value of num can be any positive integer up to the largest four-byte signed integer, which is . The default value is .
-
MAXTIME=num
-
specifies the maximum time allowed for PROC OPTMILP to read in the data and 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 integer up to the largest four-byte signed integer, which is . The default value 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.
-
PRINTLEVEL=0 1 2
-
specifies whether or not a summary of the problem and solution should be printed.
If PRINTLEVEL=1, then two Output Delivery System (ODS) tables named
"ProblemSummary" and "SolutionSummary" are produced and printed. If PRINTLEVEL=2,
then the "ProblemSummary" and "SolutionSummary" tables are produced and printed along with a third table called "ProblemStatistics." If
PRINTLEVEL=0, then no ODS tables are produced or printed. The default value of this
option is 1.
For details about the ODS tables created by PROC OPTMILP, see the section "ODS Tables".
-
PRINTLEVEL2=option
-
controls the amount of information displayed in the SAS log by the solver,
from a short description of presolve information and summary to details at each node.
Table 16.4 describes the valid values for this option.
Table 16.4: Values for PRINTLEVEL2= Option
Number
|
Option
|
Description
|
0 | NONE | Turn off all solver-related messages in 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 16.5: Values for PROBE= Option
Number
|
Option
|
Description
|
-1 | AUTOMATIC | Probing strategy determined by PROC OPTMILP. |
0 | NONE | Disable probing. |
1 | MODERATE | Use probing moderately. |
2 | AGGRESSIVE | Use probing aggressively. |
The default value is AUTOMATIC. See the section "Presolve and Probing" for more information.
-
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 procedure stops. The value of num can be
any number between 0 and 1; the default value is 1E-4.
-
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 PROC
OPTMILP; 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 procedure 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 in a PROC OPTMILP call. Numeric values of time can be specified in the MAXTIME= option or reported in the _OROPTMILP_ 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
-
enables the user to control the level of primal heuristics applied by PROC OPTMILP. 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 16.6.
Table 16.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".
-
NODESEL=option
-
specifies the node selection strategy option or its corresponding value num
as listed in Table 16.7.
Table 16.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
using the strong branching variable selection strategy. The value of num can be any
positive number; the default value is automatically calculated by PROC OPTMILP.
-
STRONGLEN=num
-
specifies the number of candidates used when performing the strong branching variable selection
strategy. The value of num can be any positive integer up to the largest four-byte signed integer, which is . The default value 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 16.8.
Table 16.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".
Table 16.9 describes the
option and
num values for the
cut options in PROC OPTMILP.
Table 16.9: Values for Individual Cut Options
Number
|
Option
|
Description
|
- 1 | AUTOMATIC | Generate cutting planes based on a strategy determined by PROC OPTMILP. |
0 | NONE | Disable generation of cutting planes. |
1 | MODERATE | Use a moderate cut strategy. |
2 | AGGRESSIVE | Use 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 corresponding to
particular cut types. For example, if you want PROC OPTMILP 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
- 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 16.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=, and CUTMIR= options. If the ALLCUTS= option is not specified, 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
-
specifies the level of clique cuts generated by PROC OPTMILP. Table 16.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
-
specifies the level of flow cover cuts generated by PROC OPTMILP. Table 16.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
-
specifies the level of flow path cuts generated by PROC OPTMILP. Table 16.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
-
specifies the level of Gomory cuts generated by PROC OPTMILP. Table 16.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
-
specifies the level of generalized upper bound (GUB) cover cuts generated by PROC OPTMILP.
Table 16.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
-
specifies the level of implied bound cuts generated by PROC OPTMILP. Table 16.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
-
specifies the level of knapsack cover cuts generated by PROC OPTMILP. Table 16.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
-
specifies the level of lift-and-project (LAP) cuts generated by PROC OPTMILP. Table 16.9
lists the values that can be assigned to option and num. The CUTLAP= option
overrides the ALLCUTS= option. The default value is NONE.
-
CUTMIR=option
-
specifies the level of mixed integer rounding (MIR) cuts generated by PROC OPTMILP.
Table 16.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.
Copyright © 2008 by SAS Institute Inc., Cary, NC, USA. All rights reserved.