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.dat and air05.dat, 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=1800;
   tuner maxtime=7200 problems=probs optionvalues=optvals tunerout=out;
   performance nthreads=4;     
run;

The MAXTIME= option in the PROC OPTMILP statement sets the maximum running time that the procedure can use to solve one problem with one 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 14.1 shows a selection of tuning results that include the initial option configuration, the best option configurations, and the worst option configurations.

Figure 14.1: PROC OPTMILP Output

The OPTMILP Procedure

Performance Information
Execution Mode On client
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 100
Tuner Configurations Limit 2147483647

Tuner Summary
Actual Tuning Time 107.87
Initial Run Time (geomean) 5.81
Initial Run Time (sum) 11.64
Best Run Time (geomean) 5.60
Best Run Time (sum) 11.22
Number of Improved Configurations 16
Number of Tested Configurations 40

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 2 0 1 0 0 -1 -1 1 2 -1
cutgomory -1 2 1 0 2 0 -1 0 0 1 -1
heuristics -1 2 -1 1 1 0 1 2 3 2 3
Run Time (Mean) 5.808352 5.599335 5.608351 5.657001 5.723804 5.725461 6.028758 6.154259 6.165425 6.302673 6.367922
Run Time (Sum) 11.637 11.217 11.247 11.325 11.481 11.467 12.058 12.309 12.338 12.62 12.745
Num of Failed 0 0 0 0 0 0 0 0 0 0 0