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 0 2 0 0 2 -1 -1 0 2 0
cutgomory 1 -1 0 -1 0 -1 -1 1 -1 -1 1
heuristics -1 0 0 2 -1 1 3 3 1 2 2
Mean of Run Times 72.01 65.03 66.1 66.41 66.95 67.26 84.49 85.67 65.6 1.91 29.14
Sum of Run Times 144.22 131.35 133 132.83 133.92 135.03 172.73 175.5 132.08 4.58 59.1
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.00 0 0.00000 317 75.87
2 0 air05 MIN -1 1 -1 OK OPTIMAL_RGAP 26374.00 .000082258 2.16929 481 68.34
3 1 air04 MIN 0 -1 0 OK OPTIMAL_RGAP 56137.00 .000097336 5.46360 293 74.83
4 1 air05 MIN 0 -1 0 OK OPTIMAL_RGAP 26374.00 .000081807 2.15741 641 56.51
5 2 air04 MIN 2 0 0 OK OPTIMAL_RGAP 56138.00 .000069234 3.88636 252 73.80
6 2 air05 MIN 2 0 0 OK OPTIMAL_RGAP 26374.00 .000094203 2.48428 488 59.20
7 3 air04 MIN 0 -1 2 OK OPTIMAL_RGAP 56137.00 .000053423 2.99886 266 65.97
8 3 air05 MIN 0 -1 2 OK OPTIMAL_RGAP 26374.00 .000068555 1.80795 663 66.86
9 4 air04 MIN 0 0 -1 OK OPTIMAL_RGAP 56137.00 .000053423 2.99886 266 67.71
10 4 air05 MIN 0 0 -1 OK OPTIMAL_RGAP 26374.00 .000068555 1.80795 663 66.20
11 5 air04 MIN 2 -1 1 OK OPTIMAL_RGAP 56138.00 .000069234 3.88636 252 73.28
12 5 air05 MIN 2 -1 1 OK OPTIMAL_RGAP 26374.00 .000094203 2.48428 488 61.74
13 6 air04 MIN 2 0 1 OK OPTIMAL_RGAP 56138.00 .000069234 3.88636 252 74.50
14 6 air05 MIN 2 0 1 OK OPTIMAL_RGAP 26374.00 .000094203 2.48428 488 60.88
15 7 air04 MIN 0 2 2 OK OPTIMAL_RGAP 56137.00 .000053423 2.99886 266 67.18
16 7 air05 MIN 0 2 2 OK OPTIMAL_RGAP 26374.00 .000068555 1.80795 663 67.78
17 8 air04 MIN 0 -1 -1 OK OPTIMAL_RGAP 56137.00 .000053423 2.99886 266 68.15
18 8 air05 MIN 0 -1 -1 OK OPTIMAL_RGAP 26374.00 .000068555 1.80795 663 66.86
19 9 air04 MIN -1 -1 2 OK OPTIMAL 56137.00 0 0.00000 317 73.30
20 9 air05 MIN -1 -1 2 OK OPTIMAL_RGAP 26374.00 .000082258 2.16929 481 63.14