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 Options
- FOLD=AUTOMATIC | OFF | ON
-
controls the folding of the problem. You can specify the following values:
- AUTOMATIC
specifies that the presolver use a heuristic to decide whether to fold the problem or not.
- OFF
disables folding. The optimization problem is not further reduced by folding.
- ON
specifies that the presolver try to fold the continuous part of the optimization problem.
Folding is helpful for problems that have a symmetric structure in the continuous part of the variables.
By default, FOLD=AUTOMATIC.
- PRESOLVER=AUTOMATIC | NONE | BASIC | MODERATE | AGGRESSIVE
-
specifies the level of presolve processing. You can specify the following values:
- AUTOMATIC
applies the default level of presolve processing. Suitable limits are in place such that the presolver reduces the problem almost as much as when PRESOLVER=AGGRESSIVE, but in a reasonable time.
- NONE
disables the presolver. Only the necessary problem transformation steps are performed.
- BASIC
performs minimal presolve processing. Only some very fast operations are performed.
- MODERATE
applies a higher level of presolve processing. Suitable limits are in place such that the presolver reduces the problem almost as much as when PRESOLVER=AGGRESSIVE, but in a reasonable time.
- AGGRESSIVE
applies the highest level of presolve processing. All the presolver techniques are called with no limits. This reduces the problem the most, but can take a very long time.
By default, PRESOLVER=AUTOMATIC.
Warm Start Option
- PRIMALIN
-
enables you to input starting solutions in PROC OPTMODEL before invoking the MILP solver. When you specify this option in the SOLVE statement, the MILP solver uses the current solution and any other stored solutions as starting solutions (warm start). In particular, if the previous solver call returns multiple solutions, all these solutions are used by default. If the MILP solver finds that an 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. It is possible to set a variable value to the missing value '.' to mark a variable for repair. When it is difficult to find a good integer feasible solution for a problem, a warm start can reduce solution time significantly.
Note: If the MILP solver produces a feasible solution, you can use the variable values from that run as the warm start solution for a subsequent run. If the warm start solution is not feasible for the subsequent run, the solver automatically tries to repair it.
Control Options
-
ABSOBJGAP=number
ABSOLUTEOBJECTIVEGAP=number specifies a stopping criterion. When the absolute difference between the best integer objective and the best bound on the objective function value becomes smaller than the value of number, the procedure stops. The value of number can be any nonnegative number; the default value is 1E–6.
- CUTOFF=number
cuts off any nodes in a minimization (maximization) problem that have an objective value at or above (below) number. The value of number can be any number; the default value is the largest (smallest) number that can be represented by a double.
- EMPHASIS=BALANCE | OPTIMAL | FEASIBLE
-
specifies the type of search emphasis. You can specify the following values:
- BALANCE
performs a balanced search.
- OPTIMAL
emphasizes optimality over feasibility.
- FEASIBLE
emphasizes feasibility over optimality.
By default, EMPHASIS=BALANCE.
- FEASTOL=number
-
specifies the tolerance that the MILP solver uses to check the feasibility of a solution. This tolerance applies both to the maximum violation of bounds on variables and to the difference between the right-hand sides and left-hand sides of constraints. The value of number can be any value between 1E–4 and 1E–9, inclusive. However, the value of number cannot be larger than the integer feasibility tolerance. If the value of number is larger than the value of the INTTOL= option, then the solver sets FEASTOL= to the value of INTTOL=. The default value is 1E–6.
If the MILP solver fails to find a feasible solution within this tolerance but does find a solution that has some violation, then the solver stops with a solution status of OPTIMAL_COND (see the section Macro Variable _OROPTMODEL_).
- IIS=FALSE | TRUE
-
specifies whether the MILP solver is to attempt to identify a set of constraints, variables, and integer restrictions that form an irreducible infeasible set (IIS). You can specify the following values:
- FALSE
disables IIS detection.
- TRUE
enables IIS detection, and turns off certain options such as the SOLTYPE= option. If an IIS is found, information about infeasible constraints, integer restrictions, or variable bounds is written to the
.statusvalues of the constraints and variables. For more information about the.statussuffix, see the section Suffixes.
For more information about IIS, see the section Irreducible Infeasible Set. By default, IIS=FALSE.
-
INTTOL=number
INTEGERTOLERANCE=number -
specifies the amount by which an integer variable value can differ from an integer and still be considered integer feasible. The value of number can be any number between 1E–9 and 0.5, inclusive. The MILP solver attempts to find an optimal solution whose integer infeasibility is less than number. The default value is 1E–5.
If the best solution that the solver finds has an integer infeasibility larger than the value of number, then the solver stops with a solution status of OPTIMAL_COND (see the section Macro Variable _OROPTMODEL_).
-
LOGFREQ=k
PRINTFREQ=k -
prints information in the node log every k seconds, where k is any nonnegative integer up to the largest four-byte signed integer, which is
. If k=0, then the node log is disabled. If k is positive, then the root node processing information is printed and, if possible, an entry is made every k seconds. An entry is also made each time a better integer solution is found.
By default, LOGFREQ=5.
- LOGLEVEL=NONE | BASIC | MODERATE | AGGRESSIVE
-
controls the amount of information that the MILP solver displays in the SAS log, from a solver summary to details at each iteration. You can specify the following values:
- NONE
turns off all solver-related messages in the SAS log.
- BASIC
displays a solver summary after stopping.
- MODERATE
prints a solver summary and a node log by using the value that you specify in the LOGFREQ= option.
- AGGRESSIVE
prints a detailed solver summary and a node log by using the value that you specify in the LOGFREQ= option.
By default, LOGLEVEL=MODERATE.
- MAXNODES=number
specifies the maximum number of branch-and-bound nodes to be processed, where number can be any nonnegative integer up to the largest four-byte signed integer, which is
. If you run the MILP solver in concurrent mode, CONCURRENT=TRUE, then the solver stops as soon as number is reached on any machine. If you run the MILP solver in distributed mode, DISTRIBUTED=TRUE, then the solver periodically checks and stops as soon as the total number of nodes that are processed by all grid nodes exceeds number. The default value is
.
- MAXPOOLGAP=number
specifies the gap criterion for the solutions to be returned when you specify a non-default SOLTYPE= option. Each of the returned solutions will have an objective value whose gap from the best integer objective value is less than or equal to number. The value of number can be any nonnegative number greater than or equal to the value of the RELOBJGAP= option. The default value is the value of the RELOBJGAP= option.
- MAXPOOLSOLS=number
specifies the number of solutions to return from the MILP solution pool, where number can be any positive integer up to the largest four-byte signed integer, which is
. Only feasible and unique solutions are returned, and they are returned in order of objective value, with the best solution first. The number of solutions that are found is reported in both the solution summary and the _OROPTMODEL_ macro variable. By default, MAXPOOLSOLS=10 if SOLTYPE=BEST or SOLTYPE=WITHINGAP; otherwise, MAXPOOLSOLS=1 by default.
- MAXSOLS=number
specifies a stopping criterion, where number can be any positive integer up to the largest four-byte signed integer, which is
. If number of solutions have been found, then the solver stops. The default value of number is
.
- MAXTIME=t
specifies an upper limit of t units of time for performing the optimization process, including problem generation time and the solution time. The value of the TIMETYPE= option determines the type of units used. If you do not specify MAXTIME= option, the solver does not stop because of the amount of time elapsed. If concurrent or distributed mode of the solver is enabled, CONCURRENT=TRUE or DISTRIBUTED=TRUE, then the solver stops as soon as t is reached on any machine. The value of t can be any positive number; the default value is the largest number that can be represented by a double.
- OPTTOL=number
specifies the tolerance that is used to determine the optimality of nodes in the branch-and-bound tree. The value of number can be any value between (and including) 1E–4 and 1E–9. The default value is 1E–6.
- PROBE=AUTOMATIC | NONE | MODERATE | AGGRESSIVE
-
specifies the probing strategy. You can specify the following values:
- AUTOMATIC
uses the probing strategy that is determined by the MILP solver.
- NONE
disables probing.
- MODERATE
uses probing moderately.
- AGGRESSIVE
uses probing aggressively.
By default, PROBE=AUTOMATIC. For more information, see the section Presolve and Probing.
- RELOBJGAP=number
-
specifies a stopping criterion based on the best integer objective (BestInteger) and the best bound on the objective function value (BestBound). The relative objective gap is equal to
When this value becomes smaller than the specified gap size number, the solver stops. The value of number can be any nonnegative number; the default value is 1E–4.
- SCALE=AUTOMATIC | NONE
-
indicates whether to scale the problem matrix. You can specify the following values:
- AUTOMATIC
scales the matrix as determined by the MILP solver.
- NONE
disables scaling.
By default, SCALE=AUTOMATIC.
- SEED=number
specifies the initial seed of the random number generator. This option affects the perturbation in the simplex solvers; thus it might result in a different optimal solution and a different solver path. This option usually has a significant, but unpredictable, effect on the solution time. The value of number can be any positive integer up to the largest four-byte signed integer, which is
. The default value of the seed is 100.
- SOLTYPE=POOL | BEST | WITHINGAP
-
specifies the type of multiple solution algorithm that the MILP solver runs. You can specify this option when you need to obtain multiple optimal solutions or multiple feasible solutions within the value that is specified for the MAXPOOLGAP= option. You can specify the following values:
- POOL
runs the default branch-and-bound algorithm.
- BEST
runs the modified branch-and-bound algorithm in order to return the best (by objective value) number of solutions (as specified in the MAXPOOLSOLS= option) that have a gap value less than or equal to the value of the MAXPOOLGAP= option. If the problem has fewer solutions than the number that is specified in the MAXPOOLSOLS= option, then the solver returns all the solutions that are found within the value that is specified in the MAXPOOLGAP= option. Note that there can exist no solution better than those returned by the solver.
- WITHINGAP
runs the modified branch-and-bound algorithm in order to return the number of solutions (as specified in the MAXPOOLSOLS= option) that have a gap value less than or equal to the value of the MAXPOOLGAP= option. If the problem has fewer solutions than the number that is specified in the MAXPOOLSOLS= option, then the solver returns all the solutions that are found within the value that is specified in the MAXPOOLGAP= option. Note that there can exist feasible solutions that are better than the solutions returned by the solver.
By default, SOLTYPE=POOL.
Note: If you specify SOLTYPE=BEST or SOLTYPE=WITHINGAP, the solver turns off certain techniques (such as symmetry detection) that can reduce the search space (by pruning off feasible or alternate optimal solutions). Hence, the solver can take considerably longer to solve the problem compared to when SOLTYPE=POOL.
- TARGET=number
specifies a stopping criterion for a minimization or maximization problem. If the best integer objective is better than or equal to number, the solver stops. The value of number can be any number; the default value is the largest (in magnitude) negative number (for a minimization problem) or the largest (in magnitude) positive number (for a maximization problem) that can be represented by a double.
- TIMETYPE=CPU | REAL
-
specifies the units of time used by the MAXTIME= option and reported by the PRESOLVE_TIME and SOLUTION_TIME terms in the _OROPTMODEL_ macro variable. You can specify the following values:
- CPU
specifies that units are in CPU time.
- REAL
specifies that units are in real time.
The "Optimization Statistics" table, an output of PROC OPTMODEL if you specify PRINTLEVEL=2 in the PROC OPTMODEL statement, also includes the same time units for Presolver Time and Solver Time. The other times (such as Problem Generation Time) in the "Optimization Statistics" table are also in the same units.
By default, TIMETYPE=REAL.
Heuristics Option
- HEURISTICS=AUTOMATIC | NONE | BASIC | MODERATE | AGGRESSIVE
-
controls 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. You can specify the following values:
- AUTOMATIC
applies the default level of heuristics, similar to MODERATE.
- NONE
disables all primal heuristics. This value does not disable the heuristics that repair an infeasible input solution that is specified by using the PRIMALIN option.
- BASIC
applies basic primal heuristics at low frequency.
- MODERATE
applies most primal heuristics at moderate frequency.
- AGGRESSIVE
applies all primal heuristics at high frequency.
By default, HEURISTICS=AUTOMATIC. For more information about primal heuristics, see the section Primal Heuristics.
Search Options
- CONFLICTSEARCH=AUTOMATIC | NONE | MODERATE | AGGRESSIVE
-
specifies the level of conflict search performed by the MILP solver. Conflict search is used to find clauses resulting from infeasible subproblems that arise in the search tree. You can specify the following values:
- AUTOMATIC
performs conflict search based on a strategy that is determined by the MILP solver.
- NONE
disables conflict search.
- MODERATE
performs a moderate conflict search.
- AGGRESSIVE
performs an aggressive conflict search.
By default, CONFLICTSEARCH=AUTOMATIC.
- NODESEL=AUTOMATIC | BESTBOUND | BESTESTIMATE | DEPTH
-
specifies the node selection strategy. You can specify the following values:
- AUTOMATIC
uses automatic node selection.
- BESTBOUND
chooses the node with the best relaxed objective (best-bound-first strategy).
- BESTESTIMATE
chooses the node with the best estimate of the integer objective value (best-estimate-first strategy).
- DEPTH
chooses the most recently created node (depth-first strategy).
By default, NODESEL=AUTOMATIC. For more information about node selection, see the section Node Selection.
- PRIORITY=TRUE | FALSE
-
indicates whether to use specified branching priorities for integer variables. You can specify the following values:
- TRUE
uses priorities when they exist.
- FALSE
ignores variable priorities.
By default, PRIORITY=TRUE. For more information, see the section Branching Priorities.
- RESTARTS=AUTOMATIC | NONE | BASIC | MODERATE | AGGRESSIVE
-
specifies the strategy for restarting the processing of the root node. You can specify the following values:
- AUTOMATIC
uses a restarting strategy determined by the MILP solver.
- NONE
disables restarting.
- BASIC
uses a basic restarting strategy.
- MODERATE
uses a moderate restarting strategy.
- AGGRESSIVE
uses an aggressive restarting strategy.
By default, RESTARTS=AUTOMATIC.
- STRONGITER=number | AUTOMATIC
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 number can be any positive integer up to the largest four-byte signed integer, which is
. If you specify the keyword AUTOMATIC, the MILP solver uses the default value; this value is calculated automatically.
- STRONGLEN=number | AUTOMATIC
specifies the number of candidates used when performing the strong branching variable selection strategy. The value of number can be any positive integer up to the largest four-byte signed integer, which is
. If you specify the keyword AUTOMATIC, the MILP solver uses the default value; this value is calculated automatically.
- SYMMETRY=AUTOMATIC | NONE | BASIC | MODERATE | AGGRESSIVE
-
specifies the level of symmetry detection. Symmetry detection identifies groups of equivalent decision variables and uses this information to solve the problem more efficiently. You can specify the following values:
- AUTOMATIC
performs symmetry detection based on a strategy that is determined by the MILP solver.
- NONE
disables symmetry detection.
- BASIC
performs a basic symmetry detection.
- MODERATE
performs a moderate symmetry detection.
- AGGRESSIVE
performs an aggressive symmetry detection.
By default, SYMMETRY=AUTOMATIC. For more information about symmetry detection, see (Ostrowski 2008).
- VARSEL=AUTOMATIC | MAXINFEAS | MININFEAS | PSEUDO | STRONG
-
specifies the rule for selecting the branching variable. You can specify the following values:
- AUTOMATIC
uses automatic branching variable selection.
- MAXINFEAS
chooses the variable with maximum infeasibility.
- MININFEAS
chooses the variable with minimum infeasibility.
- PSEUDO
chooses a branching variable based on pseudocost.
- STRONG
uses a strong branching variable selection strategy.
By default, VARSEL=AUTOMATIC. For details about variable selection, see the section Variable Selection.
Cut Options
Table 2 describes the string values for the cut options in the OPTMODEL procedure.
Table 2: Values for Individual Cut Options
| string | Description |
|---|---|
| AUTOMATIC | Generates cutting planes on the basis of a strategy that the MILP solver determines. |
| NONE | Disables generation of cutting planes |
| MODERATE | Uses a moderate cut strategy |
| AGGRESSIVE | Uses an aggressive cut strategy |
You can specify the CUTSTRATEGY= option to set the overall aggressiveness of the cut generation in the MILP solver. Alternatively, 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=AUTOMATIC | NONE | MODERATE | AGGRESSIVE
provides a shorthand way of setting all the cuts-related options in one setting. In other words, ALLCUTS=string is equivalent to setting each of the individual cuts parameters to the same value string. Thus, ALLCUTS=AUTOMATIC has the effect of setting CUTCLIQUE=AUTOMATIC, CUTFLOWCOVER=AUTOMATIC, …, and CUTZEROHALF=AUTOMATIC. Table 2 lists the values that can be assigned to string. In addition, you can override levels for individual cuts with the CUTCLIQUE=, CUTFLOWCOVER=, CUTFLOWPATH=, CUTGOMORY=, CUTGUB=, CUTIMPLIED=, CUTKNAPSACK=, CUTLAP=, CUTMILIFTED=, CUTMIR=, CUTMULTICOMMODITY=, CUTPATHMIXING=, and CUTZEROHALF= options. If the ALLCUTS= option is not specified, all the cuts-related options are either set to their individually specified values (if the corresponding option is specified) or to their default values (if that option is not specified).
- CUTCLIQUE=AUTOMATIC | NONE | MODERATE | AGGRESSIVE
specifies the level of clique cuts generated by the MILP solver. Table 2 describes the possible values. This option overrides the ALLCUTS= option. By default, CUTCLIQE=AUTOMATIC.
- CUTFLOWCOVER=AUTOMATIC | NONE | MODERATE | AGGRESSIVE
specifies the level of flow cover cuts generated by the MILP solver. Table 2 describes the possible values. This option overrides the ALLCUTS= option. By default, CUTFLOWCOVER=AUTOMATIC.
- CUTFLOWPATH=AUTOMATIC | NONE | MODERATE | AGGRESSIVE
specifies the level of flow path cuts generated by the MILP solver. Table 2 describes the possible values. This option overrides the ALLCUTS= option. By default, CUTFLOWPATH=AUTOMATIC.
- CUTGOMORY=AUTOMATIC | NONE | MODERATE | AGGRESSIVE
specifies the level of Gomory cuts generated by the MILP solver. Table 2 describes the possible values. This option overrides the ALLCUTS= option. By default, CUTGOMORY=AUTOMATIC.
- CUTGUB=AUTOMATIC | NONE | MODERATE | AGGRESSIVE
specifies the level of generalized upper bound (GUB) cover cuts generated by the MILP solver. Table 2 describes the possible values. This option overrides the ALLCUTS= option. By default, CUTGUB=AUTOMATIC.
- CUTIMPLIED=AUTOMATIC | NONE | MODERATE | AGGRESSIVE
specifies the level of implied bound cuts generated by the MILP solver. Table 2 describes the possible values. This option overrides the ALLCUTS= option. By default, CUTIMPLIED=AUTOMATIC.
- CUTKNAPSACK=AUTOMATIC | NONE | MODERATE | AGGRESSIVE
specifies the level of knapsack cover cuts generated by the MILP solver. Table 2 describes the possible values. This option overrides the ALLCUTS= option. By default, CUTKNAPSACK=AUTOMATIC.
- CUTLAP=AUTOMATIC | NONE | MODERATE | AGGRESSIVE
specifies the level of lift-and-project (LAP) cuts generated by the MILP solver. Table 2 describes the possible values. This option overrides the ALLCUTS= option. By default, CUTLAP=NONE.
- CUTMILIFTED=AUTOMATIC | NONE | MODERATE | AGGRESSIVE
specifies the level of mixed lifted 0-1 cuts generated by the MILP solver. Table 2 describes the possible values. This option overrides the ALLCUTS= option. By default, CUTMILIFTED=AUTOMATIC.
- CUTMIR=AUTOMATIC | NONE | MODERATE | AGGRESSIVE
specifies the level of mixed integer rounding (MIR) cuts generated by the MILP solver. Table 2 describes the possible values. This option overrides the ALLCUTS= option. By default, CUTMIR=AUTOMATIC.
- CUTMULTICOMMODITY=AUTOMATIC | NONE | MODERATE | AGGRESSIVE
specifies the level of multicommodity network flow cuts generated by the MILP solver. Table 2 describes the possible values. This option overrides the ALLCUTS= option. By default, CUTMULTICOMMODITY=AUTOMATIC.
- CUTPATHMIXING=AUTOMATIC | NONE | MODERATE | AGGRESSIVE
specifies the level of path mixing cuts generated by the MILP solver. Table 2 describes the possible values. This option overrides the ALLCUTS= option. By default, CUTPATHMIXING=AUTOMATIC.
- CUTSFACTOR=number
specifies a row multiplier factor for cuts. The number of cuts that are added is limited to number times the original number of rows. The value of number can be any nonnegative number less than or equal to 100; the default value is automatically calculated by the MILP solver.
-
CUTSTRATEGY=AUTOMATIC | NONE | MODERATE | AGGRESSIVE
CUTS=AUTOMATIC | NONE | MODERATE | AGGRESSIVE specifies the overall aggressiveness of the cut generation in the solver. By default, CUTSTRATEGY=AUTOMATIC. Setting a nondefault value adjusts a number of cut parameters such that the cut generation is none, moderate, or aggressive compared to the default value.
- CUTZEROHALF=AUTOMATIC | NONE | MODERATE | AGGRESSIVE
specifies the level of zero-half cuts generated by the MILP solver. Table 2 describes the possible values. This option overrides the ALLCUTS= option. By default, CUTZEROHALF=AUTOMATIC.
Decomposition Algorithm Options
The following options are available for the decomposition algorithm in the MILP solver. For information about the decomposition algorithm, see Chapter 18, The Decomposition Algorithm.
- DECOMP=(options)
enables the decomposition algorithm and specifies overall control options for the algorithm. For more information about this option, see Chapter 18, The Decomposition Algorithm.
- DECOMPMASTER=(options)
specifies options for the master problem. For more information about this option, see Chapter 18, The Decomposition Algorithm.
- DECOMPMASTERIP=(options)
specifies options for the (restricted) master problem solved as a MILP with the current set of columns in an effort to obtain an integer feasible solution. For more information about this option, see Chapter 18, The Decomposition Algorithm.
- DECOMPSUBPROB=(options)
specifies option for the subproblem. For more information about this option, see Chapter 18, The Decomposition Algorithm.
Parallel Options
- CONCURRENT=TRUE | FALSE
-
specifies whether to run the MILP solver in concurrent mode. You can specify the following values:
- TRUE
runs the MILP solver in concurrent mode. The solver automatically runs the same problem on each grid node with different MILP solver options.
- FALSE
turns off concurrent mode for the MILP solver.
By default, CONCURRENT=FALSE.
- DETERMINISTIC=TRUE | FALSE
-
specifies whether to enable the MILP solver to run deterministically when distributed or concurrent mode is enabled. The DETERMINISTIC= option is valid only when DISTRIBUTED=TRUE or CONCURRENT=TRUE. You can specify the following values:
- TRUE
runs the MILP solver in deterministic distributed or concurrent mode. The solver always returns the same solution for subsequent runs on the same grid.
- FALSE
runs the MILP solver in nondeterministic distributed or concurrent mode.
By default, DETERMINISTIC=FALSE when you specify CONCURRENT=TRUE, and DETERMINISTIC=TRUE when you specify DISTRIBUTED=TRUE.
- DISTRIBUTED=TRUE | FALSE
-
specifies whether to run the MILP solver in distributed mode. For more information about this option as it relates to the standard MILP algorithm, see the section Parallel Processing. For more information about this option as it relates to the decomposition algorithm, see Chapter 18, The Decomposition Algorithm. You can specify the following values:
- TRUE
runs the MILP solver in distributed mode.
- FALSE
turns off distributed mode of the MILP solver.
By default, DISTRIBUTED=FALSE.
- NTHREADS=number
specifies the maximum number of threads for the MILP solver to use for multithreaded processing. The branch-and-cut algorithm can take advantage of multicore machines and can potentially run faster when number is greater than 1. The value of number can be any integer between 1 and 256, inclusive. The default is the value of the NTHREADS= option in PROC OPTMODEL.
Root Node Solver Options
The following options are available for choosing the root node linear programming solver in the MILP solver.
- ROOTNODE=(options)
specifies the root node LP solver and its general control options. The available options are listed in Table 3 and are equivalent to the options that are used in the LP solver of the OPTMODEL procedure. For more information about these options, see Chapter 13, The Linear Programming Solver.
Table 3: Options for the ROOTNODE Solver Statement
| Description | Option |
|---|---|
| Solver Options | |
| Specifies the type of algorithm | ALGORITHM= |
| Presolve Option | |
| Controls the dualization of the problem | DUALIZE= |
| Controls the folding of the problem | FOLD= |
| Specifies the type of presolve | PRESOLVER= |
| Control Options | |
| Specifies the frequency of printing solution progress | LOGFREQ= |
| Specifies the detail of solution progress printed in log | LOGLEVEL= |
| Simplex Algorithm Options | |
| Specifies the type of initial basis | BASIS= |
| Specifies the stopping criterion based on duality gap | DUALITYGAP= |
| Parallel Options | |
| Specifies the number of threads for the parallel MILP solver to use | NTHREADS= |