gpt4 book ai didi

r - R init val中的constrOptim不在可行区域误差的内部

转载 作者:行者123 更新时间:2023-12-03 07:59:38 24 4
gpt4 key购买 nike

我正在尝试使用constrOptim包。这是我的设置:

test_func <- function(x){
return((x%*%x)[1,1])
}
constrOptim(rep(1/3,3), f=test_func,grad = NULL,
ui = rbind(diag(3),rep(1, 3), rep(-1,3)),
ci = c(rep(0,3),1,-1), method = "Nelder-Mead")

它产生错误:

   Error in constrOptim(rep(1/3, 3), f = test_func, grad = NULL, ui = rbind(diag(3),  : 
initial value is not in the interior of the feasible region


很容易检查我的初始值是否在可行区域的内部(来自docs: ui %*% theta - ci >= 0)
constrOptim
ui %*% rep(1/3, 3) - ci

产生:
          [,1]
[1,] 0.3333333
[2,] 0.3333333
[3,] 0.3333333
[4,] 0.0000000
[5,] 0.0000000

我想念什么?

最佳答案

如果您搜索Google,则会在另一个问题的注释中从@HongOoi获得答案,并显示类似的错误消息。 Hong Ooi建议从ci参数减去模糊值:

  fuzz = - 1e-6


constrOptim(rep(1/3,3), f=test_func,grad = NULL,
ui = rbind(diag(3),rep(1, 3), rep(-1,3)),
ci = c(rep(0,3),1,-1)- 1e-6, method = "Nelder-Mead")
#---------------------
$par
[1] 0.3333317 0.3333327 0.3333346

$value
[1] 0.3333327

$counts
[1] 0

$convergence
[1] 0

$message
NULL

$outer.iterations
[1] 1

$barrier.value
[1] 0.000209865

我认为这可能是一个问题,可能需要向R-devel邮件列表发送请求以进行文档改进,尽管可以说您实际上不在可行范围内,因为约束tes严格遵循了不等式:
 ui %*% rep(1/3,3) - ci > 0
[,1]
[1,] TRUE
[2,] TRUE
[3,] TRUE
[4,] FALSE
[5,] FALSE

不平等满足了您的前三个约束,但边界上的后两个不满足。

关于r - R init val中的constrOptim不在可行区域误差的内部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31324382/

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