withr::with_output_sink("test-targetRunnerParallel.Rout", {
test_that("targetRunnerParallel", {
setClasses <- function(x, classes)
{
class(x) = classes
x
}
# test that targetRunnerParallel works with arbitrary instance objects.
targetRunnerParallel <- function(experiment, exec_target_runner, scenario, target_runner)
{
# get our param settings that irace should try
cands = lapply(experiment, "[[", "configuration")
# the instance is always the same for all different param setting
theinst = experiment[[1L]]$instance
# we check that we have instances of correct class
expect_s3_class(theinst, "foo", exact = TRUE)
# fabricate some random fitness vals
ys = rnorm(length(cands))
lapply(ys, function(y) list(cost = y, time = NA_real_))
}
n.inst = 7L
instances = replicate(n.inst, setClasses(list(x=123), classes = "foo"), simplify = FALSE)
parameters = readParameters(text='x1 "" r (0,1)')
log.file = tempfile()
tuner_config = list(maxExperiments = 40L, nbIterations = 1L, minNbSurvival = 1L,
targetRunnerParallel = targetRunnerParallel,
instances = instances, logFile = log.file)
confs <- irace(scenario = tuner_config)
expect_gt(nrow(confs), 0L)
})
test_that("targetRunnerData", {
targetRunnerParallel <- function(experiments, exec_target_runner, scenario, target_runner) {
cat("a = ", scenario$targetRunnerData$a,
", b = ", scenario$targetRunnerData$b, "\n", sep = "")
# get our param settings that irace should try
cands = lapply(experiments, "[[", "configuration")
# fabricate some random fitness vals
ys = rnorm(length(cands))
ys = lapply(ys, function(y) list(cost = y, time = NA_real_))
return(ys)
}
parameters = readParameters(text='
x "x" r (1,2)
')
expect_output(
irace(scenario = list(targetRunnerParallel = targetRunnerParallel,
instances = replicate(5, list(10)),
targetRunnerData = list(a=1, b=2),
maxExperiments = 42L, parameters = parameters)),
"a = 1, b = 2")
})
}) # with_output_sink()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.