При поиске в 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 для улучшения документации, хотя вы можете спорить с вамина самом деле не находятся во внутреннем допустимого диапазона, так как тест ограничений не соответствует строгому неравенству:
ui %*% rep(1/3,3) - ci > 0
[,1]
[1,] TRUE
[2,] TRUE
[3,] TRUE
[4,] FALSE
[5,] FALSE
Первые три ограничения были удовлетворены неравенством, но не последние два, которые были на границу.