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 |
| 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 |