The OPTMILP Option Tuner

Example 14.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. 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 14.2.1.

Output 14.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 -1 2 2 -1 -1 2 0 -1 -1
cutgomory 1 0 2 2 0 2 2 1 0 2 0
heuristics -1 -1 -1 2 2 2 3 3 3 0 2
Mean of Run Times 76.3 73.36 73.41 73.8 74.48 75.39 109.51 109.57 110.98 24.31 43.09
Sum of Run Times 155 149.4 149.49 150.26 151.61 153.79 239.94 240.42 236.78 48.63 98.61
Percentage Successful 100 100 100 100 100 100 100 100 100 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_RGAP 56137 .000053444 3.00000 96 91.08
2 0 air05 MIN -1 1 -1 OK OPTIMAL 26374 0 0.00000 190 63.91
3 1 air04 MIN 2 0 -1 OK OPTIMAL_RGAP 56137 .000053444 3.00000 96 88.77
4 1 air05 MIN 2 0 -1 OK OPTIMAL 26374 0 0.00000 192 60.63
5 2 air04 MIN -1 2 -1 OK OPTIMAL_RGAP 56137 .000053444 3.00000 96 88.80
6 2 air05 MIN -1 2 -1 OK OPTIMAL 26374 0 0.00000 192 60.69
7 3 air04 MIN 2 2 2 OK OPTIMAL_RGAP 56137 .000053444 3.00000 96 89.16
8 3 air05 MIN 2 2 2 OK OPTIMAL 26374 0 0.00000 192 61.09
9 4 air04 MIN 2 0 2 OK OPTIMAL_RGAP 56137 .000053444 3.00000 96 89.91
10 4 air05 MIN 2 0 2 OK OPTIMAL 26374 0 0.00000 192 61.70
11 5 air04 MIN -1 2 2 OK OPTIMAL_RGAP 56137 .000053444 3.00000 96 92.00
12 5 air05 MIN -1 2 2 OK OPTIMAL 26374 0 0.00000 192 61.79
13 6 air04 MIN -1 -1 2 OK OPTIMAL_RGAP 56137 .000053444 3.00000 96 92.88
14 6 air05 MIN -1 -1 2 OK OPTIMAL 26374 0 0.00000 190 62.45
15 7 air04 MIN -1 1 2 OK OPTIMAL_RGAP 56137 .000053444 3.00000 96 95.99
16 7 air05 MIN -1 1 2 OK OPTIMAL 26374 0 0.00000 190 65.45
17 8 air04 MIN 2 -1 1 OK OPTIMAL_RGAP 56137 .000067097 3.76640 159 126.33
18 8 air05 MIN 2 -1 1 OK OPTIMAL 26374 0 0.00000 192 53.99
19 9 air04 MIN 2 0 0 OK OPTIMAL_RGAP 56137 .000067097 3.76640 162 129.10
20 9 air05 MIN 2 0 0 OK OPTIMAL 26374 0 0.00000 192 54.11