如何解决在 R 中使用 simplex() 时出错:1L:N 中的错误:长度为 0
我正在尝试使用 simplex()
包的 boot
函数来最大化函数。但是由于某种原因,我收到了 "Error in 1L:N : argument of length 0" 的错误。 simplex()
是我正在编写的一个更大算法的一部分,它在其他函数上运行得非常好,但是这个给我带来了很大的麻烦。背景:
grad_f <- grad(E_return2,x_k)
这就是我的 grad_f 的样子:
> grad_f
[1] 1.837406 1.096223 1.625154
这是一个包含三个条目的向量。我的约束如下:x[1] + x[2] +x[3] = 1
和 x[1] >= 0,x[2] >= 0,x[3] >= 0
。我为第一个约束定义了一个矩阵 Athree 和一个向量 bthree,如下所示,
Athree <- rbind(c(1,1,1))
bthree <- c(1)
其中Athree
的尺寸为1x3,bthree
的长度为1。根据simplex()
函数的描述,我不需要定义A2
和{ {1}},因为它已经假设所有变量都大于或等于 0。
接下来,我尝试使用 simplex() 函数。这是我的意见:
b2
而这正是我将其应用于其他函数的方式,只是约束仅采用 A1 和 b1 的格式,其余均为 NULL。但是我已经尝试了一切,我将其余的约束定义为 simplex(c(t(grad_f)),A3 = Athree,b3 = bthree,maxi = TRUE)$soln
,我尝试以多种方式重新定义我的 NULL
和 Athree
,包括更改两者的类型,但似乎什么都没有以帮助获得必要的结果。似乎问题出在尺寸上,但我无法弄清楚我哪里出错了。我不断收到“1L:N 中的错误:长度为 0 的参数”。如果您知道该怎么做,请告诉我。期待听到您的建议!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。