Я пытаюсь оптимизировать функцию Шаффера с помощью методов имитации отжига и наискорейшего спуска. Я хотел бы добавить критерий завершения в цикл, который разорвал бы цикл, скажем, через 5 секунд. К сожалению, я заблудился, если предположить поместить такое условие в более сложный цикл, подобный следующему:
currIter <- 0
finished <- FALSE
x_old <- x
while(finished == FALSE){
StartT <- Sys.time()
x_new <- lineSearch(f, x_old, x_old - a*numGradient(f, x_old, 10^-6), 10)
if(currIter <= maxIter & abs(f(x_new)-f(x_old))>e & f(x_new)<f(x_old)){
x_old <- x_new
result$x_opt <- x_new
result$f_opt <- f(x_new)
result$x_hist <- rbind(result$x_hist, x_new)
result$f_hist <- rbind(result$f_hist, f(x_new))
result$iter <- currIter
result$tEval <- rbind(result$tEval, Sys.time() - StartT)
}else{
finished <- TRUE
}
currIter <- currIter + 1
}
return(result)
}
Так я могу просто поставить такое условие?
while(sys.time() < 3)