File: OptPath_setter.R

package info (click to toggle)
r-cran-paramhelpers 1.14.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 992 kB
  • sloc: ansic: 102; sh: 13; makefile: 2
file content (95 lines) | stat: -rw-r--r-- 3,243 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#' Set the dates of birth of parameter values, in-place.
#'
#' @template arg_op
#' @param index [integer]\cr
#'   Vector of indices of elements.
#' @param dob [integer] \cr
#'   Dates of birth, single value or same length of `index`.
#' @return Nothing.
#' @export
#' @family optpath
setOptPathElDOB = function(op, index, dob) {
  assertClass(op, "OptPath")
  index = asInteger(index)
  dob = asInteger(dob)
  op$env$dob[index] = dob
  return(invisible(NULL))
}


#' Set the end of life dates of parameter values, in-place.
#'
#' @template arg_op
#' @param index [integer]\cr
#'   Vector of indices of elements.
#' @param eol [integer] \cr
#'   EOL dates, single value or same length of `index`.
#' @return Nothing.
#' @export
#' @family optpath
setOptPathElEOL = function(op, index, eol) {
  assertClass(op, "OptPath")
  index = asInteger(index)
  eol = asInteger(eol)
  op$env$eol[index] = eol
  return(invisible(NULL))
}

#' @title Add a new element to an optimization path.
#'
#' @description
#' Changes the argument in-place. Note that when adding parameters that have
#' associated transformations, it is probably best to add the untransformed
#' values to the path. Otherwise you have to switch off the feasibility check,
#' as constraints might now not hold anymore.
#'
#' Dependent parameters whose requirements are not satisfied must be represented
#' by a scalar NA in the input.
#'
#' @template arg_op
#' @param x (`list`)\cr
#'   List of parameter values for a point in input space. Must be in same order
#'   as parameters.
#' @param y (`numeric`)\cr
#'   Vector of fitness values.  Must be in same order as `y.names`.
#' @param dob (`integer(1)`)\cr
#'   Date of birth of the new parameters.
#'   Default is length of path + 1.
#' @param eol (`integer(1)`)\cr
#'   End of life of point.
#'   Default is `NA`.
#' @param error.message (`character(1)`)\cr
#'   Possible error message that occurred for this parameter values.
#'   Default is `NA`.
#' @param exec.time (`numeric(1)`)\cr
#'   Possible exec time for this evaluation.
#'   Default is `NA`.
#' @param extra (`list`)\cr
#'   Possible list of extra values to store.
#'   The list must be fully named. The list can contain nonscalar values, but
#'   these nonscalar entries must have a name starting with a dot (`.`).
#'   Other entries must be scalar, and must be in the same order of all calls of
#'   `addOptPathEl`.
#'   Watch out: if `include.extra` was set to `TRUE` in (makeOptPathDF())
#'   the list of extras is mandatory.
#'   Default is `NULL`.
#' @param check.feasible (`logical(1)`)\cr
#'   Should `x` be checked with (isFeasible())?
#'   Default is `TRUE`.
#' @return Nothing.
#' @export
#' @family optpath
#' @examples
#' ps = makeParamSet(
#'   makeNumericParam("p1"),
#'   makeDiscreteParam("p2", values = c("a", "b"))
#' )
#' op = makeOptPathDF(par.set = ps, y.names = "y", minimize = TRUE)
#' addOptPathEl(op, x = list(p1 = 7, p2 = "b"), y = 1)
#' addOptPathEl(op, x = list(p1 = -1, p2 = "a"), y = 2)
#' as.data.frame(op)
addOptPathEl = function(op, x, y, dob = getOptPathLength(op) + 1L, eol = as.integer(NA),
  error.message = NA_character_, exec.time = NA_real_, extra = NULL,
  check.feasible = !op$add.transformed.x) {
  UseMethod("addOptPathEl")
}