View source: R/optimizertuneRace.R
| optimizertuneRace | R Documentation |
This functions enables users to tune the hyperparameters of different optimization algorithms.
optimizertuneRace( optimizer, psTune, funcEvals = 50, itersTune = 1000, trainInstanceList, minimize = TRUE, configurationsFile = NA, plotAblation = FALSE, ablationFile = NA, firstTest = 6, test = "F-test", seed = 1 )
optimizer |
[ |
psTune |
[ |
funcEvals |
[ |
itersTune |
[ |
trainInstanceList |
[ |
minimize |
[ |
configurationsFile |
[ |
plotAblation |
[ |
ablationFile |
[ |
firstTest |
[ |
test |
[ |
seed |
[ |
Elite configurations for defined tasks and an ablation analysis if plotAblation = TRUE.
[mlrMBO::mbo()]
Manuel López-Ibànez, Leslie Pérez Cáceres, Jérémie Dubois-Lacoste, Thomas Stützle and Mauro Birattari, The irace Package:
User Guide. Preprint: https://cran.r-project.org/web/packages/irace/vignettes/irace-package.pdf (2019).
optimize::plotBenchmark() optimize::plotMboContourPlot()
## Not run:
set.seed(1)
library(mlrMBO)
library(ParamHelpers)
library(mlr)
set.seed(1)
# define problem 1
data1 <- data.frame(a = runif(50,10,5555), b = runif(50,-30000,-500),
c = runif(50,0,1000))
data1$ratio <- rowSums(data1[,1:3]^2)
data1$ratio <- data1$ratio/max(data1$ratio)
colnames(data1) <- c("power", "time", "pressure","ratio")
psOpt = makeParamSet(
makeIntegerParam("power", lower = 10, upper = 5555),
makeIntegerParam("time", lower = -30000, upper = -500),
makeIntegerParam("pressure", lower = 0, upper = 1000)
)
task1 = task(
simulation = "regr.randomForest",
data = data1,
target = "ratio",
psOpt = psOpt,
minimize = FALSE
)
# define problem 2
data2 <- data.frame(a = runif(80,0,0.25), b = runif(80, 0,0.1),
c = runif(80,0,1), d = runif(80,0,1))
data2$interface <- rowSums((data2[,1:4]*8)^2)
data2$interface <- data2$interface/max(data2$interface)
colnames(data2) <- c("f", "k", "du","dv")
psOpt = ParamHelpers::makeParamSet(
ParamHelpers::makeNumericParam("f", lower = 0, upper = 0.25),
ParamHelpers::makeNumericParam("k", lower = 0, upper = 0.1),
ParamHelpers::makeNumericParam("du", lower = 0, upper = 1),
ParamHelpers::makeNumericParam("dv", lower = 0, upper = 1)
)
task2 = task(
simulation = "regr.randomForest",
data = data2,
target = "interface",
psOpt = psOpt,
minimize = FALSE
)
################## Define problemList #############
problemList = generateProblemList(task1, task2)
### tune SMBO algorithm
psTune = ParamHelpers::makeParamSet(
ParamHelpers::makeDiscreteParam("design", values = c("maximinLHS",
"optimumLHS")),
ParamHelpers::makeDiscreteParam("surrogate", values = c("regr.randomForest", "regr.km")),
ParamHelpers::makeDiscreteParam("covtype", values = c("matern5_2","matern3_2", "powexp", "gauss")),
ParamHelpers::makeDiscreteParam("crit", values = c("makeMBOInfillCritAEI","makeMBOInfillCritCB", "makeMBOInfillCritAdaCB","makeMBOInfillCritEI")),
ParamHelpers::makeNumericParam("cb.lambda", lower = 1, upper = 5,
requires = quote(crit == "makeMBOInfillCritCB")),
ParamHelpers::makeIntegerParam("cb.lambda.start", lower = 3, upper = 10,
requires = quote(crit == "makeMBOInfillCritAdaCB")),
ParamHelpers::makeNumericParam("cb.lambda.end", lower = 0, upper = 3,
requires = quote(crit == "makeMBOInfillCritAdaCB"))
)
tuneResultsMBO = optimizertuneRace("optimizeMBO", psTune,
funcEvals = 55, itersTune = 1000, trainInstanceList = problemList,
minimize = FALSE,
plotAblation = TRUE, ablationFile = "ablationMBOPlot.pdf", seed = 1)
## tune ES algorithm
psTune = ParamHelpers::makeParamSet(
ParamHelpers::makeIntegerParam("nu", lower = 5, upper = 15),
ParamHelpers::makeIntegerParam("mue", lower = 5, upper = 15),
ParamHelpers::makeNumericParam("sigmaInit", lower = 0.7, upper = 1.3),
ParamHelpers::makeNumericParam("tau", lower = 0.7, upper = 1.3),
ParamHelpers::makeIntegerParam("stratReco", lower = 1, upper = 4),
ParamHelpers::makeIntegerParam("objReco", lower = 1, upper = 4)
)
tuneResultsES = optimizertuneRace("optimizeES", psTune,
funcEvals = 65, itersTune = 1000, trainInstanceList = problemList,
minimize = FALSE,
plotAblation = TRUE, ablationFile = "ablationESPlot.pdf", seed = 1)
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.