gpt4 book ai didi

r - DEoptim 堆栈不平衡问题

转载 作者:行者123 更新时间:2023-12-03 15:52:27 24 4
gpt4 key购买 nike

运行以下优化任务时(R v.3.0.2)

library(DEoptim)

x <- seq(-6,6,length=100); y <- tanh(x)
goal <- function(par) return(1-abs(cor(x*par,y,method='spearman')))

ctrl <- DEoptim::DEoptim.control(VTR=0, trace=FALSE)

res <- DEoptim::DEoptim(goal,lower=-1,upper=1, ctrl)

我收到堆栈不平衡警告
Warning: stack imbalance in '<-', 14 then 13
Warning: stack imbalance in 'withVisible', 7 then 6

unprotect()错误。如 VTR设置为低于 0(即无法获得的值)然后问题消失,但由于性能问题,我宁愿不这样做。

尽管有错误,结果还是会返回,但我担心它可能不稳定/不正确。任何想法如何解决这个问题?

最佳答案

这是 C 代码中的问题,不是您可以修复的。但这是我可以解决的问题,并且在 R-Forge 的修订版 116 中已修复。这是补丁:

Index: DEoptim/src/de4_0.c
===================================================================
--- DEoptim/src/de4_0.c (revision 115)
+++ DEoptim/src/de4_0.c (working copy)
@@ -423,7 +423,6 @@

/*------Trial mutation now in t_tmpP-----------------*/
/* evaluate mutated population */
- if(i_iter > 1) UNPROTECT(1); // previous iteration's sexp_t_tmpC
PROTECT(sexp_map_pop = popEvaluate(l_nfeval, sexp_t_tmpP, fnMap, rho, 0));
memmove(REAL(sexp_t_tmpP), REAL(sexp_map_pop), i_NP * i_D * sizeof(double));
UNPROTECT(1); // sexp_map_pop
@@ -458,6 +457,7 @@

}
} /* End mutation loop through ensemble */
+ UNPROTECT(1); // sexp_t_tmpC

if (d_c > 0) { /* calculate new meanCR and meanF */
meanCR = (1-d_c)*meanCR + d_c*goodCR;
@@ -555,7 +555,7 @@
*gt_bestC = t_bestC;

PutRNGstate();
- UNPROTECT(P+1); // +1 is for last iteration's sexp_t_tmpC
+ UNPROTECT(P);

}

关于r - DEoptim 堆栈不平衡问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21775043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com