Nothing
context("addExperiments")
test_that("addExperiments", {
# 1 prob 1 algo
reg = makeTestRegistry()
p1 = addProblem(reg, "p1", 1)
pd1 = makeDesign(p1)
a1 = addAlgorithm(reg, id="a1", fun=function(static, dynamic) static)
expect_equal(getProblemIds(reg), "p1")
expect_equal(getAlgorithmIds(reg), "a1")
ad1 = makeDesign(a1)
addExperiments(reg, prob.designs=pd1, algo.designs=ad1)
submitJobs(reg)
waitForJobs(reg)
id = getJobIds(reg)[1]
res = loadResult(reg, id)
expect_equal(res, 1)
removeExperiments(reg, force=TRUE)
expect_equal(findExperiments(reg), id)
expect_equal(findNotDone(reg), integer(0))
loadResult(reg, id)
expect_output({
d = showStatus(reg)
}, "Status for 1 jobs")
removeExperiments(reg, id, force=TRUE)
expect_equal(findExperiments(reg), integer(0))
expect_equal(findNotDone(reg), integer(0))
expect_error(loadResult(reg, id), "Ids not present")
expect_output({
d = showStatus(reg)
}, "")
expect_equal(d$n, 0)
# 2 prob 1 algo
reg = makeTestRegistry()
p1 = addProblem(reg, "p1", 1)
p2 = addProblem(reg, "p2", 2)
a1 = addAlgorithm(reg, id="a1", fun=function(static, dynamic) static)
expect_equal(getProblemIds(reg), c("p1", "p2"))
expect_equal(getAlgorithmIds(reg), "a1")
pd2 = makeDesign(p2)
addExperiments(reg, list(pd1, pd2), ad1)
submitJobs(reg)
waitForJobs(reg)
res = sapply(getJobIds(reg), loadResult, reg=reg)
expect_equal(res, 1:2, check.attributes=FALSE)
# algo with pars
reg = makeTestRegistry()
p1 = addProblem(reg, "p1", 1)
a2 = addAlgorithm(reg, id="a2", fun=function(static, dynamic, a) static+a)
ad2 = makeDesign(a2, exhaustive=list(a=1:2))
addExperiments(reg, pd1, ad2)
submitJobs(reg)
waitForJobs(reg)
res = sapply(getJobIds(reg), loadResult, reg=reg)
expect_equal(res, (1:2)+1, check.attributes=FALSE)
# prob with pars
reg = makeTestRegistry()
p3 = addProblem(reg, "p3", static=5, dynamic=function(static, a) static+a)
pd3 = makeDesign(p3, exhaustive=list(a=1:2))
a3 = addAlgorithm(reg, id="a3", fun=function(static, dynamic) static+dynamic)
ad3 = makeDesign(a3)
addExperiments(reg, pd3, ad3)
submitJobs(reg)
waitForJobs(reg)
res = sapply(getJobIds(reg), loadResult, reg=reg)
expect_equal(res, c(2*5+1, 2*5+2), check.attributes=FALSE)
submitLoadAndCheck = function(reg, m) {
submitJobs(reg)
waitForJobs(reg)
res = sapply(getJobIds(reg), loadResult, reg=reg)
res = unique(res)
expect_true(length(res) == m && is.numeric(res) && all(res >= 0) && all(res <= 1))
}
#prob seed. 1 stochastic prob without seed, 1 algo, 2 reps = 2 different probs
reg = makeTestRegistry()
p4a = addProblem(reg, "p4a", static=5, dynamic=function(static) runif(1))
a4 = addAlgorithm(reg, id="a4", fun=function(static, dynamic) dynamic)
addExperiments(reg, makeDesign(p4a), makeDesign(a4), 2)
submitLoadAndCheck(reg, 2)
#prob seed. 1 stochastic prob with seed, 1 algo, 2 reps = 2 different probs
reg = makeTestRegistry()
p4b = addProblem(reg, "p4a", static=5, dynamic=function(static) runif(1), seed=1)
a4 = addAlgorithm(reg, id="a4", fun=function(static, dynamic) dynamic)
addExperiments(reg, makeDesign(p4b), makeDesign(a4), 2)
submitLoadAndCheck(reg, 2)
#prob seed. 1 stochastic prob without seed, 2 algos, 2 reps = 4 different probs
reg = makeTestRegistry()
p4a = addProblem(reg, "p4a", static=5, dynamic=function(static) runif(1))
a4 = addAlgorithm(reg, id="a4", fun=function(static, dynamic) dynamic)
a5 = addAlgorithm(reg, id="a5", fun=function(static, dynamic) dynamic)
addExperiments(reg, makeDesign(p4a), list(makeDesign(a4), makeDesign(a5)), 2)
submitLoadAndCheck(reg, 4)
#prob seed. 1 stochastic prob with seed, 2 algos, 2 reps = 2 different probs
reg = makeTestRegistry()
p4b = addProblem(reg, "p4a", static=5, dynamic=function(static) runif(1), seed=1)
a4 = addAlgorithm(reg, id="a4", fun=function(static, dynamic) dynamic)
a5 = addAlgorithm(reg, id="a5", fun=function(static, dynamic) dynamic)
addExperiments(reg, makeDesign(p4b), list(makeDesign(a4), makeDesign(a5)), 2)
submitLoadAndCheck(reg, 2)
# check that same exps cannot be added again
# in 2x addExperiments with same algo/prob
reg = makeTestRegistry()
p1 = addProblem(reg, "p1", 1)
pd1 = makeDesign(p1)
a1 = addAlgorithm(reg, id="a1", fun=function(static, dynamic) static)
ad1 = makeDesign(a1)
addExperiments(reg, pd1, ad1)
expect_error(addExperiments(reg, pd1, ad1), "identical experiments")
# in 2x addExperiments with same params
reg = makeTestRegistry()
p1 = addProblem(reg, "p1", 1)
pd1 = makeDesign(p1)
a1 = addAlgorithm(reg, id="a1", fun=function(static, dynamic, x) static)
ad1 = makeDesign(a1, exhaustive=list(x=c(1)))
addExperiments(reg, pd1, ad1)
expect_error(addExperiments(reg, pd1, ad1), "identical experiments")
# 1x addExperiments with same params
reg = makeTestRegistry()
p1 = addProblem(reg, "p1", 1)
pd1 = makeDesign(p1)
a1 = addAlgorithm(reg, id="a1", fun=function(static, dynamic, x) static)
ad1 = makeDesign(a1, exhaustive=list(x=c(1,1)))
expect_error(addExperiments(reg, pd1, ad1), "identical experiments")
# check adding of repls
reg = makeTestRegistry()
p1 = addProblem(reg, "p1", 1)
pd1 = makeDesign(p1)
a1 = addAlgorithm(reg, id="a1", fun=function(static, dynamic) static)
ad1 = makeDesign(a1)
addExperiments(reg, pd1, ad1, repls=2)
expect_error(addExperiments(reg, pd1, ad1, repls=5), "identical experiments")
addExperiments(reg, pd1, ad1, repls=5, skip.defined=TRUE)
expect_equal(getJobNr(reg), 5)
# check constraints
reg = makeTestRegistry()
p1 = addProblem(reg, "p1", 1)
pd1 = makeDesign(p1)
a1 = addAlgorithm(reg, id="a1", fun=function(static, dynamic, ...) static)
ad1 = makeDesign(a1, exhaustive = list(x = 1:2, y = 5:6))
addExperiments(reg, pd1, ad1, repls=2, skip.defined = TRUE)
tab = BatchJobs:::dbGetJobStatusTable(reg)
expect_true(!any(duplicated(tab$seed)))
expect_true(!any(duplicated(tab$job_id)))
expect_true(!any(duplicated(tab[c("job_def_id", "repl")])))
tab = BatchJobs:::dbGetExpandedJobsTable(reg)
dups = duplicated(tab$job_def_id)
expect_equal(sum(dups), 4L)
expect_equal(sum(duplicated(tab[c("prob_id", "algo_id", "prob_pars", "algo_pars")])), 4L)
expect_true(!any(duplicated(tab[! dups, c("prob_id", "algo_id", "prob_pars", "algo_pars")])))
})
test_that("skip.defined works", {
# test skip.defined
reg = makeTestRegistry()
p1 = addProblem(reg, "p1", 1)
pd1 = makeDesign(p1)
a1 = addAlgorithm(reg, id="a1", fun=function(static, dynamic, ...) static)
ad1 = makeDesign(a1, exhaustive = list(x = 1:2, y = 5:6))
addExperiments(reg, pd1, ad1, repls=2)
n1 = getJobNr(reg)
expect_error(addExperiments(reg, pd1, ad1))
addExperiments(reg, pd1, ad1, repls=2, skip.defined=TRUE)
n2 = getJobNr(reg)
expect_equal(n1, n2)
addExperiments(reg, pd1, ad1, repls=3, skip.defined=TRUE)
n3 = getJobNr(reg)
expect_equal(n3, as.integer(n1 / 2 * 3))
# bug with param = 1 (num) and 1L (int)
# we must make sure that this is handled as the same setting
# FIXME disabled for now
#reg = makeTestRegistry()
#addProblem(reg, id="p", static = 1)
#addAlgorithm(reg, id="a", fun=identity)
#ades = makeDesign("a", exhaustive = list(x=1))
#addExperiments(reg, algo.designs=ades)
#expect_equal(getJobNr(reg), 1)
#ades = makeDesign("a", exhaustive = list(x=1:2))
#addExperiments(reg, algo.designs=ades, skip.defined = TRUE)
#expect_equal(getJobNr(reg), 2)
# this checks a bug where the parameter position the
# algo.pars list gets permuted
# in the 2nd case we produced y=1, x=1, which is then
# considered as something different as the first setting
reg = makeTestRegistry()
addProblem(reg, id="p", static = 1)
addAlgorithm(reg, id="a", fun=identity)
ades = makeDesign("a", exhaustive = list(x=1L, y=1L))
addExperiments(reg, algo.designs=ades)
expect_equal(getJobNr(reg), 1)
ades = makeDesign("a", exhaustive = list(x=1L, y=1:2))
addExperiments(reg, algo.designs=ades, skip.defined = TRUE)
expect_equal(getJobNr(reg), 2)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.