DEOptim продолжает говорить: NaN значение целевой функции

Я написал программу моделирования на C ++ и хотел найти параметры в R, используя DEoptim. Иногда все работает хорошо, а иногда DEoptim останавливается и говорит:

Error in DEoptim(simulate, lower = lb, upper = ub, control = opt) :
NaN value of objective function!
Perhaps adjust the bounds.

Мой R-скрипт определяет функцию, которая вызывает внешний двоичный файл. Параметры прикреплены к команде. Я тестировал свою программу на C ++ и никогда не видел, чтобы NaN вернулись. Кроме того, для расследования я проверяю наличие NaN в simulate() R-функция, такая, что она остановится и скажет, что на самом деле существует значение NaN. Тем не менее, это никогда не останавливаться на достигнутом — но позже в DEoptim. В чем проблема? Это DEoptim-Bug?

library("DEoptim")
setwd("some-path")

simulate <- function(theta)
{
strcom <- paste(c("./ExternalBinary", theta),collapse=" ")
ret <- as.numeric(system(strcom, intern=T)) #will return a couple of integer numbers
ret <- mean(ret) #average those numbers
if(any(is.nan(ret))){ #check against NaNs
stop('Found a NaN?!') #this line is NEVER called, even if DEoptim stops
}
return(ret)
}

lb <- rep(-10.,18) #18 parameters in the range of -10...10
ub <- -lb

opt <- list(NP=500,itermax=10, storepopfrom=1, storepopfreq=1, parallelType=1)
est <- DEoptim(simulate,lower=lb,upper=ub, control=opt)

РЕДАКТИРОВАТЬ:
Я обнаружил, что возвращение на самом деле не NaN, а NA. simulate() функция останавливается, если я заменяю is.nan(ret) с is.na(ret), Я также снова просмотрел свою программу на С ++ и не мог найти способ, как она выходит, не написав число для cout, Поэтому я задал этот вопрос:
Может ли main () возвращаться до того, как весь cout будет записан в консоль?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]