The infill criterion guides the model based search process.
The most prominent infill criteria, e.g., expected improvement, lower
confidence bound and others, are already implemented in mlrMBO. Moreover,
the package allows for the creation of custom infill criteria.

```
makeMBOInfillCrit(
fun,
name,
id,
opt.direction = "minimize",
components = character(0L),
params = list(),
requires.se = FALSE
)
```

## Arguments

- fun
[`function(points, models, control, par.set, design, iter)`

]

A function which expects the following parameters in exactly this order
and return a numeric vector of criteria values at the points:

- points [
`data.frame`

]
n points where to evaluate.

- models [
`WrappedModel`

| `list`

]
Model(s) fitted on design.

- control [
`MBOControl`

]
Control object.

- par.set [
`ParamSet`

]
Parameter set.

- design [
`data.frame`

]
Design of already visited points.

- iter [
`integer(1)`

]
Current iteration.

- progress [
`numeric{1}`

]
A value between 0 and 1 indicating the progress of the optimization.

- attributes [
`logical{1}`

]
Are there attributes appended to the return
value that should be added to the `OptPath`

?

Important: Internally, this function will be minimized. So the proposals will be where this function is low.

- name
[`character(1)`

]

Full name of the criterion.

- id
[`character(1)`

]

Short name of the criterion.
Used internally and in plots.

- opt.direction
[`character(1)`

]

Only for visualization: Shall this criterion be plotted as if it were to be minimized (`minimize`

), maximized (`maximize`

) or is the direction the same as for the objective function (`objective`

)?
Default is `minimize`

.

- components
[`character`

]

Infill criteria may not return proposed point(s) only. Additional
information can be returned by appending a named `list`

“crit.components”
to the returned value as an attribute.
The `components`

argument takes a character vector of the names of the
meta information, i.e., the names of the named “crit.components” list.
Default is the empty character vector.

- params
[`list`

]

Named list of parameters for the infill criterion. There values may be used
by mlrMBO internally.
Default is the empty list.

- requires.se
[`logical(1)`

]

Does the infill criterion require the regression learner to provide a standard
error estimation?
Default is `FALSE`

.

## Predefined standard infill criteria

- crit.ei
Expected Improvement

- crit.mr
Mean response

- crit.se
Standard error

- crit.cb
Confidence bound with lambda automatically chosen, see `infillcrits`

- crit.cb1
Confidence bound with lambda=1

- crit.cb2
Confidence bound with lambda=2

- crit.aei
Augmented expected improvement

- crit.eqi
Expected quantile improvement

- crit.dib1
Direct indicator-based with lambda=1