';错误的范围组件';来自TMB的错误消息(未计算最大梯度分量) 亲爱的所有TMB用户都有热情的心或者用户在C++中用C++来帮助我。
作为一名婴儿TMB用户,我对来自TMB的错误消息有疑问 我发现我的代码中有错误。(第二个错误已修改) 结果来自gdbsource() 1:';错误的范围组件';来自TMB的错误消息(未计算最大梯度分量) 亲爱的所有TMB用户都有热情的心或者用户在C++中用C++来帮助我。,c++,r,rcpp,tmb,C++,R,Rcpp,Tmb,作为一名婴儿TMB用户,我对来自TMB的错误消息有疑问 我发现我的代码中有错误。(第二个错误已修改) 结果来自gdbsource() 1:在我的cpp文件中发现不完整的最后一行(实际上这是一条警告消息,不是错误。我想知道为什么会发生这种情况。) 2:编译后出现以下错误消息: 电动汽车(obj$env$par)中的错误:范围组件错误。 Error in ev(obj$env$par) : Wrong range component. check1: 1 0.208386 9.
在我的cpp文件中发现不完整的最后一行(实际上这是一条警告消息,不是错误。我想知道为什么会发生这种情况。)
2:编译后出现以下错误消息:
电动汽车(obj$env$par)中的错误:范围组件错误。
Error in ev(obj$env$par) : Wrong range component.
check1: 1
0.208386
9.70444e-005
6.95024e-005
8.33432e-005
7.90787e-005
5.96018e-005
7.0229e-005
9.99291e-005
0.000112216
0.000101964
9.13024e-005
8.54733e-005
8.77122e-005
8.77124e-005
8.36922e-005
6.80879e-005
0.000135715
0.00014771
6.97471e-005
5.73876e-005
5.2996e-005
7.63701e-005
check2: 0.367879
check3: 20.0855
check4: 0.00273944
check5: 0.0450492
check6: 0.0301974
Optimizing tape... Done
Error in ev(obj$env$par) : Wrong range component.
In addition: Warning messages:
1: In nlminb(model$par, model$fn, model$gr) : NA/NaN function evaluation
2: In he(par) : restarting interrupted promise evaluation
outer mgc: NaN
Error in nlminb(model$par, model$fn, model$gr) :
gradient function must return a numeric vector of length 5
Execution halted
[Inferior 1 (process 8152) exited with code 01]
C:\Users\POPDYN~1\AppData\Local\Temp\RtmpkL2d5A\file1f1048dc1743:4: Error in sourced command file:
No stack.
(gdb)
你知道第二个错误吗?
我感谢您的努力、反馈、提示和您的帮助
我附上了我的cpp、R代码和数据
我想在此页面上发布更多内容。
我的代码中的主要问题被认为是定义参数或向量
在评论之后,我运行了包含“cout”部分的代码。
结果呢
CPP代码(修订版)
我还附上了sessioninfo:
R version 3.5.0 (2018-04-23)
Platform: i386-w64-mingw32/i386 (32-bit)
Running under: Windows >= 8 (build 9200)
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] TMB_1.7.13
loaded via a namespace (and not attached):
[1] compiler_3.5.0 Matrix_1.2-14 tools_3.5.0 grid_3.5.0
[5] lattice_0.20-35
for(int t=1;tdito当然是for(int t=1;tDear@DirkEddelbuettel感谢您的评论!我一直在按照您的建议编辑和运行我的代码。但我遇到了另一个错误。它可以生成.dll文件和.o文件,但程序崩溃或给出NaN值出现在外部mgc部分。我可能会帮助在cpp文件的不同阶段添加这些内容,以查看发生了什么:std::cout亲爱的@Wave谢谢你的评论:)我将用你的代码再次运行我的cpp文件。
albacore <- read.table("albacore.csv", header=TRUE, sep=",")
albacore
names(albacore) <- c("t", "C", "I")
n=c(dim(albacore)[1]) #the number of Bs
parameters <- list(logR=-1.0, logK=3.0, logQ=-5.9, logsdproc=-3.1, logSigma=-3.5, P=rep(0.3,n));
parameters
require(TMB)
compile("scalbav2.cpp", "-O1 -g", DLLFLAGS="")
dyn.load(dynlib("scalbav2"))
library(TMB)
gdbsource("scalbav2.R", interactive=TRUE)
################################################################################
model<- MakeADFun(albacore, parameters, random="P", DLL="scalbav2")
model$par
length(parameters$P)
fit <- nlminb(model$par, model$fn, model$gr)
rep <- sdreport(model)
print(summary(rep))
year catch cpue
1967 15.9 61.89
1968 25.7 78.98
1969 28.5 55.59
1970 23.7 44.61
1971 25.0 56.89
1972 33.3 38.27
1973 28.2 33.84
1974 19.7 36.13
1975 17.5 41.95
1976 19.3 36.63
1977 21.6 36.33
1978 23.1 38.82
1979 22.5 34.32
1980 22.5 37.64
1981 23.6 34.01
1982 29.1 32.16
1983 14.4 26.88
1984 13.2 36.61
1985 28.4 30.07
1986 34.6 30.75
1987 37.5 23.36
1988 25.9 22.36
1989 25.3 21.91
R version 3.5.0 (2018-04-23)
Platform: i386-w64-mingw32/i386 (32-bit)
Running under: Windows >= 8 (build 9200)
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] TMB_1.7.13
loaded via a namespace (and not attached):
[1] compiler_3.5.0 Matrix_1.2-14 tools_3.5.0 grid_3.5.0
[5] lattice_0.20-35