присваивание переменной изнутри функции R - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь свернуть функцию, используя Деоптим. Поскольку Deoptim не имеет возможности хранить стоимость промежуточных групп населения, я хотел бы написать код, который делает это. Другая проблема, что я запускаю Deoptim параллельно. Хотя было бы лучше, если бы я мог добавить к уже существующей переменной.

Таким образом, проблема заключается в следующем с фиктивной функцией.

 Rosenbrock <- function(x,envir=NULL){

  x1 <- x[1]
  x2 <- x[2]

  y<-100 * (x2 - x1 * x1)^2 + (1 - x1)^2

  DT <- data.table(out = y, t(x))
  names(DT)<- c("out", "X1","X2")

  #assigning population (parameter set with cost) to the "POPin" to the Parent environment (envir)

  if(is.null(envir)==F){
    assign("POPin", envir = envir,DT)
  }
  return(y)
}

DEoptim_ros<-function(x){
  set.seed(1234)

  my.par<-c(x)
  my.package<-c("data.table")
  print(environment())
  lower <- c(-10,-10)
  upper <- -lower

  Out<-DEoptim(Rosenbrock, lower, upper,control = DEoptim.control(storepopfrom = 1,trace = T ,parVar = my.par, packages=my.package,parallelType=1,itermax = 2),envir=environment())

  POPin

  return(Out)}

Если я запускаю код без параллельной работы, я Можно назначить переменную в родительской среде, если это параллельно, я не могу. Так что мой вопрос будет. Можно ли это как-то сделать?

...