Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-init val中的constrOptim不在可行域误差的内部_R_Optimization_Constraints - Fatal编程技术网

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

R-init val中的constrOptim不在可行域误差的内部,r,optimization,constraints,R,Optimization,Constraints,我正在尝试使用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") 很容易检

我正在尝试使用
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")
很容易检查我的初始值是否在可行区域的内部(来自文档:
ui%*%theta-ci>=0

产生:

          [,1]
[1,] 0.3333333
[2,] 0.3333333
[3,] 0.3333333
[4,] 0.0000000
[5,] 0.0000000

我遗漏了什么?

如果你搜索谷歌,你会在另一个问题的评论中得到@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

你的前三个约束条件是由不等式满足的,而不是边界上的最后两个。

如果你搜索谷歌,你会在另一个问题的评论中得到@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

不等式满足了前三个约束条件,但不满足边界上的最后两个约束条件。

谢谢,我最终实际使用了
Rsolnp
包。我搜索了一个相同的问题,这个问题有一个公认的答案,但没有成功。我发现有几个像你一样的问题没有得到回答。如果您选中它,未来的搜索者可能会更容易找到它。谢谢您,我最终使用了
Rsolnp
软件包。我搜索了一个相同的问题,这个问题有一个公认的答案,但没有成功。我发现有几个像你一样的问题没有得到回答。如果您选中它,未来的搜索者可能会更容易找到它。