The OPTMILP Option Tuner
Getting Started: The OPTMILP Option Tuner
(View the complete code for this example.)
This example illustrates how to use the OPTMILP option tuner.
The standard set of MILP benchmark cases is called MIPLIB (Bixby et al. 1998; Achterberg, Koch, and Martin 2003) and can be found at http://miplib.zib.de/. Suppose you want to solve the problems air04 and air05 from this set. You have stored the SAS data sets air04 and air05, both in MPS format, in library a. Suppose you want to tune the CUTCLIQUE=, CUTGOMORY=, and HEURISTICS options in these two problems.
The following DATA step generates the data set probs, which contains the list of problems to be solved, and the data set optvals, which contains the list of options to be tuned:
data probs;
input name $1-8;
datalines;
a.air04
a.air05
;
data optvals;
input option $1-10;
datalines;
cutclique
cutgomory
heuristics
;
The following statements call the OPTMILP procedure and enable the option tuner:
proc optmilp maxtime=300;
tuner maxtime=1200 problems=probs optionvalues=optvals tunerout=out;
run;
The MAXTIME= option in the PROC OPTMILP statement sets the maximum run time that the procedure can use to solve one problem for each option configuration. The MAXTIME= option in the TUNER statement sets a limit on the total time that the option tuner can use to solve the problems on the list by using the generated sequence of configurations. The PROBLEMS= option specifies the name of the SAS data set that contains the list of problems to be solved. The OPTIONVALUES= option specifies the name of the SAS data set that contains the list of options to be tuned. The TUNEROUT= option specifies the name of the SAS data set that contains detailed results of the tuning process. The ODS OUTPUT statement creates an output data set from the TunerResults table. For more information about the options available in the PROC OPTMILP statement, see the section PROC OPTMILP Statement.
Figure 1 shows a selection of tuning results that include the initial option configuration, the best option configurations, and the worst option configurations.
Figure 1: PROC OPTMILP Output
| Performance Information | |
|---|---|
| Execution Mode | Single-Machine |
| Number of Threads | 4 |
| Tuner Information | |
|---|---|
| Target Solver | MILP |
| Number of Tuning Options | 3 |
| Number of Tuning Instances | 2 |
| Tuning Option Set | USER |
| Performance Goal | GEOMEAN |
| Tuner Time Limit | 1200 |
| Tuner Configurations Limit | 2147483647 |
| Tuner Summary | |
|---|---|
| Actual Tuning Time | 730.46 |
| Initial Run Time (geomean) | 16.79 |
| Initial Run Time (sum) | 33.81 |
| Best Run Time (geomean) | 12.69 |
| Best Run Time (sum) | 26.20 |
| Number of Improved Configurations | 25 |
| Number of Tested Configurations | 80 |
| Tuner Results | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Config 0 | Config 1 | Config 2 | Config 3 | Config 4 | Config 5 | Config 6 | Config 7 | Config 8 | Config 9 | Config 10 | |
| cutclique | -1 | 1 | -1 | -1 | 1 | 1 | -1 | 2 | 2 | 2 | 2 |
| cutgomory | -1 | -1 | -1 | 1 | 1 | 0 | 2 | 0 | 1 | 2 | -1 |
| heuristics | -1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| Mean of Run Times | 16.79 | 12.68 | 12.83 | 12.85 | 13.27 | 13.36 | 22.53 | 23.2 | 23.57 | 23.68 | 23.85 |
| Sum of Run Times | 33.8 | 26.19 | 26.39 | 26.5 | 27.36 | 27.99 | 45.77 | 47.63 | 47.98 | 48.25 | 48.64 |
| Percentage Successful | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 |