我想运行一个使用遗传算法的程序。我处理了2000代迭代的50代10000条规则(停止标准)。所以,花费的时间很多。对于4代和4次迭代的情况,花了30分钟。如何在某次迭代中暂停运行此类程序,而不会在该迭代之前丢失算法的输出? 我可以将结果放在堆栈中(就像我们在汇编语言中所做的那样)还是R studio为我的问题提供了一个选项? 任何建议也会受到赞赏。
答案 0 :(得分:1)
假设你想每4代“暂停”一次 在您的代码中,添加类似这样的内容
if (generation %% 4 == 0) browser()
这将暂停每4代执行一次并为您提供调试控制,因此您可以检查以查看所有内容的状态,并在准备就绪时继续执行而不会丢失任何数据。也许不完全是你的想法,但肯定是一种选择。
答案 1 :(得分:0)
或者,方便的方法可能涉及使用readline
:
fun <- function() {
ANSWER <- readline("Are you a satisfied R user? ")
## a better version would check the answer less cursorily, and
## perhaps re-prompt
if (substr(ANSWER, 1, 1) == "n")
cat("This is impossible. YOU LIED!\n")
else
cat("I knew it.\n")
}
if(interactive()) fun()
或Sys.sleep
如果要暂停执行几秒钟:
testit <- function(x)
{
p1 <- proc.time()
Sys.sleep(x)
proc.time() - p1 # The cpu usage should be negligible
}
testit(3.7)