Skip to content

Commit b2f7761

Browse files
ja-thomasjakob-r
authored andcommitted
renome multipoint.multicrit to moimbo (#279)
1 parent 65aeed5 commit b2f7761

11 files changed

+70
-70
lines changed

R/checkStuff.R

+3-3
Original file line numberDiff line numberDiff line change
@@ -95,12 +95,12 @@ checkStuff = function(fun, par.set, design, learner, control) {
9595
if (control$propose.points == 1L) { # single point
9696
} else { # multi point
9797
if ((control$multipoint.method %in% c("cb", "cl", "cb") ||
98-
control$multipoint.method == "multicrit" && control$multipoint.multicrit.objective != "mean.dist" )
98+
control$multipoint.method == "moimbo" && control$multipoint.moimbo.objective != "mean.dist" )
9999
&& learner$predict.type != "se") {
100100
stopf("For multipoint method '%s'%s, predict.type of learner %s must be set to 'se'!%s",
101101
control$multipoint.method,
102-
ifelse(control$multipoint.method == "multicrit",
103-
sprintf(" with objective '%s'", control$multipoint.multicrit.obj), ""),
102+
ifelse(control$multipoint.method == "moimbo",
103+
sprintf(" with objective '%s'", control$multipoint.moimbo.obj), ""),
104104
learner$id,
105105
ifelse(hasLearnerProperties(learner, "se"), "",
106106
"\nBut this learner does not support prediction of standard errors!"))

R/getSupportedMultipointInfillOptFunctions.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66
#' @return [\code{character}]
77
#' @export
88
getSupportedMultipointInfillOptFunctions = function() {
9-
c("cl", "cb", "multicrit")
9+
c("cl", "cb", "moimbo")
1010
}

R/proposePoints.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ proposePoints.OptState = function(opt.state){
2828
res = proposePointsParallelCB(opt.state)
2929
else if (control$multipoint.method == "cl")
3030
res = proposePointsConstantLiar(opt.state)
31-
else if (control$multipoint.method == "multicrit") {
31+
else if (control$multipoint.method == "moimbo") {
3232
res = proposePointsMOIMBO(opt.state)
3333
}
3434
}

R/proposePointsMOIMBO.R

+9-9
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ proposePointsMOIMBO = function(opt.state, ...) {
5151
requirePackages("emoa", why = "multipointInfillOptMulticrit")
5252

5353
n = control$propose.points
54-
objective = control$multipoint.multicrit.objective
54+
objective = control$multipoint.moimbo.objective
5555
design = convertOptPathToDf(opt.path, control)
5656

5757
ch = checkFailedModels(models, par.set, n)
@@ -63,11 +63,11 @@ proposePointsMOIMBO = function(opt.state, ...) {
6363
repids = getParamIds(par.set, repeated = TRUE, with.nr = TRUE)
6464
mu = n
6565
# FIXME: what are good defaults?
66-
mutate = emoa::pm_operator(control$multipoint.multicrit.pm.eta, control$multipoint.multicrit.pm.p,
66+
mutate = emoa::pm_operator(control$multipoint.moimbo.pm.eta, control$multipoint.moimbo.pm.p,
6767
getLower(par.set), getUpper(par.set))
68-
crossover = emoa::sbx_operator(control$multipoint.multicrit.sbx.eta, control$multipoint.multicrit.sbx.p,
68+
crossover = emoa::sbx_operator(control$multipoint.moimbo.sbx.eta, control$multipoint.moimbo.sbx.p,
6969
getLower(par.set), getUpper(par.set))
70-
mydist = switch(control$multipoint.multicrit.dist,
70+
mydist = switch(control$multipoint.moimbo.dist,
7171
nearest.neighbor = distToNN,
7272
nearest.better = distToNB
7373
)
@@ -90,7 +90,7 @@ proposePointsMOIMBO = function(opt.state, ...) {
9090
Y[, y.dim] = -mydist(as.matrix(X), Y[,1])
9191

9292
secs = measureTime({
93-
for (i in seq_len(control$multipoint.multicrit.maxit)) {
93+
for (i in seq_len(control$multipoint.moimbo.maxit)) {
9494
# Create new individual (mu + 1)
9595
parents = sample(seq_len(mu), 2)
9696
# get two kids from CX, sel. 1 randomly, mutate
@@ -118,13 +118,13 @@ proposePointsMOIMBO = function(opt.state, ...) {
118118
Y[, y.dim] = -mydist(as.matrix(X), Y[,1])
119119

120120
# get elements we want to remove from current pop as index vector
121-
to.kill = if (control$multipoint.multicrit.selection == "hypervolume") {
121+
to.kill = if (control$multipoint.moimbo.selection == "hypervolume") {
122122
emoa::nds_hv_selection(t(Y))
123-
} else if (control$multipoint.multicrit.selection == "crowdingdist") {
123+
} else if (control$multipoint.moimbo.selection == "crowdingdist") {
124124
emoa::nds_cd_selection(t(Y))
125-
} else if (control$multipoint.multicrit.selection == "first") {
125+
} else if (control$multipoint.moimbo.selection == "first") {
126126
nds_1d_selection(t(Y), index = 1)
127-
} else if (control$multipoint.multicrit.selection == "last") {
127+
} else if (control$multipoint.moimbo.selection == "last") {
128128
nds_1d_selection(t(Y), index = y.dim)
129129
}
130130
X = X[-to.kill, ,drop = FALSE]

R/renderExampleRunPlotSingleCrit1d.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ renderExampleRunPlot1d = function(x, iter,
9393
evals[[name.crit]] = opt.direction *
9494
critfun(evals.x, list(model), control, par.set, convertOptPathToDf(opt.path, control)[idx.past,, drop = FALSE])
9595
} else {
96-
objective = control$multipoint.multicrit.objective
96+
objective = control$multipoint.moimbo.objective
9797
if (objective == "mean.dist") {
9898
evals[[name.crit]] = opt.direction * infillCritMeanResponse(evals.x, list(model), control, par.set, convertOptPathToDf(opt.path, control)[idx.past,, drop = FALSE])
9999
} else if (objective == "ei.dist") {

R/renderExampleRunPlotSingleCrit2d.R

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ renderExampleRunPlot2d = function(x, iter,
5959
if (proppoints == 1L) {
6060
evals[[name.crit]] = opt.direction * critfun(evals.x, models, control, par.set, opt.path[idx.past, ])
6161
} else {
62-
objective = control$multipoint.multicrit.objective
62+
objective = control$multipoint.moimbo.objective
6363
if (control$multipoint.method == "cb") {
6464
evals[[name.crit]] = opt.direction * infillCritMeanResponse(evals.x, models, control, par.set, opt.path[idx.past, ])
6565
} else {

R/setMBOControlMultiPoint.R

+37-37
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010
#' exp(1)-distribution, so do not define \code{infill.opt.cb.lambda}.
1111
#' The optimizer for each proposal is configured in the same way as for the single point case,
1212
#' i. e., by specifying \code{infill.opt} and related stuff.
13-
#' \dQuote{multicrit}: Proposes points by evolutionary multicriteria optimization.
14-
#' The EA is a (mu+1) type of algorithm and runs for \code{multicrit.maxit} generations.
13+
#' \dQuote{moimbo}: Proposes points by multiobjective infill criteria via evolutionary multicriteria optimization.
14+
#' The EA is a (mu+1) type of algorithm and runs for \code{moimbo.maxit} generations.
1515
#' The population size is set to \code{propose.points}.
16-
#' The selection criterion is \code{multicrit.selection}.
16+
#' The selection criterion is \code{moimbo.selection}.
1717
#' \dQuote{cl}: Proposes points by constant liar strategy.
1818
#' Only meaningfull if \code{infill.crit == "cb"}
1919
#' In the first step the kriging model is fitted based on the real data and the best point is calculated
@@ -24,37 +24,37 @@
2424
#' Default is \code{cb}.
2525
#' @param cl.lie [\code{function}]\cr
2626
#' Function used by constant liar method for lying. Default is \code{min}.
27-
#' @param multicrit.objective [\code{character(1)}]\cr
27+
#' @param moimbo.objective [\code{character(1)}]\cr
2828
#' Objectives which are optimized in multicrit approach.
2929
#' Possible values are: \dQuote{mean.dist}, \dQuote{ei.dist}, \dQuote{mean.se}, \dQuote{mean.se.dist}.
3030
#' Default is \dQuote{ei.dist}.
31-
#' @param multicrit.dist [\code{character(1)}]\cr
31+
#' @param moimbo.dist [\code{character(1)}]\cr
3232
#' Distance function used in multicrit EA.
3333
#' Possible values are: \dQuote{nearest.neigbor}, \dQuote{nearest.better}.
3434
#' Default is \dQuote{nearest.better}.
3535
#FIXME: a link to the definition of nearest.better and nearest.neigbor?
36-
#' @param multicrit.selection [\code{character(1)}]\cr
36+
#' @param moimbo.selection [\code{character(1)}]\cr
3737
#' Method used for selecting 1 element for removal from the population
3838
#' in each iteration of the multicriteria EA.
3939
#' Possible values are:
4040
#' \dQuote{hypervolume}: Non-dominated sorting + hypervolume contribution.
4141
#' \dQuote{crowdingdist}: Non-dominated sorting + crowding distance based ranking.
42-
#' \dQuote{first}: Non-dominated sorting + first objective of \code{multicrit.objective} as criterion.
43-
#' \dQuote{last}: Non-dominated sorting + last objective of \code{multicrit.objective} as criterion.
42+
#' \dQuote{first}: Non-dominated sorting + first objective of \code{moimbo.objective} as criterion.
43+
#' \dQuote{last}: Non-dominated sorting + last objective of \code{moimbo.objective} as criterion.
4444
#' Default is \code{hypervolume}.
45-
#' @param multicrit.maxit [\code{character(1)}]\cr
45+
#' @param moimbo.maxit [\code{character(1)}]\cr
4646
#' Number of generations for multicriteria EA.
4747
#' Default is 100.
48-
#' @param multicrit.sbx.eta [\code{numeric(1)}]\cr
48+
#' @param moimbo.sbx.eta [\code{numeric(1)}]\cr
4949
#' Distance parameter of crossover distribution, see \code{\link[emoa]{sbx_operator}}.
5050
#' Default is 15.
51-
#' @param multicrit.sbx.p [\code{numeric(1)}]\cr
51+
#' @param moimbo.sbx.p [\code{numeric(1)}]\cr
5252
#' Probability of 1-point crossover, see \code{\link[emoa]{sbx_operator}}.
5353
#' Default is 1.
54-
#' @param multicrit.pm.eta [\code{numeric(1)}]\cr
54+
#' @param moimbo.pm.eta [\code{numeric(1)}]\cr
5555
#' Distance parameter of mutation distribution, see \code{\link[emoa]{pm_operator}}.
5656
#' Default is 15.
57-
#' @param multicrit.pm.p [\code{numeric(1)}]\cr
57+
#' @param moimbo.pm.p [\code{numeric(1)}]\cr
5858
#' Probability of 1-point mutation, see \code{\link[emoa]{pm_operator}}.
5959
#' Default is 1.
6060
#' @return [\code{\link{MBOControl}}].
@@ -63,12 +63,12 @@
6363
setMBOControlMultiPoint = function(control,
6464
method = NULL,
6565
cl.lie = NULL,
66-
multicrit.objective = NULL,
67-
multicrit.dist = NULL,
68-
multicrit.selection = NULL,
69-
multicrit.maxit = NULL,
70-
multicrit.sbx.eta = NULL, multicrit.sbx.p = NULL,
71-
multicrit.pm.eta = NULL, multicrit.pm.p = NULL) {
66+
moimbo.objective = NULL,
67+
moimbo.dist = NULL,
68+
moimbo.selection = NULL,
69+
moimbo.maxit = NULL,
70+
moimbo.sbx.eta = NULL, moimbo.sbx.p = NULL,
71+
moimbo.pm.eta = NULL, moimbo.pm.p = NULL) {
7272

7373
assertClass(control, "MBOControl")
7474

@@ -85,32 +85,32 @@ setMBOControlMultiPoint = function(control,
8585
}
8686
assertFunction(control$multipoint.cl.lie)
8787

88-
control$multipoint.multicrit.objective = coalesce(multicrit.objective, control$multipoint.multicrit.objective, "ei.dist")
89-
assertChoice(control$multipoint.multicrit.objective, choices = c("mean.dist", "ei.dist", "mean.se", "mean.se.dist"))
88+
control$multipoint.moimbo.objective = coalesce(moimbo.objective, control$multipoint.moimbo.objective, "ei.dist")
89+
assertChoice(control$multipoint.moimbo.objective, choices = c("mean.dist", "ei.dist", "mean.se", "mean.se.dist"))
9090

91-
control$multipoint.multicrit.dist = coalesce(multicrit.dist, control$multipoint.multicrit.dist, "nearest.better")
92-
assertChoice(control$multipoint.multicrit.dist, choices = c("nearest.neighbor", "nearest.better"))
91+
control$multipoint.moimbo.dist = coalesce(moimbo.dist, control$multipoint.moimbo.dist, "nearest.better")
92+
assertChoice(control$multipoint.moimbo.dist, choices = c("nearest.neighbor", "nearest.better"))
9393

94-
control$multipoint.multicrit.selection = coalesce(multicrit.selection, control$multipoint.multicrit.selection, "hypervolume")
95-
assertChoice(control$multipoint.multicrit.selection, choices = c("hypervolume", "crowdingdist", "first", "last"))
94+
control$multipoint.moimbo.selection = coalesce(moimbo.selection, control$multipoint.moimbo.selection, "hypervolume")
95+
assertChoice(control$multipoint.moimbo.selection, choices = c("hypervolume", "crowdingdist", "first", "last"))
9696

97-
if (!is.null(multicrit.maxit)) {
98-
multicrit.maxit = asCount(multicrit.maxit)
97+
if (!is.null(moimbo.maxit)) {
98+
moimbo.maxit = asCount(moimbo.maxit)
9999
}
100-
control$multipoint.multicrit.maxit = coalesce(multicrit.maxit, control$multipoint.multicrit.maxit, 100L)
101-
assertCount(control$multipoint.multicrit.maxit, na.ok = FALSE, positive = TRUE)
100+
control$multipoint.moimbo.maxit = coalesce(moimbo.maxit, control$multipoint.moimbo.maxit, 100L)
101+
assertCount(control$multipoint.moimbo.maxit, na.ok = FALSE, positive = TRUE)
102102

103-
control$multipoint.multicrit.sbx.eta = coalesce(multicrit.sbx.eta, control$multipoint.multicrit.sbx.eta, 15)
104-
assertNumber(control$multipoint.multicrit.sbx.eta, na.ok = FALSE, lower = 0)
103+
control$multipoint.moimbo.sbx.eta = coalesce(moimbo.sbx.eta, control$multipoint.moimbo.sbx.eta, 15)
104+
assertNumber(control$multipoint.moimbo.sbx.eta, na.ok = FALSE, lower = 0)
105105

106-
control$multipoint.multicrit.sbx.p = coalesce(multicrit.sbx.p, control$multipoint.multicrit.sbx.p, 1)
107-
assertNumber(control$multipoint.multicrit.sbx.p, na.ok = FALSE, lower = 0, upper = 1)
106+
control$multipoint.moimbo.sbx.p = coalesce(moimbo.sbx.p, control$multipoint.moimbo.sbx.p, 1)
107+
assertNumber(control$multipoint.moimbo.sbx.p, na.ok = FALSE, lower = 0, upper = 1)
108108

109-
control$multipoint.multicrit.pm.eta = coalesce(multicrit.pm.eta, control$multipoint.multicrit.pm.eta, 15)
110-
assertNumber(control$multipoint.multicrit.pm.eta, na.ok = FALSE, lower = 0)
109+
control$multipoint.moimbo.pm.eta = coalesce(moimbo.pm.eta, control$multipoint.moimbo.pm.eta, 15)
110+
assertNumber(control$multipoint.moimbo.pm.eta, na.ok = FALSE, lower = 0)
111111

112-
control$multipoint.multicrit.pm.p = coalesce(multicrit.pm.p, control$multipoint.multicrit.pm.p, 1)
113-
assertNumber(control$multipoint.multicrit.pm.p, na.ok = FALSE, lower = 0, upper = 1)
112+
control$multipoint.moimbo.pm.p = coalesce(moimbo.pm.p, control$multipoint.moimbo.pm.p, 1)
113+
assertNumber(control$multipoint.moimbo.pm.p, na.ok = FALSE, lower = 0, upper = 1)
114114

115115
return(control)
116116
}

inst/examples/ex_1d_numeric_multipoint.R

+4-4
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ ctrl = setMBOControlTermination(ctrl, iters = 10L)
1919

2020
ctrl = setMBOControlMultiPoint(
2121
ctrl,
22-
method = "multicrit",
23-
multicrit.objective = "ei.dist",
24-
multicrit.dist = "nearest.neighbor",
25-
multicrit.maxit = 200L
22+
method = "moimbo",
23+
moimbo.objective = "ei.dist",
24+
moimbo.dist = "nearest.neighbor",
25+
moimbo.maxit = 200L
2626
)
2727

2828
lrn = makeLearner("regr.km", predict.type = "se", covtype = "matern3_2")

inst/examples/ex_2d_numeric_multipoint.R

+4-4
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ obj.fun = makeBraninFunction()
1212
ctrl = makeMBOControl(propose.points = 5L)
1313
ctrl = setMBOControlTermination(ctrl, iters = 10L)
1414
ctrl = setMBOControlMultiPoint(ctrl,
15-
method = "multicrit",
16-
multicrit.objective = "ei.dist",
17-
multicrit.dist = "nearest.neighbor",
18-
multicrit.maxit = 200L
15+
method = "moimbo",
16+
moimbo.objective = "ei.dist",
17+
moimbo.dist = "nearest.neighbor",
18+
moimbo.maxit = 200L
1919
)
2020

2121
lrn = makeLearner("regr.km", predict.type = "se", covtype = "matern3_2")

tests/testthat/test_exampleRun.R

+4-4
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,10 @@ test_that("renderExampleRunPlot produces list of ggplot2 objects", {
8181
ctrl = makeMBOControl(propose.points = 3)
8282
ctrl = setMBOControlTermination(ctrl, iters = n.iters)
8383
ctrl = setMBOControlMultiPoint(ctrl,
84-
method = "multicrit",
85-
multicrit.objective = "ei.dist",
86-
multicrit.dist = "nearest.neighbor",
87-
multicrit.maxit = 200L
84+
method = "moimbo",
85+
moimbo.objective = "ei.dist",
86+
moimbo.dist = "nearest.neighbor",
87+
moimbo.maxit = 200L
8888
)
8989

9090
run = exampleRun(obj.fun, learner = default.kriging, control = ctrl, points.per.dim = 50L)

tests/testthat/test_multipoint_multicrit.R

+5-5
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ test_that("multipoint multicrit", {
1313
ctrl = makeMBOControl(propose.points = 4L)
1414
ctrl = setMBOControlTermination(ctrl, iters = 1L)
1515
ctrl = setMBOControlMultiPoint(ctrl,
16-
method = "multicrit",
17-
multicrit.objective = obj,
18-
multicrit.dist = dist,
19-
multicrit.sel = sel,
20-
multicrit.maxit = 30L
16+
method = "moimbo",
17+
moimbo.objective = obj,
18+
moimbo.dist = dist,
19+
moimbo.sel = sel,
20+
moimbo.maxit = 30L
2121
)
2222

2323
res = mbo(f, des, learner = default.kriging, control = ctrl)

0 commit comments

Comments
 (0)