The OPTMILP Option Tuner
Example 20.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 table named mylib.probs that contains the list of tuning problems. This data table is the same as in the section Getting Started: The OPTMILP Option Tuner.
data mylib.probs;
input name $1-8;
datalines;
air04
air05
;
The following DATA step creates an OPTIONVALUES= data table named mylib.optvals that is different from the default set, which is described in the section Default Set of Tuning Options:
data mylib.optvals;
input option $1-12 values $13-41 initial $43-53;
datalines;
cutclique automatic, none, aggressive automatic
cutgomory moderate
heuristics
;
The mylib.optvals data table 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 table:
proc optmilp maxtime=300;
tuner problems=mylib.probs optionvalues=mylib.optvals optionmode=user
maxtime=1200 tunerout=mylib.out;
run;
title "Tuner Output";
proc print data=mylib.out(obs=16);
run;
The output is shown in Output 20.2.1.
Output 20.2.1: Multiple Problems with Specified Tuning Options: Output
| Tuner Results | ||||||
|---|---|---|---|---|---|---|
| Configuration | cutClique | cutGomory | heuristics | Mean of Run Times | Sum of Run Times | Percentage Successful |
| 0 | automatic | moderate | automatic | 8.64 | 17.36 | 100 |
| 1 | none | aggressive | none | 7.9 | 16 | 100 |
| 2 | none | none | none | 7.94 | 16.07 | 100 |
| 3 | none | automatic | none | 8.02 | 16.3 | 100 |
| 4 | automatic | none | none | 8.04 | 16.25 | 100 |
| 5 | automatic | aggressive | none | 8.04 | 16.26 | 100 |
| 6 | none | moderate | none | 8.06 | 16.36 | 100 |
| 7 | none | moderate | basic | 8.25 | 16.56 | 100 |
| 8 | none | automatic | basic | 8.25 | 16.56 | 100 |
| 9 | none | none | basic | 8.25 | 16.58 | 100 |
| 10 | automatic | automatic | none | 8.35 | 16.98 | 100 |
| 11 | automatic | moderate | none | 8.35 | 16.99 | 100 |
| 12 | automatic | none | basic | 8.35 | 16.76 | 100 |
| 13 | none | moderate | moderate | 8.37 | 16.83 | 100 |
| 14 | automatic | moderate | basic | 8.37 | 16.8 | 100 |
| 15 | automatic | automatic | basic | 8.39 | 16.84 | 100 |
| 16 | none | automatic | moderate | 8.39 | 16.87 | 100 |
| 17 | none | none | moderate | 8.42 | 16.92 | 100 |
| 18 | automatic | none | moderate | 8.48 | 17.03 | 100 |
| 19 | automatic | aggressive | basic | 8.48 | 17.05 | 100 |
| 20 | automatic | moderate | moderate | 8.5 | 17.09 | 100 |
| 21 | none | none | automatic | 8.54 | 17.16 | 100 |
| 22 | none | automatic | automatic | 8.54 | 17.17 | 100 |
| 23 | none | moderate | automatic | 8.54 | 17.17 | 100 |
| 24 | automatic | automatic | moderate | 8.55 | 17.19 | 100 |
| 25 | none | aggressive | basic | 8.57 | 17.27 | 100 |
| 26 | automatic | none | automatic | 8.66 | 17.39 | 100 |
| 27 | automatic | automatic | automatic | 8.68 | 17.43 | 100 |
| 28 | none | moderate | aggressive | 9.06 | 18.14 | 100 |
| 29 | none | none | aggressive | 9.06 | 18.16 | 100 |
| 30 | none | automatic | aggressive | 9.08 | 18.2 | 100 |
| 31 | automatic | automatic | aggressive | 9.19 | 18.4 | 100 |
| 32 | automatic | moderate | aggressive | 9.19 | 18.4 | 100 |
| 33 | automatic | none | aggressive | 9.19 | 18.4 | 100 |
| 34 | automatic | aggressive | moderate | 10.62 | 22.25 | 100 |
| 35 | automatic | aggressive | automatic | 10.82 | 22.66 | 100 |
| 36 | none | aggressive | moderate | 10.92 | 23.23 | 100 |
| 37 | none | aggressive | automatic | 11.14 | 23.62 | 100 |
| 38 | automatic | aggressive | aggressive | 11.43 | 23.64 | 100 |
| 39 | none | aggressive | aggressive | 11.69 | 24.48 | 100 |
| 40 | aggressive | none | none | 43.9 | 118.53 | 100 |
| 41 | aggressive | automatic | none | 44 | 118.72 | 100 |
| 42 | aggressive | aggressive | none | 44.05 | 118.79 | 100 |
| 43 | aggressive | moderate | none | 44.35 | 119.06 | 100 |
| 44 | aggressive | none | basic | 51.53 | 126.19 | 100 |
| 45 | aggressive | moderate | basic | 51.57 | 126.12 | 100 |
| 46 | aggressive | aggressive | basic | 51.67 | 126.28 | 100 |
| 47 | aggressive | automatic | basic | 51.74 | 126.63 | 100 |
| 48 | aggressive | automatic | moderate | 51.98 | 126.49 | 100 |
| 49 | aggressive | none | moderate | 52.03 | 126.71 | 100 |
| 50 | aggressive | moderate | moderate | 52.06 | 126.63 | 100 |
| 51 | aggressive | none | automatic | 52.2 | 126.96 | 100 |
| 52 | aggressive | moderate | automatic | 52.24 | 127.3 | 100 |
| 53 | aggressive | aggressive | moderate | 52.35 | 127.05 | 100 |
| 54 | aggressive | automatic | automatic | 52.46 | 127.63 | 100 |
| 55 | aggressive | aggressive | automatic | 52.51 | 127.72 | 100 |
| 56 | aggressive | automatic | aggressive | 74.91 | 231.88 | 100 |
| 57 | aggressive | aggressive | aggressive | 74.93 | 232.32 | 100 |
| 58 | aggressive | moderate | aggressive | 75.23 | 232.18 | 100 |
| 59 | aggressive | none | aggressive | 75.35 | 232.94 | 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 | automatic | moderate | automatic | OK | OPTIMAL | 56137 | 0 | 0 | 534 | 9.52 |
| 2 | 0 | AIR05 | MIN | automatic | moderate | automatic | OK | OPTIMAL | 26374 | 0 | 0 | 1166 | 7.83 |
| 3 | 1 | AIR04 | MIN | none | aggressive | none | OK | OPTIMAL | 56137 | 0 | 0 | 298 | 9.24 |
| 4 | 1 | AIR05 | MIN | none | aggressive | none | OK | OPTIMAL | 26374 | 0 | 0 | 915 | 6.76 |
| 5 | 2 | AIR04 | MIN | none | none | none | OK | OPTIMAL | 56137 | 0 | 0 | 596 | 9.22 |
| 6 | 2 | AIR05 | MIN | none | none | none | OK | OPTIMAL | 26374 | 0 | 0 | 915 | 6.84 |
| 7 | 3 | AIR04 | MIN | none | automatic | none | OK | OPTIMAL | 56137 | 0 | 0 | 705 | 9.55 |
| 8 | 3 | AIR05 | MIN | none | automatic | none | OK | OPTIMAL | 26374 | 0 | 0 | 915 | 6.74 |
| 9 | 4 | AIR04 | MIN | automatic | none | none | OK | OPTIMAL | 56137 | 0 | 0 | 596 | 9.30 |
| 10 | 4 | AIR05 | MIN | automatic | none | none | OK | OPTIMAL | 26374 | 0 | 0 | 915 | 6.94 |
| 11 | 5 | AIR04 | MIN | automatic | aggressive | none | OK | OPTIMAL | 56137 | 0 | 0 | 298 | 9.30 |
| 12 | 5 | AIR05 | MIN | automatic | aggressive | none | OK | OPTIMAL | 26374 | 0 | 0 | 915 | 6.96 |
| 13 | 6 | AIR04 | MIN | none | moderate | none | OK | OPTIMAL | 56137 | 0 | 0 | 705 | 9.56 |
| 14 | 6 | AIR05 | MIN | none | moderate | none | OK | OPTIMAL | 26374 | 0 | 0 | 915 | 6.79 |
| 15 | 7 | AIR04 | MIN | none | moderate | basic | OK | OPTIMAL | 56137 | 0 | 0 | 435 | 8.99 |
| 16 | 7 | AIR05 | MIN | none | moderate | basic | OK | OPTIMAL | 26374 | 0 | 0 | 1276 | 7.57 |