The OPTMILP Option Tuner

Getting Started: The OPTMILP Option Tuner

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;
   performance nthreads=4;
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 NTHREADS= option in the PERFORMANCE statement specifies the number of threads that the procedure can use to perform calculations. 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. For more information about the PERFORMANCE statement, see the section PERFORMANCE Statement.

Figure 15.1 shows a selection of tuning results that include the initial option configuration, the best option configurations, and the worst option configurations.

Figure 15.1: PROC OPTMILP Output

The OPTMILP Procedure

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 1234.04
Initial Run Time (geomean) 75.58
Initial Run Time (sum) 151.18
Best Run Time (geomean) 72.77
Best Run Time (sum) 145.94
Number of Improved Configurations 6
Number of Tested Configurations 28

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 0 0 0 1 1
cutgomory -1 0 1 -1 0 1 0 -1 1 2 0
heuristics -1 1 0 0 0 2 3 3 3 2 2
Mean of Run Times 75.58 72.77 72.99 73.47 74.15 75.32 109.9 110.08 111.53 71.93 47.18
Sum of Run Times 151.18 145.94 146.44 147.44 148.79 150.66 222.8 223.35 226.34 145.92 97.39
Percentage Successful 100 100 100 100 100 100 100 100 100 50 0