Я новичок в stackoverflow и много искал, но не смог найти ответ на мой вопрос , Я пытаюсь свести к минимуму проблему с пакетом оптимизации Rsolnp. Хотя решатель дает мне решение, каждый раз, когда я запускаю код, появляется следующее предупреждающее сообщение:Rsolnp: В cbind (temp, funv): количество строк результата не кратно векторной длины (arg 1)
Предупреждающие сообщения: 1: В cbind (temp, funv): Число строк результата не кратно вектору length (arg 1)
Кроме того, решение полностью отличается от решений, которые я получаю с помощью ipop и solve.QP. Их решения практически одинаковы (0,2480, 0,0000, 0,0121, 0,7400). Я пробовал много разных формулировок проблемы, но не мог понять, что я сделал не так. Я благодарен за всю помощь и информацию!
library(Rsolnp)
# Starting Values
x0 <- c(0.25,0,0.01,0.75)
fn <- function(x){
d <- c(0.0308, 0.0269, 0.0145, 0.0130)
d <- -d
D <- cbind(c(0.1486, 0.0778, -0.0240, -0.0154),
c(0.0778, 0.1170, 0.0066, 0.0029),
c(-0.0240, 0.0066, 0.0444, 0.0193),
c(-0.0154, 0.0029, 0.0193, 0.0148))
out <- t(d) %*% x + 0.5 * (t(x) %*% D %*% x)
out
}
# Inequality Constraint: 0 =< x 0 =< 1
lx <- rep(0,4)
ux <- rep(1,4)
sol <- solnp(pars = x0,
fun = fn,
eqfun = sum,
eqB = 1,
ineqLB = lx,
ineqUB = ux)
sol$pars