The OPTMILP Option Tuner

Example 15.2 Tuning a Defined Set of Options for Multiple Problems

This example demonstrates how to specify a set of tuning options and tune them for multiple problems.

The following DATA step creates a PROBLEMS= data set named probs that contains the list of tuning problems. This data set is the same as in the section Getting Started: The OPTMILP Option Tuner.

data probs;
   input name $1-8;
   datalines;
a.air04
a.air05
;

The following DATA step creates an OPTIONVALUES= data set named optvals that is different from the default set, which is described in the section Default Set of Tuning Options:

data optvals;
   input option $1-10 values $12-28 initial $30-32;
   datalines;
cutclique   -1, 0, 2          -1 
cutgomory                      1
heuristics
;

The optvals data set contains a nondefault list of tuning values for the CUTCLIQUE= option in addition to initial values for the CUTCLIQUE= and CUTGOMORY= options. The options for which sets of tuning values are not specified (in this case, the CUTGOMORY= and HEURISTICS= options) are tuned for all available values if the number of values is finite. The options for which initial values are not specified (in this case, the HEURISTICS= option) are tuned by using the default initial value.

The following statements call the OPTMILP option tuner and then print the ODS table TunerResults and the TUNEROUT= data set:

proc optmilp maxtime=300;
   tuner problems=probs  optionvalues=optvals  optionmode=user 
         maxtime=1200 tunerout=out;        
   performance nthreads=4;
run;

title "Tuner Output";
proc print data=out(obs=20);
run;

The output is shown in Output 15.2.1.

Output 15.2.1: Multiple Problems with Specified Tuning Options: Output

Tuner Output

The OPTMILP Procedure

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 2 2 -1 2 0 0 0 0 -1
cutgomory 1 1 1 1 0 0 2 -1 0 1 -1
heuristics -1 -1 2 3 3 3 3 3 0 -1 -1
Mean of Run Times 75.74 71.27 72.01 73.87 74.6 75.34 101.31 102.63 88.58 4.03 42.83
Sum of Run Times 151.5 142.57 144.04 148.11 149.58 151.06 205.34 207.91 177.92 17.03 86.24
Percentage Successful 100 100 100 100 100 100 100 100 50 0 0

Tuner Output

Obs RANK PROBLEM OBJSENSE cutclique cutgomory heuristics STATUS SOLUTION_STATUS OBJECTIVE RELATIVE_GAP ABSOLUTE_GAP NODES SOLUTION_TIME
1 0 air04 MIN -1 1 -1 OK OPTIMAL 56137 0 0.00000 84 76.98
2 0 air05 MIN -1 1 -1 OK OPTIMAL_RGAP 26374 .000090809 2.39478 288 74.51
3 1 air04 MIN 2 1 -1 OK OPTIMAL 56137 0 0.00000 84 72.69
4 1 air05 MIN 2 1 -1 OK OPTIMAL_RGAP 26374 .000090809 2.39478 285 69.87
5 2 air04 MIN 2 1 2 OK OPTIMAL 56137 0 0.00000 84 73.27
6 2 air05 MIN 2 1 2 OK OPTIMAL_RGAP 26374 .000090809 2.39478 285 70.77
7 3 air04 MIN 2 1 3 OK OPTIMAL 56137 0 0.00000 76 79.31
8 3 air05 MIN 2 1 3 OK OPTIMAL_RGAP 26374 .000061883 1.63200 239 68.79
9 4 air04 MIN -1 0 3 OK OPTIMAL 56137 0 0.00000 76 80.07
10 4 air05 MIN -1 0 3 OK OPTIMAL_RGAP 26374 .000061883 1.63200 235 69.50
11 5 air04 MIN 2 0 3 OK OPTIMAL 56137 0 0.00000 76 80.88
12 5 air05 MIN 2 0 3 OK OPTIMAL_RGAP 26374 .000061883 1.63200 239 70.17
13 6 air04 MIN -1 2 3 OK OPTIMAL 56137 0 0.00000 76 83.43
14 6 air05 MIN -1 2 3 OK OPTIMAL_RGAP 26374 .000061883 1.63200 239 71.84
15 7 air04 MIN -1 -1 3 OK OPTIMAL 56137 0 0.00000 76 84.11
16 7 air05 MIN -1 -1 3 OK OPTIMAL_RGAP 26374 .000061883 1.63200 235 72.23
17 8 air04 MIN 2 1 0 OK OPTIMAL_RGAP 56137 .000017814 1.00000 145 110.09
18 8 air05 MIN 2 1 0 OK OPTIMAL_RGAP 26374 .000090809 2.39478 253 61.74
19 9 air04 MIN -1 1 1 OK OPTIMAL_RGAP 56137 .000017814 1.00000 145 110.33
20 9 air05 MIN -1 1 1 OK OPTIMAL_RGAP 26374 .000090809 2.39478 255 61.99