微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 R 中使用 simplex() 时出错:1L:N 中的错误:长度为 0

如何解决在 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] = 1x[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,我尝试以多种方式重新定义我的 NULLAthree包括更改两者的类型,但似乎什么都没有以帮助获得必要的结果。似乎问题出在尺寸上,但我无法弄清楚我哪里出错了。我不断收到“1L:N 中的错误:长度为 0 的参数”。如果您知道该怎么做,请告诉我。期待听到您的建议!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。