【发布时间】:2020-06-04 13:43:45
【问题描述】:
我正在尝试在R 上运行lbfgs-algorithm,但我总是得到这样的结果:
L-BFGS optimization terminated with status code = -1001 fx = -0.0119691
我尝试了不同的设置,但始终得到相同的结果。
TI <- read.csv("Alphabet01-2000.csv", header = TRUE)
TIn <- TI[9:28]
relPreisBew <- TI[8]
x <- vector(mode = "numeric", length = 20L)
i <- integer()
d=0
b=rep.int(0,20)
grad <- function(x, j = 90, n = 100){for(i in j:n)
{b <- b-as.vector(t(TIn[i,]), mode = "numeric")*relPreisBew[i,]/(cosh(sum(x*as.vector(t(TIn[i,]), mode="numeric"))))*cosh(sum(x*as.vector(t(TIn[i,]), mode = "numeric")))}; return(b)}
Profit <- function(x, j = 90, n = 100){for(i in j:n)
{d <- d-tanh(sum(x*as.vector(t(TIn[i,]), mode = "numeric")))*relPreisBew[i,]}; return(d)}
lbfgs.out <- lbfgs(Profit, grad, rep.int(0, 20))
我猜问题是 grad 函数针对某些值返回 NaNs。
我试图通过限制stepsize 和max_iterations 来解决这个问题,但没有成功。 relPreisBew 和 TIn 中的值介于 0 和 1 之间,这些 data.frames 的长度为 2956。我尝试重新创建以下算法:https://minerva-access.unimelb.edu.au/bitstream/handle/11343/51750/bitvai_cohn_day_trading.pdf?sequence=1
请参见第 4-7 页。
问题
这是我的实现问题还是因为功能问题?
【问题讨论】:
-
"gradfunction 返回特定值的 nans" 你希望优化器如何处理这个问题?您可能需要使用约束(请参阅包 optimx)。
标签: r mathematical-optimization