The OPTMILP Option Tuner

Example 16.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 16.2.1.

Output 16.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 -1 -1 -1 -1 -1 0 0 0 0 0
cutgomory 1 2 1 1 0 0 0 2 -1 1 2
heuristics -1 0 1 0 0 1 1 1 1 1 0
Mean of Run Times 28.91 25.66 25.76 25.9 25.91 25.94 49.2 49.27 49.59 49.65 49.72
Sum of Run Times 61.52 54.46 54.11 54.14 54.29 54.33 99.3 99.53 100.06 100.15 100.26
Percentage Successful 100 100 100 100 100 100 100 100 100 100 100

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.00 .000089076 5.00000 125 20.27
2 0 air05 MIN -1 1 -1 OK OPTIMAL_RGAP 26374.00 .000082710 2.18123 1194 41.25
3 1 air04 MIN -1 2 0 OK OPTIMAL_RGAP 56137.00 .000089076 5.00000 162 18.11
4 1 air05 MIN -1 2 0 OK OPTIMAL 26374.00 0 0.00000 858 36.35
5 2 air04 MIN -1 1 1 OK OPTIMAL_RGAP 56137.00 .000089076 5.00000 193 18.79
6 2 air05 MIN -1 1 1 OK OPTIMAL 26374.00 0 0.00000 859 35.32
7 3 air04 MIN -1 1 0 OK OPTIMAL_RGAP 56137.00 .000089076 5.00000 193 19.21
8 3 air05 MIN -1 1 0 OK OPTIMAL 26374.00 0 0.00000 859 34.92
9 4 air04 MIN -1 0 0 OK OPTIMAL_RGAP 56137.00 .000089076 5.00000 193 19.05
10 4 air05 MIN -1 0 0 OK OPTIMAL 26374.00 0 0.00000 859 35.24
11 5 air04 MIN -1 0 1 OK OPTIMAL_RGAP 56137.00 .000089076 5.00000 193 19.09
12 5 air05 MIN -1 0 1 OK OPTIMAL 26374.00 0 0.00000 859 35.24
13 6 air04 MIN -1 2 1 OK OPTIMAL_RGAP 56137.00 .000089076 5.00000 162 18.11
14 6 air05 MIN -1 2 1 OK OPTIMAL 26374.00 0 0.00000 858 37.23
15 7 air04 MIN -1 -1 1 OK OPTIMAL_RGAP 56137.00 .000089076 5.00000 193 19.19
16 7 air05 MIN -1 -1 1 OK OPTIMAL 26374.00 0 0.00000 859 35.78
17 8 air04 MIN -1 -1 0 OK OPTIMAL_RGAP 56137.00 .000089076 5.00000 193 20.11
18 8 air05 MIN -1 -1 0 OK OPTIMAL 26374.00 0 0.00000 859 36.60
19 9 air04 MIN 2 2 0 OK OPTIMAL_RGAP 56137.00 .000089076 5.00000 162 17.90
20 9 air05 MIN 2 2 0 OK OPTIMAL_RGAP 26374.00 .000062540 1.64932 1170 41.53