Network Optimization Action Set: Syntax
Provides actions for combinatorial and network flow optimization
vrp Action
Solves the vehicle routing problem.
CASL Syntax
Summary: Input and Output Tables
If a row includes a subparameter, you can specify the name, caslib, and so on in the subparameter. Otherwise, you can specify the name, caslib, and so on in the parameter.
|
Parameter |
Subparameter |
Description |
|---|---|---|
|
— |
specifies the input data table that contains the graph link information. | |
|
— |
specifies the input data table that contains the graph node information. |
|
Parameter |
Subparameter |
Description |
|---|---|---|
|
— |
specifies the output data table for the vehicle routing problem. | |
|
— |
specifies the output data table to contain summary information about in-memory graphs. | |
|
— |
specifies the output data table to contain the graph link information along with any results from the algorithms that calculate metrics on links. | |
|
— |
specifies the output data table to contain the graph node information along with any results from the algorithms that calculate metrics on nodes. | |
|
names |
lists the names of results tables to save as CAS tables on the server. |
Parameter Descriptions
absObjGap=double
specifies a stopping criterion. When the absolute difference between the best integer objective and the objective of the best remaining branch-and-bound node becomes less than this value, the solver stops.
| Alias | absoluteObjectiveGap |
|---|---|
| Default | 1E-06 |
| Minimum value | 0 |
capacity=double
specifies the capacity of each vehicle. The capacity is the maximum amount of goods that a vehicle can pick up from the depot to be delivered to customers. The default is the largest number that can be represented by a double.
| Minimum value (exclusive) | 0 |
|---|
cutoff=double
cuts off any branch-and-bound nodes in a minimization problem that has an objective value at or above this value. The default is the largest number that can be represented by a double.
cutStrategy="AGGRESSIVE" | "AUTOMATIC" | "MODERATE" | "NONE"
specifies the level of mixed integer linear programming cutting planes to be generated. Cutting planes that are specific to the vehicle routing problem (VRP) are always generated.
| Default | AUTOMATIC |
|---|
depot="string" | double
specifies the depot node for the vehicle routing problem. The centralized depot is the source of goods to be delivered to customers (nodes). You must specify this parameter.
deterministic=TRUE | FALSE
when set to True, ensures that each invocation (with the same machine configuration and parameter settings) produces the same final result.
| Default | TRUE |
|---|
direction="DIRECTED" | "UNDIRECTED"
specifies whether to consider the input graph as directed or undirected.
| Default | UNDIRECTED |
|---|
DIRECTED
considers the input graph to be directed. In a directed graph, each link (i,j) has a direction that defines how something (such as information) can flow over that link. In link (i,j), the flow is from node i to node j. Node i is called the source (tail) node, and node j is called the sink (head) node.
display={displayTables}
specifies a list of results tables to send to the client for display.
For more information about specifying the display parameter, see the common displayTables parameter (Appendix A: Common Parameters).
distributed=TRUE | FALSE
when set to True, uses a distributed graph.
| Default | FALSE |
|---|
graph=integer
specifies the in-memory graph to use.
| Default | -1 |
|---|
heuristics="AGGRESSIVE" | "AUTOMATIC" | "BASIC" | "MODERATE" | "NONE"
determines how frequently the algorithm applies primal heuristics during the branch-and-bound tree search and affects the maximum number of iterations that are allowed in iterative heuristics. Some computationally expensive heuristics might be disabled by the solver at less aggressive levels.
| Default | AUTOMATIC |
|---|
indexOffset=integer
specifies the index offset for identifiers in the log and results output data tables. For example, if three entities are found, they are labeled entity 0, 1, and 2 by default. If the value of indexOffset is 4, the entities are labeled entity 4, 5, and 6.
| Default | 0 |
|---|---|
| Minimum value | 0 |
links={castable}
specifies the input data table that contains the graph link information.
| Long form | links={name="table-name"} |
|---|---|
| Shortcut form | links="table-name" |
The castable value can be one or more of the following:
caslib="string"
specifies the caslib for the input table that you want to use with the action. By default, the active caslib is used. Specify a value only if you need to access a table from a different caslib.
computedOnDemand=TRUE | FALSE
when set to True, creates the computed variables when the table is loaded instead of when the action begins.
| Alias | compOnDemand |
|---|---|
| Default | FALSE |
computedVars={{casinvardesc-1} <, {casinvardesc-2}, ...>}
specifies the names of the computed variables to create. Specify an expression for each variable in the computedVarsProgram parameter. If you do not specify this parameter, then all variables from computedVarsProgram are automatically included.
| Alias | compVars |
|---|
The casinvardesc value can be one or more of the following:
format="string"
specifies the format to apply to the variable.
formattedLength=integer
specifies the length of format field plus the length of the format precision.
label="string"
specifies the descriptive label for the variable.
* name="variable-name"
specifies the name for the variable.
nfd=integer
specifies the length of the format precision.
nfl=integer
specifies the length of the format field.
computedVarsProgram="string"
specifies an expression for each computed variable that you include in the computedVars parameter.
| Alias | compPgm |
|---|
dataSourceOptions={key-1=any-list-or-data-type-1 <, key-2=any-list-or-data-type-2, ...>}
specifies data source options.
| Aliases | options |
|---|---|
| dataSource |
groupBy={{casinvardesc-1} <, {casinvardesc-2}, ...>}
specifies the names of the variables to use for grouping results.
The casinvardesc value can be one or more of the following:
format="string"
specifies the format to apply to the variable.
formattedLength=integer
specifies the length of format field plus the length of the format precision.
label="string"
specifies the descriptive label for the variable.
* name="variable-name"
specifies the name for the variable.
nfd=integer
specifies the length of the format precision.
nfl=integer
specifies the length of the format field.
importOptions={fileType="ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters}
specifies the settings for reading a table from a data source.
| Alias | import |
|---|
For more information about specifying the importOptions parameter, see the common importOptions parameter (Appendix A: Common Parameters).
* name="table-name"
specifies the name of the input table.
vars={{casinvardesc-1} <, {casinvardesc-2}, ...>}
specifies the variables to use in the action.
The casinvardesc value can be one or more of the following:
format="string"
specifies the format to apply to the variable.
formattedLength=integer
specifies the length of format field plus the length of the format precision.
label="string"
specifies the descriptive label for the variable.
* name="variable-name"
specifies the name for the variable.
nfd=integer
specifies the length of the format precision.
nfl=integer
specifies the length of the format field.
where="where-expression"
specifies an expression for subsetting the input data.
whereTable={groupbytable}
specifies an input table that contains rows to use as a WHERE filter. If the vars parameter is not specified, then all the variable names that are common to the input table and the filtering table are used to find matching rows. If the where parameter for the input table and this parameter are specified, then this filtering table is applied first.
The groupbytable value can be one or more of the following:
casLib="string"
specifies the caslib for the filter table. By default, the active caslib is used.
importOptions={fileType="ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters}
specifies the settings for reading a table from a data source.
| Alias | import |
|---|
For more information about specifying the importOptions parameter, see the common importOptions parameter (Appendix A: Common Parameters).
* name="table-name"
specifies the name of the filter table.
vars={{casinvardesc-1} <, {casinvardesc-2}, ...>}
specifies the variable names to use from the filter table.
The casinvardesc value can be one or more of the following:
format="string"
specifies the format to apply to the variable.
formattedLength=integer
specifies the length of format field plus the length of the format precision.
label="string"
specifies the descriptive label for the variable.
* name="variable-name"
specifies the name for the variable.
nfd=integer
specifies the length of the format precision.
nfl=integer
specifies the length of the format field.
where="where-expression"
specifies an expression for subsetting the data from the filter table.
linksVar={linksVarOpt}
specifies the data variable names for the links table.
For more information about specifying the linksVar parameter, see the common linksVarOpt parameter (Appendix A: Common Parameters).
logFreq=integer
specifies the time interval, n (in seconds), for printing information in the node log. If n = 0, then the node log is disabled. If n > 0, then the root node processing information is printed and, if possible, an entry is made every n seconds. An entry is also made each time a better integer solution is found.
| Alias | logFrequency |
|---|---|
| Default | 5 |
| Minimum value | 0 |
logFreqTime=integer
controls the frequency n (in seconds) for displaying iteration logs for some algorithms, where n can be any integer greater than or equal to 1. This parameter is useful for computationally intensive algorithms. Setting n too low can hurt algorithm performance.
| Alias | logFrequencyTime |
|---|---|
| Default | 5 |
| Minimum value | 1 |
logLevel="AGGRESSIVE" | "BASIC" | "MODERATE" | "NONE"
controls the amount of information that is displayed in the SAS log.
| Default | BASIC |
|---|
maxNodes=integer
specifies the maximum number of branch-and-bound nodes to be processed. The default is the largest number that can be represented by a 32-bit integer.
| Minimum value | 0 |
|---|
maxRoutes=integer
specifies the maximum number of routes allowed to service demand. The specified value must be a 32-bit integer greater than or equal to 1. The default is the largest number that can be represented by a 32-bit integer.
| Minimum value | 1 |
|---|
maxSols=integer
specifies a stopping criterion. If the number of solutions that are found is greater than or equal to this value, then the algorithm stops. The default is the largest number that can be represented by a 32-bit integer.
| Minimum value | 1 |
|---|
maxTime=double
specifies the maximum amount of time for the algorithm to spend. The default is the largest number that can be represented by a double.
| Minimum value (exclusive) | 0 |
|---|
milp=TRUE | FALSE
when set to True, uses a mixed integer linear programming (MILP) solver to solve the vehicle routing problem (VRP). The MILP solver attempts to find the overall best routes by using a branch-and-cut algorithm. This algorithm can be expensive for large-scale problems. If this value is False, the algorithm uses its initial heuristics to find a feasible, but not necessarily optimal, tour as quickly as possible.
| Default | TRUE |
|---|
minRoutes=integer
specifies the minimum number of routes allowed to service demand. The specified value must be a 32-bit integer greater than or equal to 1.
| Default | 1 |
|---|---|
| Minimum value | 1 |
multiLinks=TRUE | FALSE
when set to True, includes multilinks when an input graph is read. By default, the value of this parameter is True for algorithms that support multilinks.
nodes={castable}
specifies the input data table that contains the graph node information.
| Long form | nodes={name="table-name"} |
|---|---|
| Shortcut form | nodes="table-name" |
The castable value can be one or more of the following:
caslib="string"
specifies the caslib for the input table that you want to use with the action. By default, the active caslib is used. Specify a value only if you need to access a table from a different caslib.
computedOnDemand=TRUE | FALSE
when set to True, creates the computed variables when the table is loaded instead of when the action begins.
| Alias | compOnDemand |
|---|---|
| Default | FALSE |
computedVars={{casinvardesc-1} <, {casinvardesc-2}, ...>}
specifies the names of the computed variables to create. Specify an expression for each variable in the computedVarsProgram parameter. If you do not specify this parameter, then all variables from computedVarsProgram are automatically included.
| Alias | compVars |
|---|
The casinvardesc value can be one or more of the following:
format="string"
specifies the format to apply to the variable.
formattedLength=integer
specifies the length of format field plus the length of the format precision.
label="string"
specifies the descriptive label for the variable.
* name="variable-name"
specifies the name for the variable.
nfd=integer
specifies the length of the format precision.
nfl=integer
specifies the length of the format field.
computedVarsProgram="string"
specifies an expression for each computed variable that you include in the computedVars parameter.
| Alias | compPgm |
|---|
dataSourceOptions={key-1=any-list-or-data-type-1 <, key-2=any-list-or-data-type-2, ...>}
specifies data source options.
| Aliases | options |
|---|---|
| dataSource |
importOptions={fileType="ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters}
specifies the settings for reading a table from a data source.
| Alias | import |
|---|
For more information about specifying the importOptions parameter, see the common importOptions parameter (Appendix A: Common Parameters).
* name="table-name"
specifies the name of the input table.
vars={{casinvardesc-1} <, {casinvardesc-2}, ...>}
specifies the variables to use in the action.
The casinvardesc value can be one or more of the following:
format="string"
specifies the format to apply to the variable.
formattedLength=integer
specifies the length of format field plus the length of the format precision.
label="string"
specifies the descriptive label for the variable.
* name="variable-name"
specifies the name for the variable.
nfd=integer
specifies the length of the format precision.
nfl=integer
specifies the length of the format field.
where="where-expression"
specifies an expression for subsetting the input data.
whereTable={groupbytable}
specifies an input table that contains rows to use as a WHERE filter. If the vars parameter is not specified, then all the variable names that are common to the input table and the filtering table are used to find matching rows. If the where parameter for the input table and this parameter are specified, then this filtering table is applied first.
The groupbytable value can be one or more of the following:
casLib="string"
specifies the caslib for the filter table. By default, the active caslib is used.
importOptions={fileType="ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters}
specifies the settings for reading a table from a data source.
| Alias | import |
|---|
For more information about specifying the importOptions parameter, see the common importOptions parameter (Appendix A: Common Parameters).
* name="table-name"
specifies the name of the filter table.
vars={{casinvardesc-1} <, {casinvardesc-2}, ...>}
specifies the variable names to use from the filter table.
The casinvardesc value can be one or more of the following:
format="string"
specifies the format to apply to the variable.
formattedLength=integer
specifies the length of format field plus the length of the format precision.
label="string"
specifies the descriptive label for the variable.
* name="variable-name"
specifies the name for the variable.
nfd=integer
specifies the length of the format precision.
nfl=integer
specifies the length of the format field.
where="where-expression"
specifies an expression for subsetting the data from the filter table.
nodesVar={nodesVarOpt}
specifies the data variable names for the nodes table.
For more information about specifying the nodesVar parameter, see the common nodesVarOpt parameter (Appendix A: Common Parameters).
nThreads=integer
specifies the maximum number of threads to use for multithreaded processing.
| Range | 1–1024 |
|---|
out={casouttable}
specifies the output data table for the vehicle routing problem.
For more information about specifying the out parameter, see the common casouttable parameter (Appendix A: Common Parameters).
outGraphList={casouttable}
specifies the output data table to contain summary information about in-memory graphs.
For more information about specifying the outGraphList parameter, see the common casouttable parameter (Appendix A: Common Parameters).
outLinks={casouttable}
specifies the output data table to contain the graph link information along with any results from the algorithms that calculate metrics on links.
For more information about specifying the outLinks parameter, see the common casouttable parameter (Appendix A: Common Parameters).
outNodes={casouttable}
specifies the output data table to contain the graph node information along with any results from the algorithms that calculate metrics on nodes.
For more information about specifying the outNodes parameter, see the common casouttable parameter (Appendix A: Common Parameters).
outputTables={outputTables}
lists the names of results tables to save as CAS tables on the server.
For more information about specifying the outputTables parameter, see the common outputTables parameter (Appendix A: Common Parameters).
| Alias | displayOut |
|---|
relObjGap=double
specifies a stopping criterion that is based on the best integer objective and the objective of the best remaining node.
| Alias | relativeObjectiveGap |
|---|---|
| Default | 0.0001 |
| Minimum value | 0 |
selfLinks=TRUE | FALSE
when set to True, includes self-links when an input graph is read.
| Default | TRUE |
|---|
standardizedLabels=TRUE | FALSE
when set to True, specifies that the input graph data are in a standardized format.
| Default | FALSE |
|---|
standardizedLabelsOut=TRUE | FALSE
when set to True, requests that the output graph data include standardized format.
| Default | FALSE |
|---|
target=double
specifies a stopping criterion for minimization problems. If the best integer objective is less than or equal to this value, the solver stops. The default is the largest (in magnitude) negative number that can be represented by a double.
Result Descriptions
ProblemSummary
contains a basic summary of the graph input. The result is a table. You can access the value from results.ProblemSummary.
SolutionSummary
contains a basic solution summary for the algorithm. The result is a table. You can access the value from results.SolutionSummary.
absObjGap
indicates the absolute gap between the best integer objective and the objective of the best remaining node upon termination of the solver. The result is a double. You can access the value from results.absObjGap.
bestBound
indicates the best linear programming objective value of all unprocessed nodes in the branch-and-bound tree at the end of execution. The result is a double. You can access the value from results.bestBound.
boundInf
indicates the maximum (absolute) violation by the solution of the lower or upper bounds (or both). The result is a double. You can access the value from results.boundInf.
integerInf
indicates the maximum (absolute) violation of the integrality of integer variables that are returned by the solver. The result is a double. You can access the value from results.integerInf.
numIterations
indicates the number of simplex iterations taken to solve the problem. The result is an integer. You can access the value from results.numIterations.
numNodes
specifies the number of nodes enumerated by the solver by using the branch-and-bound algorithm. The result is an integer. You can access the value from results.numNodes.
numSolutions
indicates the number of feasible solutions found. The result is an integer. You can access the value from results.numSolutions.
objective
indicates the objective value that the solver obtains at termination. The result is a double. You can access the value from results.objective.
primalInf
indicates the maximum (absolute) violation of the primal constraints by the solution. The result is a double. You can access the value from results.primalInf.
relObjGap
indicates the relative gap between the best integer objective and the objective of the best remaining node upon termination of the solver. The result is a double. You can access the value from results.relObjGap.
solutionStatus
indicates the solution status of the selected problem type (algorithm class). The result is a string. You can access the value from results.solutionStatus.
vrp Action
Solves the vehicle routing problem.
Lua Syntax
Summary: Input and Output Tables
If a row includes a subparameter, you can specify the name, caslib, and so on in the subparameter. Otherwise, you can specify the name, caslib, and so on in the parameter.
|
Parameter |
Subparameter |
Description |
|---|---|---|
|
— |
specifies the input data table that contains the graph link information. | |
|
— |
specifies the input data table that contains the graph node information. |
|
Parameter |
Subparameter |
Description |
|---|---|---|
|
— |
specifies the output data table for the vehicle routing problem. | |
|
— |
specifies the output data table to contain summary information about in-memory graphs. | |
|
— |
specifies the output data table to contain the graph link information along with any results from the algorithms that calculate metrics on links. | |
|
— |
specifies the output data table to contain the graph node information along with any results from the algorithms that calculate metrics on nodes. | |
|
names |
lists the names of results tables to save as CAS tables on the server. |
Parameter Descriptions
absObjGap=double
specifies a stopping criterion. When the absolute difference between the best integer objective and the objective of the best remaining branch-and-bound node becomes less than this value, the solver stops.
| Alias | absoluteObjectiveGap |
|---|---|
| Default | 1E-06 |
| Minimum value | 0 |
capacity=double
specifies the capacity of each vehicle. The capacity is the maximum amount of goods that a vehicle can pick up from the depot to be delivered to customers. The default is the largest number that can be represented by a double.
| Minimum value (exclusive) | 0 |
|---|
cutoff=double
cuts off any branch-and-bound nodes in a minimization problem that has an objective value at or above this value. The default is the largest number that can be represented by a double.
cutStrategy="AGGRESSIVE" | "AUTOMATIC" | "MODERATE" | "NONE"
specifies the level of mixed integer linear programming cutting planes to be generated. Cutting planes that are specific to the vehicle routing problem (VRP) are always generated.
| Default | AUTOMATIC |
|---|
depot="string" | double
specifies the depot node for the vehicle routing problem. The centralized depot is the source of goods to be delivered to customers (nodes). You must specify this parameter.
deterministic=true | false
when set to True, ensures that each invocation (with the same machine configuration and parameter settings) produces the same final result.
| Default | true |
|---|
direction="DIRECTED" | "UNDIRECTED"
specifies whether to consider the input graph as directed or undirected.
| Default | UNDIRECTED |
|---|
DIRECTED
considers the input graph to be directed. In a directed graph, each link (i,j) has a direction that defines how something (such as information) can flow over that link. In link (i,j), the flow is from node i to node j. Node i is called the source (tail) node, and node j is called the sink (head) node.
display={displayTables}
specifies a list of results tables to send to the client for display.
For more information about specifying the display parameter, see the common displayTables parameter (Appendix A: Common Parameters).
distributed=true | false
when set to True, uses a distributed graph.
| Default | false |
|---|
graph=integer
specifies the in-memory graph to use.
| Default | -1 |
|---|
heuristics="AGGRESSIVE" | "AUTOMATIC" | "BASIC" | "MODERATE" | "NONE"
determines how frequently the algorithm applies primal heuristics during the branch-and-bound tree search and affects the maximum number of iterations that are allowed in iterative heuristics. Some computationally expensive heuristics might be disabled by the solver at less aggressive levels.
| Default | AUTOMATIC |
|---|
indexOffset=integer
specifies the index offset for identifiers in the log and results output data tables. For example, if three entities are found, they are labeled entity 0, 1, and 2 by default. If the value of indexOffset is 4, the entities are labeled entity 4, 5, and 6.
| Default | 0 |
|---|---|
| Minimum value | 0 |
links={castable}
specifies the input data table that contains the graph link information.
| Long form | links={name="table-name"} |
|---|---|
| Shortcut form | links="table-name" |
The castable value can be one or more of the following:
caslib="string"
specifies the caslib for the input table that you want to use with the action. By default, the active caslib is used. Specify a value only if you need to access a table from a different caslib.
computedOnDemand=true | false
when set to True, creates the computed variables when the table is loaded instead of when the action begins.
| Alias | compOnDemand |
|---|---|
| Default | false |
computedVars={{casinvardesc-1} <, {casinvardesc-2}, ...>}
specifies the names of the computed variables to create. Specify an expression for each variable in the computedVarsProgram parameter. If you do not specify this parameter, then all variables from computedVarsProgram are automatically included.
| Alias | compVars |
|---|
The casinvardesc value can be one or more of the following:
format="string"
specifies the format to apply to the variable.
formattedLength=integer
specifies the length of format field plus the length of the format precision.
label="string"
specifies the descriptive label for the variable.
* name="variable-name"
specifies the name for the variable.
nfd=integer
specifies the length of the format precision.
nfl=integer
specifies the length of the format field.
computedVarsProgram="string"
specifies an expression for each computed variable that you include in the computedVars parameter.
| Alias | compPgm |
|---|
dataSourceOptions={key-1=any-list-or-data-type-1 <, key-2=any-list-or-data-type-2, ...>}
specifies data source options.
| Aliases | options |
|---|---|
| dataSource |
groupBy={{casinvardesc-1} <, {casinvardesc-2}, ...>}
specifies the names of the variables to use for grouping results.
The casinvardesc value can be one or more of the following:
format="string"
specifies the format to apply to the variable.
formattedLength=integer
specifies the length of format field plus the length of the format precision.
label="string"
specifies the descriptive label for the variable.
* name="variable-name"
specifies the name for the variable.
nfd=integer
specifies the length of the format precision.
nfl=integer
specifies the length of the format field.
importOptions={fileType="ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters}
specifies the settings for reading a table from a data source.
| Alias | import |
|---|
For more information about specifying the importOptions parameter, see the common importOptions parameter (Appendix A: Common Parameters).
* name="table-name"
specifies the name of the input table.
vars={{casinvardesc-1} <, {casinvardesc-2}, ...>}
specifies the variables to use in the action.
The casinvardesc value can be one or more of the following:
format="string"
specifies the format to apply to the variable.
formattedLength=integer
specifies the length of format field plus the length of the format precision.
label="string"
specifies the descriptive label for the variable.
* name="variable-name"
specifies the name for the variable.
nfd=integer
specifies the length of the format precision.
nfl=integer
specifies the length of the format field.
where="where-expression"
specifies an expression for subsetting the input data.
whereTable={groupbytable}
specifies an input table that contains rows to use as a WHERE filter. If the vars parameter is not specified, then all the variable names that are common to the input table and the filtering table are used to find matching rows. If the where parameter for the input table and this parameter are specified, then this filtering table is applied first.
The groupbytable value can be one or more of the following:
casLib="string"
specifies the caslib for the filter table. By default, the active caslib is used.
importOptions={fileType="ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters}
specifies the settings for reading a table from a data source.
| Alias | import |
|---|
For more information about specifying the importOptions parameter, see the common importOptions parameter (Appendix A: Common Parameters).
* name="table-name"
specifies the name of the filter table.
vars={{casinvardesc-1} <, {casinvardesc-2}, ...>}
specifies the variable names to use from the filter table.
The casinvardesc value can be one or more of the following:
format="string"
specifies the format to apply to the variable.
formattedLength=integer
specifies the length of format field plus the length of the format precision.
label="string"
specifies the descriptive label for the variable.
* name="variable-name"
specifies the name for the variable.
nfd=integer
specifies the length of the format precision.
nfl=integer
specifies the length of the format field.
where="where-expression"
specifies an expression for subsetting the data from the filter table.
linksVar={linksVarOpt}
specifies the data variable names for the links table.
For more information about specifying the linksVar parameter, see the common linksVarOpt parameter (Appendix A: Common Parameters).
logFreq=integer
specifies the time interval, n (in seconds), for printing information in the node log. If n = 0, then the node log is disabled. If n > 0, then the root node processing information is printed and, if possible, an entry is made every n seconds. An entry is also made each time a better integer solution is found.
| Alias | logFrequency |
|---|---|
| Default | 5 |
| Minimum value | 0 |
logFreqTime=integer
controls the frequency n (in seconds) for displaying iteration logs for some algorithms, where n can be any integer greater than or equal to 1. This parameter is useful for computationally intensive algorithms. Setting n too low can hurt algorithm performance.
| Alias | logFrequencyTime |
|---|---|
| Default | 5 |
| Minimum value | 1 |
logLevel="AGGRESSIVE" | "BASIC" | "MODERATE" | "NONE"
controls the amount of information that is displayed in the SAS log.
| Default | BASIC |
|---|
maxNodes=integer
specifies the maximum number of branch-and-bound nodes to be processed. The default is the largest number that can be represented by a 32-bit integer.
| Minimum value | 0 |
|---|
maxRoutes=integer
specifies the maximum number of routes allowed to service demand. The specified value must be a 32-bit integer greater than or equal to 1. The default is the largest number that can be represented by a 32-bit integer.
| Minimum value | 1 |
|---|
maxSols=integer
specifies a stopping criterion. If the number of solutions that are found is greater than or equal to this value, then the algorithm stops. The default is the largest number that can be represented by a 32-bit integer.
| Minimum value | 1 |
|---|
maxTime=double
specifies the maximum amount of time for the algorithm to spend. The default is the largest number that can be represented by a double.
| Minimum value (exclusive) | 0 |
|---|
milp=true | false
when set to True, uses a mixed integer linear programming (MILP) solver to solve the vehicle routing problem (VRP). The MILP solver attempts to find the overall best routes by using a branch-and-cut algorithm. This algorithm can be expensive for large-scale problems. If this value is False, the algorithm uses its initial heuristics to find a feasible, but not necessarily optimal, tour as quickly as possible.
| Default | true |
|---|
minRoutes=integer
specifies the minimum number of routes allowed to service demand. The specified value must be a 32-bit integer greater than or equal to 1.
| Default | 1 |
|---|---|
| Minimum value | 1 |
multiLinks=true | false
when set to True, includes multilinks when an input graph is read. By default, the value of this parameter is True for algorithms that support multilinks.
nodes={castable}
specifies the input data table that contains the graph node information.
| Long form | nodes={name="table-name"} |
|---|---|
| Shortcut form | nodes="table-name" |
The castable value can be one or more of the following:
caslib="string"
specifies the caslib for the input table that you want to use with the action. By default, the active caslib is used. Specify a value only if you need to access a table from a different caslib.
computedOnDemand=true | false
when set to True, creates the computed variables when the table is loaded instead of when the action begins.
| Alias | compOnDemand |
|---|---|
| Default | false |
computedVars={{casinvardesc-1} <, {casinvardesc-2}, ...>}
specifies the names of the computed variables to create. Specify an expression for each variable in the computedVarsProgram parameter. If you do not specify this parameter, then all variables from computedVarsProgram are automatically included.
| Alias | compVars |
|---|
The casinvardesc value can be one or more of the following:
format="string"
specifies the format to apply to the variable.
formattedLength=integer
specifies the length of format field plus the length of the format precision.
label="string"
specifies the descriptive label for the variable.
* name="variable-name"
specifies the name for the variable.
nfd=integer
specifies the length of the format precision.
nfl=integer
specifies the length of the format field.
computedVarsProgram="string"
specifies an expression for each computed variable that you include in the computedVars parameter.
| Alias | compPgm |
|---|
dataSourceOptions={key-1=any-list-or-data-type-1 <, key-2=any-list-or-data-type-2, ...>}
specifies data source options.
| Aliases | options |
|---|---|
| dataSource |
importOptions={fileType="ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters}
specifies the settings for reading a table from a data source.
| Alias | import |
|---|
For more information about specifying the importOptions parameter, see the common importOptions parameter (Appendix A: Common Parameters).
* name="table-name"
specifies the name of the input table.
vars={{casinvardesc-1} <, {casinvardesc-2}, ...>}
specifies the variables to use in the action.
The casinvardesc value can be one or more of the following:
format="string"
specifies the format to apply to the variable.
formattedLength=integer
specifies the length of format field plus the length of the format precision.
label="string"
specifies the descriptive label for the variable.
* name="variable-name"
specifies the name for the variable.
nfd=integer
specifies the length of the format precision.
nfl=integer
specifies the length of the format field.
where="where-expression"
specifies an expression for subsetting the input data.
whereTable={groupbytable}
specifies an input table that contains rows to use as a WHERE filter. If the vars parameter is not specified, then all the variable names that are common to the input table and the filtering table are used to find matching rows. If the where parameter for the input table and this parameter are specified, then this filtering table is applied first.
The groupbytable value can be one or more of the following:
casLib="string"
specifies the caslib for the filter table. By default, the active caslib is used.
importOptions={fileType="ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters}
specifies the settings for reading a table from a data source.
| Alias | import |
|---|
For more information about specifying the importOptions parameter, see the common importOptions parameter (Appendix A: Common Parameters).
* name="table-name"
specifies the name of the filter table.
vars={{casinvardesc-1} <, {casinvardesc-2}, ...>}
specifies the variable names to use from the filter table.
The casinvardesc value can be one or more of the following:
format="string"
specifies the format to apply to the variable.
formattedLength=integer
specifies the length of format field plus the length of the format precision.
label="string"
specifies the descriptive label for the variable.
* name="variable-name"
specifies the name for the variable.
nfd=integer
specifies the length of the format precision.
nfl=integer
specifies the length of the format field.
where="where-expression"
specifies an expression for subsetting the data from the filter table.
nodesVar={nodesVarOpt}
specifies the data variable names for the nodes table.
For more information about specifying the nodesVar parameter, see the common nodesVarOpt parameter (Appendix A: Common Parameters).
nThreads=integer
specifies the maximum number of threads to use for multithreaded processing.
| Range | 1–1024 |
|---|
out={casouttable}
specifies the output data table for the vehicle routing problem.
For more information about specifying the out parameter, see the common casouttable parameter (Appendix A: Common Parameters).
outGraphList={casouttable}
specifies the output data table to contain summary information about in-memory graphs.
For more information about specifying the outGraphList parameter, see the common casouttable parameter (Appendix A: Common Parameters).
outLinks={casouttable}
specifies the output data table to contain the graph link information along with any results from the algorithms that calculate metrics on links.
For more information about specifying the outLinks parameter, see the common casouttable parameter (Appendix A: Common Parameters).
outNodes={casouttable}
specifies the output data table to contain the graph node information along with any results from the algorithms that calculate metrics on nodes.
For more information about specifying the outNodes parameter, see the common casouttable parameter (Appendix A: Common Parameters).
outputTables={outputTables}
lists the names of results tables to save as CAS tables on the server.
For more information about specifying the outputTables parameter, see the common outputTables parameter (Appendix A: Common Parameters).
| Alias | displayOut |
|---|
relObjGap=double
specifies a stopping criterion that is based on the best integer objective and the objective of the best remaining node.
| Alias | relativeObjectiveGap |
|---|---|
| Default | 0.0001 |
| Minimum value | 0 |
selfLinks=true | false
when set to True, includes self-links when an input graph is read.
| Default | true |
|---|
standardizedLabels=true | false
when set to True, specifies that the input graph data are in a standardized format.
| Default | false |
|---|
standardizedLabelsOut=true | false
when set to True, requests that the output graph data include standardized format.
| Default | false |
|---|
target=double
specifies a stopping criterion for minimization problems. If the best integer objective is less than or equal to this value, the solver stops. The default is the largest (in magnitude) negative number that can be represented by a double.
Result Descriptions
ProblemSummary
contains a basic summary of the graph input. The result is a table. You can access the value from results.ProblemSummary.
SolutionSummary
contains a basic solution summary for the algorithm. The result is a table. You can access the value from results.SolutionSummary.
absObjGap
indicates the absolute gap between the best integer objective and the objective of the best remaining node upon termination of the solver. The result is a double. You can access the value from results.absObjGap.
bestBound
indicates the best linear programming objective value of all unprocessed nodes in the branch-and-bound tree at the end of execution. The result is a double. You can access the value from results.bestBound.
boundInf
indicates the maximum (absolute) violation by the solution of the lower or upper bounds (or both). The result is a double. You can access the value from results.boundInf.
integerInf
indicates the maximum (absolute) violation of the integrality of integer variables that are returned by the solver. The result is a double. You can access the value from results.integerInf.
numIterations
indicates the number of simplex iterations taken to solve the problem. The result is an integer. You can access the value from results.numIterations.
numNodes
specifies the number of nodes enumerated by the solver by using the branch-and-bound algorithm. The result is an integer. You can access the value from results.numNodes.
numSolutions
indicates the number of feasible solutions found. The result is an integer. You can access the value from results.numSolutions.
objective
indicates the objective value that the solver obtains at termination. The result is a double. You can access the value from results.objective.
primalInf
indicates the maximum (absolute) violation of the primal constraints by the solution. The result is a double. You can access the value from results.primalInf.
relObjGap
indicates the relative gap between the best integer objective and the objective of the best remaining node upon termination of the solver. The result is a double. You can access the value from results.relObjGap.
solutionStatus
indicates the solution status of the selected problem type (algorithm class). The result is a string. You can access the value from results.solutionStatus.
vrp Action
Solves the vehicle routing problem.
Python Syntax
Summary: Input and Output Tables
If a row includes a subparameter, you can specify the name, caslib, and so on in the subparameter. Otherwise, you can specify the name, caslib, and so on in the parameter.
|
Parameter |
Subparameter |
Description |
|---|---|---|
|
— |
specifies the input data table that contains the graph link information. | |
|
— |
specifies the input data table that contains the graph node information. |
|
Parameter |
Subparameter |
Description |
|---|---|---|
|
— |
specifies the output data table for the vehicle routing problem. | |
|
— |
specifies the output data table to contain summary information about in-memory graphs. | |
|
— |
specifies the output data table to contain the graph link information along with any results from the algorithms that calculate metrics on links. | |
|
— |
specifies the output data table to contain the graph node information along with any results from the algorithms that calculate metrics on nodes. | |
|
names |
lists the names of results tables to save as CAS tables on the server. |
Parameter Descriptions
absObjGap=double
specifies a stopping criterion. When the absolute difference between the best integer objective and the objective of the best remaining branch-and-bound node becomes less than this value, the solver stops.
| Alias | absoluteObjectiveGap |
|---|---|
| Default | 1E-06 |
| Minimum value | 0 |
capacity=double
specifies the capacity of each vehicle. The capacity is the maximum amount of goods that a vehicle can pick up from the depot to be delivered to customers. The default is the largest number that can be represented by a double.
| Minimum value (exclusive) | 0 |
|---|
cutoff=double
cuts off any branch-and-bound nodes in a minimization problem that has an objective value at or above this value. The default is the largest number that can be represented by a double.
cutStrategy="AGGRESSIVE" | "AUTOMATIC" | "MODERATE" | "NONE"
specifies the level of mixed integer linear programming cutting planes to be generated. Cutting planes that are specific to the vehicle routing problem (VRP) are always generated.
| Default | AUTOMATIC |
|---|
depot="string" | double
specifies the depot node for the vehicle routing problem. The centralized depot is the source of goods to be delivered to customers (nodes). You must specify this parameter.
deterministic=True | False
when set to True, ensures that each invocation (with the same machine configuration and parameter settings) produces the same final result.
| Default | True |
|---|
direction="DIRECTED" | "UNDIRECTED"
specifies whether to consider the input graph as directed or undirected.
| Default | UNDIRECTED |
|---|
DIRECTED
considers the input graph to be directed. In a directed graph, each link (i,j) has a direction that defines how something (such as information) can flow over that link. In link (i,j), the flow is from node i to node j. Node i is called the source (tail) node, and node j is called the sink (head) node.
display={displayTables}
specifies a list of results tables to send to the client for display.
For more information about specifying the display parameter, see the common displayTables parameter (Appendix A: Common Parameters).
distributed=True | False
when set to True, uses a distributed graph.
| Default | False |
|---|
graph=integer
specifies the in-memory graph to use.
| Default | -1 |
|---|
heuristics="AGGRESSIVE" | "AUTOMATIC" | "BASIC" | "MODERATE" | "NONE"
determines how frequently the algorithm applies primal heuristics during the branch-and-bound tree search and affects the maximum number of iterations that are allowed in iterative heuristics. Some computationally expensive heuristics might be disabled by the solver at less aggressive levels.
| Default | AUTOMATIC |
|---|
indexOffset=integer
specifies the index offset for identifiers in the log and results output data tables. For example, if three entities are found, they are labeled entity 0, 1, and 2 by default. If the value of indexOffset is 4, the entities are labeled entity 4, 5, and 6.
| Default | 0 |
|---|---|
| Minimum value | 0 |
links={castable}
specifies the input data table that contains the graph link information.
| Long form | links={"name":"table-name"} |
|---|---|
| Shortcut form | links="table-name" |
The castable value can be one or more of the following:
"caslib":"string"
specifies the caslib for the input table that you want to use with the action. By default, the active caslib is used. Specify a value only if you need to access a table from a different caslib.
"computedOnDemand":True | False
when set to True, creates the computed variables when the table is loaded instead of when the action begins.
| Alias | compOnDemand |
|---|---|
| Default | False |
"computedVars":[{casinvardesc-1} <, {casinvardesc-2}, ...>]
specifies the names of the computed variables to create. Specify an expression for each variable in the computedVarsProgram parameter. If you do not specify this parameter, then all variables from computedVarsProgram are automatically included.
| Alias | compVars |
|---|
The casinvardesc value can be one or more of the following:
"format":"string"
specifies the format to apply to the variable.
"formattedLength":integer
specifies the length of format field plus the length of the format precision.
"label":"string"
specifies the descriptive label for the variable.
* "name":"variable-name"
specifies the name for the variable.
"nfd":integer
specifies the length of the format precision.
"nfl":integer
specifies the length of the format field.
"computedVarsProgram":"string"
specifies an expression for each computed variable that you include in the computedVars parameter.
| Alias | compPgm |
|---|
"dataSourceOptions":{"key-1":{any-list-or-data-type-1} <, "key-2":{any-list-or-data-type-2}, ...>}
specifies data source options.
| Aliases | options |
|---|---|
| dataSource |
"groupBy":[{casinvardesc-1} <, {casinvardesc-2}, ...>]
specifies the names of the variables to use for grouping results.
The casinvardesc value can be one or more of the following:
"format":"string"
specifies the format to apply to the variable.
"formattedLength":integer
specifies the length of format field plus the length of the format precision.
"label":"string"
specifies the descriptive label for the variable.
* "name":"variable-name"
specifies the name for the variable.
"nfd":integer
specifies the length of the format precision.
"nfl":integer
specifies the length of the format field.
"importOptions":{"fileType":"ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters}
specifies the settings for reading a table from a data source.
| Alias | import_ |
|---|
For more information about specifying the importOptions parameter, see the common importOptions parameter (Appendix A: Common Parameters).
* "name":"table-name"
specifies the name of the input table.
"vars":[{casinvardesc-1} <, {casinvardesc-2}, ...>]
specifies the variables to use in the action.
The casinvardesc value can be one or more of the following:
"format":"string"
specifies the format to apply to the variable.
"formattedLength":integer
specifies the length of format field plus the length of the format precision.
"label":"string"
specifies the descriptive label for the variable.
* "name":"variable-name"
specifies the name for the variable.
"nfd":integer
specifies the length of the format precision.
"nfl":integer
specifies the length of the format field.
"where":"where-expression"
specifies an expression for subsetting the input data.
"whereTable":{groupbytable}
specifies an input table that contains rows to use as a WHERE filter. If the vars parameter is not specified, then all the variable names that are common to the input table and the filtering table are used to find matching rows. If the where parameter for the input table and this parameter are specified, then this filtering table is applied first.
The groupbytable value can be one or more of the following:
"casLib":"string"
specifies the caslib for the filter table. By default, the active caslib is used.
"importOptions":{"fileType":"ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters}
specifies the settings for reading a table from a data source.
| Alias | import_ |
|---|
For more information about specifying the importOptions parameter, see the common importOptions parameter (Appendix A: Common Parameters).
* "name":"table-name"
specifies the name of the filter table.
"vars":[{casinvardesc-1} <, {casinvardesc-2}, ...>]
specifies the variable names to use from the filter table.
The casinvardesc value can be one or more of the following:
"format":"string"
specifies the format to apply to the variable.
"formattedLength":integer
specifies the length of format field plus the length of the format precision.
"label":"string"
specifies the descriptive label for the variable.
* "name":"variable-name"
specifies the name for the variable.
"nfd":integer
specifies the length of the format precision.
"nfl":integer
specifies the length of the format field.
"where":"where-expression"
specifies an expression for subsetting the data from the filter table.
linksVar={linksVarOpt}
specifies the data variable names for the links table.
For more information about specifying the linksVar parameter, see the common linksVarOpt parameter (Appendix A: Common Parameters).
logFreq=integer
specifies the time interval, n (in seconds), for printing information in the node log. If n = 0, then the node log is disabled. If n > 0, then the root node processing information is printed and, if possible, an entry is made every n seconds. An entry is also made each time a better integer solution is found.
| Alias | logFrequency |
|---|---|
| Default | 5 |
| Minimum value | 0 |
logFreqTime=integer
controls the frequency n (in seconds) for displaying iteration logs for some algorithms, where n can be any integer greater than or equal to 1. This parameter is useful for computationally intensive algorithms. Setting n too low can hurt algorithm performance.
| Alias | logFrequencyTime |
|---|---|
| Default | 5 |
| Minimum value | 1 |
logLevel="AGGRESSIVE" | "BASIC" | "MODERATE" | "NONE"
controls the amount of information that is displayed in the SAS log.
| Default | BASIC |
|---|
maxNodes=integer
specifies the maximum number of branch-and-bound nodes to be processed. The default is the largest number that can be represented by a 32-bit integer.
| Minimum value | 0 |
|---|
maxRoutes=integer
specifies the maximum number of routes allowed to service demand. The specified value must be a 32-bit integer greater than or equal to 1. The default is the largest number that can be represented by a 32-bit integer.
| Minimum value | 1 |
|---|
maxSols=integer
specifies a stopping criterion. If the number of solutions that are found is greater than or equal to this value, then the algorithm stops. The default is the largest number that can be represented by a 32-bit integer.
| Minimum value | 1 |
|---|
maxTime=double
specifies the maximum amount of time for the algorithm to spend. The default is the largest number that can be represented by a double.
| Minimum value (exclusive) | 0 |
|---|
milp=True | False
when set to True, uses a mixed integer linear programming (MILP) solver to solve the vehicle routing problem (VRP). The MILP solver attempts to find the overall best routes by using a branch-and-cut algorithm. This algorithm can be expensive for large-scale problems. If this value is False, the algorithm uses its initial heuristics to find a feasible, but not necessarily optimal, tour as quickly as possible.
| Default | True |
|---|
minRoutes=integer
specifies the minimum number of routes allowed to service demand. The specified value must be a 32-bit integer greater than or equal to 1.
| Default | 1 |
|---|---|
| Minimum value | 1 |
multiLinks=True | False
when set to True, includes multilinks when an input graph is read. By default, the value of this parameter is True for algorithms that support multilinks.
nodes={castable}
specifies the input data table that contains the graph node information.
| Long form | nodes={"name":"table-name"} |
|---|---|
| Shortcut form | nodes="table-name" |
The castable value can be one or more of the following:
"caslib":"string"
specifies the caslib for the input table that you want to use with the action. By default, the active caslib is used. Specify a value only if you need to access a table from a different caslib.
"computedOnDemand":True | False
when set to True, creates the computed variables when the table is loaded instead of when the action begins.
| Alias | compOnDemand |
|---|---|
| Default | False |
"computedVars":[{casinvardesc-1} <, {casinvardesc-2}, ...>]
specifies the names of the computed variables to create. Specify an expression for each variable in the computedVarsProgram parameter. If you do not specify this parameter, then all variables from computedVarsProgram are automatically included.
| Alias | compVars |
|---|
The casinvardesc value can be one or more of the following:
"format":"string"
specifies the format to apply to the variable.
"formattedLength":integer
specifies the length of format field plus the length of the format precision.
"label":"string"
specifies the descriptive label for the variable.
* "name":"variable-name"
specifies the name for the variable.
"nfd":integer
specifies the length of the format precision.
"nfl":integer
specifies the length of the format field.
"computedVarsProgram":"string"
specifies an expression for each computed variable that you include in the computedVars parameter.
| Alias | compPgm |
|---|
"dataSourceOptions":{"key-1":{any-list-or-data-type-1} <, "key-2":{any-list-or-data-type-2}, ...>}
specifies data source options.
| Aliases | options |
|---|---|
| dataSource |
"importOptions":{"fileType":"ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters}
specifies the settings for reading a table from a data source.
| Alias | import_ |
|---|
For more information about specifying the importOptions parameter, see the common importOptions parameter (Appendix A: Common Parameters).
* "name":"table-name"
specifies the name of the input table.
"vars":[{casinvardesc-1} <, {casinvardesc-2}, ...>]
specifies the variables to use in the action.
The casinvardesc value can be one or more of the following:
"format":"string"
specifies the format to apply to the variable.
"formattedLength":integer
specifies the length of format field plus the length of the format precision.
"label":"string"
specifies the descriptive label for the variable.
* "name":"variable-name"
specifies the name for the variable.
"nfd":integer
specifies the length of the format precision.
"nfl":integer
specifies the length of the format field.
"where":"where-expression"
specifies an expression for subsetting the input data.
"whereTable":{groupbytable}
specifies an input table that contains rows to use as a WHERE filter. If the vars parameter is not specified, then all the variable names that are common to the input table and the filtering table are used to find matching rows. If the where parameter for the input table and this parameter are specified, then this filtering table is applied first.
The groupbytable value can be one or more of the following:
"casLib":"string"
specifies the caslib for the filter table. By default, the active caslib is used.
"importOptions":{"fileType":"ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters}
specifies the settings for reading a table from a data source.
| Alias | import_ |
|---|
For more information about specifying the importOptions parameter, see the common importOptions parameter (Appendix A: Common Parameters).
* "name":"table-name"
specifies the name of the filter table.
"vars":[{casinvardesc-1} <, {casinvardesc-2}, ...>]
specifies the variable names to use from the filter table.
The casinvardesc value can be one or more of the following:
"format":"string"
specifies the format to apply to the variable.
"formattedLength":integer
specifies the length of format field plus the length of the format precision.
"label":"string"
specifies the descriptive label for the variable.
* "name":"variable-name"
specifies the name for the variable.
"nfd":integer
specifies the length of the format precision.
"nfl":integer
specifies the length of the format field.
"where":"where-expression"
specifies an expression for subsetting the data from the filter table.
nodesVar={nodesVarOpt}
specifies the data variable names for the nodes table.
For more information about specifying the nodesVar parameter, see the common nodesVarOpt parameter (Appendix A: Common Parameters).
nThreads=integer
specifies the maximum number of threads to use for multithreaded processing.
| Range | 1–1024 |
|---|
out={casouttable}
specifies the output data table for the vehicle routing problem.
For more information about specifying the out parameter, see the common casouttable parameter (Appendix A: Common Parameters).
outGraphList={casouttable}
specifies the output data table to contain summary information about in-memory graphs.
For more information about specifying the outGraphList parameter, see the common casouttable parameter (Appendix A: Common Parameters).
outLinks={casouttable}
specifies the output data table to contain the graph link information along with any results from the algorithms that calculate metrics on links.
For more information about specifying the outLinks parameter, see the common casouttable parameter (Appendix A: Common Parameters).
outNodes={casouttable}
specifies the output data table to contain the graph node information along with any results from the algorithms that calculate metrics on nodes.
For more information about specifying the outNodes parameter, see the common casouttable parameter (Appendix A: Common Parameters).
outputTables={outputTables}
lists the names of results tables to save as CAS tables on the server.
For more information about specifying the outputTables parameter, see the common outputTables parameter (Appendix A: Common Parameters).
| Alias | displayOut |
|---|
relObjGap=double
specifies a stopping criterion that is based on the best integer objective and the objective of the best remaining node.
| Alias | relativeObjectiveGap |
|---|---|
| Default | 0.0001 |
| Minimum value | 0 |
selfLinks=True | False
when set to True, includes self-links when an input graph is read.
| Default | True |
|---|
standardizedLabels=True | False
when set to True, specifies that the input graph data are in a standardized format.
| Default | False |
|---|
standardizedLabelsOut=True | False
when set to True, requests that the output graph data include standardized format.
| Default | False |
|---|
target=double
specifies a stopping criterion for minimization problems. If the best integer objective is less than or equal to this value, the solver stops. The default is the largest (in magnitude) negative number that can be represented by a double.
Result Descriptions
ProblemSummary
contains a basic summary of the graph input. The result is a table. You can access the value from results.ProblemSummary.
SolutionSummary
contains a basic solution summary for the algorithm. The result is a table. You can access the value from results.SolutionSummary.
absObjGap
indicates the absolute gap between the best integer objective and the objective of the best remaining node upon termination of the solver. The result is a double. You can access the value from results.absObjGap.
bestBound
indicates the best linear programming objective value of all unprocessed nodes in the branch-and-bound tree at the end of execution. The result is a double. You can access the value from results.bestBound.
boundInf
indicates the maximum (absolute) violation by the solution of the lower or upper bounds (or both). The result is a double. You can access the value from results.boundInf.
integerInf
indicates the maximum (absolute) violation of the integrality of integer variables that are returned by the solver. The result is a double. You can access the value from results.integerInf.
numIterations
indicates the number of simplex iterations taken to solve the problem. The result is an integer. You can access the value from results.numIterations.
numNodes
specifies the number of nodes enumerated by the solver by using the branch-and-bound algorithm. The result is an integer. You can access the value from results.numNodes.
numSolutions
indicates the number of feasible solutions found. The result is an integer. You can access the value from results.numSolutions.
objective
indicates the objective value that the solver obtains at termination. The result is a double. You can access the value from results.objective.
primalInf
indicates the maximum (absolute) violation of the primal constraints by the solution. The result is a double. You can access the value from results.primalInf.
relObjGap
indicates the relative gap between the best integer objective and the objective of the best remaining node upon termination of the solver. The result is a double. You can access the value from results.relObjGap.
solutionStatus
indicates the solution status of the selected problem type (algorithm class). The result is a string. You can access the value from results.solutionStatus.
vrp Action
Solves the vehicle routing problem.
R Syntax
Summary: Input and Output Tables
If a row includes a subparameter, you can specify the name, caslib, and so on in the subparameter. Otherwise, you can specify the name, caslib, and so on in the parameter.
|
Parameter |
Subparameter |
Description |
|---|---|---|
|
— |
specifies the input data table that contains the graph link information. | |
|
— |
specifies the input data table that contains the graph node information. |
|
Parameter |
Subparameter |
Description |
|---|---|---|
|
— |
specifies the output data table for the vehicle routing problem. | |
|
— |
specifies the output data table to contain summary information about in-memory graphs. | |
|
— |
specifies the output data table to contain the graph link information along with any results from the algorithms that calculate metrics on links. | |
|
— |
specifies the output data table to contain the graph node information along with any results from the algorithms that calculate metrics on nodes. | |
|
names |
lists the names of results tables to save as CAS tables on the server. |
Parameter Descriptions
absObjGap=double
specifies a stopping criterion. When the absolute difference between the best integer objective and the objective of the best remaining branch-and-bound node becomes less than this value, the solver stops.
| Alias | absoluteObjectiveGap |
|---|---|
| Default | 1E-06 |
| Minimum value | 0 |
capacity=double
specifies the capacity of each vehicle. The capacity is the maximum amount of goods that a vehicle can pick up from the depot to be delivered to customers. The default is the largest number that can be represented by a double.
| Minimum value (exclusive) | 0 |
|---|
cutoff=double
cuts off any branch-and-bound nodes in a minimization problem that has an objective value at or above this value. The default is the largest number that can be represented by a double.
cutStrategy="AGGRESSIVE" | "AUTOMATIC" | "MODERATE" | "NONE"
specifies the level of mixed integer linear programming cutting planes to be generated. Cutting planes that are specific to the vehicle routing problem (VRP) are always generated.
| Default | AUTOMATIC |
|---|
depot="string" | double
specifies the depot node for the vehicle routing problem. The centralized depot is the source of goods to be delivered to customers (nodes). You must specify this parameter.
deterministic=TRUE | FALSE
when set to True, ensures that each invocation (with the same machine configuration and parameter settings) produces the same final result.
| Default | TRUE |
|---|
direction="DIRECTED" | "UNDIRECTED"
specifies whether to consider the input graph as directed or undirected.
| Default | UNDIRECTED |
|---|
DIRECTED
considers the input graph to be directed. In a directed graph, each link (i,j) has a direction that defines how something (such as information) can flow over that link. In link (i,j), the flow is from node i to node j. Node i is called the source (tail) node, and node j is called the sink (head) node.
display=list(displayTables)
specifies a list of results tables to send to the client for display.
For more information about specifying the display parameter, see the common displayTables parameter (Appendix A: Common Parameters).
distributed=TRUE | FALSE
when set to True, uses a distributed graph.
| Default | FALSE |
|---|
graph=integer
specifies the in-memory graph to use.
| Default | -1 |
|---|
heuristics="AGGRESSIVE" | "AUTOMATIC" | "BASIC" | "MODERATE" | "NONE"
determines how frequently the algorithm applies primal heuristics during the branch-and-bound tree search and affects the maximum number of iterations that are allowed in iterative heuristics. Some computationally expensive heuristics might be disabled by the solver at less aggressive levels.
| Default | AUTOMATIC |
|---|
indexOffset=integer
specifies the index offset for identifiers in the log and results output data tables. For example, if three entities are found, they are labeled entity 0, 1, and 2 by default. If the value of indexOffset is 4, the entities are labeled entity 4, 5, and 6.
| Default | 0 |
|---|---|
| Minimum value | 0 |
links=list(castable)
specifies the input data table that contains the graph link information.
| Long form | links=list(name="table-name") |
|---|---|
| Shortcut form | links="table-name" |
The castable value can be one or more of the following:
caslib="string"
specifies the caslib for the input table that you want to use with the action. By default, the active caslib is used. Specify a value only if you need to access a table from a different caslib.
computedOnDemand=TRUE | FALSE
when set to True, creates the computed variables when the table is loaded instead of when the action begins.
| Alias | compOnDemand |
|---|---|
| Default | FALSE |
computedVars=list( list(casinvardesc-1) <, list(casinvardesc-2), ...>)
specifies the names of the computed variables to create. Specify an expression for each variable in the computedVarsProgram parameter. If you do not specify this parameter, then all variables from computedVarsProgram are automatically included.
| Alias | compVars |
|---|
The casinvardesc value can be one or more of the following:
format="string"
specifies the format to apply to the variable.
formattedLength=integer
specifies the length of format field plus the length of the format precision.
label="string"
specifies the descriptive label for the variable.
* name="variable-name"
specifies the name for the variable.
nfd=integer
specifies the length of the format precision.
nfl=integer
specifies the length of the format field.
computedVarsProgram="string"
specifies an expression for each computed variable that you include in the computedVars parameter.
| Alias | compPgm |
|---|
dataSourceOptions=list(key-1=list(any-list-or-data-type-1) <, key-2=list(any-list-or-data-type-2), ...>)
specifies data source options.
| Aliases | options |
|---|---|
| dataSource |
groupBy=list( list(casinvardesc-1) <, list(casinvardesc-2), ...>)
specifies the names of the variables to use for grouping results.
The casinvardesc value can be one or more of the following:
format="string"
specifies the format to apply to the variable.
formattedLength=integer
specifies the length of format field plus the length of the format precision.
label="string"
specifies the descriptive label for the variable.
* name="variable-name"
specifies the name for the variable.
nfd=integer
specifies the length of the format precision.
nfl=integer
specifies the length of the format field.
importOptions=list(fileType="ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters)
specifies the settings for reading a table from a data source.
| Alias | import |
|---|
For more information about specifying the importOptions parameter, see the common importOptions parameter (Appendix A: Common Parameters).
* name="table-name"
specifies the name of the input table.
vars=list( list(casinvardesc-1) <, list(casinvardesc-2), ...>)
specifies the variables to use in the action.
The casinvardesc value can be one or more of the following:
format="string"
specifies the format to apply to the variable.
formattedLength=integer
specifies the length of format field plus the length of the format precision.
label="string"
specifies the descriptive label for the variable.
* name="variable-name"
specifies the name for the variable.
nfd=integer
specifies the length of the format precision.
nfl=integer
specifies the length of the format field.
where="where-expression"
specifies an expression for subsetting the input data.
whereTable=list(groupbytable)
specifies an input table that contains rows to use as a WHERE filter. If the vars parameter is not specified, then all the variable names that are common to the input table and the filtering table are used to find matching rows. If the where parameter for the input table and this parameter are specified, then this filtering table is applied first.
The groupbytable value can be one or more of the following:
casLib="string"
specifies the caslib for the filter table. By default, the active caslib is used.
importOptions=list(fileType="ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters)
specifies the settings for reading a table from a data source.
| Alias | import |
|---|
For more information about specifying the importOptions parameter, see the common importOptions parameter (Appendix A: Common Parameters).
* name="table-name"
specifies the name of the filter table.
vars=list( list(casinvardesc-1) <, list(casinvardesc-2), ...>)
specifies the variable names to use from the filter table.
The casinvardesc value can be one or more of the following:
format="string"
specifies the format to apply to the variable.
formattedLength=integer
specifies the length of format field plus the length of the format precision.
label="string"
specifies the descriptive label for the variable.
* name="variable-name"
specifies the name for the variable.
nfd=integer
specifies the length of the format precision.
nfl=integer
specifies the length of the format field.
where="where-expression"
specifies an expression for subsetting the data from the filter table.
linksVar=list(linksVarOpt)
specifies the data variable names for the links table.
For more information about specifying the linksVar parameter, see the common linksVarOpt parameter (Appendix A: Common Parameters).
logFreq=integer
specifies the time interval, n (in seconds), for printing information in the node log. If n = 0, then the node log is disabled. If n > 0, then the root node processing information is printed and, if possible, an entry is made every n seconds. An entry is also made each time a better integer solution is found.
| Alias | logFrequency |
|---|---|
| Default | 5 |
| Minimum value | 0 |
logFreqTime=integer
controls the frequency n (in seconds) for displaying iteration logs for some algorithms, where n can be any integer greater than or equal to 1. This parameter is useful for computationally intensive algorithms. Setting n too low can hurt algorithm performance.
| Alias | logFrequencyTime |
|---|---|
| Default | 5 |
| Minimum value | 1 |
logLevel="AGGRESSIVE" | "BASIC" | "MODERATE" | "NONE"
controls the amount of information that is displayed in the SAS log.
| Default | BASIC |
|---|
maxNodes=integer
specifies the maximum number of branch-and-bound nodes to be processed. The default is the largest number that can be represented by a 32-bit integer.
| Minimum value | 0 |
|---|
maxRoutes=integer
specifies the maximum number of routes allowed to service demand. The specified value must be a 32-bit integer greater than or equal to 1. The default is the largest number that can be represented by a 32-bit integer.
| Minimum value | 1 |
|---|
maxSols=integer
specifies a stopping criterion. If the number of solutions that are found is greater than or equal to this value, then the algorithm stops. The default is the largest number that can be represented by a 32-bit integer.
| Minimum value | 1 |
|---|
maxTime=double
specifies the maximum amount of time for the algorithm to spend. The default is the largest number that can be represented by a double.
| Minimum value (exclusive) | 0 |
|---|
milp=TRUE | FALSE
when set to True, uses a mixed integer linear programming (MILP) solver to solve the vehicle routing problem (VRP). The MILP solver attempts to find the overall best routes by using a branch-and-cut algorithm. This algorithm can be expensive for large-scale problems. If this value is False, the algorithm uses its initial heuristics to find a feasible, but not necessarily optimal, tour as quickly as possible.
| Default | TRUE |
|---|
minRoutes=integer
specifies the minimum number of routes allowed to service demand. The specified value must be a 32-bit integer greater than or equal to 1.
| Default | 1 |
|---|---|
| Minimum value | 1 |
multiLinks=TRUE | FALSE
when set to True, includes multilinks when an input graph is read. By default, the value of this parameter is True for algorithms that support multilinks.
nodes=list(castable)
specifies the input data table that contains the graph node information.
| Long form | nodes=list(name="table-name") |
|---|---|
| Shortcut form | nodes="table-name" |
The castable value can be one or more of the following:
caslib="string"
specifies the caslib for the input table that you want to use with the action. By default, the active caslib is used. Specify a value only if you need to access a table from a different caslib.
computedOnDemand=TRUE | FALSE
when set to True, creates the computed variables when the table is loaded instead of when the action begins.
| Alias | compOnDemand |
|---|---|
| Default | FALSE |
computedVars=list( list(casinvardesc-1) <, list(casinvardesc-2), ...>)
specifies the names of the computed variables to create. Specify an expression for each variable in the computedVarsProgram parameter. If you do not specify this parameter, then all variables from computedVarsProgram are automatically included.
| Alias | compVars |
|---|
The casinvardesc value can be one or more of the following:
format="string"
specifies the format to apply to the variable.
formattedLength=integer
specifies the length of format field plus the length of the format precision.
label="string"
specifies the descriptive label for the variable.
* name="variable-name"
specifies the name for the variable.
nfd=integer
specifies the length of the format precision.
nfl=integer
specifies the length of the format field.
computedVarsProgram="string"
specifies an expression for each computed variable that you include in the computedVars parameter.
| Alias | compPgm |
|---|
dataSourceOptions=list(key-1=list(any-list-or-data-type-1) <, key-2=list(any-list-or-data-type-2), ...>)
specifies data source options.
| Aliases | options |
|---|---|
| dataSource |
importOptions=list(fileType="ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters)
specifies the settings for reading a table from a data source.
| Alias | import |
|---|
For more information about specifying the importOptions parameter, see the common importOptions parameter (Appendix A: Common Parameters).
* name="table-name"
specifies the name of the input table.
vars=list( list(casinvardesc-1) <, list(casinvardesc-2), ...>)
specifies the variables to use in the action.
The casinvardesc value can be one or more of the following:
format="string"
specifies the format to apply to the variable.
formattedLength=integer
specifies the length of format field plus the length of the format precision.
label="string"
specifies the descriptive label for the variable.
* name="variable-name"
specifies the name for the variable.
nfd=integer
specifies the length of the format precision.
nfl=integer
specifies the length of the format field.
where="where-expression"
specifies an expression for subsetting the input data.
whereTable=list(groupbytable)
specifies an input table that contains rows to use as a WHERE filter. If the vars parameter is not specified, then all the variable names that are common to the input table and the filtering table are used to find matching rows. If the where parameter for the input table and this parameter are specified, then this filtering table is applied first.
The groupbytable value can be one or more of the following:
casLib="string"
specifies the caslib for the filter table. By default, the active caslib is used.
importOptions=list(fileType="ANY" | "AUDIO" | "AUTO" | "BASESAS" | "CSV" | "DOCUMENT" | "DTA" | "ESP" | "EXCEL" | "FMT" | "HDAT" | "IMAGE" | "JMP" | "LASR" | "PARQUET" | "SPSS" | "VIDEO" | "XLS", fileType-specific-parameters)
specifies the settings for reading a table from a data source.
| Alias | import |
|---|
For more information about specifying the importOptions parameter, see the common importOptions parameter (Appendix A: Common Parameters).
* name="table-name"
specifies the name of the filter table.
vars=list( list(casinvardesc-1) <, list(casinvardesc-2), ...>)
specifies the variable names to use from the filter table.
The casinvardesc value can be one or more of the following:
format="string"
specifies the format to apply to the variable.
formattedLength=integer
specifies the length of format field plus the length of the format precision.
label="string"
specifies the descriptive label for the variable.
* name="variable-name"
specifies the name for the variable.
nfd=integer
specifies the length of the format precision.
nfl=integer
specifies the length of the format field.
where="where-expression"
specifies an expression for subsetting the data from the filter table.
nodesVar=list(nodesVarOpt)
specifies the data variable names for the nodes table.
For more information about specifying the nodesVar parameter, see the common nodesVarOpt parameter (Appendix A: Common Parameters).
nThreads=integer
specifies the maximum number of threads to use for multithreaded processing.
| Range | 1–1024 |
|---|
out=list(casouttable)
specifies the output data table for the vehicle routing problem.
For more information about specifying the out parameter, see the common casouttable parameter (Appendix A: Common Parameters).
outGraphList=list(casouttable)
specifies the output data table to contain summary information about in-memory graphs.
For more information about specifying the outGraphList parameter, see the common casouttable parameter (Appendix A: Common Parameters).
outLinks=list(casouttable)
specifies the output data table to contain the graph link information along with any results from the algorithms that calculate metrics on links.
For more information about specifying the outLinks parameter, see the common casouttable parameter (Appendix A: Common Parameters).
outNodes=list(casouttable)
specifies the output data table to contain the graph node information along with any results from the algorithms that calculate metrics on nodes.
For more information about specifying the outNodes parameter, see the common casouttable parameter (Appendix A: Common Parameters).
outputTables=list(outputTables)
lists the names of results tables to save as CAS tables on the server.
For more information about specifying the outputTables parameter, see the common outputTables parameter (Appendix A: Common Parameters).
| Alias | displayOut |
|---|
relObjGap=double
specifies a stopping criterion that is based on the best integer objective and the objective of the best remaining node.
| Alias | relativeObjectiveGap |
|---|---|
| Default | 0.0001 |
| Minimum value | 0 |
selfLinks=TRUE | FALSE
when set to True, includes self-links when an input graph is read.
| Default | TRUE |
|---|
standardizedLabels=TRUE | FALSE
when set to True, specifies that the input graph data are in a standardized format.
| Default | FALSE |
|---|
standardizedLabelsOut=TRUE | FALSE
when set to True, requests that the output graph data include standardized format.
| Default | FALSE |
|---|
target=double
specifies a stopping criterion for minimization problems. If the best integer objective is less than or equal to this value, the solver stops. The default is the largest (in magnitude) negative number that can be represented by a double.
Result Descriptions
ProblemSummary
contains a basic summary of the graph input. The result is a table. You can access the value from results.ProblemSummary.
SolutionSummary
contains a basic solution summary for the algorithm. The result is a table. You can access the value from results.SolutionSummary.
absObjGap
indicates the absolute gap between the best integer objective and the objective of the best remaining node upon termination of the solver. The result is a double. You can access the value from results.absObjGap.
bestBound
indicates the best linear programming objective value of all unprocessed nodes in the branch-and-bound tree at the end of execution. The result is a double. You can access the value from results.bestBound.
boundInf
indicates the maximum (absolute) violation by the solution of the lower or upper bounds (or both). The result is a double. You can access the value from results.boundInf.
integerInf
indicates the maximum (absolute) violation of the integrality of integer variables that are returned by the solver. The result is a double. You can access the value from results.integerInf.
numIterations
indicates the number of simplex iterations taken to solve the problem. The result is an integer. You can access the value from results.numIterations.
numNodes
specifies the number of nodes enumerated by the solver by using the branch-and-bound algorithm. The result is an integer. You can access the value from results.numNodes.
numSolutions
indicates the number of feasible solutions found. The result is an integer. You can access the value from results.numSolutions.
objective
indicates the objective value that the solver obtains at termination. The result is a double. You can access the value from results.objective.
primalInf
indicates the maximum (absolute) violation of the primal constraints by the solution. The result is a double. You can access the value from results.primalInf.
relObjGap
indicates the relative gap between the best integer objective and the objective of the best remaining node upon termination of the solver. The result is a double. You can access the value from results.relObjGap.
solutionStatus
indicates the solution status of the selected problem type (algorithm class). The result is a string. You can access the value from results.solutionStatus.