This example illustrates how to use the OPTMILP option tuner.
The standard set of MILP benchmark cases is called MIPLIB (Bixby et al., 1998; Achterberg, Koch, and Martin, 2003) and can be found at http://miplib.zib.de/. Suppose you want to solve the problems air04 and air05 from this set. You have stored the SAS data sets air04
and air05
, both in MPS format, in library a
. Suppose you want to tune the CUTCLIQUE=, CUTGOMORY=, and HEURISTICS options in these two problems.
The following DATA step generates the data set probs
, which contains the list of problems to be solved, and the data set optvals
, which contains the list of options to be tuned:
data probs; input name $1-8; datalines; a.air04 a.air05 ; data optvals; input option $1-10; datalines; cutclique cutgomory heuristics ;
The following statements call the OPTMILP procedure and enable the option tuner:
proc optmilp maxtime=300; tuner maxtime=1200 problems=probs optionvalues=optvals tunerout=out; performance nthreads=4; run;
The MAXTIME= option in the PROC OPTMILP statement sets the maximum run time that the procedure can use to solve one problem for each option configuration. The MAXTIME= option in the TUNER statement sets a limit on the total time that the option tuner can use to solve the problems on the list by using the generated sequence of configurations. The PROBLEMS= option specifies the name of the SAS data set that contains the list of problems to be solved. The OPTIONVALUES= option specifies the name of the SAS data set that contains the list of options to be tuned. The TUNEROUT= option specifies the name of the SAS data set that contains detailed results of the tuning process. The NTHREADS= option in the PERFORMANCE statement specifies the number of threads that the procedure can use to perform calculations. The ODS OUTPUT statement creates an output data set from the TunerResults table.
For more information about the options available in the PROC OPTMILP statement, see the section PROC OPTMILP Statement. For more information about the PERFORMANCE statement, see the section PERFORMANCE Statement.
Figure 16.1 shows a selection of tuning results that include the initial option configuration, the best option configurations, and the worst option configurations.
Figure 16.1: PROC OPTMILP 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 | 1 | 1 | 1 | 1 | 1 | -1 | -1 | -1 | -1 | -1 |
cutgomory | -1 | 0 | 1 | -1 | 0 | 2 | 1 | 2 | -1 | 2 | 2 |
heuristics | -1 | 0 | 1 | 1 | 1 | 1 | 3 | 3 | 3 | 2 | 1 |
Mean of Run Times | 33.74 | 29.16 | 29.39 | 29.41 | 29.41 | 29.76 | 45.34 | 45.64 | 46.4 | 33.43 | 20.63 |
Sum of Run Times | 67.58 | 59.49 | 59.95 | 59.99 | 59.98 | 60.83 | 92.78 | 93.34 | 95.17 | 67.76 | 43.36 |
Percentage Successful | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 50 | 0 |